用途
该技能用于管理 Sumsub 申请人档案上的标签(tags)。标签是自由文本形式的标签,用于申请人列表中的筛选与分类,同时可在工作流路由和交易监控(TM)规则表达式中通过 applicant.tags 读取。技能覆盖标签的追加、整体覆盖替换和删除,并在每次写入后执行回读校验。
主要能力与接口
- POST /resources/applicants/{applicantId}/tags/add:在现有标签集合之上追加标签,属增量操作;重复添加已存在的标签会在服务端去重。请求体为纯 JSON 字符串数组。
- POST /resources/applicants/{applicantId}/tags:覆盖写入,用请求体替换整个标签集合;传 [] 会清空所有标签。属破坏性操作,需要先执行确认步骤。
- DELETE /resources/applicants/{applicantId}/tags:仅删除请求体中列出的标签,其余保留。
- GET /resources/applicants/{applicantId}/one:回读接口。标签在申请人的 tags 字段中返回,没有专门的标签 GET 接口。
所有写入成功时返回 {"ok": 1}。未出现过的标签名在追加和覆盖接口上都会自动创建(沙箱已验证;文档中关于覆盖需要预先存在标签的说法已过时)。
标签定义(重命名标签、选择颜色、是否将标签纳入申请人摘要报告)只能在 Sumsub 控制台的 Applicant tags 页面设置,没有公共 API 接口。
认证方式
该技能调用 Sumsub 公共 API,并按认证参考对每个请求签名。完整说明见 sumsub-api-auth 技能;若遇到 401 Invalid signature 可参考该技能。
仅限沙箱令牌。不要接受或使用生产 App Token;若用户提供生产令牌,应拒绝并请其在 https://cockpit.sumsub.com/checkus/home?sbx=true 生成沙箱令牌对(Connect Sumsub to your AI agent -> Build & configure -> Generate token)。令牌与密钥只显示一次,关闭对话框前需复制两者。辅助脚本会强制校验,拒绝不以 sbx: 开头的令牌。
环境变量:
- SUMSUB_APP_TOKEN:沙箱 App Token,形如 sbx:...
- SUMSUB_SECRET_KEY:创建令牌时一次性显示的配对密钥
- SUMSUB_BASE:可选,默认 https://api.sumsub.com
若用户已在对话中提供凭据则复用,否则运行前询问一次。切勿回显密钥。
使用方式
- 选择操作。默认使用增量的 add,安全且会去重。仅当用户明确要替换整个集合(或清空)时才用 overwrite;用 remove 移除特定标签。add 或 remove 之前不要预先 GET,因为这两个接口是定向且幂等的,第 3 步的回读即为验证。
- 仅覆盖操作需先确认。GET 申请人,向用户展示将被丢失的当前标签,获得明确确认后再 POST 替换集合。清空所有标签(以 [] 覆盖)同样适用此确认门槛。
- 通过编排脚本执行写入(脚本会自动附加回读):
bash scripts/manage_applicant_tags.sh list <applicantId>
bash scripts/manage_applicant_tags.sh add <applicantId> "High Risk" "VIP"
bash scripts/manage_applicant_tags.sh overwrite <applicantId> "Compliance Reviewed" # after the confirm step!
bash scripts/manage_applicant_tags.sh remove <applicantId> "Legacy KYC"
- 将回读结果与请求内容比对。空集合在 GET /one 中表现为 tags 字段缺失,这是正常的“无标签”状态,不是错误。若不一致,报告即可,不要自动重试。4xx 错误需原样呈现。
- 报告时名称优先。先给出申请人姓名和结果标签列表,然后是控制台链接(https://cockpit.sumsub.com/checkus/applicant/<applicantId>,渲染为可点击的 markdown 链接),最后单独一行放申请人 id。
适用场景
适用于需要对 Sumsub 申请人进行筛选、分类、流程路由或交易监控规则判断的场景,例如为高风险申请人打标、标记 VIP、记录合规审核状态等。
限制与注意事项
- 每个申请人最多 30 个标签。超出(已有 + 新增)会导致整个请求失败并返回 HTTP 400 "Too many applicant tags",且为原子操作,不会应用任何更改。应报告 30 标签上限并停止:不要裁剪列表后重试,也不要在同一次运行中删除或覆盖现有标签来腾出空间——释放槽位是破坏性决定,必须由用户在全新请求中明确做出。
- 标签名区分大小写,"High Risk" 与 "high risk" 是两个不同标签。删除时需匹配用户已有的大小写。
- 覆盖会替换一切。POST .../tags 带任何请求体都会清除未列出的标签。当用户说“add”时,绝不要使用覆盖接口。
- 空即缺失。清空标签后,GET /one 完全没有 tags 字段。回读逻辑必须将缺失字段视为空集合。
- 未知申请人返回 HTTP 404 "Applicant with id ... not found (anf)"(不是 400)。请用户重新核对 id。
- 标签变更会触发 applicantTagsChanged webhook,若租户订阅了该事件则相关(见 sumsub-manage-webhooks)。
相关技能
- sumsub-create-kyt-rules:交易标签、带评分权重(scoreWeight)的标签定义、申请人风险评估。
- sumsub-create-workflow:作为工作流动作节点自动添加/移除标签;基于 applicant.tags 的路由。
- sumsub-manage-webhooks:订阅 applicantTagsChanged。
Sumsub 文档:Applicant tags、Add and overwrite applicant tags、Add applicant tags、Remove applicant tags。