跳转到内容
tansr 资料站
开发者文档
帮助中心
搜索
Ctrl
K
取消
选择主题
深色
浅色
自动
选择语言
简体中文
English
日本語
한국어
菜单
快速开始
快速开始:选一条路,5 分钟跑通
Android 与 iOS 5 分钟跑通
命令行 5 分钟跑通
Node SDK 5 分钟跑通
会话服务 5 分钟跑通
TS / Node SDK
检查点与恢复
错误处理与重试
关闭会话与等待资源收尾
任务进行中追加输入
平台装配与 bundle
会话与事件流
应用系统提示词与 SDK 拼接策略
API 参考(总览)
会话服务 @tansr/serve
部署与鉴权
serve 环境变量
保留期与治理
v2 协议与 webhook
CLI 手册
CLI 命令参考
设置与 doctor
Android SDK
Android 接入指南
iOS SDK
iOS 接入指南
REST 参考
Overview
gateway
Overview
OpenAI Chat Completions 兼容(SSE 可选);体 = 上游协议 passthrough;idempotency-key 头可选启用请求层幂等
Anthropic Messages 兼容(SSE 可选);体 = 上游协议 passthrough;idempotency-key 头可选启用请求层幂等
OpenAI Responses 兼容(SSE 可选);体 = 上游协议 passthrough;仅路由 protocol=openai_responses 端点,不做协议转换;idempotency-key 头可选启用请求层幂等
本户可用模型目录(OpenAI 形态 data[])
twp
Overview
twp/1 认证探活 + 协议协商(CLI 登录验证即此):回 protocol/app{id,name,ownerType}/configEtag/serverTime/features;协议版本不符 400 protocol_unsupported;认证失败 401 app_key_invalid / 403 app_disabled / 403 app_ip_denied(CIDR fail-closed);请求签名三头可选(在场恒校验);configEtag 与 /t1/config 同径同档同锚——令牌径按 x-tansr-client-features 声明档计,owner 双头径恒全量单一 etag;features 含 platform-audio 即服务端具备音频两面并受理该头
账套配置包 bundle-for-app(末端启动自动审查授权列表的事实源):有效模型集 = app.model_catalog_ids ?? 用户级选择集(恒 ∩ 可服务谓词,采集制无档=空集)、adjudicators 清单(首个为生效档)、contextScheme(schemeId+overrides 合并);ETag/If-None-Match 304;形态 = ClientConfigBundle 扩展(app{id,name} + configVersion 内容指纹,心跳失效订阅锚);分档只施于令牌径:app_user 令牌径仅对 x-tansr-client-features 含 platform-audio 的客户端下发 capabilities.platform 五键 / platformModels 四键 / media 音频两面,缺头恒三键/两键,ETag 按档(Vary 本头);AK/SK 双头径(账套键 / cli 装置键)恒全量、单一 ETag、本头 no-op
twp/1 对话(本文档仅收录非流形态;stream:true → SSE 事件语法 t.open/t.delta/t.usage/t.warn/t.close/t.err,单源 = src/contract/twp.ts):参数消毒服务端化(Profile params 剥除/钳制)、meta.requestId 请求层幂等(认证后出网前占位,同 id 成功交换上游调用恒 1 次、计费恒 1 次;完成后重放返缓存结果(非流,携 x-tansr-idempotent-replay: 1)或 409(流式结果不可重放);计量与结算幂等为计费层兜底)、usage_events 恒填 api_key_id、越权模型恒 403 model_not_authorized(未知/授权面外/direct 同拒);上游方言不透传(4xx/5xx 收敛 502 upstream_error);请求签名三头可选(在场恒校验,签名覆盖 rawBody 原始字节)
direct 端点客户端计量上报:恒 source=client / billable=0 / cost=0;client_event_id 幂等;归账 api_key_id;零正文白名单(越权字段 400);请求签名三头可选(在场恒校验)
会话心跳:缺 sessionId 开新会话(sessions.api_key_id 归账)并回 sessionId;在册触碰 last_seen_at;meta 白名单(零留存);配置失效订阅:请求可携客户端 configVersion,响应恒回带服务端 configVersion 与 configStale(不一致=true → 重拉 /t1/config;未携恒 false);请求签名三头可选(在场恒校验);configVersion/bundleEtag 与 /t1/config 同径同档同锚——令牌径按 x-tansr-client-features 声明档计(客户端须三径同携同值,否则 configStale 恒真),owner 双头径恒全量单一 etag、漏头不 stale;在册会话心跳 = 续租恒走并发守门 acquire——窗内零变化,出窗会话重入与新会话同律判限(enforce 429 plan_concurrency_exceeded / shadow 计 would_reject),判限先于 last_seen_at 刷新;已归档会话(DELETE /t1/sessions/{id} 后)恒 410 session_archived(detail.sessionId;不复活、不入位;SDK 停该会话心跳、下轮 exchange 开新会话)
消费级搜索:账套级默认搜索商 ?? 平台默认供应商池编排;owner 日次数配额(UTC+8 日界);计量 usage_events purpose=websearch;令牌径受能力位 platform.webSearch 闸;请求签名三头可选
消费级图像生成(平台能力面):model 缺席 = 授权集顺位第一(bundle platformModels.imageGen 首行同源)/ 点名池外 403;受理面事实 = face.media 在场恒胜词表(size/seed/negativePrompt/imageUrls 域/n 帽/动词行);owner 与终端用户日张数配额;预扣 → 适配器 → 按实产张数结算(purpose=imagegen,x-tansr-cost/x-tansr-balance 头);产物 URL 透传 + outputHosting 定性;体帽 32MB(imageUrls data URI);请求签名三头可选
/t1/imagegen 异步提交:预备链(认证/能力位/解出/受理/配额/预扣)与同步端点同一函数——校验失败在本响应即时可见恒不产失败任务行;通过即落 media_tasks 行并后台执行,202 携 taskId/status=queued/pollIntervalMs;计费语义同同步径(成功即扣,断连照常产出照常扣费,有找回径不亏);params 快照恒不含用户内容
/t1/imagegen 任务查询/找回:queued/running 携 pollIntervalMs;succeeded 携 result(同步径响应同形)+ cost/currency(实结,同步径 x-tansr-cost 头同值);failed 携 error{code,message};执行预算窗尽未终态判 interrupted(最终扣费状态以用量记录为准);轮询频控同 limiterIdFor
消费级视频生成(imagegen 同构镜像):durationSec 域(set/range)、ratio、首帧 imageUrls、audioUrl 受理面 = face.media 在场恒胜词表;owner 与终端用户日秒数配额(秒 = 计费口径);按实产秒数结算(purpose=videogen);同步径长等分钟级——推荐异步任务径;体帽 32MB;请求签名三头可选
/t1/videogen 异步提交:预备链(认证/能力位/解出/受理/配额/预扣)与同步端点同一函数——校验失败在本响应即时可见恒不产失败任务行;通过即落 media_tasks 行并后台执行,202 携 taskId/status=queued/pollIntervalMs;计费语义同同步径(成功即扣,断连照常产出照常扣费,有找回径不亏);params 快照恒不含用户内容
/t1/videogen 任务查询/找回:queued/running 携 pollIntervalMs;succeeded 携 result(同步径响应同形)+ cost/currency(实结,同步径 x-tansr-cost 头同值);failed 携 error{code,message};执行预算窗尽未终态判 interrupted(最终扣费状态以用量记录为准);轮询频控同 limiterIdFor
语音转文字:audio = data:audio/*;base64 或 http(s) URL(原始音频 ≤ 24 MiB——JSON 体帽 32 MiB 是 base64 膨胀后口径,超帽 413 payload_too_large detail{rawBytes,maxRawBytes,note};mime ∈ 面档 formats;时长帽 maxSeconds 缺省 600);model 缺席 = 授权集顺位第一(bundle platformModels.speechToText 首行同源);diarize 仅 diarization 行受理(其余 400 可解释);multipart 由服务端组装;秒计家族按 ceil(duration) 秒 × per_second、token 家族按 audio/text token 结算(purpose=asr,usage 携 seconds 或 audioTokens/textTokens);owner 与终端用户日秒数配额;令牌径受能力位 platform.speechToText 闸;转写文本/音频恒不落日志
/t1/asr 异步提交:预备链(认证/能力位/解出/受理/配额/预扣)与同步端点同一函数——校验失败在本响应即时可见恒不产失败任务行;通过即落 media_tasks 行并后台执行,202 携 taskId/status=queued/pollIntervalMs;计费语义同同步径(成功即扣,断连照常产出照常扣费,有找回径不亏);params 快照恒不含用户内容
/t1/asr 任务查询/找回:queued/running 携 pollIntervalMs;succeeded 携 result(同步径响应同形)+ cost/currency(实结,同步径 x-tansr-cost 头同值);failed 携 error{code,message};执行预算窗尽未终态判 interrupted(最终扣费状态以用量记录为准);轮询频控同 limiterIdFor
文字转语音:input ≤ 面档 maxChars(计费字符口径:1 汉字计 2,其余计 1;缺省帽 2000);voice 缺席 = 面档 defaultVoice,非面档音色 400 携可选音色表;format 家族不受理按面档回落(dashscope 恒 wav 24k;minimax mp3 32k);speed 仅有位家族受理;model 缺席 = 授权集顺位第一(bundle platformModels.textToSpeech 首行同源);产物 URL 托管形(恒 https,~24h 及时转存)或 b64 内联形二选一(平台不落盘不转存),outputHosting 定性;按上游报量字符结算 per_10k_chars(purpose=tts,billedChars);owner 与终端用户日字符配额;令牌径受能力位 platform.textToSpeech 闸;合成文本恒不落日志
/t1/tts 异步提交:预备链(认证/能力位/解出/受理/配额/预扣)与同步端点同一函数——校验失败在本响应即时可见恒不产失败任务行;通过即落 media_tasks 行并后台执行,202 携 taskId/status=queued/pollIntervalMs;计费语义同同步径(成功即扣,断连照常产出照常扣费,有找回径不亏);params 快照恒不含用户内容
/t1/tts 任务查询/找回:queued/running 携 pollIntervalMs;succeeded 携 result(同步径响应同形)+ cost/currency(实结,同步径 x-tansr-cost 头同值);failed 携 error{code,message};执行预算窗尽未终态判 interrupted(最终扣费状态以用量记录为准);轮询频控同 limiterIdFor
本 endUser 会话列表(app_user 令牌径专属,双头径 401):窗口恒 = 租约窗口 30d(SESSION_LEASE_WINDOW_DAYS,last_seen_at 推导活跃语义,零租约列)——窗口外不活跃/显式归档行恒不出列表(行留账,归因明细仍可查);usage 卷账按会话维聚合(同窗同 App 同 endUser,过滤锚 = 令牌认证上下文恒不可改向);金额铁律同 /v1/my-usage:schema 级恒无 cost/byCurrency;恒无会话内容(平台不存内容承诺不破);limit 缺省 50 上限 100(T1_SESSIONS_LIMIT_*,越界 400)
显式续租(「打开会话列表但还没说话」的 UI 场景;exchange 活动/heartbeat 即隐式续租照旧):last_seen_at 推进;归档标记恒不清空——已 DELETE 行同 id 续租恒 410 session_archived(终态,开新会话);窗口外未归档行同 id 续租仍按在册续租;续租恒走并发守门 acquire(窗内零变化,出窗重入按新会话判限 enforce 429 / shadow would_reject),判限先于 last_seen_at 刷新;归属三键(owner+App 键+endUser)不满足恒同形 404(不泄露存在性);续租步长 = 固定 30d 窗口,恒不随令牌 TTL(租约锚 = endUserId 解耦令牌,同 endUser 新令牌续用旧会话)
终端显式删除(归档语义恒不硬删)——注册表行留账(归因/审计明细恒可查),活跃列表面即刻失效;吊销(endUserCut/appCut)恒不联动本径(令牌是认证材料、会话是业务对象,封号连会话一起清须显式 DELETE);幂等:已归档重复 DELETE 恒 204;归属三键不满足恒同形 404
auth
邮箱 OTP 下发(per-email 频控 + 每 IP 认证严档)
OTP 校验换 token(首次即注册;每 IP 认证严档)
三登录方式可用性(邮箱恒 true;sms = env 凭据已交割 × 平台配置 sms_settings 在场合法双闸;wechat 依凭据交割态)
手机短信 OTP 下发(阿里云 dysms:大陆号归一校验 → 四级限频[重发冷却→每号小时→每号日→每 IP 分钟,阈值恒平台配置 sms_settings 驱动,超限 429 otp_rate_limited 携 retryAfterSec] → 6 位码哈希入 Redis[TTL 配置驱动] → 按注册态选模板真发[新号=注册模板/已绑号=登录模板,响应恒同形不泄露注册态];通道未交割或平台配置缺席 503 auth_channel_undelivered;上游拒绝恒不透传细节,上游频控如实 429、余 502 upstream_error)
短信 OTP 校验换 token(验码通过 → 已绑号登录签 JWT / 新号建户[phone_otp 身份,手机号唯一,与邮箱账户同人双标识恒不裂户]+签 JWT;失败计数窗随码 TTL,超限废码 429,循邮箱 OTP 爆破防护先例)
微信扫码授权码换 token(subject=unionid||openid,首次即注册)
设备码签发(RFC 8628;CLI 网页登录发起面;每 IP 认证严档限频防滥发)
设备码轮询兑换 CLI 凭据(签发 PAT,与 POST /v1/api-keys 同形一次性回显,不再签会话票;pending 期间 400 device_code_pending;轮询过速 429 device_code_slow_down[RFC 8628,客户端间隔 +5s];approved 终态 CAS 一次性消费——凭据恒至多交付一次;PAT 存量上限同界 400 limit_exceeded;每 IP 认证严档)
门户激活页确认/拒绝设备码(登录会话;决策恒审计 auth.device_approved/denied,先审计后落态)
设备码反查(激活页展示请求方;仅 pending 可见,否则 404 不泄露)
refresh 轮换(每 IP 认证严档)
登出(吊销 refresh)
主体自省:ownerType/scopes/user + 本人所在 orgs(id/name/role;org PAT 主体 role=null)
自助注销挑战(JWT 登录态,PAT 恒 403):向账户邮箱发 OTP 确认码,返回一次性挑战 id(TTL 同 OTP);频控 = 每 IP 认证严档 + per-email 送信预算(与登录 OTP 共享 otpRate 桶,档位对齐)
自助注销确认执行(JWT 登录态):校验挑战 OTP 通过即调匿名化内核(email→不可逆占位/name 清空/status=deleted/登录身份与发票档删除;台账/计量/账单行恒不动)+ 全量凭据切断(refresh 与 api keys 全吊销 + 在外 access 用户级切断恒拒)+ 审计在册(actor=本人,原邮箱打码);同邮箱可重注册得全新账户;管理侧 /admin/v1/users/:id/anonymize 保持不动
本户 PAT 列表(脱敏:仅前缀;带 x-tansr-org 头 = org 的 key 列表)
PAT 签发(登录态;完整明文只回显一次;带 x-tansr-org 头 = org 的 key,owner/admin;每 IP 认证严档)
PAT 吊销(即时失效,可经 restore 再启用;级联吊销其签发的派生应用键(restore 恒不复活派生键);带 x-tansr-org 头 = 吊销 org 的 key;deleted 键恒 404)
PAT 再启用(仅 revoked→active;active 名额复查与签发同界——吊销释放名额、再启用重新占用,满员 400 limit_exceeded;active/deleted/不存在/app 键恒 404,deleted 不可自助恢复)
PAT 标记删除(active/revoked→deleted 终态:列表恒不显示、鉴权恒拒、行留存可审计、不可自助恢复;级联吊销其签发的派生应用键同 DELETE 径;已删除二次删/app 键/不存在恒 404)
orgs
Overview
本人所在全部 org(含角色与成员数)
建 org(登录态;每用户上限 2,超限 400 limit_exceeded;创建者即 owner)
org 改名(登录态 JWT 人类主体,owner/admin;name trim 入库,trim 后 <2 字 400;审计 org.rename 记 from/to;非成员恒 404)
owner 移交(owner 独有;toUserId 须 org 在册成员;store 层 CAS 防并发,并发改主 409 conflict;双向审计 from/to;移交后本人角色 admin)
org 解散(owner 独有;confirmName 须逐字等于 org 现名;级联 = store.dissolveOrg 单事务;余额冻结案:台账行保留、org 非 active 全面 404、不清零不退款)
成员列表(本 org 成员可读;email 脱敏中段;非成员恒 404)
移除成员(owner/admin;owner 本人恒不可动 → 403)
改成员角色(owner/admin;owner 本人恒不可动 → 403)
发邀请(owner/admin;code 一次性 TTL 72h,明文仅本响应回显,库存 sha256;邮件投递挂 mailer 交割位)
SSO 配置读(本 org 成员;secret 恒 ***;未配置为 null)
SSO 配置 upsert(owner/admin;clientSecret 信封加密入库:缺席保留/空串清除/有值替换;enabled=false 停用即吊销)
SSO 可达性探测(owner/admin):拉 issuer/.well-known/openid-configuration + JWKS;失败不抛错
受信 IdP 注册表列表(owner/admin/member 读):默认空=拒所有外部 issuer
受信 IdP upsert(owner/admin):org+issuer 唯一;jwksUri 缺省用发现文档(禁任意 JWKS 覆盖:显式配置须与发现文档或此受信覆盖一致);domain 非空则登录 email 域须匹配;enabled=false 停用即拒
删除受信 IdP(owner/admin;按公开 id + org 双限防跨 org 删)
SSO 登录入口:校验 issuer 受信(默认空=拒)+ 强制 HTTPS(生产)+ 发现文档 issuer 严格一致 + 禁任意 JWKS 覆盖 → 302 到 IdP 授权 URL(state/nonce/PKCE code_verifier 入 Redis TTL 10min 一次性;URL 携 code_challenge + code_challenge_method=S256);Cache-Control: no-store
SSO 回调 BFF 化:PKCE code_verifier 换 token → 验 id_token(签名/iss/aud/exp/nonce)+ email_verified=true → 身份主键 (org,issuer,sub):命中直登;首次须既有账号 + 本 org 已邀请成员,经 OTP 二次确认。回调**不再 JSON 返 token**——成功恒 302 携一次性 code(BFF /v1/auth/sso/exchange 换 token),首次关联 302 到 confirm 页携一次性 link;全程 Cache-Control: no-store
SSO 首次关联 OTP 二次确认:校验邮箱 OTP(复用既有机制,尝试计数防爆破)→ 写 federated_identity 绑定 (org,issuer,sub)→userId → 返一次性登录 code(BFF 再经 exchange 换 token);link/OTP 一次性
SSO 一次性登录 code 换 token(BFF 承接回调 302 的 code):签发 TokenResponse + org 成员关系;code 一次性 TTL 2min
接受邀请(登录态;须受邀邮箱本人;重复接受/过期 400;已是成员不动既有角色)
org 策略包应用档:{policy: null | {pack, enforced, appliedAt}};org 语境必填(x-tansr-org 头或 org PAT),全员可读;enforced=true 时包内档锁定成员属主的全部应用账套(bundle 段携 locked:true)
应用/解除策略包(owner/admin):packId=null 解除即刻解锁;packId 须 active 模板(停用/不存在同 404);enforced 缺省 true;属主隶属多个 enforced org 时取 applied_at 最新者(生效语义钉死);写恒审计 + bundle 失效
team 列表(本 org 成员可读;含 disabled 行如实 + memberCount)
建 team(owner/admin;每 org 上限 64 超限 400 limit_exceeded;恒审计)
team 现成员名单读取(owner/admin,PUT 面对偶——UI 成员弹层预勾现名单):行 = 在册 team 成员 ∩ 现 org 成员(离组者不在列),email 脱敏中段,userId 升序
team 成员声明式全量替换(owner/admin;userIds 须本 org 成员,越界/未知 400 validation_failed detail.invalid 全列;写恒审计 + bundle 失效)
team 停用(软删;即退出配置合成链,team 级配置行保留;恒审计 + bundle 失效)
org-governance
Overview
org 治理设置读取(owner/admin;成员可读):缺行回 configured:false + 各档缺省(legacy/disabled)= 全旧语义零破坏锚;poolTierCeiling = org→user 细分天花板(null = 未设 = 不细分)
org 治理设置写入(owner/admin,JWT 人类主体;org PAT 恒 403 principal_required):升 enforce/required 须带当前 preflight reportHash,缺席/过期 409 preflight_required;降档自助恒许恒审计;写恒 bundle 失效;poolTierCeiling = org→user 细分天花板(三态 undefined 不动/null 清除/值即设;user 位写面生效 min(平台,细分),org 位与签发工件恒不受影响;不涉 preflight)
enforce 预检报告(owner/admin):未持照 org 键清单 + 不合规钉档(⊄F∩C 将置 null)+ 越界 app 引用(⊄M∩C 将被裁);reportHash = 升 enforce 的确认锚(报告变则 hash 变)
shadow 双算差异报告(owner/admin):would-deny 按成员/按资源/按 app 三维 + 越界扩张计数(晋级门:恒应 0)+ 意外空集计数;30 天保留窗
成员授权清单(owner/admin 全量;成员可读本人):来源维(direct/approval/pack)+ 状态(active/dormant/revoked)
成员直配写面(owner/admin,恒审计):声明式 = 该成员 direct 源全量集合(增插 active,缺置 revoked;approval/pack 源恒不动);资源须 ⊆ C(org 天花板)否则 400 org_ceiling_exceeded
成员日预算清单(owner/admin;成员可读本人)
成员日预算写入(owner/admin,恒审计):dailyTokenLimit=null 解除;执行点在网关(UTC+8 日界,触顶 429 quota_exceeded)
审批列表(box=inbox 待我决 / box=mine 我发起;游标分页防滥用)
审批发起(成员 JWT):六类 kind 判别载荷;幂等键 UNIQUE(org,requester,key) 重放回原单;payload_hash 入库防事后改写;unlock_experimental 恒 level=platform
审批单读(申请人/受益人/owner/admin/活委托 approval.decide 可见;余者恒同形 404)
审批决策(owner/admin 或经委托 approval.decide):CAS(pending→终态)+ ceiling_version 重验(TOCTOU)+ 效果落库 + 审计 + outbox 同事务;自批恒 409 approval_self_forbidden;harness_license 批准回显一次性 activationCode(hash 入库,由决策人转交受益人)
审批撤回(申请人本人;pending→cancelled,幂等)
审批效果撤销(owner/admin):只撤本源效果(source=approval:<id> 的 grants 置 revoked/license 撤销),他源恒不误伤;恒审计
许可清单(owner/admin 全量;成员可读本人)
harness 许可发照(owner/admin):member 径回一次性激活码(hash 入库永不回读);service 径直接 active 无码;一键一照(api_key UNIQUE)
许可激活(成员 JWT):激活码校验一次核销 + 绑定 + 审计同事务;issued→active
许可停用(owner/admin;active→suspended,epoch 递增末端缓存失效)
许可恢复(owner/admin;suspended→active)
许可吊销(owner/admin;终态,恒审计;epoch 递增)
委托清单(owner/admin;含已撤销行供审计追溯)
委托写面(owner):能力词表闭集(ceiling.manage/approval.decide/license.manage/budget.manage/policy.manage);恒带 expiresAt(无永久委托);expiresAt=null 撤销(幂等);恒审计
成员归因用量(owner/admin):license 绑定归因;无照/service 键流量入未归因桶(memberUserId=null);分币桶恒不跨币加总
成员能力三色面(成员 JWT + x-tansr-org):available ∈ M / requestable ∈ C∖M(可发审批)/ platform_required 越 F;资源清单不泄露他 org 存在性
站内通知读面(全员;member 只见本人涉入单):事实源 = approval_outbox;?afterId 增量轮询,cursor 按扫描位推进,未读徽标 = 新到条数
control
资料站页面反馈(无鉴权公开面;CORS 白名单 origin docs.tansr.com / localhost:4321):体 {path ^/[a-z0-9\-/]*$ ≤200, helpful boolean(严格), locale? zh-CN|en|ja|ko} → 落 docs_feedback 一行(day = 服务器 UTC 日键;ip_hash = sha256(ip + 日键) 前 16 hex,原 IP 恒不落库)→ 202 {ok:true};路由级限流每 IP 60 / h(429 rate_limited + Retry-After)
资料站支持工单(无鉴权公开面;CORS 白名单 origin):体 {subject 1–120, body 1–4000, email?(形校验), page? ≤200, locale? zh-CN|en|ja|ko, website?(蜜罐:非空 → 202 假成功零动作)} → 经 SMTP 投递到 TANSR_API_SUPPORT_MAILBOX(主题 [tansr 支持] <subject> (<ticketId>);正文 ticketId / locale / page / email(若填)/ 正文,恒不含 IP)+ 审计 support.ticket_received → 202 {ok:true, ticketId: tk_<ulid>};路由级限流每 IP 5 / h(429);SMTP 未配置 503 auth_channel_undelivered(不落库不假成功)
client-config bundle(ETag/If-None-Match;304 走缓存;owner PAT 径恒全量——按客户端声明分档只施于 app_user 令牌径,本径 platformModels 恒四键、x-tansr-client-features 为 no-op、单一 ETag)
用户级模型列表读取(采集制;平台默认池继承):selected 恒数组(有档原样回读不清洗;user 键无档 = 未自定义 → 动态继承平台默认池现值[池序],inherited:true,空池 = [] 即既有空集语义;org 键无档恒 [] + inherited:false)+ available(可添加全集 = 本 owner 视角可服务的 platform 目录,与 bundle 可服务性谓词同源,条目含 kind/family/tags 三级过滤维度;自定义端点/BYOK 不在册不受约束;带 x-tansr-org 头 = org 选择集,成员可读)
用户级模型列表写入(采集制,整档替换):catalogIds 必为数组(null 档废止,400);[] = 显式清空(合法,fail-closed 空集);非空 → 去重保序、逐个校验 ∈ available、上限 500;落库即 bundle 失效收敛(带 x-tansr-org 头 = org 选择集,owner/admin)
恢复平台推荐(平台默认池):删除本 owner 自定义选购档 = 重新挂回平台默认池动态继承(幂等,无档删 = 已在继承态同回终态;返回恢复后的有效选购与 inherited:true;二次确认在呈现层)。仅 user 键——org 键恒不继承(400 validation_failed;显式清空走 PUT [])
层级配置项列取:scope ∈ org|team|user(platform 归 /admin/v1/config,此面 403);org/team 成员可读(team 经 ?team=<id> 定位,须属当前 org);user = 主体本人
层级配置项写入(org/team = owner/admin,user = 本人):整值替换,locked/enforcement 缺席保持现值(新建缺省 false/shadow 灰度纪律);写被上级 enforce 锁键恒 409 policy_locked(shadow 锁放行 + 审计 wouldDeny);locked=true 令该层锁定集超 64 恒 400 limit_exceeded;写恒 config.revision 审计 + bundle 失效(纪元自增,心跳 configVersion 翻转)
层级配置项删除(RBAC 同写;审计 to=null + bundle 失效;删除恒许——锁只拒「覆盖值」,下级收声明无害)
生效预览:computeSettings 全链服务端合成(bundle settings 段同内核),响应携逐键 origins 来源层、locks + lockOrigins 锁源层归因、shadow 灰度态;settings 恒在(全空链 = 空形,不做段缺席语义)。?as= 视角:缺省 = 本人(无 org 语境 = platform+user;携 x-tansr-org 头(成员即可)= platform+org+本人 team+user,与 org app 键 member 径同链;org PAT 主体 = org 视角);as=org / as=team:{teamId} / as=member:{userId} = 下级视角预览,恒 owner/admin(成员带 as 恒 403 fail-closed);目标须属本 org(未知/越 org/停用 team 恒同形 404)
配置修订史(事实源 = audit_log action=config.revision,appendAudit 通道):?scope=&keyPath=(scope=team 另带 ?team=)精确一键;org/team 收口 owner/admin(shadow-report 同律),user 本人;近序 ≤100 行;detail 携 from/to/locked/enforcement/revision/reason 与 shadow 锁 wouldDeny 观测标注
平台裁决人注册表(platform 档 actives,含绑定模型 handle/名称/预算摘要;四级链第一级,用户从此选择添加;条目携 tier/evaluation 池投影,evaluation.byProtocol 每协议最近报告键——非签名 JSON 读面,签名工件另在 /v1/adjudicator-pool/artifact)
用户级裁决人清单读取(形态同 model-selection,采集制):selected 恒数组(无档回 [];本户自定义档天然生效不入册)+ available(平台注册表全集;带 x-tansr-org 头 = org 清单,成员可读)
用户级裁决人清单写入(整档替换):profileIds 必为数组([] = 清空);去重保序、逐个校验 ∈ 注册表;写恒 bundle 失效 + 审计(org 语境 owner/admin)
余额与近账(balance/currency 恒 CNY 锚;balances 分币种余额 + recent 行级 currency;warnLowBalance/lowBalanceThreshold 低余额警示:阈值 TANSR_API_LOW_BALANCE_WARN 可配、与 /t1 t.warn balance_low 同源;recent 固定 20 行(上限常量单点);带 x-tansr-org 头 = org 台账,账务面 owner/billing)
用量聚合(groupBy 逗号组合 ≤3 维:day/model/source/key/session/currency/purpose;key/session 行键名 keyId/sessionId,无挂靠/未归因行归 "(none)";currency 维 = 分币种成本桶(cost 恒单币禁跨币加总);purpose 维 = 计费归属桶(main/compaction/title/classifier/memory;服务端归因 websearch);?purpose= 过滤单查一类归属(词表 = USAGE_PURPOSES,词表外 400,未归因行不设过滤哨兵、查分布走 groupBy);带 x-tansr-org 头 = org 聚合,owner/admin/billing;?dims=1 聚合行随行返回长尾维度量汇总 dims(键 = 注册词表长尾键 cache_w_5m/cache_w_1h/reasoning_out/web_search 等,零量键不出、全零行不出 dims 键;本端点恒明细径 JSON_EXTRACT 聚合,响应携 dimsBasis:"detail" 如实标注口径——rollup 径报表未物化 dims 恒不含);?saved=1 聚合行随行返回缓存省费三分量汇总 saved={readSaved,writePremium,netSaved}(saved_read/saved_write_premium/saved_net 逐行 SUM,NULL 行不计,售价口径)+ savedKnownRequests 覆盖度分母(= saved 已知行数,requests − 此数 = 快照缺席行;存量窗口覆盖不全故走参数开关不恒随行),响应携 savedBasis:"detail",缺省响应零漂移;可见性红线:聚合行恒不含采购三列 upstreamCost/upstreamKnownRequests/upstreamKnownCost(采购口径仅平台管理员面 /admin/v1/usage-reports 等);协议价三列(恒随行):行携 listCost = Σ COALESCE(list_cost, cost)(牌价)与 discount = listCost − cost(优惠;cost = 实收),牌价客户 listCost ≡ cost、discount 0
应用维用量(console 用量页应用统计):data = 本 owner 全部未删应用(api_keys scopes 含 app;零用量在列全零,status active|disabled,按请求数降序);other =「非应用」桶(api_key_id NULL 的 JWT/CLI 登录态直连 + PAT 键归因 + 已删应用遗留数值归档,三类合并单列);归因 = usage_events.api_key_id(/t1 数据面 app 键恒填);?window=Nd 沿 /v1/usage(缺省 7d,1..90 钳制);usage 形 = {requests,inTokens,outTokens,cacheRTokens,cacheWTokens,cost,listCost,discount,byCurrency[]},cost/listCost/discount 恒 CNY 锚、byCurrency 分币分桶(每桶同携三列)恒不跨币加总;协议价三列:listCost 牌价 / cost 实收 / discount = listCost − cost,牌价客户 listCost ≡ cost、discount 0;带 x-tansr-org 头 = org 应用视图,观察面 owner/admin/billing
本户月账单列表:期初/期末余额 + 充值/消耗/退款/调整四桶 + 当月计量汇总;月份降序 ≤24 行;?month=YYYY-MM 精确取一月;账单由平台按月按币生成(一户一月一币一档,多币月份分行、恒不跨币加总),未出账月份/币种不在列(带 x-tansr-org 头 = org 账单,账务面 owner/billing);不可变账单:行携 revision(1 起),缺省每期仅最新版,?revisions=all 取全部历史修订版(同期重生成有差异 = 新版,旧版只读保留;无差异重生成不新增);协议价三列:usage 块携 listCost(牌价合计)/ cost(实收)/ discount(优惠 = listCost − cost,恒等式),牌价客户与存量账单读面 listCost ≡ cost、discount 0(缺席按 cost 归一;勾稽判据 discount 缺席 = 0,存量账单重生成不推修订版)
发票抬头档案(user 一户一档;未登记为 null;仅登录态)
发票抬头 upsert(整档替换,幂等;company 必填 taxId 18 位、personal 禁填)
计量明细列表(明细表数据源):本户/本 org(x-tansr-org 观察面)窗口内逐笔计量行,时间近序;?window=Nd(缺省 7d,1..90)、?limit(缺省 50 上限 200);行 = 四象限量 + dims 长尾维(非零才出)+ cost/listCost/discount/currency(协议价三列:listCost = list_cost ?? cost 牌价、discount = listCost − cost 优惠;牌价行/存量行 listCost ≡ cost、discount 0)+ 价格快照四列 price + saved 三分量(readSaved/writePremium/netSaved;NULL 不出键,存量行/byok/client 径如实缺席);可见性红线:恒不含采购字段(upstream_cost/spec/fp/unpriced);逐笔演算下钻走 GET /v1/usage-events/{id}/cost-explain(requestId 即下钻键)
客户端计量上报(direct 端点 token 计数;恒 billable=false、cost=0、零正文白名单)
逐笔成本演算——组织/用户版(演算页):**仅销售口径投影**,id = requestId,归属校验非本 owner 恒 404(不泄露存在性);响应 = 四象限量 + dims 长尾维 + cost{stored,recomputed,match,listCost?,discount?}(价格快照四列 × 量重算 = 牌价 ≡ list_cost ?? cost 即销售价恒等式,用户可自证账单;协议价行 recomputed 对牌价快照 list_cost 比对并携 listCost/discount 两键 =「牌价 − 优惠 = 实收」,牌价行无两键零漂移)+ price 四列(缓存象限含回落语义 fallback 标注)+ breakdown 四象限分解行 + saved 三分量(readSaved/writePremium/netSaved);快照缺席存量行/byok/client 径如实 degraded:"no_price_snapshot" 不猜不造;estimated 行如实冠估算;可见性红线:采购成本/采购结构 spec/指纹/缺价记名/毛利恒不出面
会话列表(会话查看器):本户/本 org(x-tansr-org,owner/admin/billing)+ usage 聚合;window=Nd(≤90d,按最近心跳圈定)、limit 缺省 50 上限 100(上限常量单点 src/contract/limits.ts,越界 400);正文零留存,meta 恒白名单键;分币收口:usage.cost 恒 CNY 桶(单币数据逐数不变,口径注记)+ usage.byCurrency 分币桶(恒不跨币加总);usage 与 byCurrency 行补 cacheRTokens/cacheWTokens(四象限语义,上游未报 = 0;既有字段零漂移)
会话元数据登记(正文零留存;meta 白名单)
会话心跳(last_seen 触碰)
自定义端点列表(user 作用域,或带 x-tansr-org 头 = org 端点,成员可读;软删条目不可见;代管凭据恒 ***)
注册自定义端点(direct = 凭据只存 env 变量名;org BYOK:org 作用域(x-tansr-org,owner/admin)允许 connectMode=gateway + credential 信封加密入库,流量过网关计量 token 但 cost=0;user 作用域 gateway 仍 403;每户/每 org 上限 16)
端点软删(status=disabled,连带其模型条目失效;bundle 即刻不含;org 端点带 x-tansr-org 头,owner/admin)
端点上登记模型(handle 与作用域可见目录冲突 409;每端点上限 32;org 端点带 x-tansr-org 头)
模型条目软删(modelId = 模型条目 id,即 GET 列表 models[].id;org 端点带 x-tansr-org 头)
端点可达性探测(限流复用 60s 窗;失败不抛错如实 reachable=false;org 端点带 x-tansr-org 头)。出网零信任:direct 端点(用户可控任意 baseUrl)API 服务端恒不代探(reachable=false + client-side note,防 SSRF 预言机);平台/org 端点经出网 guard(私网/元数据封锁 + 逐跳重验)
裁决人档 resolved 视图(platform 缺省 + 作用域覆盖;editable = 自建;bundle 下发最近更新档;带 x-tansr-org 头 = org 语境成员可读——组织扩容档查看面,条目携 tier/evaluation/forceTrustAskedAt 池投影;evaluation.byProtocol 键 = 每协议(coding/app)最近一次报告 {fingerprint, reportRef, evaluatedAt},无报告行整体缺席)
自建裁决人档(modelHandle 须作用域可解析;每户上限 8;写后 bundle 失效;带 x-tansr-org 头 = org 扩容录入,owner/admin——组织扩容面;tier 越平台天花板 400 validation_failed 携 ceiling)
删除自建裁决人档(软删;resolved 回落 platform 缺省或作用域余档最近更新者;带 x-tansr-org 头 = org 档管理,owner/admin)
更新自建裁决人档(作用域自有条目;platform 缺省只读,恒 404;带 x-tansr-org 头 = org 档管理,owner/admin)
强制信任问询答复:「贵组织对该扩容条目是否强制信任?」——恒落 forceTrustAskedAt(问一次状态位,控制台以此判已问过);forceTrust=true → evaluation.status=force-trusted(仅压提醒恒不改裁决语义位,池工件/报表恒如实透出),false → 状态不动(继续候提醒);重复问询幂等(时间戳刷新);治理决策恒 JWT 人类主体(PAT 403 principal_required),org 语境经 x-tansr-org(owner/admin);本户档限定,platform/他人档 404 不泄露;写恒审计 adjudicator_pool.force_trust + bundle 失效
评估报告回填:CLI --push 推送落点——报告行插入 + 池条目 evaluation 投影同请求联动(恒显式置 evaluated = 重评完成合法置回径;机械律唯在 admin PUT evaluation 手工回填面,两写面正交);鉴权判定序 = x-tansr-admin-key 在场走 admin 链(ADMIN_OPS,任意 scope 档可回填),否则恒 Bearer+control+org 语境(x-tansr-org,owner/admin)本户/本 org 档限定(platform/他人档 404 不泄露);幂等 = 同 (profileId, reportRef) 重提 200 返回既有行恒不重写条目不重复审计(判重键不含协议);conclusion 是证据不是权力(恒不写 tier);报告行存提交方 reportRef 原文、条目 evaluation.reportRef 指向报告 id(两级引用,平台可解引用);body.protocol 可选 coding|app 缺省 coding——报告行落协议,读面 evaluation.byProtocol 每协议各取最近一次,四键仍为最近一次任一协议;app 协议报告 = bundle adjudicator[s].evidenceFingerprint 数据源(恒指应用协议证据),对 app 报告恒失效 bundle(含相对条目乱序径);写恒审计 adjudicator_pool.evaluation_report(detail.protocol)+ bundle 失效
评估报告详情读:可见域 = GET /v1/adjudicators 列表同构(platform 档 + 作用域自有 active 档;他人/软删档 404 不泄露);org 语境经 x-tansr-org(任意成员角色);行序 evaluatedAt DESC(重评历史最近在前)
裁决人池签名工件签发:平台工件(org 缺席)匿名可读(完整性由 ed25519 自证;CLI managed 锚 adjudicatorPool.url 消费,锚亦可指向自托管静态文件);?org=<org 公开 id> = 平台池 + 该 org active 自建档聚合,**org 定向面判敏感须鉴权**——任一即过:Bearer(JWT/PAT,PAT 须 control scope)且主体为该 org active 成员(任意角色)或该 org 自身(org PAT),或 x-tansr-admin-key(ADMIN_READ);判定序 = 签名交割位 503 → 鉴权 → org 存在性/成员资格;层级格律在写面已钳,签发只读直投,CLI 恒不做多层合并;签发面跳过 status!=active/revoked 在场/validUntil 已过;验签 payload = stableStringify({schemaVersion,kind,entries,meta})(kernel verify.ts 同源口径),sequence = 签发时刻 epoch ms(CLI 防回滚水位);密钥未交割 503 pool_signing_undelivered(fail-closed 交割位);高频读面不落审计;cache-control: no-store(工件自带 expiresAt 时窗)
内容页列表(协议/法务页;匿名可读,恒只出 published;slug/title/时间,无正文)
内容页正文(匿名可读;draft/未知恒 404 不泄露存在性;bodyMd = markdown,渲染归门户)
站点公开配置(匿名;平台配置中心 site.beian.* 白名单投影:icp=ICP 备案号字符串,gongan={code,text} 公安备案;shadow 条目不生效,类型不符按缺席出 null 恒 200;平台层专属,org/team/user 层同名键不投影)
上下文方案目录(platform 档 + 本户自建;可用性围栏收敛:platform 段只列对本 owner 可见档——production 缺省全员可见,experimental 须显式 allow,deny 恒胜 allow;带 x-tansr-org 头 = org 语境,org-subject grant 投射,成员可读)
自建上下文方案(scheme 键白名单 maxTokens/compactThreshold/pinnedPolicy/notes;每户上限 8)
删除自建上下文方案(软删;resolved 回落)
更新自建上下文方案(仅本户条目)
用户级上下文方案选购清单读取(与 model-selection 同构采集制):selected 恒数组(无档回 [];原样回读不清洗,停用/围栏收回由消费点谓词 fail-closed 挡下)+ available(可选购全集 = 对本 owner 可见的 platform 档,可见性围栏单点收敛;自建 active 档不入册但可入清单;带 x-tansr-org 头 = org 清单,成员可读)
用户级上下文方案选购清单写入(整档替换):schemeIds 必为数组([] = 显式清空);去重保序、逐个校验 ∈(对本 owner 可见的 platform 档 ∪ owner 自建 active 档),越界 400 validation_failed(detail.invalid 全列,不可见与不存在同拒不泄露存在性);写恒 bundle 失效 + 审计(org 语境 owner/admin)。引用面(app contextPolicy.schemeId / bundle 解析)同谓词:platform 档须已选购且围栏可见,退选/deny 即 fail-closed 回收
联网搜索商用户目录(active 池用户安全投影:id/name/vendor/pricePerCall/currency/maxResultsCap/isDefault;采购细节 credentialEnv/成本/权重/超时/端点恒不出面,匿名化投影)+ defaultProviderId(平台默认指配且行 active 时如实出 id,未指配/失效恒 null = 选池加权随机);排序 = 池确定序(weight 降序→更新新者先→id 升序)即故障转移顺序;账套级自定义走 PUT /v1/apps/{id}/config.searchProviderId
本户订单列表(带 x-tansr-org 头 = org 订单);行数上限 50(近序截断,无 limit 参数;上限常量单点 src/contract/limits.ts ORDERS_LIST_LIMIT,消费方勿假设 100)
创建订单(登录态;sku 缺省 recharge = amount 直充;sku plan:<tier>:<1y|1m> = 套餐单,动作 new/renew/upgrade/downgrade 与金额恒服务端算(客户端 amount 不一致 400;差价 0.00 不可下单 409 plan_zero_amount;存在 scheduled 降档行 409 plan_scheduled_exists);渠道参数未交割时 503;带 x-tansr-org 头 = org 单,owner/billing)
单笔订单查询(支付到账轮询;越权 404 不泄露存在性;org 单带 x-tansr-org 头)
公开 SDK 资费目录;与报价、购买快照同源,无登录要求
公开 Demo 下载链接;空值表示未发布
套餐报价预览(query sku=plan:<tier>:<1y|1m>):与 POST /v1/orders 同一判定函数回显动作/应付/起算/到期/差价算式;带 x-tansr-org 头 = org 语境(owner/billing);形外 sku 400;存在 scheduled 降档行 409
套餐读面:生效档 plan(bundle plan 键同形;无套餐行 null)+ scheduled 预约降档行(无则 null)+ usage 水位(concurrency current = 5 分钟窗清窗后并发 / cap / hardCap = floor(cap×1.1);apps used = active 非装置绑定 app 键 / cap;orgMembers 仅 org 语境(无套餐 org 按 test 档 3);monthlyEndUsers 仅 test 档)+ pricing(协议价,牌价客户 null)+ catalog 四档展示字段;带 x-tansr-org 头 = org 语境(全员可读,非成员 404)
并发水位曲线(query days 1–90 缺省 30):days = owner_plan_usage_daily 逐日峰值 + 24 格小时峰值(plan-usage-fold.daily 折叠前一日;缺席日无行);today = 今日 24 格小时峰值(Redis 直读,未到/无活动小时 null);带 x-tansr-org 头 = org 语境(全员可读,非成员 404)
卡密兑换(备份路;unused→redeemed 单事务 + 按 sku 分派:充值卡台账 recharge / 套餐卡授档(test 卡同时入账);带 x-tansr-org 头 = 入 org 台账,owner/billing)
apps
Overview
本 owner 应用列表(永不回密文与 hash;带 x-tansr-org 头 = org 应用,成员可读)
创建应用(name 必填)→ {app, apiKey}:ApiKey 密文(tsk_+40 位 base62)唯一一次回显,库存 sha256(org 语境 owner/admin);expiresAt 缺省 now+365d(显式 null = 有意长期,写审计;存量行不动)、signRequired 请求签名强制位(缺省 false)
应用详情 + 配置(app_configs 全量;无档 = 三位 null 全继承);他人/未知恒 404
应用硬删;普通组织应用仅所有者 JWT 明确确认直删,其他成员走 app_delete 审批;历史用量与账单归属不迁移
应用更新:name / status(disabled = 末端全拒 fail-closed)/ ipAllowlist(CIDR 数组,逐条可解析,null = 清除)/ signRequired(即时生效于 /t1 认证链)
轮换密钥:新密文替换 hash(旧密文即刻失效),新密文一次性回显;续期径:带期键同步顺延 expiresAt = 轮换时点 + 缺省寿命 365d(重算不继承旧值,审计记新旧值),长期键(null)保持长期
终端用户令牌吊销:按 endUserId 切断该 (App, endUser) 下全部存量 app_user 令牌(iat <= 切断时刻恒拒,即时生效;TTL = 令牌最大寿命 24h 自清)——终端此后须经开发者服务端重新换发;幂等(重复切断 = 刷新切断时刻,恒 200);写恒审计(app.revoke_app_user,detail 携 endUserId/atEpochSec);jti 单令牌吊销不设 HTTP 面(控制台拿不到 jti,endUser 级切断已覆盖)
网关出口登记读面(网关限流档):该 App 登记的出口 CIDR 全量(稳定序 createdAt 升序→cidr 字典序);语义:app_user 令牌径请求客户端 IP ∈ 登记出口 → 账套级限流键由 k<apiKeyId> 切为每终端用户 g<apiKeyId>:<endUserIdHash>(独立 60s 滑窗,上限恒 = 平台缺省 120/min,即每个终端用户拿到与一把直连 key 相同的额度;quota.rpm 只作 App 总闸 appq;该档 429 携 detail.scope:"endUser")且该 IP 豁免全局 IP 档 600/min;未登记 IP / 双头径 / compat 径限流行为与信封字节不变;他人/非 app 键恒 404
网关出口登记全量替换:entries ≤16 条,cidr 逐条 IPv4/IPv6 CIDR(裸 IP = 单主机;node:net isIP + 掩码位校验)且同批不重复,label 可空;[] = 清空登记(该 App 回既有 k<apiKeyId> 键与 IP 档缺省);写恒审计 app.gateway_egress.updated(detail 携 entries/count)+ 出口缓存定向失效(下一请求即按新集合);装置绑定 CLI 键恒 400(不在应用控制面);运维顺序:部署 api → 此处登记 serve 出口 CIDR → 观察 429 率
应用策略写入(逐段校验):modelCatalogIds ∈ 本户有效集(用户级选择集∩可服务谓词)、adjudicatorIds ∈ 用户清单∪本户自定义档、contextPolicy.schemeId 存在且可用、searchProviderId 存在且 active(账套级默认搜索商,/t1/websearch 恒首选,null 回继承平台默认);缺席键不动该段、null 回继承、[] 显式空集(fail-closed);写恒 bundle 失效(附 apiKeyId 维度)+ 审计
app_user 短期令牌签发:开发者服务端以 App 键双头换发终端令牌(x-tansr-app-token 载体);鉴权复用 authenticateApp 全链(scope / status / 过期 / IP 白名单 / 签名 / license);endUserId 可打印 ASCII 1–128,ttlSeconds 60–86400 缺省 3600;令牌仅一次性回体、恒不入日志;令牌铸造径只读判限(并发 ≥ 硬帽 429 plan_concurrency_exceeded 不占位;test 档月度不同终端用户 SET > 100 → 429 plan_end_users_exceeded,shadow 下只计量)
终端自查面:app_user 令牌鉴权,恒只返回令牌 eu 的用量(endUserId 恒不可由查询参数改向);?window=Nd(1..90,缺省 7d);响应经 MyUsageResponse schema 序列化(additionalProperties:false)= 金额字段结构级不可达(终端面恒不暴露金额)
开发者对账面:App 键双头鉴权,本 App 用量按 endUserId 分桶(null 桶 = 未归因:App 服务端直调等);?window=Nd(1..90,缺省 7d)/ ?endUserId= 单查(形制外 400 validation_failed)/ ?limit(缺省 50,上限 50 钳制)/ ?offset;行携 cost(CNY 锚 DECIMAL 串)+ byCurrency 分币桶(恒不跨币折算)
ops
存活探针(liveness):进程活着即 200 常量,体 {ok:true, version(package.json), db:ok|down|not-configured}(db 只如实报,不改状态码);compose healthcheck 看本端点,水位判据归 /readyz
就绪探针(readiness;部署脚本以本端点判就绪):{ version(package.json), gitSha(env TANSR_API_GIT_SHA ← Dockerfile ARG GIT_SHA;缺席 null), schemaRevision(末已应用迁移文件名去后缀,如 081_catalog_anchor_realign;零应用 null), schemaCurrent(迁移目录全部 done 且无半迁移;mysql 不可达 null = 未知), deps:{ mysql:ok|degraded, redis:ok|degraded } };**仅 schemaCurrent === false ⇒ 503**(schema 落后于代码 = 半态不接流量),deps 降级只如实报不改状态码
错误码与排障
错误码参考
安全与隐私
安全与隐私
发布说明
@tansr/cli Changelog
多语言覆盖率
@tansr/sdk Changelog
@tansr/serve Changelog
帮助中心
帮助中心
账号、密钥、套餐与计费
联系支持
排障指南
开发者文档
帮助中心
选择主题
深色
浅色
自动
选择语言
简体中文
English
日本語
한국어
Overview
orgs
Section titled “orgs”
企业面(T-A9):org 生命周期/成员/邀请/SSO;org 作用域经 x-tansr-org 头声明
Operations
Section titled “Operations”
GET
/v1/orgs
POST
/v1/orgs
PATCH
/v1/orgs/{id}
POST
/v1/orgs/{id}/transfer-owner
POST
/v1/orgs/{id}/dissolve
GET
/v1/orgs/{id}/members
DELETE
/v1/orgs/{id}/members/{userId}
PATCH
/v1/orgs/{id}/members/{userId}
POST
/v1/orgs/{id}/invites
GET
/v1/orgs/{id}/sso
PUT
/v1/orgs/{id}/sso
POST
/v1/orgs/{id}/sso/probe
GET
/v1/orgs/{id}/trusted-idps
POST
/v1/orgs/{id}/trusted-idps
DELETE
/v1/orgs/{id}/trusted-idps/{tid}
GET
/v1/auth/sso/{orgId}/start
GET
/v1/auth/sso/{orgId}/callback
POST
/v1/auth/sso/link/confirm
POST
/v1/auth/sso/exchange
POST
/v1/orgs/invites/accept
GET
/v1/org/policy
PUT
/v1/org/policy
GET
/v1/org-teams
POST
/v1/org-teams
GET
/v1/org-teams/{id}/members
PUT
/v1/org-teams/{id}/members
DELETE
/v1/org-teams/{id}
本文是否有帮助?
有帮助
没帮助
感谢反馈,我们会持续改进这篇文章。