{"openapi":"3.1.0","info":{"title":"草料开放平台 API","version":"2.0.0"},"paths":{"/api/v2/rpc/qrcodes/getContent":{"post":{"tags":["活码"],"summary":"活码内容","description":"作用：  \n根据活码获取其展示内容（元信息与字段列表）。  \n\n使用场景：  \n已知活码 coding 或 URL，需要获取该码的标题、链接及内容字段时调用。  \n\n关键参数：  \nqrcode（必填）：活码 coding 或完整 URL，指定要获取内容的活码。  \nformat（选填）：返回格式，可选 json 或 markdown，默认 json。  \n\n返回：  \nmeta（title、url、coding）与 fields（字段列表，含 field_id、type、title、value）。","operationId":"qrcodes_get_content","requestBody":{"content":{"application/json":{"schema":{"properties":{"qrcode":{"type":"string","title":"Qrcode","description":"活码 coding 或完整 URL"},"format":{"anyOf":[{"type":"string","enum":["markdown","json"]},{"type":"null"}],"title":"Format","description":"返回格式：json（默认）或 markdown","default":"json"}},"additionalProperties":true,"type":"object","required":["qrcode"],"title":"Body","description":"活码内容请求：必填 qrcode（coding 或 URL），可选 format。"},"examples":{"default":{"summary":"活码内容示例","value":{"qrcode":"https://qr46.cn/xxx/yyy","format":"json"}}}}}},"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Qrcodes Get Content"},"example":{"code":0,"message":"ok","data":{"meta":{"id":6763267,"title":"示例活码名称","url":"https://qr46.cn/xxx/yyy","coding":"aBcDeFg"},"fields":[{"field_id":1001,"type":"text","title":"标题","value":{"value":"示例内容"}},{"field_id":1002,"type":"recordview","title":"","value":{}},{"field_id":1003,"type":"recordlog","title":"","value":{}}]}}}}},"400":{"description":"参数错误","content":{"application/json":{"example":{"code":400,"message":"body.qrcode: Field required","data":{}}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/qrcodes/getOperation":{"post":{"tags":["活码"],"summary":"活码关联操作项列表","description":"作用：  \n根据活码 coding 或 URL 获取该码关联的操作项元素列表（扁平化结构）。  \n\n使用场景：  \n需要先拿到活码关联的操作项/表单/状态等下游资源入参，再进行后续调用时使用。  \n\n关键参数：  \nqrcode（必填）：活码 coding 或完整 URL，指定要查询的活码。  \n\n返回：  \ndata（数组）：每项含 operation_name、operation_description、element_type、element_type_title、element_value。","operationId":"qrcodes_get_operation","requestBody":{"content":{"application/json":{"schema":{"properties":{"qrcode":{"type":"string","title":"Qrcode","description":"活码 coding 或完整 URL"}},"additionalProperties":true,"type":"object","required":["qrcode"],"title":"Body","description":"活码关联操作项列表请求：根据活码 coding 或 URL 获取操作项元素。"},"examples":{"default":{"summary":"活码关联操作项示例","value":{"qrcode":"https://qr46.cn/xxx/yyy"}}}}}},"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrcodesGetOperationResponse"},"example":{"code":0,"message":"ok","data":[{"operation_name":"巡检操作","operation_description":"每日巡检填写","element_type":2,"element_type_title":"填写表单","element_value":122507}]}}}},"400":{"description":"参数错误","content":{"application/json":{"example":{"code":400,"message":"body.qrcode: Field required","data":{}}}}},"404":{"description":"码不存在或无权限","content":{"application/json":{"example":{"code":404,"message":"Qrcode not found or access denied","data":{}}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/forms/getTemplate":{"post":{"tags":["表单与记录"],"summary":"表单结构/内容","description":"作用：  \n根据表单模板 ID 拉取该表单的完整结构与配置。  \n\n使用场景：  \n调用 `record/addRecord` 前解析字段 ID、选项 ID、矩阵列 ID 等；自定义展示表单、校验填写规则；对接审批阶段、处理状态等元数据。  \n\n关键参数：  \ntpl_id（必填）：表单模板 ID，可从二维码功能项/表单列表等接口取得。  \n\n返回：  \n成功时为 JSON 对象，与表单详情 JSON 约定一致：顶层含 `version` 与 `data`；`data` 内固定包含 `form`、`org`、`project`、`groups`、`audit_config`、`process_status_config`、`rules`。  \n其中 `groups` 为分组及字段列表（`field_id`、`field_type`、`settings` 等）；各字段类型的 `settings` 扩展项见产品侧表单详情文档。","operationId":"forms_get_template","requestBody":{"content":{"application/json":{"schema":{"properties":{"tpl_id":{"type":"integer","title":"Tpl Id","description":"表单模板 ID（与控制台中该表单的 ID 一致）。可从二维码功能配置、表单列表等能力中取得；用于拉取完整表单结构（分组、字段 field_id、选项、规则等）。"}},"additionalProperties":false,"type":"object","required":["tpl_id"],"title":"Body","description":"POST /rpc/forms/getTemplate 请求体。\n\n仅需传入表单模板 ID；调用方身份由访问令牌确定。"}}}},"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"properties":{"code":{"type":"integer","description":"平台状态码，0 表示成功"},"message":{"type":"string","description":"状态消息"},"data":{"properties":{"version":{"type":"string","description":"内容版本号（如 v1）。"},"data":{"properties":{"form":{"additionalProperties":true,"type":"object","description":"表单基础信息（id、name、type、编号、创建/更新时间等）。"},"org":{"additionalProperties":true,"type":"object","description":"表单所属组织侧摘要信息。"},"project":{"additionalProperties":true,"type":"object","description":"所属分区信息。"},"groups":{"items":{"additionalProperties":true,"type":"object"},"type":"array","description":"分组与字段定义列表（含 field_id、field_type、settings 等）。"},"audit_config":{"additionalProperties":true,"type":"object","description":"审批流程配置。"},"process_status_config":{"additionalProperties":true,"type":"object","description":"处理状态配置。"},"rules":{"additionalProperties":true,"type":"object","description":"填写规则（时间限制、每人/表单填写次数限制等）。"}},"additionalProperties":true,"type":"object","description":"表单结构对象本体：分组与字段定义、审批、处理状态、填写规则等。"}},"type":"object","description":"统一业务包装层。"}},"additionalProperties":true,"type":"object","title":"Response Forms Get Template","description":"表单模板详情的 JSON 响应体。"},"example":{"code":0,"message":"ok","data":{"version":"v1","data":{"form":{"id":122507,"name":"设备巡检","type":0,"type_text":"普通表单","number":"D32","description":"请仔细填写表单中的内容","submit_button_title":"提交","created_at_iso":"2026-02-27 10:26:42(UTC+08:00)","updated_at_iso":"2026-03-09 17:13:04(UTC+08:00)"},"org":{"id":94910252},"project":{"id":1104},"groups":[],"audit_config":{"enabled":false,"stages":[]},"process_status_config":{"enabled":false,"options":[]},"rules":{"time_limit_record":[]}}}}}}},"400":{"description":"参数错误","content":{"application/json":{"example":{"code":400,"message":"body.tpl_id: Field required","data":{}}}}},"404":{"description":"模板不存在或无权限","content":{"application/json":{"example":{"detail":"Form template not found or access denied"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/record/getRecord":{"post":{"tags":["表单与记录"],"summary":"获取单条记录详询","description":"作用：  \n根据记录 ID 或记录 URL 获取单条记录详情。  \n\n使用场景：  \n需要按 record_id 或 record_url 查询单条记录详情、且需支持 format/options 等扩展时调用。  \n\n关键参数：  \nrecord_id（选填）：记录 ID（二选一）。  \nrecord_url（选填）：记录短链接 URL（记录码 r 开头）（二选一）。  \nformat（选填）：输出格式，可选 json、json-ld、markdown，默认 json。  \noptions（选填）：扩展选项，如 need_data_mask、user_id、auth_id（脱敏时使用）。  \n\n返回：  \n单条记录详询（含 serial_number、add_time、recorder、fields、fields_full 等）。","operationId":"record_get_record","requestBody":{"content":{"application/json":{"schema":{"properties":{"record_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Record Id","description":"记录 ID"},"record_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Record Url","description":"记录 URL（记录码 r 开头）"},"format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format","description":"输出格式：json / json-ld / markdown","default":"json"},"options":{"anyOf":[{"properties":{"include_quiz":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Quiz","description":"仅单条 JSON 记录详情：返回可见计分题与原生成绩"},"need_data_mask":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Need Data Mask","description":"是否启用隐私脱敏（启用后需配合 user_id / auth_id 判断脱敏规则）"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id","description":"草料平台用户 ID（脱敏时需要）"},"auth_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auth Id","description":"用户授权 ID（脱敏时需要）"},"filterSectionNormalizers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Filtersectionnormalizers","description":"需要排除的数据模块名称列表，用于裁剪输出（如 ['process_status', 'audit']）"}},"type":"object","title":"RecordRenderOptions","description":"renderRecord / renderRecords 的 options 扩展选项。所有字段均为可选。"},{"type":"null"}],"description":"扩展选项：need_data_mask / user_id / auth_id / filterSectionNormalizers"}},"additionalProperties":false,"type":"object","title":"Body","description":"POST /rpc/record/getRecord 请求体：仅支持 record_id 或 record_url（二选一）。"}}}},"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Record Get Record"},"example":{"code":0,"message":"ok","data":{"serial_number":"L***","add_time":"2026-03-09T16:36:29+08:00","recorder":"示例用户","fields":[],"fields_full":[]}}}}},"400":{"description":"参数错误","content":{"application/json":{"example":{"code":400,"message":"record_id or record_url required","data":{}}}}},"404":{"description":"记录不存在","content":{"application/json":{"example":{"code":404,"message":"Record not found","data":{}}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/record/getRecords":{"post":{"tags":["表单与记录"],"summary":"获取记录列表","description":"作用：  \n按条件获取记录列表。  \n\n使用场景：  \n需要按 filters（record_template.id / qrcode.id）、search_key、时间、分页等条件查询记录列表时调用。  \n\n关键参数：  \nformat（选填）：输出格式，可选 json、json-ld、markdown，默认 json。  \noptions（选填）：扩展选项，如 need_data_mask、filterSectionNormalizers 等。  \nsearch_key（选填）：组件内容关键字模糊查询，对记录内字段全文检索。  \nfilters（选填）：筛选条件对象，可含 record_template、qrcode、project、audit、process_status、state_changes、recorder 等。  \nrecord_type（选填）：记录类型筛选，0 全部 / 3 状态变更 / 7 子码编辑，默认 0。  \nstart_time（选填）：开始时间，Unix 时间戳或 ISO 8601 字符串。  \nend_time（选填）：结束时间，Unix 时间戳或 ISO 8601 字符串。  \npage_size（选填）：每页记录数，最大 50，默认 10。  \npage_token（选填）：分页游标，由上一页响应返回。  \nlast_record_id（选填）：记录 ID 偏移，从此 ID 之后开始查。  \norder_by（选填）：排序方式。  \nget_total_count（选填）：是否返回总数，0 可不查总数以提升性能，默认 1。  \n\n返回：  \n成功时为 JSON，包含 `message`、`data`、`code` 等字段。","operationId":"record_get_records","requestBody":{"content":{"application/json":{"schema":{"properties":{"format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format","description":"输出格式：json / json-ld / markdown","default":"json"},"options":{"anyOf":[{"properties":{"include_quiz":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Quiz","description":"仅单条 JSON 记录详情：返回可见计分题与原生成绩"},"need_data_mask":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Need Data Mask","description":"是否启用隐私脱敏（启用后需配合 user_id / auth_id 判断脱敏规则）"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id","description":"草料平台用户 ID（脱敏时需要）"},"auth_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auth Id","description":"用户授权 ID（脱敏时需要）"},"filterSectionNormalizers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Filtersectionnormalizers","description":"需要排除的数据模块名称列表，用于裁剪输出（如 ['process_status', 'audit']）"}},"type":"object","title":"RecordRenderOptions","description":"renderRecord / renderRecords 的 options 扩展选项。所有字段均为可选。"},{"type":"null"}],"description":"扩展选项，与 getRecord 一致：need_data_mask / user_id / auth_id / filterSectionNormalizers"},"search_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Key","description":"组件内容关键字模糊查询"},"filters":{"anyOf":[{"properties":{"record_template":{"anyOf":[{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id","description":"表单模板 ID"}},"type":"object","title":"RecordTemplateFilter","description":"按表单模板维度筛选记录。"},{"type":"null"}],"description":"按表单模板筛选；id 为表单模板 ID"},"qrcode":{"anyOf":[{"properties":{"id":{"anyOf":[{"type":"integer"},{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Id","description":"二维码 ID；支持单个或 ID 列表"},"template_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Template Id","description":"二维码模板 ID（批量模板码）"},"category_id":{"anyOf":[{"type":"integer"},{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Category Id","description":"二维码分组 ID；支持单个或 ID 列表"}},"type":"object","title":"QrcodeFilter","description":"按二维码维度筛选记录，支持按单个码、码模板或码分组筛选。"},{"type":"null"}],"description":"按二维码筛选；id、template_id、category_id 可选"},"project":{"anyOf":[{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id","description":"分区 ID"}},"type":"object","title":"ProjectFilter","description":"按分区维度筛选记录。"},{"type":"null"}],"description":"按分区筛选；id 为分区 ID"},"audit":{"anyOf":[{"properties":{"stage_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stage Id","description":"审核阶段 ID"},"status":{"anyOf":[{"type":"integer","enum":[0,1,2]},{"type":"null"}],"title":"Status","description":"审核状态：0 待审核 / 1 审核通过 / 2 审核不通过；不传为全部状态"}},"type":"object","title":"AuditFilter","description":"按审核维度筛选记录，可按审核阶段或审核状态筛选。"},{"type":"null"}],"description":"按审核筛选；stage_id 审核阶段 ID，status 0/1/2"},"process_status":{"anyOf":[{"properties":{"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text","description":"处理状态文本（精确匹配）"}},"type":"object","title":"ProcessStatusFilter","description":"按处理状态文本精确匹配筛选记录。可选值取决于表单的处理状态配置。"},{"type":"null"}],"description":"按处理状态文本精确匹配；text 需与表单中配置的处理状态文案一致"},"state_changes":{"anyOf":[{"properties":{"state_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"State Id","description":"状态组 ID"}},"type":"object","title":"StateChangesFilter","description":"筛选触发了指定状态组变更的记录。"},{"type":"null"}],"description":"筛选触发了指定状态组变更的记录；state_id 为状态组 ID"},"recorder":{"anyOf":[{"properties":{"auth_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Auth Id","description":"填表人 auth_id（草料平台用户授权 ID）"}},"type":"object","title":"RecorderFilter","description":"按填表人维度筛选记录。"},{"type":"null"}],"description":"按填表人筛选；auth_id 为填表人 auth_id"}},"additionalProperties":true,"type":"object","title":"RecordListFilters","description":"getRecords 筛选条件。为 JSON 对象，包含多个可选的筛选子对象，支持组合使用；所有子对象及其字段均为可选。"},{"type":"null"}],"description":"筛选条件对象，可组合使用；各子对象见 RecordListFilters 类型定义（record_template、qrcode、project、audit、process_status、state_changes、recorder）"},"record_type":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Record Type","description":"记录类型：0 全部 / 3 状态变更 / 7 子码编辑","default":0},"start_time":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Start Time","description":"开始时间，Unix 时间戳或 ISO 8601"},"end_time":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"End Time","description":"结束时间，Unix 时间戳或 ISO 8601"},"page_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page Size","description":"每页记录数，最大 50"},"page_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Token","description":"分页游标"},"last_record_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Record Id","description":"记录 ID 偏移"},"order_by":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order By","description":"排序方式"},"get_total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Get Total Count","description":"是否获取记录总数，0 可提升性能","default":1}},"additionalProperties":false,"type":"object","title":"Body","description":"POST /rpc/record/getRecords 请求体：仅支持 filters（按 record_template.id / qrcode.id），不支持 coding/URL form。"}}}},"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Record Get Records"},"example":{"code":0,"message":"ok","data":{"list":[{"record_id":2644272,"record_number":"L136","record_code":"r06mEwjF7vqSvXpfTbrF781","record_url":"https://qr46.cn/oEuE2E/r06mEwjF7vqSvXpfTbrF781","submit_at":1773056540,"submit_at_iso":"2026-03-09 19:42:20(UTC+08:00)","submit_method":"微信其他入口填写","recorder":{"auth_id":16559,"user_id":831988,"name":"示例用户"},"project":{"id":1104,"name":"小米园区","number":"F1"},"qrcode":{"id":6762875,"name":"电梯巡检码","type":0,"type_text":"普通二维码"},"org":{"id":94910252,"name":"示例企业","code":"oEuE2E"},"record_template":{"id":122507,"name":"设备巡检","type":0,"type_text":"普通表单","number":"D32"},"audit":{"enabled":false},"process_status":{"enabled":false},"state_changes":[],"tpl_groups":[{"group_id":71399639089153,"group_title":"","show_group_title":false,"is_page_break_group":false,"fields":[{"field_id":71399639089153,"field_title":"巡检人姓名","field_type":"name","field_value":"张**"}]}]}],"next_page_token":"CAESKAoVChMKD3JlY29yZF9hZGRfdGltZRAB...","total":50}}}}},"400":{"description":"参数错误","content":{"application/json":{"example":{"code":400,"message":"Bad request","data":{}}}}},"502":{"description":"服务暂时不可用","content":{"application/json":{"example":{"detail":"Service temporarily unavailable"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/record/getFormList":{"post":{"tags":["表单与记录"],"summary":"获取表单列表","description":"作用：  \n获取当前账号下的表单列表。  \n\n使用场景：  \n需要列举企业内所有表单、按标题/备注/编号模糊搜索表单、或按编号精确定位表单时调用。  \n\n关键参数：  \npage（选填）：页码，默认 1。  \npage_size（选填）：每页条数，默认 10，最大 20。  \nsearch_key（选填）：模糊搜索关键字，匹配表单标题、备注、编号。  \nnumber（选填）：表单编号精确查询（如 D32）。  \n\n返回：  \nversion、list（表单数组，每项含 id、name、type、type_text、number、note、时间戳、project 分区信息）、page（current_page、last_page、per_page、total）。","operationId":"record_get_form_list","requestBody":{"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page","description":"页码，默认 1","default":1},"page_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Page Size","description":"每页条数，默认 10，最大 20","default":10},"search_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search Key","description":"模糊搜索关键字，匹配表单标题、备注、编号；不传或空表示不按关键字筛选"},"number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Number","description":"表单编号精确查询；不传或空表示不按编号筛选"}},"additionalProperties":true,"type":"object","title":"Body","description":"POST /rpc/record/getFormList 请求体。调用身份由当前 API 密钥确定，无需在请求体中附带额外身份字段。"}}}},"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"properties":{"code":{"type":"integer","description":"状态码，0 表示成功"},"message":{"type":"string","description":"状态信息"},"data":{"properties":{"version":{"type":"string","description":"版本号（如 v1）"},"list":{"items":{"properties":{"id":{"type":"integer","description":"表单 ID"},"name":{"type":"string","description":"表单名称"},"type":{"type":"integer","description":"表单类型（0 普通表单）"},"type_text":{"type":"string","description":"表单类型中文名"},"number":{"type":"string","description":"表单编号（如 D32）"},"note":{"type":"string","description":"表单备注"},"created_at":{"type":"integer","description":"创建时间 Unix 时间戳"},"created_at_iso":{"type":"string","description":"创建时间 ISO 8601"},"updated_at":{"type":"integer","description":"更新时间 Unix 时间戳"},"updated_at_iso":{"type":"string","description":"更新时间 ISO 8601"},"active_at":{"type":"integer","description":"最近活跃时间 Unix 时间戳"},"active_at_iso":{"type":"string","description":"最近活跃时间 ISO 8601"},"project":{"properties":{"id":{"type":"integer","description":"分区 ID"},"name":{"type":"string","description":"分区名称"},"number":{"type":"string","description":"分区编号"}},"type":["object","null"],"description":"所属分区信息，null 表示未关联分区"}},"type":"object"},"type":"array","description":"表单列表"},"page":{"properties":{"current_page":{"type":"integer","description":"当前页码"},"last_page":{"type":"integer","description":"最后一页页码"},"per_page":{"type":"integer","description":"每页条数"},"total":{"type":"integer","description":"总记录数"}},"type":"object","description":"分页信息"}},"type":"object","description":"业务数据对象。"}},"additionalProperties":true,"type":"object","title":"Response Record Get Form List","description":"表单列表响应。"},"example":{"code":0,"message":"ok","data":{"version":"v1","list":[{"id":122507,"name":"设备巡检","type":0,"type_text":"普通表单","number":"D32","note":"每日设备巡检记录","created_at":1740623881,"created_at_iso":"2026-02-27 10:38:01(UTC+08:00)","updated_at":1740710281,"updated_at_iso":"2026-02-28 10:38:01(UTC+08:00)","active_at":1740796681,"active_at_iso":"2026-03-01 10:38:01(UTC+08:00)","project":{"id":1104,"name":"小米园区","number":"F1"}}],"page":{"current_page":1,"last_page":3,"per_page":20,"total":42}}}}}},"400":{"description":"参数错误","content":{"application/json":{"example":{"code":400,"message":"Bad request","data":{}}}}},"502":{"description":"服务暂时不可用","content":{"application/json":{"example":{"code":502,"message":"Service temporarily unavailable","data":{}}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/record/addRecord":{"post":{"tags":["表单与记录"],"summary":"添加记录","description":"作用：  \n向指定 ID（code_id + tpl_id）下提交一条填写记录。  \n\n使用场景：  \n用户或 AI 在表单场景下完成填写后，需要将数据提交到指定表单模板时调用。  \n\n关键参数：  \ncode_id（必填）：二维码 ID。  \ntpl_id（必填）：表单模板 ID。  \n说明：所需身份字段由请求自动解析，无需在 body 中填写。  \nfields（必填）：字段值列表，每项含 field_id（组件 ID）、field_type（组件类型）、field_value（组件值，格式随组件类型而定）。  \n\n返回：  \nversion、record_id、record_number、record_code、record_url、submit_at 等。","operationId":"record_add_record","requestBody":{"content":{"application/json":{"schema":{"properties":{"code_id":{"type":"integer","title":"Code Id","description":"二维码 ID"},"tpl_id":{"type":"integer","title":"Tpl Id","description":"表单模板 ID"},"fields":{"items":{"properties":{"field_id":{"type":"integer","title":"Field Id","description":"组件 ID，从 forms/getTemplate 返回的字段列表中取得"},"field_type":{"type":"string","title":"Field Type","description":"组件类型标识，如 name / tel / text / textarea / date / time / sex / radio / checkbox / number / address / chained_selects / checklist / matrix / dynamic_matrix 等"},"field_value":{"title":"Field Value","description":"组件值，格式随 field_type 变化：纯文本类为字符串；单选类为对象（如 {option_id: 123}）；多选类为对象（如 {values: [{option_id: 1}, ...]}）；检查项 / 表格 / 自增表格为嵌套结构"}},"additionalProperties":false,"type":"object","required":["field_id","field_type","field_value"],"title":"RecordFieldInput","description":"addRecord 字段值对象。"},"type":"array","title":"Fields","description":"字段值列表，每项为 RecordFieldInput 对象（field_id + field_type + field_value）"}},"additionalProperties":false,"type":"object","required":["code_id","tpl_id","fields"],"title":"Body","description":"POST /rpc/record/addRecord 请求体：仅支持 code_id + tpl_id（不支持 qrcode/coding/URL）。"}}}},"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Record Add Record"},"example":{"code":0,"message":"ok","data":{"version":"v1","record_id":"2644408","record_number":"L136","record_code":"r06mEwjF7vqSvXpfTbrF781","record_url":"https://qr46.cn/oEuE2E/r06mEwjF7vqSvXpfTbrF781","submit_at":1773056540,"submit_at_iso":"2026-03-09T11:42:20+00:00"}}}}},"400":{"description":"参数错误或业务错误","content":{"application/json":{"example":{"code":400,"message":"missing required param","data":{}}}}},"404":{"description":"码不存在或无权限","content":{"application/json":{"example":{"code":404,"message":"Code_id or form not found or access denied","data":{}}}}},"403":{"description":"无写权限","content":{"application/json":{"example":{"code":403,"message":"API key does not have write permission","data":{}}}}},"502":{"description":"服务暂时不可用","content":{"application/json":{"example":{"code":502,"message":"Service temporarily unavailable","data":{}}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/certificates/verify":{"post":{"tags":["表单与记录"],"summary":"凭证核销","description":"作用：  \n对凭证类记录执行核销操作。  \n\n使用场景：  \n用户出示核销码后，需要核销（如从「待核销」改为「已核销」）时调用。  \n\n关键参数：  \ncertificate_code（必填）：核销码 coding 或 URL，指定要核销的凭证记录。  \naction_type（必填）：`set_certificate_status` 或 `set_next_certificate_status`。  \nto_certificate_status（选填）：目标状态名或 ID；当 `action_type=set_certificate_status` 时必填。  \nfrom_certificate_status（选填）：当前状态选项，多状态时可指定从哪一状态变更。  \ntpl_id（选填）：表单模板 ID，默认 0。  \ncode_id（选填）：二维码 ID，默认 0。  \n\n返回：  \nrecord_number、record_id、submit_at、certificate_status 等核销结果。","operationId":"certificates_verify","requestBody":{"content":{"application/json":{"schema":{"properties":{"certificate_code":{"type":"string","title":"Certificate Code","description":"核销码 coding 或 URL"},"action_type":{"type":"string","enum":["set_certificate_status","set_next_certificate_status"],"title":"Action Type","description":"set_certificate_status=指定状态，set_next_certificate_status=推进到下一状态"},"to_certificate_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Certificate Status","description":"目标状态，action_type=set_certificate_status 时必填"},"from_certificate_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Certificate Status","description":"当前状态，可选"},"tpl_id":{"type":"integer","minimum":0.0,"title":"Tpl Id","description":"表单模板 ID，默认 0","default":0},"code_id":{"type":"integer","minimum":0.0,"title":"Code Id","description":"二维码 ID，默认 0","default":0}},"additionalProperties":true,"type":"object","required":["certificate_code","action_type"],"title":"Body","description":"POST /rpc/certificates/verify 请求体（internalapi 字段风格）。"},"examples":{"default":{"summary":"凭证核销示例","value":{"certificate_code":"https://qr46.cn/xxx/yyy","action_type":"set_certificate_status","to_certificate_status":"已核销","from_certificate_status":"待核销","tpl_id":122507,"code_id":6763267}}}}}},"responses":{"200":{"description":"成功","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Certificates Verify"},"example":{"code":0,"message":"ok","data":{"record_number":"L***","record_id":1,"submit_at":1773302553,"certificate_status":"已核销"}}}}},"400":{"description":"参数错误","content":{"application/json":{"example":{"code":400,"message":"Parameter 'to_certificate_status' is required when action_type is 'set_certificate_status'","data":{}}}}},"403":{"description":"无写权限","content":{"application/json":{"example":{"code":403,"message":"API key does not have write permission","data":{}}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/record/getActivities":{"post":{"tags":["表单与记录"],"summary":"分页读取填写记录的后续动态","description":"仅查询，不标记已读。组织与访问者来自凭证；OAuth 需 records.read。access=denied 不代表没有动态，关联对象需另行鉴权读取。","operationId":"record_activities_list","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordActivitiesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Record Activities List"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/metrics/list":{"post":{"tags":["指标"],"summary":"业务对象目录 × 可算的量","description":"入口方法。一次返回当前组织的业务对象目录（表单/周期计划/码，带用户自己起的名字）、开箱可算的结构派生量（已按组织适用性裁剪）与分组维度提示。不知道从哪开始时先调它。","operationId":"metrics_list","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Metrics List"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/metrics/get":{"post":{"tags":["指标"],"summary":"看一个量的完整定义","description":"返回某个结构派生量的完整定义：它在数什么、适用条件、可用维度、要点与陷阱（比例类会说清分母口径）。","operationId":"metrics_get","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsGetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Metrics Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/metrics/query":{"post":{"tags":["指标"],"summary":"按口径出数","description":"回答「多少 / 占比 / 趋势 / 分布」一律用它。时间窗必填；给 group_by 得到分布，给两个维度（逗号分隔或数组）得到双维交叉分组，此时 group_key/group_label 是按维度名做键的对象。返回的 drill_down 可原样作为 record/searchRecords 的 filters/time，直接看构成这个数字的记录。","operationId":"metrics_query","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsQueryRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Metrics Query"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/record/searchRecords":{"post":{"tags":["表单与记录"],"summary":"按条件检索记录行摘要（下钻承接端）","description":"七维过滤的记录**行摘要**（含经表单结构还原的字段名），metrics/query 的 drill_down 原样传入即可看到构成某个数字的记录。LIMIT 封顶且**没有翻页**：要更多请收窄条件，要总量用 metrics/query。与 record/getRecords 的区别：本方法查 Hologres 行摘要、面向分析下钻；getRecords 是完整渲染列表、面向数据同步。","operationId":"record_search_records","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordSearchRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Record Search Records"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/qrcodes/list":{"post":{"tags":["活码"],"summary":"活码列表","description":"当前组织有权活码摘要（name/id/coding/tpl_id/project_id），支持时间、分区与候选页分页。id用于编辑，coding用于内容查询；权限/分区筛选时total=null，空页仍检查next_page_token。","operationId":"qrcodes_list","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrcodesListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Qrcodes List"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/templates/list":{"post":{"tags":["模板与子码"],"summary":"批量模板列表","description":"模板摘要列表：template_id（母码ID，供schema/建码使用）、tpl_id（内部模板编号）、name/coding/project_id/create_time；支持project_id过滤。详情用 templates_get。成员按候选页鉴权，total 为 null；空页仍需检查 next_page_token。","operationId":"templates_list","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplatesListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Templates List"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/templates/get":{"post":{"tags":["模板与子码"],"summary":"批量模板结构","description":"模板内容：占位码 meta + 字段结构（fields）。template 为占位码 coding 或 URL。建码、编辑及约束请用 templates_get_schema，传 template_id（不要传 tpl_id）。","operationId":"templates_get","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateGetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Templates Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/templates/listQrcodes":{"post":{"tags":["模板与子码"],"summary":"模板下子码列表","description":"占位码模板下的子码列表（name/id/coding），支持时间过滤与分页。","operationId":"templates_list_qrcodes","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateQrcodesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Templates List Qrcodes"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/templates/getSubcode":{"post":{"tags":["模板与子码"],"summary":"子码内容","description":"模板下某个子码的内容（meta + fields）。","operationId":"templates_get_subcode","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateSubcodeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Templates Get Subcode"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/projects/list":{"post":{"tags":["分区"],"summary":"分区列表","description":"当前组织下的分区（project）列表：project_id/name/parent_id。分区是记录与码的归属维度——metrics/query 可按 project 分组或用 filters.project_ids 过滤。","operationId":"projects_list","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectsListRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Projects List"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/labels/getConfig":{"post":{"tags":["AI建码"],"summary":"读取当前标签样式与支持的导出格式","operationId":"labels_get_config","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelConfig"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/labels/preview":{"post":{"tags":["AI建码"],"summary":"按当前样式预览指定真实码的标签","operationId":"labels_preview","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelPreview"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/labelExports/create":{"post":{"tags":["AI建码"],"summary":"为明确指定的码创建标签导出任务","operationId":"label_exports_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelExportCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/labelExports/get":{"post":{"tags":["AI建码"],"summary":"查询标签导出任务及下载文件","operationId":"label_exports_get","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LabelExportGet"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/auth/getContext":{"post":{"tags":["AI建码"],"summary":"发现当前组织、有效权限及能力","operationId":"auth_get_context","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthDiscovery"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/cyclePlans/list":{"post":{"tags":["AI建码"],"summary":"分页发现周期计划","operationId":"cycle_plans_list","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CyclePlanList"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/cyclePlans/get":{"post":{"tags":["AI建码"],"summary":"读取周期计划详情","operationId":"cycle_plans_get","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CyclePlanGet"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/cycleTasks/listQrcodes":{"post":{"tags":["AI建码"],"summary":"按周期分页读取具体码的执行情况","operationId":"cycle_tasks_list_qrcodes","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CycleQrcodes"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/assets/requestUpload":{"post":{"tags":["AI建码"],"summary":"申请临时文件上传","operationId":"assets_request_upload","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/assets/getUpload":{"post":{"tags":["AI建码"],"summary":"查询临时文件上传状态","operationId":"assets_get_upload","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadStatus"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/templates/listEditable":{"post":{"tags":["AI建码"],"summary":"查找可用于AI建码的模板","operationId":"templates_list_editable","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateList"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/templates/getSchema":{"post":{"tags":["AI建码"],"summary":"读取模板写入字段与版本","operationId":"templates_get_schema","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateGet"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/templates/create":{"post":{"tags":["AI建码"],"summary":"创建基础信息模板","operationId":"templates_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/templates/previewEdit":{"post":{"tags":["AI建码"],"summary":"预览模板修改及影响范围","operationId":"templates_preview_edit","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplatePreview"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/templates/edit":{"post":{"tags":["AI建码"],"summary":"保存基础信息模板修改","operationId":"templates_edit","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateEdit"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/qrcodes/prevalidate":{"post":{"tags":["AI建码"],"summary":"批量建码预校验，不创建码","operationId":"qrcodes_prevalidate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchValidate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/qrcodes/createBatch":{"post":{"tags":["AI建码"],"summary":"提交批量建码任务","operationId":"qrcodes_create_batch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchSubmit"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/qrcodeTasks/get":{"post":{"tags":["AI建码"],"summary":"查询建码任务进度","operationId":"qrcode_tasks_get","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskGet"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/qrcodes/listCreateTargets":{"post":{"tags":["AI建码"],"summary":"查询当前可用于新建的分区或目录","operationId":"qrcodes_list_create_targets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTargets"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/qrcodeTasks/getResults":{"post":{"tags":["AI建码"],"summary":"分页读取批量建码逐项结果","operationId":"qrcode_tasks_get_results","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResults"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/cycleTasks/getCompletion":{"post":{"tags":["AI建码"],"summary":"查询周期任务实际完成情况","operationId":"cycle_tasks_get_completion","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CycleCompletion"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/forms/create":{"post":{"tags":["AI建码"],"summary":"创建填写表单及可选周期","operationId":"forms_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/qrcodes/create":{"post":{"tags":["AI建码"],"summary":"创建普通图文码并绑定表单","operationId":"qrcodes_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrcodeCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/qrcodes/createUrlJump":{"post":{"tags":["AI建码"],"summary":"创建网址跳转码","operationId":"qrcodes_create_url_jump","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UrlJumpQrcodeCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/qrcodes/createMultiUrl":{"post":{"tags":["AI建码"],"summary":"创建网址聚合码","operationId":"qrcodes_create_multi_url","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultiUrlQrcodeCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/staticQrcodes/create":{"post":{"tags":["AI建码"],"summary":"创建文本或网址静态码","operationId":"static_qrcodes_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticQrcodeCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/gallery/categories":{"post":{"tags":["AI建码"],"summary":"浏览模板库系统场景与行业分类","operationId":"gallery_categories","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryCategories"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/gallery/list":{"post":{"tags":["AI建码"],"summary":"按系统分类浏览公开模板库","operationId":"gallery_list","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryList"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/gallery/get":{"post":{"tags":["AI建码"],"summary":"读取公开模板库详情","operationId":"gallery_get","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryGet"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/gallery/prepare-creation":{"post":{"tags":["AI建码"],"summary":"准备官方模板建码方案","operationId":"gallery_prepare_creation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryPrepare"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/gallery/create-from-plan":{"post":{"tags":["AI建码"],"summary":"执行官方模板建码方案","operationId":"gallery_create_from_plan","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GalleryCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/rpc/usage/get":{"post":{"tags":["用量"],"summary":"查询当前组织 MCP/API 当日额度","operationId":"usage_get","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageGet"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"AuthDiscovery":{"properties":{"detail":{"type":"string","enum":["summary","full"],"title":"Detail","description":"MCP默认能力分组摘要，full为完整列表；指定operations始终返回对应明细，REST保持原完整响应","default":"summary"},"operations":{"anyOf":[{"items":{"type":"string","maxLength":100,"minLength":1,"pattern":"^[a-z][a-z0-9_]*$"},"type":"array","maxItems":20,"minItems":1,"description":"可选工具名过滤；按需查询最多20个，不代表资源权限已通过"},{"type":"null"}],"title":"Operations"}},"additionalProperties":false,"type":"object","title":"AuthDiscovery","description":"身份来自当前凭证，不接受组织或操作者覆盖。"},"BasicField":{"properties":{"field_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Field Id","description":"创建时为客户端稳定key，编辑时用getSchema返回的field_id"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"type":{"type":"string","enum":["text","textarea","number","date","image","file"],"title":"Type"},"required":{"type":"boolean","title":"Required","default":false},"variable":{"type":"boolean","title":"Variable","default":true},"public_value":{"title":"Public Value","description":"仅公共字段使用；媒体值为[{file_key: 上传返回的临时key}]"}},"additionalProperties":false,"type":"object","required":["field_id","name","type"],"title":"BasicField"},"BasicGroup":{"properties":{"group_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Group Id"},"name":{"type":"string","maxLength":200,"title":"Name"},"fields":{"items":{"$ref":"#/components/schemas/BasicField"},"type":"array","maxItems":100,"minItems":1,"title":"Fields"}},"additionalProperties":false,"type":"object","required":["group_id","name","fields"],"title":"BasicGroup"},"BasicInfoComponent":{"properties":{"type":{"type":"string","const":"basic_info","title":"Type","description":"将顶层 groups 放在此处；最多一个且 groups 非空"}},"additionalProperties":false,"type":"object","required":["type"],"title":"BasicInfoComponent"},"BatchItem":{"properties":{"item_key":{"type":"string","maxLength":128,"minLength":1,"title":"Item Key"},"name":{"type":"string","maxLength":100,"title":"Name","default":""},"values":{"additionalProperties":true,"type":"object","title":"Values","description":"按模板field_id填值；图片附件为[{file_key:...}]，不接受任意URL"}},"additionalProperties":false,"type":"object","required":["item_key","values"],"title":"BatchItem"},"BatchSubmit":{"properties":{"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Idempotency Key","description":"固定业务键，结果未知时使用原键恢复"},"plan_id":{"anyOf":[{"type":"string","pattern":"^batch_plan_[0-9a-f]{32}$","description":"预校验返回的30分钟方案；提供后只允许再传幂等键"},{"type":"null"}],"title":"Plan Id"},"template_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Template Id","description":"旧完整数据模式的模板ID；方案模式省略"},"template_version":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Template Version","description":"旧模式必填，来自模板schema"},"category_id":{"type":"integer","minimum":0.0,"title":"Category Id","description":"旧模式的目标目录；方案模式省略","default":0},"items":{"anyOf":[{"items":{"$ref":"#/components/schemas/BatchItem"},"type":"array","maxItems":100,"minItems":1},{"type":"null"}],"title":"Items","description":"旧模式完整数据；方案模式不再发送"}},"additionalProperties":false,"type":"object","required":["idempotency_key"],"title":"BatchSubmit"},"BatchValidate":{"properties":{"template_id":{"type":"string","maxLength":128,"minLength":1,"title":"Template Id"},"save_plan":{"type":"boolean","title":"Save Plan","description":"校验通过后保存30分钟方案；MCP默认启用，旧API不指定时保持原行为","default":false},"template_version":{"type":"string","maxLength":128,"minLength":1,"title":"Template Version"},"category_id":{"type":"integer","minimum":0.0,"title":"Category Id","default":0},"items":{"items":{"$ref":"#/components/schemas/BatchItem"},"type":"array","maxItems":100,"minItems":1,"title":"Items"}},"additionalProperties":false,"type":"object","required":["template_id","template_version","items"],"title":"BatchValidate"},"ButtonComponent":{"properties":{"type":{"type":"string","const":"button","title":"Type"},"text":{"type":"string","maxLength":100,"minLength":1,"title":"Text"},"url":{"type":"string","maxLength":2048,"minLength":1,"title":"Url","description":"绝对 HTTP(S) ASCII 外链；中文域名用 punycode、中文路径和参数用百分号编码。仅保存目标不抓取，不含登录凭证"}},"additionalProperties":false,"type":"object","required":["type","text","url"],"title":"ButtonComponent"},"CreateTargets":{"properties":{"kind":{"type":"string","enum":["projects","categories"],"title":"Kind","default":"projects"},"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","description":"categories使用；从projects结果选择，不使用网页当前分区","default":0},"page":{"type":"integer","minimum":1.0,"title":"Page","default":1},"page_size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Page Size","default":20}},"additionalProperties":false,"type":"object","title":"CreateTargets"},"CycleCompletion":{"properties":{"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","default":0},"plan_id":{"type":"string","pattern":"^[1-9][0-9]{0,17}$","title":"Plan Id"},"start_time":{"type":"string","title":"Start Time","description":"业务时区，YYYY-MM-DD HH:mm:ss"},"end_time":{"type":"string","title":"End Time","description":"业务时区，YYYY-MM-DD HH:mm:ss；跨度最多366天"},"period_limit":{"type":"integer","maximum":120.0,"minimum":1.0,"title":"Period Limit","default":60},"plan_scope":{"type":"string","enum":["running","active","not_started","closed","finished"],"title":"Plan Scope","description":"计划生命周期筛选：running（默认）=已启用且未结束，包含active和not_started；active=已开始且生效中；not_started=已启用但尚未到开始时间；closed=已暂停（底层pause）；finished=计划已结束，不代表本周期检查已完成。不同于cycle_tasks_list_qrcodes.status的设备任务完成状态。未指定历史范围时先查running；查全部生命周期用running、closed、finished并按plan_id去重。","default":"running"}},"additionalProperties":false,"type":"object","required":["plan_id","start_time","end_time"],"title":"CycleCompletion"},"CyclePlanGet":{"properties":{"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","default":0},"plan_id":{"type":"string","pattern":"^[1-9][0-9]{0,17}$","title":"Plan Id"},"plan_scope":{"type":"string","enum":["running","active","not_started","closed","finished"],"title":"Plan Scope","description":"计划生命周期筛选：running（默认）=已启用且未结束，包含active和not_started；active=已开始且生效中；not_started=已启用但尚未到开始时间；closed=已暂停（底层pause）；finished=计划已结束，不代表本周期检查已完成。不同于cycle_tasks_list_qrcodes.status的设备任务完成状态。未指定历史范围时先查running；查全部生命周期用running、closed、finished并按plan_id去重。","default":"running"}},"additionalProperties":false,"type":"object","required":["plan_id"],"title":"CyclePlanGet"},"CyclePlanList":{"properties":{"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","description":"目标分区；0仅代表默认分区，不是所有分区。","default":0},"frequency":{"type":"string","enum":["day","week","month","year"],"title":"Frequency","description":"看板频次页，day包含工作日计划；遍历四种频次获得全量","default":"day"},"plan_scope":{"type":"string","enum":["running","active","not_started","closed","finished"],"title":"Plan Scope","description":"计划生命周期筛选：running（默认）=已启用且未结束，包含active和not_started；active=已开始且生效中；not_started=已启用但尚未到开始时间；closed=已暂停（底层pause）；finished=计划已结束，不代表本周期检查已完成。不同于cycle_tasks_list_qrcodes.status的设备任务完成状态。未指定历史范围时先查running；查全部生命周期用running、closed、finished并按plan_id去重。","default":"running"},"keyword":{"type":"string","maxLength":64,"title":"Keyword","description":"计划有效名称的字面包含匹配；计划名为空时回退表单名。不是设备名或填写内容全文搜索。与分区、频次、plan_scope、form_id取交集；缩短关键词时仍需覆盖目标频次和状态。","default":""},"form_id":{"anyOf":[{"type":"string","pattern":"^[1-9][0-9]{0,17}$"},{"type":"null"}],"title":"Form Id","description":"按真实表单ID筛选关联计划，与其他条件取交集。表单存在不代表已配置周期；受限范围内的空结果不能证明该表单没有任何计划。"},"page":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Page","default":1},"page_size":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Page Size","default":20}},"additionalProperties":false,"type":"object","title":"CyclePlanList"},"CyclePoint":{"properties":{"time":{"type":"string","pattern":"^(?:[01][0-9]|2[0-3]):[0-5][0-9]$","title":"Time"},"weekday":{"anyOf":[{"type":"integer","maximum":7.0,"minimum":1.0},{"type":"null"}],"title":"Weekday"},"day":{"anyOf":[{"type":"integer","maximum":31.0,"minimum":1.0},{"type":"null"}],"title":"Day"},"month":{"anyOf":[{"type":"integer","maximum":12.0,"minimum":1.0},{"type":"null"}],"title":"Month"}},"additionalProperties":false,"type":"object","required":["time"],"title":"CyclePoint"},"CycleQrcodes":{"properties":{"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","default":0},"plan_id":{"type":"string","pattern":"^[1-9][0-9]{0,17}$","title":"Plan Id"},"plan_scope":{"type":"string","enum":["running","active","not_started","closed","finished"],"title":"Plan Scope","description":"计划生命周期筛选：running（默认）=已启用且未结束，包含active和not_started；active=已开始且生效中；not_started=已启用但尚未到开始时间；closed=已暂停（底层pause）；finished=计划已结束，不代表本周期检查已完成。不同于cycle_tasks_list_qrcodes.status的设备任务完成状态。未指定历史范围时先查running；查全部生命周期用running、closed、finished并按plan_id去重。","default":"running"},"period_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[^\\x00-\\x1f\\x7f]+$","title":"Period Key","description":"原样使用cycle_tasks_get_completion返回的period_key，不拼接日期"},"status":{"type":"string","enum":["all","finished","unfinished","no_need","expired_unfinished","in_progress","not_started"],"title":"Status","description":"unfinished包含未开始/进行中/逾期未完成；no_need不是已经填写","default":"all"},"page":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Page","default":1},"page_size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Page Size","default":20}},"additionalProperties":false,"type":"object","required":["plan_id","period_key"],"title":"CycleQrcodes"},"CycleWindow":{"properties":{"start":{"$ref":"#/components/schemas/CyclePoint"},"end":{"$ref":"#/components/schemas/CyclePoint"}},"additionalProperties":false,"type":"object","required":["start","end"],"title":"CycleWindow"},"DisplayImage":{"properties":{"file_key":{"type":"string","maxLength":512,"minLength":6,"pattern":"^free/[A-Za-z0-9_./-]+$","title":"File Key","description":"上传已确认 temporary_available 的图片 file_key；不接受 URL 或本地路径，NC 校验归属和图片类型"}},"additionalProperties":false,"type":"object","required":["file_key"],"title":"DisplayImage"},"DisplayListBlock":{"properties":{"type":{"type":"string","enum":["bullet_list","numbered_list"],"title":"Type"},"items":{"items":{"type":"string","maxLength":10000,"minLength":1},"type":"array","maxItems":100,"minItems":1,"title":"Items"}},"additionalProperties":false,"type":"object","required":["type","items"],"title":"DisplayListBlock"},"DisplayTextBlock":{"properties":{"type":{"type":"string","enum":["heading","paragraph"],"title":"Type"},"text":{"type":"string","maxLength":10000,"minLength":1,"title":"Text","description":"纯文本；heading 使用固定标题样式，不解析 HTML 或 Markdown"}},"additionalProperties":false,"type":"object","required":["type","text"],"title":"DisplayTextBlock"},"FieldEquals":{"properties":{"field_id":{"type":"string","title":"Field Id","description":"字段 id（从 form_get 拿）"},"value":{"type":"string","title":"Value","description":"要精确匹配的值"}},"additionalProperties":false,"type":"object","required":["field_id","value"],"title":"FieldEquals"},"FileComponent":{"properties":{"file_key":{"type":"string","maxLength":512,"minLength":6,"pattern":"^free/[A-Za-z0-9_./-]+$","title":"File Key","description":"上传已确认 temporary_available 的文件 file_key；保留上传文件名，默认允许下载，不接受外部URL"},"type":{"type":"string","const":"file","title":"Type"}},"additionalProperties":false,"type":"object","required":["file_key","type"],"title":"FileComponent"},"FormBinding":{"properties":{"form_id":{"type":"string","pattern":"^[1-9][0-9]{0,17}$","title":"Form Id"},"title":{"type":"string","maxLength":100,"minLength":1,"title":"Title"}},"additionalProperties":false,"type":"object","required":["form_id","title"],"title":"FormBinding"},"FormCreate":{"properties":{"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Idempotency Key"},"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","default":0},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"fields":{"items":{"$ref":"#/components/schemas/FormField"},"type":"array","maxItems":100,"minItems":1,"title":"Fields"},"cycle":{"anyOf":[{"$ref":"#/components/schemas/FormCycle"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["idempotency_key","name","fields"],"title":"FormCreate"},"FormCycle":{"properties":{"frequency":{"type":"string","enum":["day","week","month","year"],"title":"Frequency"},"windows":{"items":{"$ref":"#/components/schemas/CycleWindow"},"type":"array","maxItems":20,"minItems":1,"title":"Windows"}},"additionalProperties":false,"type":"object","required":["frequency","windows"],"title":"FormCycle"},"FormField":{"properties":{"field_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Field Id"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"type":{"type":"string","enum":["text","textarea","number","date","radio","checkbox","image","file"],"title":"Type"},"required":{"type":"boolean","title":"Required","default":false},"options":{"anyOf":[{"items":{"type":"string","maxLength":200,"minLength":1},"type":"array","maxItems":100,"minItems":1},{"type":"null"}],"title":"Options"},"scoring":{"anyOf":[{"$ref":"#/components/schemas/FormScoring"},{"type":"null"}],"description":"仅 radio 支持；判断题用两个选项。配置后自动展示提交得分及本次答案入口，不支持自定义解析"}},"additionalProperties":false,"type":"object","required":["field_id","name","type"],"title":"FormField"},"FormScoring":{"properties":{"correct_option":{"type":"string","maxLength":200,"minLength":1,"title":"Correct Option","description":"精确匹配 options 中的正确选项"},"points":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Points","description":"答对分值，1～100 整数"}},"additionalProperties":false,"type":"object","required":["correct_option","points"],"title":"FormScoring","description":"复用原生单选计分，不开放任意原生规则。"},"GalleryCategories":{"properties":{},"additionalProperties":false,"type":"object","title":"GalleryCategories"},"GalleryComponent":{"properties":{"type":{"type":"string","const":"gallery","title":"Type"},"items":{"items":{"$ref":"#/components/schemas/DisplayImage"},"type":"array","maxItems":10,"minItems":1,"title":"Items"}},"additionalProperties":false,"type":"object","required":["type","items"],"title":"GalleryComponent"},"GalleryCreate":{"properties":{"plan_id":{"type":"string","pattern":"^plan_[0-9a-f]{32}$","title":"Plan Id","description":"准备成功返回的短期方案 ID，原样使用"},"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Idempotency Key"}},"additionalProperties":false,"type":"object","required":["plan_id","idempotency_key"],"title":"GalleryCreate"},"GalleryGet":{"properties":{"gallery_template_id":{"type":"string","pattern":"^[1-9][0-9]{0,17}$","title":"Gallery Template Id","description":"gallery_list 返回的模板库 ID，不是账号母码 template_id"}},"additionalProperties":false,"type":"object","required":["gallery_template_id"],"title":"GalleryGet"},"GalleryList":{"properties":{"category_id":{"anyOf":[{"type":"string","pattern":"^[1-9][0-9]{0,17}$","description":"可选系统分类 ID，从 gallery_categories 获取"},{"type":"null"}],"title":"Category Id"},"keyword":{"anyOf":[{"type":"string","maxLength":100,"description":"模板名称/描述关键词；可不选分类直接搜索"},{"type":"null"}],"title":"Keyword"},"page":{"type":"integer","maximum":10000.0,"minimum":1.0,"title":"Page","default":1},"page_size":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Page Size","default":20}},"additionalProperties":false,"type":"object","title":"GalleryList"},"GalleryPrepare":{"properties":{"gallery_template_id":{"type":"string","pattern":"^[1-9][0-9]{0,17}$","title":"Gallery Template Id","description":"gallery_list 返回的模板库 ID，不是账号母码 template_id"},"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","default":0},"category_id":{"type":"integer","minimum":0.0,"title":"Category Id","default":0},"items":{"items":{"$ref":"#/components/schemas/BatchItem"},"type":"array","maxItems":100,"minItems":1,"title":"Items"}},"additionalProperties":false,"type":"object","required":["gallery_template_id","items"],"title":"GalleryPrepare"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImageComponent":{"properties":{"file_key":{"type":"string","maxLength":512,"minLength":6,"pattern":"^free/[A-Za-z0-9_./-]+$","title":"File Key","description":"上传已确认 temporary_available 的图片 file_key；不接受 URL 或本地路径，NC 校验归属和图片类型"},"type":{"type":"string","const":"image","title":"Type"}},"additionalProperties":false,"type":"object","required":["file_key","type"],"title":"ImageComponent"},"LabelConfig":{"properties":{"qrcode_id":{"type":"string","maxLength":128,"minLength":1,"title":"Qrcode Id","description":"普通码、子码或母模板的公开 ID；读取当前关联样式，不保存默认样式"}},"additionalProperties":false,"type":"object","required":["qrcode_id"],"title":"LabelConfig"},"LabelExportCreate":{"properties":{"qrcode_ids":{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":100,"minItems":1,"title":"Qrcode Ids","description":"明确选择的唯一真实码 ID：普通码每次1个，同一母模板的子码最多100个；具体限制以配置结果为准。类型不混用，空列表不代表全部"},"format":{"type":"string","enum":["png_zip","a4_pdf","a4_pdf_single"],"title":"Format","description":"从 labels_get_config 的 supported_formats 选择：png_zip 图片包；a4_pdf 多标签A4排版；a4_pdf_single A4每页一个标签。均返回ZIP，不支持任意排版、重复份数或尺寸覆盖"},"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Idempotency Key","description":"本次导出的固定幂等键；超时或结果未知时保留原键与原参数，不重复排队"}},"additionalProperties":false,"type":"object","required":["qrcode_ids","format","idempotency_key"],"title":"LabelExportCreate"},"LabelExportGet":{"properties":{"task_id":{"type":"string","maxLength":128,"minLength":1,"title":"Task Id","description":"label_exports_create 返回的任务 ID；查询时重新检查身份与目标权限"}},"additionalProperties":false,"type":"object","required":["task_id"],"title":"LabelExportGet"},"LabelPreview":{"properties":{"qrcode_ids":{"items":{"type":"string","maxLength":128,"minLength":1},"type":"array","maxItems":3,"minItems":1,"title":"Qrcode Ids","description":"普通码每次1个，同一母模板的子码最多3个；仅使用已关联样式，不能传母模板代替真实子码"}},"additionalProperties":false,"type":"object","required":["qrcode_ids"],"title":"LabelPreview"},"MetricsGetRequest":{"properties":{"metric":{"type":"string","title":"Metric","description":"派生量名，从 metrics/list 的返回里取"}},"type":"object","required":["metric"],"title":"MetricsGetRequest"},"MetricsListRequest":{"properties":{"limit":{"anyOf":[{"type":"integer","maximum":100.0,"minimum":1.0},{"type":"null"}],"title":"Limit","description":"每类对象最多列多少条，默认 30，上限 100"}},"type":"object","title":"MetricsListRequest"},"MetricsQueryRequest":{"properties":{"metric":{"type":"string","title":"Metric","description":"派生量名，从 metrics/list 取"},"time":{"$ref":"#/components/schemas/TimeWindow"},"scope":{"anyOf":[{"$ref":"#/components/schemas/Scope"},{"type":"null"}]},"group_by":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Group By","description":"分组维度，必须在该派生量声明的 dimensions 里。双维交叉分组（如「区域×班次」）接受逗号分隔字符串 \"form,month\" 或数组 [\"form\",\"month\"]，两种都接；最多两维，三维及以上会被拒绝，两维不能相同。此时返回的 group_key/group_label 是按维度名做键的对象，不是字符串。特殊值 \"field_value\"（按表单字段取值分组）需要搭配field_id，且 scope.form_ids 必须恰给一个表单；可以作双维中的任意一维，但两维不能都是 field_value。只有只读统计类派生量支持这个维度，计划类派生量不支持。"},"limit":{"anyOf":[{"type":"integer","maximum":500.0,"minimum":1.0},{"type":"null"}],"title":"Limit","description":"分组条数上限，默认 30。单维（或不分组）上限 200；双维交叉分组上限 500（两维基数乘积天然更大）——超过对应上限会被 report-service 拒绝（invalid_argument），不是静默钳制。"},"field_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field Id","description":"group_by=\"field_value\" 专用：要分组的表单字段 id（从 forms/get 取）。此时scope.form_ids 必须恰限定成一个表单——字段 id 是 per-form 语义。其它 group_by 不需要这个参数。"}},"type":"object","required":["metric","time"],"title":"MetricsQueryRequest"},"MultiUrlLink":{"properties":{"title":{"type":"string","maxLength":100,"minLength":1,"title":"Title","description":"清单页显示的链接标题"},"url":{"type":"string","maxLength":2048,"minLength":1,"title":"Url","description":"绝对 HTTP(S) ASCII 地址，规则同跳转码"}},"additionalProperties":false,"type":"object","required":["title","url"],"title":"MultiUrlLink"},"MultiUrlQrcodeCreate":{"properties":{"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Idempotency Key"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"码名称"},"links":{"items":{"$ref":"#/components/schemas/MultiUrlLink"},"type":"array","maxItems":100,"minItems":1,"title":"Links","description":"扫码后链接清单页展示的链接，按数组顺序排列，最多 100 条"},"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","default":0},"category_id":{"type":"integer","minimum":0.0,"title":"Category Id","default":0}},"additionalProperties":false,"type":"object","required":["idempotency_key","name","links"],"title":"MultiUrlQrcodeCreate"},"OpenTimeWindow":{"properties":{"from":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"From","description":"起始时间（含），可不填。支持形态同 query_metrics 的 time.from：epoch 秒/数字字符串，或带时区的 ISO 8601（如 \"2026-08-18T00:00:00+08:00\"，即 GMT+8 的 2026-08-18 00:00，epoch 1786982400），不带时区的 ISO 字符串会被拒绝。"},"to":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"To","description":"结束时间（含），可不填，形态同 from"}},"additionalProperties":false,"type":"object","title":"OpenTimeWindow","description":"record_list 的时间窗：两端都可选（行投影不强制时间窗，聚合才强制）。"},"PlainField":{"properties":{"field_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Field Id","description":"创建时为客户端稳定key，编辑时用getSchema返回的field_id"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"type":{"type":"string","enum":["text","textarea","number","date","image","file"],"title":"Type"},"required":{"type":"boolean","title":"Required","default":false},"variable":{"type":"boolean","const":false,"title":"Variable","default":false},"public_value":{"title":"Public Value"}},"additionalProperties":false,"type":"object","required":["field_id","name","type","public_value"],"title":"PlainField"},"PlainGroup":{"properties":{"group_id":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_-]+$","title":"Group Id"},"name":{"type":"string","maxLength":200,"title":"Name"},"fields":{"items":{"$ref":"#/components/schemas/PlainField"},"type":"array","maxItems":100,"minItems":1,"title":"Fields"}},"additionalProperties":false,"type":"object","required":["group_id","name","fields"],"title":"PlainGroup"},"ProjectsListRequest":{"properties":{"page_size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Page Size","description":"最多返回条数，默认 100","default":100}},"type":"object","title":"ProjectsListRequest"},"QrcodeCreate":{"properties":{"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Idempotency Key"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","default":0},"category_id":{"type":"integer","minimum":0.0,"title":"Category Id","default":0},"groups":{"items":{"$ref":"#/components/schemas/PlainGroup"},"type":"array","maxItems":20,"title":"Groups"},"components":{"items":{"oneOf":[{"$ref":"#/components/schemas/RichTextComponent"},{"$ref":"#/components/schemas/ImageComponent"},{"$ref":"#/components/schemas/FileComponent"},{"$ref":"#/components/schemas/GalleryComponent"},{"$ref":"#/components/schemas/ButtonComponent"},{"$ref":"#/components/schemas/BasicInfoComponent"}],"discriminator":{"propertyName":"type","mapping":{"basic_info":"#/components/schemas/BasicInfoComponent","button":"#/components/schemas/ButtonComponent","file":"#/components/schemas/FileComponent","gallery":"#/components/schemas/GalleryComponent","image":"#/components/schemas/ImageComponent","rich_text":"#/components/schemas/RichTextComponent"}}},"type":"array","maxItems":50,"title":"Components","description":"仅新建普通展示码；按顺序排列图文、文件和按钮。groups 无 basic_info 标记时放最前，forms 仍在末尾。不修改模板或已有码"},"forms":{"items":{"$ref":"#/components/schemas/FormBinding"},"type":"array","maxItems":10,"title":"Forms"}},"additionalProperties":false,"type":"object","required":["idempotency_key","name"],"title":"QrcodeCreate"},"QrcodesGetOperationResponse":{"properties":{"code":{"type":"integer","title":"Code","description":"状态码，0 表示成功","default":0},"message":{"type":"string","title":"Message","description":"成功信息","default":"ok"},"data":{"items":{"$ref":"#/components/schemas/QrcodesOperationElement"},"type":"array","title":"Data","description":"关联操作项元素列表（扁平化）"}},"type":"object","required":["data"],"title":"QrcodesGetOperationResponse","description":"活码关联操作项列表：成功响应包装（与 `_ok` 返回结构一致）。"},"QrcodesListRequest":{"properties":{"start_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Time","description":"起始时间（ISO 8601）"},"end_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Time","description":"结束时间（ISO 8601）"},"page_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Token","description":"上一页返回的 next_page_token"},"page_size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Page Size","description":"每页条数，默认 20","default":20},"project_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Project Id","description":"按当前候选页的分区过滤；不传不限定，0为默认分区；空页仍检查next_page_token"},"workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Workspace Id","description":"只列这个工作台（业务系统）里的码；从 workspaces_list 拿"},"view_node_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"View Node Id","description":"只列挂在这个视图节点或其子孙下的码；给视图的 root_node_id 即该视图已归类的全部码（不含待归类，同工作台口径）；从 views_list / view_nodes 拿"}},"type":"object","title":"QrcodesListRequest","description":"`qrcodes/list` 专用的请求体：分页/时间之外多两个可选过滤（2026-09-30，随 report-service\n接入工作台/视图节点维表）。工作台/视图由查询服务筛选，分区在当前候选页核验。"},"QrcodesOperationElement":{"properties":{"operation_name":{"type":"string","title":"Operation Name","description":"操作项标题（来自 base_operation.title）"},"operation_description":{"type":"string","title":"Operation Description","description":"操作项副标题/描述（来自 base_operation.subtitle）"},"element_type":{"type":"integer","title":"Element Type","description":"元素类型（与内部枚举 ELEMENT_TYPE_* 对齐）"},"element_type_title":{"type":"string","title":"Element Type Title","description":"元素类型中文标题"},"element_value":{"title":"Element Value","description":"元素关联值（含义取决于 element_type）"}},"type":"object","required":["operation_name","operation_description","element_type","element_type_title","element_value"],"title":"QrcodesOperationElement","description":"活码关联操作项元素（扁平化单条）。"},"RecordActivitiesRequest":{"properties":{"record_id":{"anyOf":[{"type":"string","maxLength":19,"pattern":"^[1-9][0-9]*$"},{"type":"null"}],"title":"Record Id","description":"记录 ID，与 record_url 恰选其一"},"record_url":{"anyOf":[{"type":"string","maxLength":2048,"minLength":1},{"type":"null"}],"title":"Record Url","description":"记录链接，与 record_id 恰选其一"},"page":{"type":"integer","maximum":1000.0,"minimum":1.0,"title":"Page","default":1},"page_size":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Page Size","default":20}},"additionalProperties":false,"type":"object","title":"RecordActivitiesRequest","description":"动态只读查询；身份始终来自凭证，不接受 options 或组织/用户覆盖。"},"RecordSearchRequest":{"properties":{"filters":{"anyOf":[{"$ref":"#/components/schemas/Scope"},{"type":"null"}]},"time":{"anyOf":[{"$ref":"#/components/schemas/OpenTimeWindow"},{"type":"null"}]},"limit":{"anyOf":[{"type":"integer","maximum":200.0,"minimum":1.0},{"type":"null"}],"title":"Limit","description":"返回条数，默认 50，上限 200"}},"type":"object","title":"RecordSearchRequest"},"RichTextComponent":{"properties":{"type":{"type":"string","const":"rich_text","title":"Type"},"blocks":{"items":{"oneOf":[{"$ref":"#/components/schemas/DisplayTextBlock"},{"$ref":"#/components/schemas/DisplayListBlock"}],"discriminator":{"propertyName":"type","mapping":{"bullet_list":"#/components/schemas/DisplayListBlock","heading":"#/components/schemas/DisplayTextBlock","numbered_list":"#/components/schemas/DisplayListBlock","paragraph":"#/components/schemas/DisplayTextBlock"}}},"type":"array","maxItems":100,"minItems":1,"title":"Blocks"}},"additionalProperties":false,"type":"object","required":["type","blocks"],"title":"RichTextComponent"},"Scope":{"properties":{"qrcode_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Qrcode Ids","description":"限定到这些码（点位）；数组也可用 JSON 字符串形态传入"},"form_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Form Ids","description":"限定到这些表单；数组也可用 JSON 字符串形态传入"},"project_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Project Ids","description":"限定到这些分区；数组也可用 JSON 字符串形态传入"},"member_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Member Ids","description":"限定到这些提交人；数组也可用 JSON 字符串形态传入"},"process_status":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Process Status","description":"限定处理进度（数值枚举）；数组也可用 JSON 字符串形态传入"},"process_status_text":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Process Status Text","description":"限定处理进度文本，如「待处理」；数组也可用 JSON 字符串形态传入"},"audit_stage_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Audit Stage Ids","description":"限定当前审核阶段；数组也可用 JSON 字符串形态传入"},"auditor_user_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Auditor User Ids","description":"限定审核人；数组也可用 JSON 字符串形态传入"},"state_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"State Ids","description":"限定状态变更涉及的状态；数组也可用 JSON 字符串形态传入"},"result_values":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Result Values","description":"限定结果值（多值字段），如「合格」；数组也可用 JSON 字符串形态传入"},"result_value_texts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Result Value Texts","description":"限定结果值文本（标量列；query_metrics 按 result_value_text 分组的下钻用这个键）；数组也可用 JSON 字符串形态传入"},"field_equals":{"anyOf":[{"items":{"$ref":"#/components/schemas/FieldEquals"},"type":"array"},{"type":"null"}],"title":"Field Equals","description":"表单字段精确匹配（field_id 从 form_get 拿）。成员路径在逐条鉴权后匹配可见值，单选可传 option_text；检查项等复合值不做子项包含匹配，不直接拼接聚合展示文字。空结果且 truncated=true 表示尚未查完整。数组也可用 JSON 字符串形态传入"},"audit_status":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Audit Status","description":"限定记录的审核态：正常 / 待审核 / 审核通过 / 审核不通过（可多选；已删除的记录不可查）。只有记录族指标与 record_list 认这个键，计划/待办/扫码族会报错；数组也可用 JSON 字符串形态传入"},"workspace_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Workspace Ids","description":"限定到码在这些工作台（业务系统）里的记录/任务/待办（workspace_id 从 workspaces_list 拿）；数组也可用 JSON 字符串形态传入"},"view_node_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"View Node Ids","description":"限定到码挂在这些视图节点（工作台里的目录节点/点位）**或其子孙**下的记录/任务/待办；给视图的 root_node_id 即「这个视图已归类的全部码」（同工作台数据汇总口径；「待归类」与根同级、不在根的子树里，要含它再加 uncategorized_node_id）（node id 从 views_list / view_nodes 拿）；数组也可用 JSON 字符串形态传入"}},"additionalProperties":false,"type":"object","title":"Scope","description":"现场圈范围。**没有 org 参数——组织由凭证在服务端解析。**\n\nTask A4：整个 scope 也可以用 JSON 字符串形态传入（部分 client 的序列化层会把嵌套对象\n降级成字符串），服务端自动 json.loads 归一；下面每个数组字段同样接受 JSON 字符串形态\n的数组（如 `'[\"123\"]'`）或单个裸值（会自动包成单元素数组），不必是严格的原生数组类型。"},"StaticQrcodeCreate":{"properties":{"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Idempotency Key"},"type":{"type":"string","enum":["text","url"],"title":"Type","description":"text 文本静态码；url 网址静态码（扫码由手机直接打开，不经过草料）"},"content":{"type":"string","maxLength":2048,"minLength":1,"title":"Content","description":"直接编码进二维码的内容，创建后不能修改；首尾空白会去掉。text 不超过 1500 UTF-8 字节（约 500 个汉字），url 规则同跳转码"}},"additionalProperties":false,"type":"object","required":["idempotency_key","type","content"],"title":"StaticQrcodeCreate"},"TaskGet":{"properties":{"task_id":{"type":"string","maxLength":128,"minLength":1,"title":"Task Id"}},"additionalProperties":false,"type":"object","required":["task_id"],"title":"TaskGet"},"TaskResults":{"properties":{"task_id":{"type":"string","maxLength":128,"minLength":1,"title":"Task Id"},"page":{"type":"integer","minimum":1.0,"title":"Page","default":1},"page_size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Page Size","default":20}},"additionalProperties":false,"type":"object","required":["task_id"],"title":"TaskResults"},"TemplateCreate":{"properties":{"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Idempotency Key"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","default":0},"category_id":{"type":"integer","minimum":0.0,"title":"Category Id","default":0},"groups":{"items":{"$ref":"#/components/schemas/BasicGroup"},"type":"array","maxItems":20,"minItems":1,"title":"Groups"},"name_rule":{"items":{},"type":"array","maxItems":100,"title":"Name Rule","description":"子码持久命名规则，按顺序组合文本与可变文本字段，如[{\"type\":\"cmpId\",\"value\":\"employee_no\"},{\"type\":\"text\",\"value\":\"-\"},{\"type\":\"cmpId\",\"value\":\"employee_name\"}]；字段value为本次groups中的field_id，不是显示名"},"forms":{"items":{"$ref":"#/components/schemas/FormBinding"},"type":"array","maxItems":10,"title":"Forms"}},"additionalProperties":false,"type":"object","required":["idempotency_key","name","groups"],"title":"TemplateCreate"},"TemplateEdit":{"properties":{"template_id":{"type":"string","maxLength":128,"minLength":1,"title":"Template Id"},"template_version":{"type":"string","maxLength":128,"minLength":1,"title":"Template Version"},"patch":{"$ref":"#/components/schemas/TemplatePatch"},"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Idempotency Key"},"preview_token":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Preview Token"}},"additionalProperties":false,"type":"object","required":["template_id","template_version","patch","idempotency_key"],"title":"TemplateEdit"},"TemplateGet":{"properties":{"template_id":{"type":"string","maxLength":128,"minLength":1,"title":"Template Id"}},"additionalProperties":false,"type":"object","required":["template_id"],"title":"TemplateGet"},"TemplateGetRequest":{"properties":{"template":{"type":"string","title":"Template","description":"占位码 coding 或完整 URL"}},"type":"object","required":["template"],"title":"TemplateGetRequest"},"TemplateList":{"properties":{"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","default":0},"page":{"type":"integer","minimum":1.0,"title":"Page","default":1},"page_size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Page Size","default":20},"only_creatable":{"type":"boolean","title":"Only Creatable","description":"默认false只读摘要，选定后用templates_get_schema读字段/版本/能力。true逐项加载结构筛选可建子码模板，较慢；空页仍需检查has_more","default":false}},"additionalProperties":false,"type":"object","title":"TemplateList"},"TemplatePatch":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"groups":{"anyOf":[{"items":{"$ref":"#/components/schemas/BasicGroup"},"type":"array","maxItems":20,"minItems":1},{"type":"null"}],"title":"Groups"},"name_rule":{"anyOf":[{"items":{},"type":"array","maxItems":100},{"type":"null"}],"title":"Name Rule"}},"additionalProperties":false,"type":"object","title":"TemplatePatch"},"TemplatePreview":{"properties":{"template_id":{"type":"string","maxLength":128,"minLength":1,"title":"Template Id"},"template_version":{"type":"string","maxLength":128,"minLength":1,"title":"Template Version"},"patch":{"$ref":"#/components/schemas/TemplatePatch"}},"additionalProperties":false,"type":"object","required":["template_id","template_version","patch"],"title":"TemplatePreview"},"TemplateQrcodesRequest":{"properties":{"start_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Time","description":"起始时间（ISO 8601）"},"end_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Time","description":"结束时间（ISO 8601）"},"page_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Token","description":"上一页返回的 next_page_token"},"page_size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Page Size","description":"每页条数，默认 20","default":20},"template":{"type":"string","title":"Template","description":"占位码 coding 或完整 URL"}},"type":"object","required":["template"],"title":"TemplateQrcodesRequest"},"TemplateSubcodeRequest":{"properties":{"template":{"type":"string","title":"Template","description":"占位码 coding 或完整 URL"},"subcode":{"type":"string","title":"Subcode","description":"子码 coding 或完整 URL"}},"type":"object","required":["template","subcode"],"title":"TemplateSubcodeRequest"},"TemplatesListRequest":{"properties":{"start_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Time","description":"起始时间（ISO 8601）"},"end_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Time","description":"结束时间（ISO 8601）"},"page_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Token","description":"上一页返回的 next_page_token"},"page_size":{"type":"integer","maximum":100.0,"minimum":1.0,"title":"Page Size","description":"每页条数，默认 20","default":20},"project_id":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Project Id","description":"不传查全部有权候选；0仅默认分区，其他ID从projects_list或建码目标取得"}},"type":"object","title":"TemplatesListRequest"},"TimeWindow":{"properties":{"from":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"From","description":"起始时间（含）。GMT+8 的 2026-08-18 00:00 可以写成：epoch 秒整数/数字字符串 1786982400；或带时区的 ISO 8601 字符串 \"2026-08-18T00:00:00+08:00\"（也接受 \"2026-08-18 00:00+08:00\" 这种空格分隔形态）。ISO 字符串必须带时区，不带时区会被拒绝并提示补上（防止静默按错误时区解读、偏 8 小时）。"},"to":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"To","description":"结束时间（含）。超过当前时间会被自动截断到现在。支持形态同 from：epoch 秒/数字字符串，或带时区的 ISO 8601（如 \"2026-08-18T23:59:59+08:00\"），不带时区的 ISO 字符串会被拒绝。"}},"additionalProperties":false,"type":"object","required":["from","to"],"title":"TimeWindow","description":"时间窗，必填。它是查询围栏的一部分，不是可选的过滤条件。"},"UploadRequest":{"properties":{"file_name":{"type":"string","maxLength":255,"minLength":1,"pattern":"^[^/\\\\\\x00-\\x1f]+$","title":"File Name","description":"本地文件名（含扩展名），不是路径，例如张建国.jpg"},"mime_type":{"type":"string","maxLength":128,"minLength":3,"title":"Mime Type","description":"实际文件MIME，例如image/jpeg；上传Content-Type须一致"},"size":{"type":"integer","maximum":20971520.0,"exclusiveMinimum":0.0,"title":"Size","description":"本地文件实际字节数，不是KB/MB；签名绑定此长度，最大20MiB"},"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Idempotency Key","description":"每个文件一次上传的固定业务键；结果未知时保持原键查询/重试"}},"additionalProperties":false,"type":"object","required":["file_name","mime_type","size","idempotency_key"],"title":"UploadRequest"},"UploadStatus":{"properties":{"file_key":{"anyOf":[{"type":"string","maxLength":512,"minLength":6,"pattern":"^free/[A-Za-z0-9_./-]+$","description":"申请上传返回的临时文件 key，原样使用，不是 URL"},{"type":"null"}],"title":"File Key"},"asset_id":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Asset Id","description":"仅兼容旧客户端；新调用使用 file_key","deprecated":true}},"additionalProperties":false,"type":"object","title":"UploadStatus"},"UrlJumpQrcodeCreate":{"properties":{"idempotency_key":{"type":"string","maxLength":128,"minLength":1,"pattern":"^[A-Za-z0-9_.:-]+$","title":"Idempotency Key"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","description":"码名称，同时作为跳转链接标题"},"url":{"type":"string","maxLength":2048,"minLength":1,"title":"Url","description":"扫码直接跳转的绝对 HTTP(S) ASCII 地址；中文域名用 punycode、中文路径和参数用百分号编码，不含登录凭证"},"project_id":{"type":"integer","minimum":0.0,"title":"Project Id","default":0},"category_id":{"type":"integer","minimum":0.0,"title":"Category Id","default":0}},"additionalProperties":false,"type":"object","required":["idempotency_key","name","url"],"title":"UrlJumpQrcodeCreate"},"UsageGet":{"properties":{},"additionalProperties":false,"type":"object","title":"UsageGet"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}