{"openapi":"3.0.3","info":{"title":"应用宝授权控制台 · 接口文档","description":"独立的微信账号、分组与单账号小程序登录取码服务。","version":"2.1.0"},"servers":[{"url":"/"}],"tags":[{"name":"health","description":"服务健康检查"},{"name":"qr","description":"微信扫码登录"},{"name":"accounts","description":"已保存的微信账号"},{"name":"groups","description":"账号分组"},{"name":"settings","description":"运行时设置"},{"name":"invites","description":"一次性协助扫码链接"},{"name":"wxapp","description":"小程序业务接口调用"}],"paths":{"/health":{"get":{"tags":["health"],"summary":"检查服务状态","responses":{"200":{"description":"服务正常。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/HealthResponse"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}}}},"/qr":{"post":{"tags":["qr"],"summary":"创建扫码登录会话","responses":{"200":{"description":"二维码会话创建成功。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/QRCreateResponse"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"as_base64","in":"query","description":"是否同时返回二维码图片的 data URI。","required":false,"schema":{"type":"boolean"}}],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/qr/{session_id}/image":{"get":{"tags":["qr"],"summary":"获取二维码图片","responses":{"200":{"description":"二维码图片。","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"session_id","in":"path","description":"二维码会话 ID。","required":true,"schema":{"type":"string"}}],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/qr/{session_id}/poll":{"get":{"tags":["qr"],"summary":"轮询扫码登录状态","responses":{"200":{"description":"当前扫码状态。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/QRPollResponse"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"session_id","in":"path","description":"二维码会话 ID。","required":true,"schema":{"type":"string"}}],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/qr/{session_id}/confirm":{"post":{"tags":["qr"],"summary":"确认已授权的扫码会话并保存账号","responses":{"200":{"description":"已保存的账号信息。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/AccountPublic"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"session_id","in":"path","description":"二维码会话 ID。","required":true,"schema":{"type":"string"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QRConfirmRequest"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/accounts":{"get":{"tags":["accounts"],"summary":"获取账号列表","responses":{"200":{"description":"已保存的账号列表。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"type":"array","items":{"$ref":"#/components/schemas/AccountPublic"}}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"group_id","in":"query","description":"按分组 ID 过滤。","required":false,"schema":{"type":"string"}},{"name":"group","in":"query","description":"按分组名称精确过滤。","required":false,"schema":{"type":"string"}}],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]},"delete":{"tags":["accounts"],"summary":"删除账号","responses":{"200":{"description":"删除结果。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/DeleteAccountResponse"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"ref","in":"query","description":"账号 ID、UIN 或 openid。","required":true,"schema":{"type":"string"}}],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/accounts/refresh":{"post":{"tags":["accounts"],"summary":"刷新账号存活状态","responses":{"200":{"description":"刷新结果。未传 ref 时返回数组。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/RefreshResponse"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountRefRequest"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/accounts/resync":{"post":{"tags":["accounts"],"summary":"重新同步账号资料","responses":{"200":{"description":"同步后的账号信息。未传 ref 时返回数组。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/ResyncResponse"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountRefRequest"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/accounts/avatar":{"get":{"tags":["accounts"],"summary":"获取账号头像","responses":{"200":{"description":"头像图片。","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}}}},"302":{"description":"跳转到远程头像地址。"},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"ref","in":"query","description":"账号 ID、UIN 或 openid。","required":true,"schema":{"type":"string"}}],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/wxapp/getCode":{"post":{"tags":["wxapp"],"summary":"获取小程序code","responses":{"200":{"description":"getCode 调用结果。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/WxappResponse"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WxappRequest"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/wxapp/getPhoneNumber":{"post":{"tags":["wxapp"],"summary":"获取手机号","responses":{"200":{"description":"getPhoneNumber 调用结果。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/WxappResponse"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WxappRequest"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/wxapp/operateWxData":{"post":{"tags":["wxapp"],"summary":"小程序云函数","responses":{"200":{"description":"operateWxData 调用结果。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/WxappResponse"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperateWXDataRequest"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/groups":{"get":{"tags":["groups"],"summary":"获取分组列表","responses":{"200":{"description":"分组列表。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"type":"array","items":{"$ref":"#/components/schemas/AccountGroup"}}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]},"post":{"tags":["groups"],"summary":"创建分组","responses":{"201":{"description":"新分组。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/AccountGroup"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupWriteRequest"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/groups/{group_id}":{"patch":{"tags":["groups"],"summary":"更新分组","responses":{"200":{"description":"操作结果。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/AccountGroup"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupWriteRequest"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]},"put":{"tags":["groups"],"summary":"替换分组字段","responses":{"200":{"description":"操作结果。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/AccountGroup"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupWriteRequest"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]},"delete":{"tags":["groups"],"summary":"删除空分组","responses":{"200":{"description":"操作结果。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"type":"object","description":"删除结果。","additionalProperties":true,"nullable":true}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/accounts/move":{"post":{"tags":["accounts"],"summary":"移动账号到分组","responses":{"200":{"description":"移动后的账号。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/AccountPublic"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountMoveRequest"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/settings/network":{"get":{"tags":["settings"],"summary":"读取网络出口设置（不返回密码）","responses":{"200":{"description":"当前网络出口。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/NetworkSettings"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]},"put":{"tags":["settings"],"summary":"切换直连或 SOCKS5 并持久化","responses":{"200":{"description":"更新后的网络出口。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/NetworkSettings"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NetworkSettingsWrite"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/settings/retry":{"get":{"tags":["settings"],"summary":"读取服务端透明重试策略","responses":{"200":{"description":"当前重试策略。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/RetrySettings"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]},"put":{"tags":["settings"],"summary":"更新并持久化透明重试策略","responses":{"200":{"description":"更新后的重试策略。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/RetrySettings"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetrySettings"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]},"delete":{"tags":["settings"],"summary":"移除网页覆盖并恢复环境变量/程序默认值","responses":{"200":{"description":"恢复后的重试策略。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/RetrySettings"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/invites":{"get":{"tags":["invites"],"summary":"查看临时协助链接记录","responses":{"200":{"description":"邀请记录。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"type":"array","items":{"$ref":"#/components/schemas/AccountInvite"}}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]},"post":{"tags":["invites"],"summary":"生成限时一次性协助链接","responses":{"201":{"description":"邀请及只返回一次的 join_path。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/AccountInvite"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteCreateRequest"}}}},"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/invites/{invite_id}":{"delete":{"tags":["invites"],"summary":"撤销未使用的协助链接","responses":{"200":{"description":"撤销结果。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"type":"object","description":"撤销结果。","additionalProperties":true,"nullable":true}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"invite_id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"security":[{"BearerAuth":[]},{"ApiKeyAuth":[]}]}},"/join-api/status":{"get":{"tags":["invites"],"summary":"读取临时链接状态，不创建二维码","responses":{"200":{"description":"公开端最小状态。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/PublicJoinStatus"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"X-Invite-Token","in":"header","description":"来自临时链接 fragment 的高熵一次性令牌。","required":true,"schema":{"type":"string"}}]}},"/join-api/qr":{"post":{"tags":["invites"],"summary":"为临时链接创建二维码","responses":{"200":{"description":"公开端最小状态。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/PublicJoinStatus"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"X-Invite-Token","in":"header","description":"来自临时链接 fragment 的高熵一次性令牌。","required":true,"schema":{"type":"string"}}]}},"/join-api/image":{"get":{"tags":["invites"],"summary":"获取临时链接二维码图片","responses":{"200":{"description":"公开端最小状态。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/PublicJoinStatus"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"X-Invite-Token","in":"header","description":"来自临时链接 fragment 的高熵一次性令牌。","required":true,"schema":{"type":"string"}}]}},"/join-api/poll":{"get":{"tags":["invites"],"summary":"查询临时链接扫码状态","responses":{"200":{"description":"公开端最小状态。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/PublicJoinStatus"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"X-Invite-Token","in":"header","description":"来自临时链接 fragment 的高熵一次性令牌。","required":true,"schema":{"type":"string"}}]}},"/join-api/confirm":{"post":{"tags":["invites"],"summary":"确认并按管理员预设信息入库","responses":{"200":{"description":"公开端最小状态。","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"$ref":"#/components/schemas/PublicJoinStatus"}},"required":["code","msg","data"]}}}},"default":{"description":"错误响应。","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}},"parameters":[{"name":"X-Invite-Token","in":"header","description":"来自临时链接 fragment 的高熵一次性令牌。","required":true,"schema":{"type":"string"}}]}}},"components":{"schemas":{"APIResponse":{"type":"object","properties":{"code":{"type":"integer","example":0,"description":"业务状态码，0 表示成功，非 0 表示业务错误。"},"msg":{"type":"string","example":"success","description":"提示信息，前端可直接用于 Toast 提示。"},"data":{"type":"object","description":"实际数据载荷，可以是对象、数组或 null。","additionalProperties":true,"nullable":true}},"required":["code","msg","data"]},"APIErrorResponse":{"type":"object","properties":{"code":{"type":"integer","example":400,"description":"非 0 业务错误码。"},"msg":{"type":"string","example":"ref is required"},"data":{"type":"object","description":"错误响应当前固定返回 null。","additionalProperties":true,"nullable":true}},"required":["code","msg","data"]},"HealthResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"QRCreateResponse":{"type":"object","properties":{"session_id":{"type":"string"},"status":{"type":"string","example":"pending"},"image_url":{"type":"string","example":"/qr/{session_id}/image"},"image_base64":{"type":"string","description":"当 as_base64=true 时返回二维码图片 data URI。","nullable":true}},"required":["session_id","status","image_url"]},"QRPollResponse":{"type":"object","properties":{"status":{"type":"string","enum":["pending","scanned","authorized","confirmed","expired","cancelled","unknown"]},"errcode":{"type":"integer","nullable":true}},"required":["status"]},"AccountPublic":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"openid":{"type":"string"},"uin":{"type":"integer","format":"int64","nullable":true},"alias":{"type":"string","description":"账号别名。","nullable":true},"nickname":{"type":"string","description":"账号昵称。","nullable":true},"avatar":{"type":"string","description":"本地头像路径或远程头像 URL。","nullable":true},"status":{"type":"string","description":"账号状态。","nullable":true},"last_checked_at":{"type":"integer","format":"int64","nullable":true},"created_at":{"type":"integer","format":"int64"},"updated_at":{"type":"integer","format":"int64"},"group_id":{"type":"integer","format":"int64","nullable":true},"group_name":{"type":"string","description":"账号分组名称。","nullable":true}},"required":["id","openid","created_at","updated_at"]},"RefreshResult":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"openid":{"type":"string"},"uin":{"type":"integer","format":"int64","nullable":true},"nickname":{"type":"string","description":"账号昵称。","nullable":true},"status":{"type":"string","example":"alive"}},"required":["id","openid","status"]},"DeleteAccountResponse":{"type":"object","properties":{"deleted":{"type":"integer","format":"int64"},"openid":{"type":"string"}},"required":["deleted","openid"]},"AccountRefRequest":{"type":"object","properties":{"ref":{"type":"string","description":"账号 UIN/ID（纯数字）、openid、alias 或唯一 nickname。"}}},"RefreshResponse":{"oneOf":[{"$ref":"#/components/schemas/RefreshResult"},{"type":"array","items":{"$ref":"#/components/schemas/RefreshResult"}}]},"ResyncResponse":{"oneOf":[{"$ref":"#/components/schemas/AccountPublic"},{"type":"array","items":{"$ref":"#/components/schemas/AccountPublic"}}]},"WxappRequest":{"type":"object","properties":{"ref":{"type":"string","description":"账号 UIN/ID（纯数字）、openid、alias 或唯一 nickname。"},"app_id":{"type":"string"}},"required":["ref","app_id"]},"OperateWXDataRequest":{"type":"object","properties":{"ref":{"type":"string","description":"账号 UIN/ID（纯数字）、openid、alias 或唯一 nickname。"},"app_id":{"type":"string"},"payload":{"type":"object","description":"完整的 operateWxData 请求 JSON。","additionalProperties":true,"nullable":true}},"required":["ref","app_id","payload"]},"WxappResponse":{"type":"object","properties":{"openid":{"type":"string"},"result":{"type":"object","description":"wxapp 接口返回结果。","additionalProperties":true,"nullable":true}},"required":["openid","result"]},"AccountGroup":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"sort":{"type":"integer"},"created_at":{"type":"integer","format":"int64"},"updated_at":{"type":"integer","format":"int64"},"account_count":{"type":"integer"}},"required":["id","name","sort","created_at","updated_at","account_count"]},"GroupWriteRequest":{"type":"object","properties":{"name":{"type":"string"},"sort":{"type":"integer"}}},"AccountMoveRequest":{"type":"object","properties":{"ref":{"type":"string"},"group_id":{"type":"integer","format":"int64","nullable":true}},"required":["ref"]},"QRConfirmRequest":{"type":"object","properties":{"group_id":{"type":"integer","format":"int64","nullable":true},"alias":{"type":"string","description":"管理员预设的稳定调用别名。","nullable":true}}},"NetworkSettings":{"type":"object","properties":{"mode":{"type":"string","enum":["direct","socks5"]},"host":{"type":"string"},"port":{"type":"integer","format":"int64","nullable":true},"username":{"type":"string"},"has_password":{"type":"boolean"},"source":{"type":"string","enum":["environment","persisted"]}},"required":["mode","host","port","username","has_password","source"]},"NetworkSettingsWrite":{"type":"object","properties":{"mode":{"type":"string","enum":["direct","socks5"]},"host":{"type":"string"},"port":{"type":"integer","format":"int64","nullable":true},"username":{"type":"string"},"password":{"type":"string","writeOnly":true}},"required":["mode"]},"RetrySettings":{"type":"object","properties":{"attempts":{"type":"integer","minimum":1,"maximum":5},"base_delay":{"type":"number","minimum":0,"maximum":30},"max_delay":{"type":"number","minimum":0,"maximum":60},"source":{"type":"string","enum":["environment","persisted"]}},"required":["attempts","base_delay","max_delay","source"]},"AccountInvite":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"alias":{"type":"string"},"remark":{"type":"string","description":"仅管理员可见的备注。","nullable":true},"group_id":{"type":"integer","format":"int64"},"group_name":{"type":"string"},"status":{"type":"string","enum":["pending","used","expired","revoked"]},"account_id":{"type":"integer","format":"int64","nullable":true},"expires_at":{"type":"integer","format":"int64"},"used_at":{"type":"integer","format":"int64","nullable":true},"created_at":{"type":"integer","format":"int64"},"updated_at":{"type":"integer","format":"int64"},"join_path":{"type":"string","description":"仅创建响应返回的一次性链接路径。","nullable":true}},"required":["id","alias","group_id","group_name","status","expires_at","created_at"]},"InviteCreateRequest":{"type":"object","properties":{"alias":{"type":"string"},"remark":{"type":"string"},"group_id":{"type":"integer","format":"int64","nullable":true},"expires_in":{"type":"integer","minimum":300,"maximum":86400}},"required":["alias"]},"PublicJoinStatus":{"type":"object","properties":{"status":{"type":"string"},"image_url":{"type":"string","description":"令牌绑定的二维码图片路径。","nullable":true},"expires_at":{"type":"integer","format":"int64","nullable":true}},"required":["status"]}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer"},"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}