FORMQUOTE / API
让不同商品,共用一套报价接口。
三个数字品类提供公开目录与报价;PCB 继续使用原操作员权限。返回值说明适用性、价格依据及下一步,不执行付款、采购、邮箱验证或自动交付。
OpenAPI 3.1 ↗ · JSON Schema ↗ · Capabilities ↗ · 完整原始技术参考(中文) ↗
https://pcba-quote-lab.pages.dev/api/v2接口与访问
GET /api/v2/categories | 品类、表单字段、默认输入与请求 Schema。 |
|---|---|
GET /api/v2/catalog | 数字目录;用 categoryId 筛选,不接受 pcb。 |
GET /api/v2/capabilities | 认证、报价、交易与交付能力的实际状态。 |
POST /api/v2/quotes | 统一结果。数字品类公开,PCB 需要操作员 Bearer。 |
POST /api/v1/offers | 原 PCB 合同与认证保持不变。 |
请求与示例
发送 Content-Type: application/json;UTF-8 请求正文最多 32 KiB。仅接受数量、规格和用途,不接受邮箱名单、制造文件、字体或音频。schemaVersion 保持 1。下面的请求不会创建交易。
email_verification
curl 'https://pcba-quote-lab.pages.dev/api/v2/quotes' \
--header 'Content-Type: application/json' \
--data '{
"schemaVersion": 1,
"categoryId": "email_verification",
"specifications": {
"count": 10001
},
"comparisonGoal": "lowest_cash_now"
}'sound_effects
curl 'https://pcba-quote-lab.pages.dev/api/v2/quotes' \
--header 'Content-Type: application/json' \
--data '{
"schemaVersion": 1,
"categoryId": "sound_effects",
"specifications": {
"intent": "ui",
"seats": 1,
"aiUse": false
},
"usageContext": {
"commercialUse": true,
"standaloneResale": false
},
"comparisonGoal": "best_requirement_fit"
}'font_license
curl 'https://pcba-quote-lab.pages.dev/api/v2/quotes' \
--header 'Content-Type: application/json' \
--data '{
"schemaVersion": 1,
"categoryId": "font_license",
"specifications": {
"licenseUse": "web",
"seats": 1,
"websites": 1,
"monthlyPageviews": 10000,
"trafficMetric": "pv",
"termYears": 1
},
"usageContext": {
"medium": "website",
"commercialProjects": 1,
"requiresAllStyles": false
},
"comparisonGoal": "best_requirement_fit"
}'按品类表达需求
邮箱 count 为 1–10,000,000,可用 purchaseContext.creditsBySupplier 表达用户自报余额,过期余额不可用。音效 intent 支持 any/ui/motion/nature/train/kettle;seats 为 1–1000,aiUse 指素材本身的 AI 使用。字体 licenseUse 为 web/desktop/both;人数、网站数、每站月流量、pv/uv 和使用年数分别输入。PV 与 UV 不换算,网页许可不自动覆盖 App、SaaS 或 Logo。准确限制和别名以 OpenAPI 为准。
统一模型,保留品类差异
Category 定义合法输入;QuoteRequest 表达 specs、usageContext 和 purchaseContext;CatalogItem 与 Supplier 保存商品和提供者;Offer 绑定本次需求;Pricing 区分各金额;PricingEvidence 保存来源;RequirementMatch 用 yes/no/unknown 表达适用性;ComparisonGroup 定义可比较的分组;Fulfillment 只声明实际可用的下一步。
价格、币种与排序
referencePrice 是原配置目录价;quotedSubtotal 是本次适用的小计;cashRequiredNow 仅在必要费用明确时填写;allocatedJobCost 是使用分摊,不是整包付款;recurringCharge 表示订阅;requestedTermCost 不用首年费乘年数代替。金额使用十进制字符串或 null;未知不等于 0。跟随 groups[].offerIds 顺序,不跨币种、周期和不同 PCB 交期宣称最低到手价。
来源与时效
published_observed 是已收集的公开页面;derived_estimate 是基于这些价格的推算;supplier_live 用于当前 PCB 客户估算,不代表最终报价或锁价。generatedAt 与来源 checkedAt 不相同。邮箱来源复核窗口为 7 天,音效和字体为 30 天,PCB 最长 5 分钟。重新请求 API 不更新旧来源日期。保留 sourceUrl 和不适用原因。
结果状态与错误
HTTP 200 仍可能返回 partial 或 blocked。complete/partial/blocked 是结果完整程度,不是订单状态。读取 offers、eligibility、supplierErrors 和 missingInputs;识别独立的 error.code/message 结构。400 修改输入;401/403 检查 PCB 权限与 Origin;405/413/415 检查方法、大小与类型;502 不能用旧报价冒充新结果。请求 ID 不是订单号。
AI 接入与权限
公共 AI 工具只注册 email_verification、sound_effects、font_license,参数引用 DigitalQuoteRequest。PCB 必须使用已授权操作员凭证,浏览器 Origin 检查和认证不变;不要把凭证提供给客户或公共 AI。merchant_checkout/inquiry 只表示打开商家页面,不代表购买、发信或授权成功。order/payment/automaticFulfillment 均未启用。
国际化与兼容
网页支持 /zh/、/en/、/ja/、/fr/、/de/。语言切换只改变显示,报价 API 仍使用原路径、字段和枚举,不在请求体添加未声明的 locale 字段。金额不换汇,供应商原始条款保持原文并标记。PCB 后端继续依赖保留的旧部署,不得在迁移验证前删除。