Formquote.
中文

FORMQUOTE / API

让不同商品,共用一套报价接口。

三个数字品类提供公开目录与报价;PCB 继续使用原操作员权限。返回值说明适用性、价格依据及下一步,不执行付款、采购、邮箱验证或自动交付。

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 后端继续依赖保留的旧部署,不得在迁移验证前删除。

完整原始技术参考(中文) ↗