{"openapi":"3.1.0","info":{"title":"Chukoudan API","version":"1.0.0","summary":"Read-only and keyless: the datasets the site shows, and every tool’s calculation.","description":"Every tool computes through the same code as its page (packages/core), so an answer here is the page’s answer. There are no words in an answer: results carry copy keys and tagged figures. Every answer, errors included, has `provenance`: which dataset versions it drew on, their publishers’ dates and source lines. The license is a draft until the advisor approves the text. A keyless limit applies to each sender; see the `RateLimit-*` headers."},"servers":[{"url":"/"}],"tags":[{"name":"datasets"},{"name":"tools"},{"name":"compute"},{"name":"api"}],"paths":{"/v1/datasets":{"get":{"operationId":"listDatasets","summary":"The datasets the site may show","tags":["datasets"],"parameters":[{"$ref":"#/components/parameters/Lang"}],"responses":{"200":{"description":"The datasets, with their current versions.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetList"}}}},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/datasets/{id}":{"get":{"operationId":"getDataset","summary":"One dataset and its versions, newest first","tags":["datasets"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/Lang"}],"responses":{"200":{"description":"The dataset.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dataset"}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/datasets/{id}/current":{"get":{"operationId":"getCurrentRows","summary":"The rows of the version current.json names","tags":["datasets"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/Offset"},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Lang"}],"responses":{"200":{"description":"A page of rows.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetRows"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/datasets/{id}/{version}":{"get":{"operationId":"getVersionRows","summary":"The rows of one version, which never changes once published","tags":["datasets"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"path","required":true,"schema":{"type":"string"}},{"$ref":"#/components/parameters/Offset"},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Lang"}],"responses":{"200":{"description":"A page of rows.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetRows"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/tools":{"get":{"operationId":"listTools","summary":"The tools, by core id","tags":["tools"],"parameters":[{"$ref":"#/components/parameters/Lang"}],"responses":{"200":{"description":"The tools.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"type":"object","properties":{"tools":{"type":"array","items":{"$ref":"#/components/schemas/ToolSummary"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["tools","provenance"],"additionalProperties":false}}}},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/tools/{id}":{"get":{"operationId":"getTool","summary":"One tool: its names, inputs and the datasets it reads","tags":["tools"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","enum":["baojia","cbm","unit-convert","fx-convert","fx-cost","maitou","tuishui","container-load"]}},{"$ref":"#/components/parameters/Lang"}],"responses":{"200":{"description":"The tool.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"$ref":"#/components/schemas/ToolSummary"},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["tool","provenance"],"additionalProperties":false}}}},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/openapi.json":{"get":{"operationId":"getOpenApi","summary":"This document","tags":["api"],"responses":{"200":{"description":"The OpenAPI 3.1 document of /v1.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/tools/baojia/compute":{"post":{"operationId":"compute_baojia","summary":"FOB/CIF/CFR quotes (FOB/CIF/CFR 报价)","description":"Quotes and profit on all three terms, from your cost","tags":["compute"],"parameters":[{"$ref":"#/components/parameters/Lang"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"$ref":"#/components/schemas/baojiaInputs"}},"required":["inputs"],"additionalProperties":false}}}},"responses":{"200":{"description":"Core’s outputs, steps and warnings for these inputs.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/baojiaResult"}}}},"400":{"description":"The inputs core refuses (`issues`), or a body that is not `{\"inputs\": …}`.","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"const":"baojia"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/Issue"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["issues","provenance"]}}}},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/tools/cbm/compute":{"post":{"operationId":"compute_cbm","summary":"CBM & volumetric weight (CBM / 体积重)","description":"CBM, gross weight and chargeable weight for air and express","tags":["compute"],"parameters":[{"$ref":"#/components/parameters/Lang"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"$ref":"#/components/schemas/cbmInputs"}},"required":["inputs"],"additionalProperties":false}}}},"responses":{"200":{"description":"Core’s outputs, steps and warnings for these inputs.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cbmResult"}}}},"400":{"description":"The inputs core refuses (`issues`), or a body that is not `{\"inputs\": …}`.","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"const":"cbm"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/Issue"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["issues","provenance"]}}}},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/tools/unit-convert/compute":{"post":{"operationId":"compute_unit_convert","summary":"Unit converter (单位换算)","description":"Length, weight and volume, with the internationally defined factors","tags":["compute"],"parameters":[{"$ref":"#/components/parameters/Lang"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"$ref":"#/components/schemas/unit_convertInputs"}},"required":["inputs"],"additionalProperties":false}}}},"responses":{"200":{"description":"Core’s outputs, steps and warnings for these inputs.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/unit_convertResult"}}}},"400":{"description":"The inputs core refuses (`issues`), or a body that is not `{\"inputs\": …}`.","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"const":"unit-convert"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/Issue"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["issues","provenance"]}}}},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/tools/fx-convert/compute":{"post":{"operationId":"compute_fx_convert","summary":"Settlement exchange rates (结算汇率)","description":"RMB central parity, and what you receive at your own bank rate","tags":["compute"],"parameters":[{"$ref":"#/components/parameters/Lang"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"$ref":"#/components/schemas/fx_convertInputs"}},"required":["inputs"],"additionalProperties":false}}}},"responses":{"200":{"description":"Core’s outputs, steps and warnings for these inputs.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fx_convertResult"}}}},"400":{"description":"The inputs core refuses (`issues`), or a body that is not `{\"inputs\": …}`.","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"const":"fx-convert"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/Issue"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["issues","provenance"]}}}},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/tools/fx-cost/compute":{"post":{"operationId":"compute_fx_cost","summary":"FX conversion cost calculator (结汇成本计算器)","description":"Compare banks and other options: how much RMB you actually get in a year","tags":["compute"],"parameters":[{"$ref":"#/components/parameters/Lang"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"$ref":"#/components/schemas/fx_costInputs"}},"required":["inputs"],"additionalProperties":false}}}},"responses":{"200":{"description":"Core’s outputs, steps and warnings for these inputs.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fx_costResult"}}}},"400":{"description":"The inputs core refuses (`issues`), or a body that is not `{\"inputs\": …}`.","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"const":"fx-cost"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/Issue"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["issues","provenance"]}}}},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/tools/maitou/compute":{"post":{"operationId":"compute_maitou","summary":"Shipping mark generator (唛头生成)","description":"Main and side marks, printed on A4 or 100×150 mm labels","tags":["compute"],"parameters":[{"$ref":"#/components/parameters/Lang"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"$ref":"#/components/schemas/maitouInputs"}},"required":["inputs"],"additionalProperties":false}}}},"responses":{"200":{"description":"Core’s outputs, steps and warnings for these inputs.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/maitouResult"}}}},"400":{"description":"The inputs core refuses (`issues`), or a body that is not `{\"inputs\": …}`.","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"const":"maitou"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/Issue"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["issues","provenance"]}}}},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/tools/tuishui/compute":{"post":{"operationId":"compute_tuishui","summary":"Export tax refund calculator (出口退税计算器)","description":"Trading companies (exempt-and-refund) and manufacturers (exempt-credit-refund)","tags":["compute"],"parameters":[{"$ref":"#/components/parameters/Lang"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"$ref":"#/components/schemas/tuishuiInputs"}},"required":["inputs"],"additionalProperties":false}}}},"responses":{"200":{"description":"Core’s outputs, steps and warnings for these inputs.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/tuishuiResult"}}}},"400":{"description":"The inputs core refuses (`issues`), or a body that is not `{\"inputs\": …}`.","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"const":"tuishui"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/Issue"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["issues","provenance"]}}}},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}},"/v1/tools/container-load/compute":{"post":{"operationId":"compute_container_load","summary":"Container loading calculator (装柜计算器)","description":"Cartons per container, containers needed, and how to stack them","tags":["compute"],"parameters":[{"$ref":"#/components/parameters/Lang"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"$ref":"#/components/schemas/container_loadInputs"}},"required":["inputs"],"additionalProperties":false}}}},"responses":{"200":{"description":"Core’s outputs, steps and warnings for these inputs.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/container_loadResult"}}}},"400":{"description":"The inputs core refuses (`issues`), or a body that is not `{\"inputs\": …}`.","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"const":"container-load"},"issues":{"type":"array","items":{"$ref":"#/components/schemas/Issue"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["issues","provenance"]}}}},"404":{"$ref":"#/components/responses/NotFound"},"413":{"$ref":"#/components/responses/PayloadTooLarge"},"415":{"$ref":"#/components/responses/UnsupportedMediaType"},"429":{"$ref":"#/components/responses/TooManyRequests"},"500":{"$ref":"#/components/responses/InternalError"}}}}},"components":{"schemas":{"Issue":{"type":"object","description":"One thing wrong with a request: where, and which copy key says what. No words: the key is the wording.","properties":{"path":{"type":"string","description":"The field, like `cartons.0.length`; empty for the request as a whole."},"code":{"type":"string","description":"A copy key such as `input.not_a_decimal` or `api.rate_limited`."},"values":{"type":"object","description":"Figures that fill the sentence the key stands for.","additionalProperties":{"$ref":"#/components/schemas/PlainValue"}}},"required":["path","code","values"],"additionalProperties":false},"ProvenanceDataset":{"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":{"type":["string","null"],"description":"The origin’s id in the register; null when the site may not show it."},"source":{"type":["string","null"],"description":"The publisher’s own source line, in the answer’s language; null when there is none to show."},"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"],"additionalProperties":false},"Provenance":{"type":"object","description":"Where the figures in an answer come from. In every answer, errors included.","properties":{"api":{"const":"v1"},"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."},"datasets":{"type":"array","items":{"$ref":"#/components/schemas/ProvenanceDataset"}},"license":{"type":"object","description":"The license as copy keys. `draft` until the advisor approves the text: it says which text will apply, not yet what it is.","properties":{"status":{"const":"draft"},"ours":{"type":"string"},"underlying":{"type":"string"}},"required":["status","ours","underlying"],"additionalProperties":false}},"required":["api","site","generated_at","language","datasets","license"],"additionalProperties":false},"Error":{"type":"object","properties":{"issues":{"type":"array","items":{"$ref":"#/components/schemas/Issue"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["issues","provenance"],"additionalProperties":false},"PlainValue":{"description":"A figure, tagged so a reader knows how to write it: amounts and quantities are exact decimal strings, never floats.","oneOf":[{"type":"object","properties":{"kind":{"const":"money"},"amount":{"type":"string"},"currency":{"type":"string","description":"An ISO 4217 code."}},"required":["kind","amount","currency"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"quantity"},"value":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer","minimum":0,"description":"How many decimal places the rounding rule keeps; pad to it, never round."}},"required":["kind","value","unit"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"ratio"},"value":{"type":"string","description":"A fraction: 0.13 is 13 %."}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"rate"},"value":{"type":"string"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string","description":"`per` units of `base` cost `value` units of `quote`."}},"required":["kind","value","base","quote","per"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"count"},"value":{"type":"string"},"grouping":{"const":false}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"code"},"value":{"type":"string","description":"A token from a fixed list the tool exports; the words for it are the copy key `<tool>.code.<value>`."}},"required":["kind","value"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"date"},"value":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["kind","value"],"additionalProperties":false}]},"Step":{"type":"object","description":"One line of the worked example: `id` is the copy key of its sentence, `values` fill it in.","properties":{"id":{"type":"string"},"values":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/PlainValue"}}},"required":["id","values"],"additionalProperties":false},"Warning":{"type":"object","description":"Something a reader should know about a result; `code` is a copy key.","properties":{"code":{"type":"string"},"values":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/PlainValue"}},"level":{"enum":["note","hint"],"description":"Absent means a caution."},"next":{"type":"string","description":"For a hint: the slug of the tool it points to."}},"required":["code","values"],"additionalProperties":false},"Printed":{"type":"object","description":"What a generator prints: each piece’s lines, the same on every item.","properties":{"items":{"type":"string","description":"How many items get one of every piece."},"pieces":{"type":"object","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},{"type":"object","properties":{"sequence":{"type":"object","properties":{"prefix":{"type":"string"},"of":{"type":"string"}},"required":["prefix","of"],"additionalProperties":false}},"required":["sequence"],"additionalProperties":false}]}}}},"required":["items","pieces"],"additionalProperties":false},"License":{"type":"object","description":"The license of a version, as copy keys; a draft until the advisor approves the text.","properties":{"ours":{"type":"string"},"underlying":{"type":"string"},"draft":{"const":true}},"required":["ours","underlying","draft"],"additionalProperties":false},"DatasetVersion":{"type":"object","properties":{"version":{"type":"string"},"published_at":{"type":"string"},"fetched_at":{"type":"string"},"edition":{"type":"string"},"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":{"$ref":"#/components/schemas/License"}},"required":["version","published_at","fetched_at","content_hash","rows","columns","current","links","license"],"additionalProperties":false},"DatasetList":{"type":"object","properties":{"datasets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"current":{"type":["string","null"]},"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"],"additionalProperties":false}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["datasets","provenance"],"additionalProperties":false},"Dataset":{"type":"object","properties":{"id":{"type":"string"},"current":{"type":["string","null"]},"versions":{"type":"array","description":"Newest first.","items":{"$ref":"#/components/schemas/DatasetVersion"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["id","current","versions","provenance"],"additionalProperties":false},"DatasetRows":{"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"},"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":{"$ref":"#/components/schemas/License"},"offset":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":5000},"next":{"type":["integer","null"],"description":"The offset of the next page; null on the last."},"data":{"type":"array","items":{}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["dataset","version","published_at","fetched_at","content_hash","rows","columns","current","links","license","offset","limit","next","data","provenance"],"additionalProperties":false},"ToolSummary":{"type":"object","properties":{"id":{"type":"string","description":"The core id: the tool’s address in this API."},"slug":{"type":"string","description":"The slug of the tool’s page on the site."},"kind":{"enum":["calculator","generator"]},"name":{"type":"object","additionalProperties":{"type":"string"}},"summary":{"type":"object","additionalProperties":{"type":"string"}},"inputs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"required":{"type":"boolean"}},"required":["id","type","required"]}},"data":{"type":"array","description":"The datasets it reads, as its manifest names them.","items":{"type":"string"}},"links":{"type":"object","properties":{"self":{"type":"string"},"compute":{"type":"string"}},"required":["self","compute"]}},"required":["id","slug","kind","name","summary","inputs","data","links"],"additionalProperties":false},"baojiaInputs":{"type":"object","properties":{"mode":{"enum":["forward","reverse"],"type":"string"},"price":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"quantity":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"unit":{"enum":["pcs","sets","cartons","kg"],"type":"string"},"taxRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"refundRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"domestic":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"domesticBasis":{"enum":["total","perUnit"],"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"fxRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"fxPer":{"enum":["1","100"],"type":"string"},"freight":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"freightBasis":{"enum":["container","cbm","total"],"type":"string"},"containers":{"type":"string","pattern":"^(0|[1-9]\\d*)$"},"volume":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"insuranceRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"markup":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"commission":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"margin":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"marginBasis":{"enum":["quote","cost"],"type":"string"},"term":{"enum":["FOB","CFR","CIF"],"type":"string"},"quotedPrice":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"port":{"type":"string"}},"required":["price","quantity","taxRate","refundRate","fxRate"],"description":"FOB/CIF/CFR 报价: the inputs, as core’s schema takes them. Figures are decimal strings."},"baojiaOutputs":{"type":"object","description":"Each figure core returns, by id, as a tagged value. The ids listed are the ones the tool’s manifest names; a tool may return more (a figure that only its worked steps use), in the same form.","properties":{"priceFob":{"$ref":"#/components/schemas/PlainValue"},"totalFob":{"$ref":"#/components/schemas/PlainValue"},"commissionPriceFob":{"$ref":"#/components/schemas/PlainValue"},"commissionTotalFob":{"$ref":"#/components/schemas/PlainValue"},"profitFob":{"$ref":"#/components/schemas/PlainValue"},"marginFob":{"$ref":"#/components/schemas/PlainValue"},"marginAltFob":{"$ref":"#/components/schemas/PlainValue"},"breakEvenFob":{"$ref":"#/components/schemas/PlainValue"},"priceCfr":{"$ref":"#/components/schemas/PlainValue"},"totalCfr":{"$ref":"#/components/schemas/PlainValue"},"commissionPriceCfr":{"$ref":"#/components/schemas/PlainValue"},"commissionTotalCfr":{"$ref":"#/components/schemas/PlainValue"},"profitCfr":{"$ref":"#/components/schemas/PlainValue"},"marginCfr":{"$ref":"#/components/schemas/PlainValue"},"marginAltCfr":{"$ref":"#/components/schemas/PlainValue"},"breakEvenCfr":{"$ref":"#/components/schemas/PlainValue"},"priceCif":{"$ref":"#/components/schemas/PlainValue"},"totalCif":{"$ref":"#/components/schemas/PlainValue"},"commissionPriceCif":{"$ref":"#/components/schemas/PlainValue"},"commissionTotalCif":{"$ref":"#/components/schemas/PlainValue"},"profitCif":{"$ref":"#/components/schemas/PlainValue"},"marginCif":{"$ref":"#/components/schemas/PlainValue"},"marginAltCif":{"$ref":"#/components/schemas/PlainValue"},"breakEvenCif":{"$ref":"#/components/schemas/PlainValue"},"refundTotal":{"$ref":"#/components/schemas/PlainValue"},"costTotal":{"$ref":"#/components/schemas/PlainValue"}},"required":["priceFob","totalFob","profitFob","breakEvenFob","refundTotal","costTotal"],"additionalProperties":{"$ref":"#/components/schemas/PlainValue"}},"baojiaResult":{"type":"object","properties":{"tool":{"const":"baojia"},"outputs":{"$ref":"#/components/schemas/baojiaOutputs"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/Step"}},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["tool","outputs","steps","warnings","provenance"],"additionalProperties":false},"cbmInputs":{"type":"object","properties":{"cartons":{"type":"array","items":{"type":"object","properties":{"length":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"width":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"height":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"grossWeight":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"quantity":{"type":"string","pattern":"^(0|[1-9]\\d*)$"}},"required":["length","width","height","grossWeight","quantity"]},"minItems":1,"maxItems":20},"lengthUnit":{"enum":["cm","mm","in"],"type":"string"},"weightUnit":{"enum":["kg","lb"],"type":"string"},"mode":{"enum":["lcl","air","express"],"type":"string"},"airDivisor":{"type":"string","pattern":"^(0|[1-9]\\d*)$"},"expressDivisor":{"type":"string","pattern":"^(0|[1-9]\\d*)$"}},"required":["cartons"],"description":"CBM / 体积重: the inputs, as core’s schema takes them. Figures are decimal strings."},"cbmOutputs":{"type":"object","description":"Each figure core returns, by id, as a tagged value. The ids listed are the ones the tool’s manifest names; a tool may return more (a figure that only its worked steps use), in the same form.","properties":{"totalVolume":{"$ref":"#/components/schemas/PlainValue"},"lclChargeable":{"$ref":"#/components/schemas/PlainValue"},"perCartonVolume":{"$ref":"#/components/schemas/PlainValue"},"totalGrossWeight":{"$ref":"#/components/schemas/PlainValue"},"airChargeable":{"$ref":"#/components/schemas/PlainValue"},"expressChargeable":{"$ref":"#/components/schemas/PlainValue"},"airVolumetric":{"$ref":"#/components/schemas/PlainValue"},"expressVolumetric":{"$ref":"#/components/schemas/PlainValue"},"chargeable":{"$ref":"#/components/schemas/PlainValue"},"airBy":{"$ref":"#/components/schemas/PlainValue"},"expressBy":{"$ref":"#/components/schemas/PlainValue"},"lclBy":{"$ref":"#/components/schemas/PlainValue"}},"required":["totalVolume","lclChargeable","totalGrossWeight","airChargeable","expressChargeable","airVolumetric","expressVolumetric","chargeable","airBy","expressBy","lclBy"],"additionalProperties":{"$ref":"#/components/schemas/PlainValue"}},"cbmResult":{"type":"object","properties":{"tool":{"const":"cbm"},"outputs":{"$ref":"#/components/schemas/cbmOutputs"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/Step"}},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["tool","outputs","steps","warnings","provenance"],"additionalProperties":false},"unit_convertInputs":{"type":"object","properties":{"value":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"from":{"type":"string"},"to":{"type":"string"}},"required":["value","from","to"],"description":"单位换算: the inputs, as core’s schema takes them. Figures are decimal strings."},"unit_convertOutputs":{"type":"object","description":"Each figure core returns, by id, as a tagged value. The ids listed are the ones the tool’s manifest names; a tool may return more (a figure that only its worked steps use), in the same form.","properties":{"result":{"$ref":"#/components/schemas/PlainValue"}},"required":["result"],"additionalProperties":{"$ref":"#/components/schemas/PlainValue"}},"unit_convertResult":{"type":"object","properties":{"tool":{"const":"unit-convert"},"outputs":{"$ref":"#/components/schemas/unit_convertOutputs"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/Step"}},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["tool","outputs","steps","warnings","provenance"],"additionalProperties":false},"fx_convertInputs":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amount":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"bankRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"keptRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"keptMidpoint":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"keptOn":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"}},"required":["currency"],"description":"结算汇率: the inputs, as core’s schema takes them. Figures are decimal strings."},"fx_convertOutputs":{"type":"object","description":"Each figure core returns, by id, as a tagged value. The ids listed are the ones the tool’s manifest names; a tool may return more (a figure that only its worked steps use), in the same form.","properties":{"midpoint":{"$ref":"#/components/schemas/PlainValue"},"bankRate":{"$ref":"#/components/schemas/PlainValue"},"gap":{"$ref":"#/components/schemas/PlainValue"},"gapShown":{"$ref":"#/components/schemas/PlainValue"},"estimated":{"$ref":"#/components/schemas/PlainValue"},"atMidpoint":{"$ref":"#/components/schemas/PlainValue"},"atBank":{"$ref":"#/components/schemas/PlainValue"},"difference":{"$ref":"#/components/schemas/PlainValue"}},"required":["midpoint"],"additionalProperties":{"$ref":"#/components/schemas/PlainValue"}},"fx_convertResult":{"type":"object","properties":{"tool":{"const":"fx-convert"},"outputs":{"$ref":"#/components/schemas/fx_convertOutputs"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/Step"}},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["tool","outputs","steps","warnings","provenance"],"additionalProperties":false},"fx_costInputs":{"type":"object","properties":{"receipts":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amount":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"count":{"type":"string","pattern":"^(0|[1-9]\\d*)$"},"bankRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"bankGap":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"rateB":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"rateC":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"}},"required":["currency","amount"]},"minItems":1,"maxItems":8},"bankFee":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"useB":{"type":"boolean"},"useC":{"type":"boolean"},"nameB":{"type":"string"},"nameC":{"type":"string"},"feePercentB":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"feePercentC":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"feePerReceiptB":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"feePerReceiptC":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"}},"required":["receipts"],"description":"结汇成本计算器: the inputs, as core’s schema takes them. Figures are decimal strings."},"fx_costOutputs":{"type":"object","description":"Each figure core returns, by id, as a tagged value. The ids listed are the ones the tool’s manifest names; a tool may return more (a figure that only its worked steps use), in the same form.","properties":{"annualBank":{"$ref":"#/components/schemas/PlainValue"},"feesBank":{"$ref":"#/components/schemas/PlainValue"},"costBank":{"$ref":"#/components/schemas/PlainValue"},"gainBank":{"$ref":"#/components/schemas/PlainValue"},"rankBank":{"$ref":"#/components/schemas/PlainValue"},"annualB":{"$ref":"#/components/schemas/PlainValue"},"feesB":{"$ref":"#/components/schemas/PlainValue"},"costB":{"$ref":"#/components/schemas/PlainValue"},"gainB":{"$ref":"#/components/schemas/PlainValue"},"rankB":{"$ref":"#/components/schemas/PlainValue"},"annualC":{"$ref":"#/components/schemas/PlainValue"},"feesC":{"$ref":"#/components/schemas/PlainValue"},"costC":{"$ref":"#/components/schemas/PlainValue"},"gainC":{"$ref":"#/components/schemas/PlainValue"},"rankC":{"$ref":"#/components/schemas/PlainValue"},"annualMidpoint":{"$ref":"#/components/schemas/PlainValue"},"best":{"$ref":"#/components/schemas/PlainValue"}},"required":["annualBank","feesBank","costBank","gainBank","rankBank","annualMidpoint","best"],"additionalProperties":{"$ref":"#/components/schemas/PlainValue"}},"fx_costResult":{"type":"object","properties":{"tool":{"const":"fx-cost"},"outputs":{"$ref":"#/components/schemas/fx_costOutputs"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/Step"}},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["tool","outputs","steps","warnings","provenance"],"additionalProperties":false},"maitouInputs":{"type":"object","properties":{"cartons":{"type":"string","pattern":"^(0|[1-9]\\d*)$"},"length":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"width":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"height":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"grossWeight":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"netWeight":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"lines":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"}},"required":[]},"maxItems":5},"capitals":{"type":"boolean"}},"required":["cartons","length","width","height","grossWeight","netWeight"],"description":"唛头生成: the inputs, as core’s schema takes them. Figures are decimal strings."},"maitouOutputs":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/PlainValue"}},"maitouResult":{"type":"object","properties":{"tool":{"const":"maitou"},"outputs":{"$ref":"#/components/schemas/maitouOutputs"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/Step"}},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"printed":{"$ref":"#/components/schemas/Printed"},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["tool","outputs","steps","warnings","provenance"],"additionalProperties":false},"tuishuiInputs":{"type":"object","properties":{"enterpriseType":{"enum":["trading","manufacturer"],"type":"string"},"mode":{"enum":["period","order"],"type":"string"},"exports":{"type":"array","items":{"type":"object","properties":{"hsCode":{"type":"string","pattern":"^\\d{8}(\\d{2})?$"},"exportDate":{"type":"string","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"taxRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"refundRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"invoiceAmount":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"invoiceGross":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"invoiceRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"fobAmount":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"fxRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"fxPer":{"enum":["1","100"],"type":"string"},"dutyFreeMaterials":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"planRatio":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"processingFob":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"rateChanged":{"type":"boolean"}},"required":["exportDate","taxRate","refundRate"]},"minItems":1,"maxItems":20},"outputTax":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"inputTax":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"carriedCredit":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"declaredEndCredit":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"}},"required":["enterpriseType","exports"],"description":"出口退税计算器: the inputs, as core’s schema takes them. Figures are decimal strings."},"tuishuiOutputs":{"type":"object","description":"Each figure core returns, by id, as a tagged value. The ids listed are the ones the tool’s manifest names; a tool may return more (a figure that only its worked steps use), in the same form.","properties":{"refund":{"$ref":"#/components/schemas/PlainValue"},"basis":{"$ref":"#/components/schemas/PlainValue"},"inputVat":{"$ref":"#/components/schemas/PlainValue"},"costAddition":{"$ref":"#/components/schemas/PlainValue"},"nonCreditableOffset":{"$ref":"#/components/schemas/PlainValue"},"nonCreditable":{"$ref":"#/components/schemas/PlainValue"},"taxPayable":{"$ref":"#/components/schemas/PlainValue"},"endCredit":{"$ref":"#/components/schemas/PlainValue"},"exemptionOffset":{"$ref":"#/components/schemas/PlainValue"},"exemption":{"$ref":"#/components/schemas/PlainValue"},"exempted":{"$ref":"#/components/schemas/PlainValue"},"carriedForward":{"$ref":"#/components/schemas/PlainValue"},"taxDue":{"$ref":"#/components/schemas/PlainValue"}},"required":[],"additionalProperties":{"$ref":"#/components/schemas/PlainValue"}},"tuishuiResult":{"type":"object","properties":{"tool":{"const":"tuishui"},"outputs":{"$ref":"#/components/schemas/tuishuiOutputs"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/Step"}},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["tool","outputs","steps","warnings","provenance"],"additionalProperties":false},"container_loadInputs":{"type":"object","properties":{"length":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"width":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"height":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"grossWeight":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$"},"quantity":{"type":"string","pattern":"^(0|[1-9]\\d*)$"},"fill":{"type":"boolean"},"upright":{"type":"boolean"},"maxLayers":{"type":"string","pattern":"^(0|[1-9]\\d*)$"},"containerType":{"enum":["auto","20gp","40gp","40hq","45hq"],"type":"string"},"lengthUnit":{"enum":["cm","mm","in"],"type":"string"},"weightUnit":{"enum":["kg","lb"],"type":"string"}},"required":["length","width","height","grossWeight"],"description":"装柜计算器: the inputs, as core’s schema takes them. Figures are decimal strings."},"container_loadOutputs":{"type":"object","description":"Each figure core returns, by id, as a tagged value. The ids listed are the ones the tool’s manifest names; a tool may return more (a figure that only its worked steps use), in the same form.","properties":{"perContainer20GP":{"$ref":"#/components/schemas/PlainValue"},"containers20GP":{"$ref":"#/components/schemas/PlainValue"},"lastContainer20GP":{"$ref":"#/components/schemas/PlainValue"},"rows20GP":{"$ref":"#/components/schemas/PlainValue"},"columns20GP":{"$ref":"#/components/schemas/PlainValue"},"layers20GP":{"$ref":"#/components/schemas/PlainValue"},"along20GP":{"$ref":"#/components/schemas/PlainValue"},"across20GP":{"$ref":"#/components/schemas/PlainValue"},"up20GP":{"$ref":"#/components/schemas/PlainValue"},"volumeUse20GP":{"$ref":"#/components/schemas/PlainValue"},"weightUse20GP":{"$ref":"#/components/schemas/PlainValue"},"limit20GP":{"$ref":"#/components/schemas/PlainValue"},"rank20GP":{"$ref":"#/components/schemas/PlainValue"},"spareLength20GP":{"$ref":"#/components/schemas/PlainValue"},"spareWidth20GP":{"$ref":"#/components/schemas/PlainValue"},"spareHeight20GP":{"$ref":"#/components/schemas/PlainValue"},"spareLengthIn20GP":{"$ref":"#/components/schemas/PlainValue"},"spareWidthIn20GP":{"$ref":"#/components/schemas/PlainValue"},"spareHeightIn20GP":{"$ref":"#/components/schemas/PlainValue"},"perContainer40GP":{"$ref":"#/components/schemas/PlainValue"},"containers40GP":{"$ref":"#/components/schemas/PlainValue"},"lastContainer40GP":{"$ref":"#/components/schemas/PlainValue"},"rows40GP":{"$ref":"#/components/schemas/PlainValue"},"columns40GP":{"$ref":"#/components/schemas/PlainValue"},"layers40GP":{"$ref":"#/components/schemas/PlainValue"},"along40GP":{"$ref":"#/components/schemas/PlainValue"},"across40GP":{"$ref":"#/components/schemas/PlainValue"},"up40GP":{"$ref":"#/components/schemas/PlainValue"},"volumeUse40GP":{"$ref":"#/components/schemas/PlainValue"},"weightUse40GP":{"$ref":"#/components/schemas/PlainValue"},"limit40GP":{"$ref":"#/components/schemas/PlainValue"},"rank40GP":{"$ref":"#/components/schemas/PlainValue"},"spareLength40GP":{"$ref":"#/components/schemas/PlainValue"},"spareWidth40GP":{"$ref":"#/components/schemas/PlainValue"},"spareHeight40GP":{"$ref":"#/components/schemas/PlainValue"},"spareLengthIn40GP":{"$ref":"#/components/schemas/PlainValue"},"spareWidthIn40GP":{"$ref":"#/components/schemas/PlainValue"},"spareHeightIn40GP":{"$ref":"#/components/schemas/PlainValue"},"perContainer40HQ":{"$ref":"#/components/schemas/PlainValue"},"containers40HQ":{"$ref":"#/components/schemas/PlainValue"},"lastContainer40HQ":{"$ref":"#/components/schemas/PlainValue"},"rows40HQ":{"$ref":"#/components/schemas/PlainValue"},"columns40HQ":{"$ref":"#/components/schemas/PlainValue"},"layers40HQ":{"$ref":"#/components/schemas/PlainValue"},"along40HQ":{"$ref":"#/components/schemas/PlainValue"},"across40HQ":{"$ref":"#/components/schemas/PlainValue"},"up40HQ":{"$ref":"#/components/schemas/PlainValue"},"volumeUse40HQ":{"$ref":"#/components/schemas/PlainValue"},"weightUse40HQ":{"$ref":"#/components/schemas/PlainValue"},"limit40HQ":{"$ref":"#/components/schemas/PlainValue"},"rank40HQ":{"$ref":"#/components/schemas/PlainValue"},"spareLength40HQ":{"$ref":"#/components/schemas/PlainValue"},"spareWidth40HQ":{"$ref":"#/components/schemas/PlainValue"},"spareHeight40HQ":{"$ref":"#/components/schemas/PlainValue"},"spareLengthIn40HQ":{"$ref":"#/components/schemas/PlainValue"},"spareWidthIn40HQ":{"$ref":"#/components/schemas/PlainValue"},"spareHeightIn40HQ":{"$ref":"#/components/schemas/PlainValue"},"perContainer45HQ":{"$ref":"#/components/schemas/PlainValue"},"containers45HQ":{"$ref":"#/components/schemas/PlainValue"},"lastContainer45HQ":{"$ref":"#/components/schemas/PlainValue"},"rows45HQ":{"$ref":"#/components/schemas/PlainValue"},"columns45HQ":{"$ref":"#/components/schemas/PlainValue"},"layers45HQ":{"$ref":"#/components/schemas/PlainValue"},"along45HQ":{"$ref":"#/components/schemas/PlainValue"},"across45HQ":{"$ref":"#/components/schemas/PlainValue"},"up45HQ":{"$ref":"#/components/schemas/PlainValue"},"volumeUse45HQ":{"$ref":"#/components/schemas/PlainValue"},"weightUse45HQ":{"$ref":"#/components/schemas/PlainValue"},"limit45HQ":{"$ref":"#/components/schemas/PlainValue"},"rank45HQ":{"$ref":"#/components/schemas/PlainValue"},"spareLength45HQ":{"$ref":"#/components/schemas/PlainValue"},"spareWidth45HQ":{"$ref":"#/components/schemas/PlainValue"},"spareHeight45HQ":{"$ref":"#/components/schemas/PlainValue"},"spareLengthIn45HQ":{"$ref":"#/components/schemas/PlainValue"},"spareWidthIn45HQ":{"$ref":"#/components/schemas/PlainValue"},"spareHeightIn45HQ":{"$ref":"#/components/schemas/PlainValue"},"best":{"$ref":"#/components/schemas/PlainValue"}},"required":[],"additionalProperties":{"$ref":"#/components/schemas/PlainValue"}},"container_loadResult":{"type":"object","properties":{"tool":{"const":"container-load"},"outputs":{"$ref":"#/components/schemas/container_loadOutputs"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/Step"}},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/Warning"}},"provenance":{"$ref":"#/components/schemas/Provenance"}},"required":["tool","outputs","steps","warnings","provenance"],"additionalProperties":false}},"responses":{"BadRequest":{"description":"The request is not one this endpoint takes (`issues` say what).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Not there, or not shown: a dataset the site may not show answers exactly as one that does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"PayloadTooLarge":{"description":"A body over 256 KB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"UnsupportedMediaType":{"description":"Compute takes `application/json` only.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"TooManyRequests":{"description":"Over the keyless limit for this sender. Come back after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalError":{"description":"A tool or its data failed. The answer never says what.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":{"Lang":{"name":"lang","in":"query","required":false,"description":"The language of the source lines in `provenance`.","schema":{"enum":["zh-CN","en","ja","ko"],"default":"zh-CN"}},"Offset":{"name":"offset","in":"query","required":false,"description":"Rows to skip.","schema":{"type":"integer","minimum":0,"default":0}},"Limit":{"name":"limit","in":"query","required":false,"description":"Rows in the page. A page costs one request for each 1000 rows it asks for.","schema":{"type":"integer","minimum":1,"maximum":5000,"default":1000}}},"headers":{"RateLimitLimit":{"description":"The most requests in a burst: the size of a full bucket.","schema":{"type":"integer"}},"RateLimitRemaining":{"description":"Requests left in the bucket now.","schema":{"type":"integer"}},"RateLimitReset":{"description":"Seconds until the bucket is full again.","schema":{"type":"integer"}},"RetryAfter":{"description":"Seconds to wait before asking again.","schema":{"type":"integer"}}}}}