Files
jiapu/PC.openapi2.json
T
2026-07-11 21:36:26 +08:00

3580 lines
98 KiB
JSON

{
"openapi": "3.0.1",
"info": {
"title": "PC",
"description": "家谱业务 APP/PC 用户侧接口文档,用于 Apifox 导入。\n\n导入方式:Apifox -> 导入 API 数据 -> OpenAPI/Swagger -> 选择本文件。\n\n约定:\n- APP 路径前缀为 `/genealogy/app`\n- PC/H5 路径前缀为 `/genealogy/pc`\n- 后台管理接口不包含在本文件内\n- 登录后接口需要携带 token,且请求 Header 需携带 `clientid`\n",
"version": "1.0.0"
},
"tags": [
{
"name": "认证登录"
},
{
"name": "验证中心"
},
{
"name": "文件上传"
},
{
"name": "行政区划"
},
{
"name": "家族圈"
}
],
"paths": {
"/genealogy/pc/auth/register": {
"post": {
"summary": "PC 用户注册",
"deprecated": false,
"description": "",
"tags": [
"认证登录"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PasswordRegisterBody"
},
"example": {
"grantType": "password",
"tenantId": "000000",
"phone": "13800000000",
"password": "e10adc3949ba59abbe56e057f20f883e",
"nickName": "测试用户",
"registerSource": "app",
"validToken": "captcha-ticket-or-sms-token"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/LoginResult",
"description": "登录结果"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/auth/login": {
"post": {
"summary": "PC 密码登录",
"deprecated": false,
"description": "",
"tags": [
"认证登录"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PasswordLoginBody"
},
"example": {
"grantType": "password",
"tenantId": "000000",
"phone": "13800000000",
"password": "e10adc3949ba59abbe56e057f20f883e",
"validToken": "captcha-ticket"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/LoginResult",
"description": "登录结果"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/auth/login/sms": {
"post": {
"summary": "PC 短信登录",
"deprecated": false,
"description": "",
"tags": [
"认证登录"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SmsLoginBody"
},
"example": {
"grantType": "sms",
"tenantId": "000000",
"phone": "13800000000",
"smsCode": "123456",
"validToken": "captcha-ticket"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/LoginResult",
"description": "登录结果"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/auth/sms/code": {
"post": {
"summary": "PC 发送短信验证码",
"deprecated": false,
"description": "",
"tags": [
"认证登录"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SmsCodeBody"
},
"example": {
"tenantId": "000000",
"phone": "13800000000",
"sceneCode": "WEB_H5_LOGIN",
"validToken": "captcha-ticket"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/auth/profile": {
"get": {
"summary": "PC 当前用户资料",
"deprecated": false,
"description": "",
"tags": [
"认证登录"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/ObjectResult",
"description": "通用对象响应"
}
},
"security": [
{
"SaToken1": []
}
]
},
"put": {
"summary": "PC 修改用户资料",
"deprecated": false,
"description": "",
"tags": [
"认证登录"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProfileUpdateBody"
},
"example": {
"nickName": "张三",
"avatarOssId": "2060000000000000000",
"sex": "0",
"birthday": "1990-01-01",
"regionCode": "110101",
"addressDetail": "北京市东城区"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/ObjectResult",
"description": "通用对象响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/auth/password": {
"put": {
"summary": "PC 修改密码",
"deprecated": false,
"description": "",
"tags": [
"认证登录"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PasswordChangeBody"
},
"example": {
"oldPassword": "e10adc3949ba59abbe56e057f20f883e",
"newPassword": "25d55ad283aa400af464c76d713c07ad",
"validToken": "captcha-ticket"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/auth/password/reset": {
"put": {
"summary": "PC 找回密码",
"deprecated": false,
"description": "",
"tags": [
"认证登录"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PasswordResetBody"
},
"example": {
"tenantId": "000000",
"phone": "13800000000",
"smsCode": "123456",
"newPassword": "25d55ad283aa400af464c76d713c07ad",
"validToken": "captcha-ticket"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/auth/phone": {
"put": {
"summary": "PC 换绑手机号",
"deprecated": false,
"description": "",
"tags": [
"认证登录"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PhoneChangeBody"
},
"example": {
"newPhone": "13900000000",
"smsCode": "123456",
"validToken": "captcha-ticket"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/ObjectResult",
"description": "通用对象响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/auth/account/deactivate": {
"post": {
"summary": "PC 注销账号",
"deprecated": false,
"description": "",
"tags": [
"认证登录"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccountDeactivateBody"
},
"example": {
"password": "e10adc3949ba59abbe56e057f20f883e",
"reason": "user request"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/auth/logout": {
"delete": {
"summary": "PC 退出登录",
"deprecated": false,
"description": "",
"tags": [
"认证登录"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/captcha/require": {
"get": {
"summary": "查询当前场景是否需要验证",
"deprecated": false,
"description": "用于登录、注册、换绑手机等场景。按租户、客户端和场景编码匹配后台验证策略。",
"tags": [
"验证中心"
],
"parameters": [
{
"name": "tenantId",
"in": "query",
"description": "租户ID,用于区分不同租户的数据和验证策略",
"required": false,
"example": "000000",
"schema": {
"type": "string"
}
},
{
"name": "clientId",
"in": "query",
"description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端",
"required": false,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
},
{
"name": "sceneCode",
"in": "query",
"description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER",
"required": true,
"example": "WEB_H5_LOGIN",
"schema": {
"type": "string"
}
},
{
"name": "subject",
"in": "query",
"description": "验证主体,通常为手机号、用户ID或登录账号",
"required": false,
"example": "13800000000",
"schema": {
"type": "string"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID",
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string",
"default": "ced7e5f0498645c6ec642dcf450b036f"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/VerificationRequireResult",
"description": "验证需求查询结果"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/captcha/challenge": {
"post": {
"summary": "生成验证挑战",
"deprecated": false,
"description": "统一生成验证码。策略为天爱时返回行为验证数据;策略为系统图形时返回 uuid 和 img。",
"tags": [
"验证中心"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID",
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string",
"default": "ced7e5f0498645c6ec642dcf450b036f"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VerificationChallengeBody"
},
"example": {
"tenantId": "000000",
"clientId": "ced7e5f0498645c6ec642dcf450b036f",
"sceneCode": "WEB_H5_LOGIN",
"subject": "13800000000"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/VerificationChallengeResult",
"description": "验证挑战生成结果"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/captcha/verify": {
"post": {
"summary": "校验验证结果并换取 validToken",
"deprecated": false,
"description": "验证通过后返回 validToken,登录、注册、发短信等业务接口将 validToken 随请求体一起提交。",
"tags": [
"验证中心"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID",
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string",
"default": "ced7e5f0498645c6ec642dcf450b036f"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VerificationCheckBody"
},
"examples": {
"tianai_behavior": {
"value": {
"tenantId": "000000",
"clientId": "ced7e5f0498645c6ec642dcf450b036f",
"sceneCode": "WEB_H5_LOGIN",
"subject": "13800000000",
"challengeId": "CAPTCHA_CHALLENGE_ID",
"providerCode": "tianai",
"captchaType": "SLIDER",
"payload": {
"track": {
"bgImageWidth": 340,
"bgImageHeight": 180,
"templateImageWidth": 50,
"templateImageHeight": 50,
"startTime": 1720000000000,
"stopTime": 1720000001500,
"left": 120,
"top": 0,
"trackList": [
{
"x": 0,
"y": 0,
"t": 0,
"type": "down"
},
{
"x": 120,
"y": 0,
"t": 650,
"type": "move"
},
{
"x": 120,
"y": 0,
"t": 700,
"type": "up"
}
]
}
}
},
"summary": "天爱滑块/旋转/滑动还原/文字点选验证"
},
"system_image": {
"value": {
"tenantId": "000000",
"clientId": "ced7e5f0498645c6ec642dcf450b036f",
"sceneCode": "WEB_H5_LOGIN",
"subject": "13800000000",
"challengeId": "CAPTCHA_CHALLENGE_ID",
"providerCode": "ruoyi_image",
"captchaType": "math",
"payload": {
"uuid": "captcha-uuid",
"code": "6"
}
},
"summary": "系统图形验证码"
}
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/VerificationCheckResult",
"description": "验证校验结果"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/auth/code": {
"get": {
"summary": "兼容旧系统图形验证码",
"deprecated": false,
"description": "老版后台登录图形验证码入口。新的 APP/PC 业务优先使用 /captcha/require + /captcha/challenge + /captcha/verify。",
"tags": [
"验证中心"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID",
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string",
"default": "ced7e5f0498645c6ec642dcf450b036f"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/LegacyCaptchaResult",
"description": "兼容旧图形验证码结果"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/files/upload": {
"post": {
"summary": "PC 单文件上传",
"deprecated": false,
"description": "",
"tags": [
"文件上传"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"file": {
"type": "string",
"format": "binary",
"example": ""
}
},
"required": [
"file"
]
},
"example": {
"file": ""
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/FileUploadResult",
"description": "文件上传结果"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/files/resumable/init": {
"post": {
"summary": "PC 分片上传初始化",
"deprecated": false,
"description": "",
"tags": [
"文件上传"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResumableInitBody"
},
"example": {
"fileName": "cover.jpg",
"fileSize": 9532,
"fileMd5": "d41d8cd98f00b204e9800998ecf8427e",
"contentType": "image/jpeg",
"chunkSize": 4194304,
"totalChunks": 1,
"bizType": "genealogy",
"usageScene": "cover"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/ObjectResult",
"description": "通用对象响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/files/resumable/chunk": {
"post": {
"summary": "PC 上传分片",
"deprecated": false,
"description": "",
"tags": [
"文件上传"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"uploadId": {
"type": "string",
"example": ""
},
"chunkIndex": {
"type": "integer",
"example": 0
},
"chunkMd5": {
"type": "string",
"example": "d41d8cd98f00b204e9800998ecf8427e"
},
"file": {
"type": "string",
"format": "binary",
"example": ""
}
},
"required": [
"uploadId",
"chunkIndex",
"chunkMd5",
"file"
]
},
"example": {
"uploadId": "",
"chunkIndex": 0,
"chunkMd5": "d41d8cd98f00b204e9800998ecf8427e",
"file": ""
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/files/resumable/complete": {
"post": {
"summary": "PC 完成分片上传",
"deprecated": false,
"description": "",
"tags": [
"文件上传"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResumableCompleteBody"
},
"example": {
"uploadId": "UPLOAD202607090001",
"fileMd5": "d41d8cd98f00b204e9800998ecf8427e",
"fileSize": 9532
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/FileUploadResult",
"description": "文件上传结果"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/files/reference": {
"post": {
"summary": "PC 绑定文件业务引用",
"deprecated": false,
"description": "",
"tags": [
"文件上传"
],
"parameters": [
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "428a8310cd442757ae699df5d894f051",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileReferenceBody"
},
"example": {
"bizType": "family_feed",
"bizName": "family feed image",
"bizTable": "gen_family_feed",
"bizId": 900013001,
"bizField": "media_oss_ids",
"ossId": "2060000000000000000",
"usageScene": "feed_image"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
},
"delete": {
"summary": "PC 释放文件业务引用",
"deprecated": false,
"description": "",
"tags": [
"文件上传"
],
"parameters": [
{
"name": "bizTable",
"in": "query",
"description": "业务表名,用于文件引用绑定",
"required": true,
"example": "gen_family_feed",
"schema": {
"type": "string"
}
},
{
"name": "bizId",
"in": "query",
"description": "业务数据ID,用于文件引用绑定",
"required": true,
"example": 900013001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "bizField",
"in": "query",
"description": "业务字段名,例如avatar_oss_id、cover_oss_id",
"required": true,
"example": "media_ids",
"schema": {
"type": "string"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "428a8310cd442757ae699df5d894f051",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/region/children": {
"get": {
"summary": "查询下级行政区划",
"deprecated": false,
"description": "",
"tags": [
"行政区划"
],
"parameters": [
{
"name": "parentCode",
"in": "query",
"description": "父级行政区划编码,不传或传0查省级",
"required": false,
"example": "51",
"schema": {
"type": "string"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID",
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string",
"default": "ced7e5f0498645c6ec642dcf450b036f"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/ListResult",
"description": "通用列表响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/region/path/{regionCode}": {
"get": {
"summary": "查询行政区划路径",
"deprecated": false,
"description": "",
"tags": [
"行政区划"
],
"parameters": [
{
"name": "regionCode",
"in": "path",
"description": "行政区划编码",
"required": true,
"example": "510000",
"schema": {
"type": "string"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID",
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string",
"default": "ced7e5f0498645c6ec642dcf450b036f"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/ListResult",
"description": "通用列表响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/region/search": {
"get": {
"summary": "搜索行政区划",
"deprecated": false,
"description": "",
"tags": [
"行政区划"
],
"parameters": [
{
"name": "keyword",
"in": "query",
"description": "搜索关键词,支持地区名称或编码模糊查询",
"required": true,
"example": "北京",
"schema": {
"type": "string"
}
},
{
"name": "level",
"in": "query",
"description": "行政区划级别,1省、2市、3区县、4乡镇街道、5村社区",
"required": false,
"example": 3,
"schema": {
"type": "integer"
}
},
{
"name": "limit",
"in": "query",
"description": "返回数量上限",
"required": false,
"example": 20,
"schema": {
"type": "integer"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID",
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string",
"default": "ced7e5f0498645c6ec642dcf450b036f"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/ListResult",
"description": "通用列表响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/region/{regionCode}": {
"get": {
"summary": "查询行政区划详情",
"deprecated": false,
"description": "",
"tags": [
"行政区划"
],
"parameters": [
{
"name": "regionCode",
"in": "path",
"description": "行政区划编码",
"required": true,
"example": "510000",
"schema": {
"type": "string"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID",
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string",
"default": "ced7e5f0498645c6ec642dcf450b036f"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/ObjectResult",
"description": "通用对象响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/genealogies/{genealogyId}/feeds": {
"get": {
"summary": "PC 家族圈动态列表",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/ListResult",
"description": "通用列表响应"
}
},
"security": [
{
"SaToken1": []
}
]
},
"post": {
"summary": "PC 发布家族圈动态",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FamilyFeedBody"
},
"example": {
"feedType": "text",
"feedContent": "今天上传一张老照片。",
"mediaOssIds": "2060000000000000001,2060000000000000002",
"sortOrder": 0,
"status": "0"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/ObjectResult",
"description": "通用对象响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/genealogies/{genealogyId}/feeds/page": {
"get": {
"summary": "PC 家族圈动态分页",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "pageNum",
"in": "query",
"description": "页码,从1开始",
"required": false,
"schema": {
"type": "integer",
"default": 1
}
},
{
"name": "pageSize",
"in": "query",
"description": "每页条数",
"required": false,
"schema": {
"type": "integer",
"default": 10
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/PageResult",
"description": "通用分页响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}": {
"get": {
"summary": "PC 家族圈动态详情",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "feedId",
"in": "path",
"description": "家族动态ID",
"required": true,
"example": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/ObjectResult",
"description": "通用对象响应"
}
},
"security": [
{
"SaToken1": []
}
]
},
"put": {
"summary": "PC 修改家族圈动态",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "feedId",
"in": "path",
"description": "家族动态ID",
"required": true,
"example": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FamilyFeedBody"
},
"example": {
"feedType": "text",
"feedContent": "今天上传一张老照片。",
"mediaOssIds": "2060000000000000001,2060000000000000002",
"sortOrder": 0,
"status": "0"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/ObjectResult",
"description": "通用对象响应"
}
},
"security": [
{
"SaToken1": []
}
]
},
"delete": {
"summary": "PC 删除家族圈动态",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "feedId",
"in": "path",
"description": "家族动态ID",
"required": true,
"example": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/likes": {
"post": {
"summary": "PC 点赞动态",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "feedId",
"in": "path",
"description": "家族动态ID",
"required": true,
"example": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
},
"delete": {
"summary": "PC 取消点赞动态",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "feedId",
"in": "path",
"description": "家族动态ID",
"required": true,
"example": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments": {
"get": {
"summary": "PC 动态评论列表",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "feedId",
"in": "path",
"description": "家族动态ID",
"required": true,
"example": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/ListResult",
"description": "通用列表响应"
}
},
"security": [
{
"SaToken1": []
}
]
},
"post": {
"summary": "PC 评论动态",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "feedId",
"in": "path",
"description": "家族动态ID",
"required": true,
"example": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FamilyFeedCommentBody"
},
"example": {
"parentCommentId": null,
"replyUserId": null,
"content": "这张照片很有年代感。"
}
}
},
"required": true
},
"responses": {
"200": {
"$ref": "#/components/responses/ObjectResult",
"description": "通用对象响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments/page": {
"get": {
"summary": "PC 动态评论分页",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "feedId",
"in": "path",
"description": "家族动态ID",
"required": true,
"example": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "pageNum",
"in": "query",
"description": "页码,从1开始",
"required": false,
"schema": {
"type": "integer",
"default": 1
}
},
{
"name": "pageSize",
"in": "query",
"description": "每页条数",
"required": false,
"schema": {
"type": "integer",
"default": 10
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/PageResult",
"description": "通用分页响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
},
"/genealogy/pc/genealogies/{genealogyId}/feeds/{feedId}/comments/{commentId}": {
"delete": {
"summary": "PC 删除动态评论",
"deprecated": false,
"description": "",
"tags": [
"家族圈"
],
"parameters": [
{
"name": "genealogyId",
"in": "path",
"description": "家谱ID",
"required": true,
"example": 900001001,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "feedId",
"in": "path",
"description": "家族动态ID",
"required": true,
"example": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "commentId",
"in": "path",
"description": "评论ID",
"required": true,
"example": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "clientid",
"in": "header",
"description": "客户端ID,请求Header携带,用于区分APP/PC/小程序等终端",
"required": true,
"example": "ced7e5f0498645c6ec642dcf450b036f",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"$ref": "#/components/responses/VoidResult",
"description": "通用成功响应"
}
},
"security": [
{
"SaToken1": []
}
]
}
}
},
"components": {
"schemas": {
"PasswordRegisterBody": {
"type": "object",
"required": [
"grantType",
"tenantId",
"phone",
"password"
],
"properties": {
"clientId": {
"description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端",
"type": "string"
},
"grantType": {
"description": "授权类型,例如password、sms、wechat、apple",
"type": "string",
"example": "password"
},
"tenantId": {
"description": "租户ID,用于区分不同租户的数据和验证策略",
"type": "string",
"example": "000000"
},
"phone": {
"description": "手机号",
"type": "string",
"example": "13800000000"
},
"password": {
"type": "string",
"description": "32 位 MD5",
"example": "e10adc3949ba59abbe56e057f20f883e"
},
"nickName": {
"description": "用户昵称",
"type": "string"
},
"registerSource": {
"description": "注册来源,例如APP、PC、H5、MINI_PROGRAM",
"type": "string"
},
"validToken": {
"description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验",
"type": "string"
}
}
},
"PasswordLoginBody": {
"type": "object",
"required": [
"grantType",
"tenantId",
"phone",
"password"
],
"properties": {
"clientId": {
"description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端",
"type": "string"
},
"grantType": {
"description": "授权类型,例如password、sms、wechat、apple",
"type": "string",
"example": "password"
},
"tenantId": {
"description": "租户ID,用于区分不同租户的数据和验证策略",
"type": "string",
"example": "000000"
},
"phone": {
"description": "手机号",
"type": "string",
"example": "13800000000"
},
"password": {
"type": "string",
"description": "32 位 MD5",
"example": "e10adc3949ba59abbe56e057f20f883e"
},
"validToken": {
"description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验",
"type": "string"
}
}
},
"SmsLoginBody": {
"type": "object",
"required": [
"grantType",
"tenantId",
"phone",
"smsCode"
],
"properties": {
"clientId": {
"description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端",
"type": "string"
},
"grantType": {
"description": "授权类型,例如password、sms、wechat、apple",
"type": "string",
"example": "sms"
},
"tenantId": {
"description": "租户ID,用于区分不同租户的数据和验证策略",
"type": "string",
"example": "000000"
},
"phone": {
"description": "手机号",
"type": "string",
"example": "13800000000"
},
"smsCode": {
"description": "短信验证码",
"type": "string",
"example": "1234"
}
}
},
"SmsCodeBody": {
"type": "object",
"required": [
"grantType",
"tenantId",
"sceneCode",
"phone",
"validToken"
],
"properties": {
"clientId": {
"description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端",
"type": "string"
},
"grantType": {
"description": "授权类型,例如password、sms、wechat、apple",
"type": "string",
"example": "sms"
},
"tenantId": {
"description": "租户ID,用于区分不同租户的数据和验证策略",
"type": "string",
"example": "000000"
},
"sceneCode": {
"description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER",
"type": "string",
"example": "WEB_H5_LOGIN"
},
"phone": {
"description": "手机号",
"type": "string",
"example": "13800000000"
},
"validToken": {
"description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验",
"type": "string"
}
}
},
"ProfileUpdateBody": {
"type": "object",
"properties": {
"nickName": {
"description": "用户昵称",
"type": "string"
},
"avatarOssId": {
"description": "头像文件OSS ID",
"type": "integer",
"format": "int64"
},
"sex": {
"description": "性别,建议使用系统字典值",
"type": "string"
},
"birthday": {
"description": "生日,格式 yyyy-MM-dd",
"type": "string",
"format": "date"
},
"provinceCode": {
"type": "string"
},
"cityCode": {
"type": "string"
},
"districtCode": {
"type": "string"
}
}
},
"PasswordChangeBody": {
"type": "object",
"required": [
"oldPassword",
"newPassword"
],
"properties": {
"oldPassword": {
"type": "string",
"description": "32 位 MD5"
},
"newPassword": {
"type": "string",
"description": "32 位 MD5"
}
}
},
"PasswordResetBody": {
"type": "object",
"required": [
"tenantId",
"phone",
"smsCode",
"newPassword"
],
"properties": {
"tenantId": {
"description": "租户ID,用于区分不同租户的数据和验证策略",
"type": "string",
"example": "000000"
},
"phone": {
"description": "手机号",
"type": "string"
},
"smsCode": {
"description": "短信验证码",
"type": "string"
},
"newPassword": {
"type": "string",
"description": "32 位 MD5"
},
"validToken": {
"description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验",
"type": "string"
}
}
},
"PhoneChangeBody": {
"type": "object",
"required": [
"newPhone",
"smsCode"
],
"properties": {
"newPhone": {
"type": "string"
},
"smsCode": {
"description": "短信验证码",
"type": "string"
},
"validToken": {
"description": "验证中心通过后返回的票据,用于注册/登录/换绑等二次校验",
"type": "string"
}
}
},
"AccountDeactivateBody": {
"type": "object",
"required": [
"password"
],
"properties": {
"password": {
"type": "string",
"description": "32 位 MD5"
},
"reason": {
"description": "操作原因或说明",
"type": "string"
}
}
},
"ResumableInitBody": {
"type": "object",
"required": [
"fileName",
"fileSize",
"fileMd5",
"chunkSize",
"totalChunks"
],
"properties": {
"fileName": {
"description": "原始文件名",
"type": "string"
},
"fileSize": {
"description": "文件大小,单位字节",
"type": "integer",
"format": "int64"
},
"fileMd5": {
"description": "完整文件MD5,用于秒传和完整性校验",
"type": "string"
},
"contentType": {
"description": "文件MIME类型,例如 image/jpeg、video/mp4",
"type": "string"
},
"chunkSize": {
"description": "单个分片大小,单位字节",
"type": "integer",
"example": 4194304
},
"totalChunks": {
"description": "总分片数",
"type": "integer"
},
"bizType": {
"description": "业务类型,例如avatar、cover、feed_image",
"type": "string"
},
"usageScene": {
"description": "文件使用场景,便于后续引用统计和清理",
"type": "string"
}
}
},
"ResumableCompleteBody": {
"type": "object",
"required": [
"uploadId",
"fileMd5",
"fileSize"
],
"properties": {
"uploadId": {
"description": "分片上传任务ID",
"type": "string"
},
"fileMd5": {
"description": "完整文件MD5,用于秒传和完整性校验",
"type": "string"
},
"fileSize": {
"description": "文件大小,单位字节",
"type": "integer",
"format": "int64"
}
}
},
"FileReferenceBody": {
"type": "object",
"required": [
"bizType",
"bizTable",
"bizId",
"bizField"
],
"properties": {
"bizType": {
"description": "业务类型,例如avatar、cover、feed_image",
"type": "string",
"example": "family_feed"
},
"bizName": {
"description": "业务名称,用于后台展示文件引用来源",
"type": "string",
"example": "家族圈动态"
},
"bizTable": {
"description": "业务表名,用于文件引用绑定",
"type": "string",
"example": "gen_family_feed"
},
"bizId": {
"description": "业务数据ID,用于文件引用绑定",
"type": "integer",
"format": "int64"
},
"bizField": {
"description": "业务字段名,例如avatar_oss_id、cover_oss_id",
"type": "string",
"example": "media_ids"
},
"ossId": {
"description": "OSS文件ID,表单内部使用,用户侧应通过上传组件获取",
"type": "integer",
"format": "int64"
},
"ossIds": {
"type": "string",
"example": "2060001,2060002"
},
"usageScene": {
"description": "文件使用场景,便于后续引用统计和清理",
"type": "string"
},
"usageName": {
"type": "string"
}
}
},
"FamilyFeedBody": {
"type": "object",
"required": [
"feedContent"
],
"properties": {
"feedType": {
"description": "动态类型,未传时默认为 text",
"type": "string",
"example": "text"
},
"feedContent": {
"description": "动态内容,不能为空",
"type": "string",
"example": "今天上传一张老照片。"
},
"mediaOssIds": {
"description": "媒体文件 OSS ID 列表,多个 ID 使用英文逗号分隔",
"type": "string",
"example": "2060000000000000001,2060000000000000002"
},
"sortOrder": {
"description": "排序值,未传时默认为 0",
"type": "integer",
"format": "int64",
"example": 0
},
"status": {
"description": "动态状态,未传时默认为正常状态",
"type": "string",
"example": "0"
}
}
},
"FamilyFeedCommentBody": {
"type": "object",
"required": [
"content"
],
"properties": {
"parentCommentId": {
"type": "integer",
"format": "int64",
"nullable": true
},
"replyUserId": {
"type": "integer",
"format": "int64",
"nullable": true
},
"content": {
"type": "string"
}
}
},
"VerificationChallengeBody": {
"type": "object",
"required": [
"sceneCode"
],
"properties": {
"tenantId": {
"type": "string",
"description": "租户 ID"
},
"clientId": {
"type": "string",
"description": "客户端 ID"
},
"sceneCode": {
"type": "string",
"description": "验证场景编码,如 ADMIN_LOGIN/APP_LOGIN/APP_REGISTER"
},
"subject": {
"type": "string",
"description": "验证主体,如手机号/用户名/IP"
}
},
"example": {
"tenantId": "000000",
"clientId": "ced7e5f0498645c6ec642dcf450b036f",
"sceneCode": "WEB_H5_LOGIN",
"subject": "13800000000"
}
},
"VerificationCheckBody": {
"type": "object",
"required": [
"sceneCode"
],
"properties": {
"tenantId": {
"description": "租户ID,用于区分不同租户的数据和验证策略",
"type": "string"
},
"clientId": {
"description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端",
"type": "string"
},
"sceneCode": {
"description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER",
"type": "string"
},
"subject": {
"description": "验证主体,通常为手机号、用户ID或登录账号",
"type": "string"
},
"challengeId": {
"description": "验证挑战ID,由验证挑战接口返回",
"type": "string"
},
"providerCode": {
"type": "string",
"description": "验证服务,tianai 或 ruoyi_image"
},
"captchaType": {
"type": "string",
"description": "SLIDER/ROTATE/CONCAT/WORD_IMAGE_CLICK/math/char"
},
"payload": {
"description": "验证结果载荷。天爱行为验证码提交 payload.track;系统图形验证码提交 payload.uuid 和 payload.code",
"oneOf": [
{
"$ref": "#/components/schemas/TianaiVerificationPayload"
},
{
"$ref": "#/components/schemas/SystemImageVerificationPayload"
}
]
}
}
},
"TianaiVerificationPayload": {
"type": "object",
"required": [
"track"
],
"properties": {
"track": {
"$ref": "#/components/schemas/TianaiCaptchaTrack"
}
}
},
"TianaiCaptchaTrack": {
"type": "object",
"required": [
"bgImageWidth",
"bgImageHeight",
"startTime",
"stopTime",
"trackList"
],
"properties": {
"bgImageWidth": {
"type": "integer",
"description": "验证码背景图片在前端实际显示的宽度,单位像素"
},
"bgImageHeight": {
"type": "integer",
"description": "验证码背景图片在前端实际显示的高度,单位像素"
},
"templateImageWidth": {
"type": "integer",
"description": "滑块或旋转模板图片在前端实际显示的宽度,单位像素"
},
"templateImageHeight": {
"type": "integer",
"description": "滑块或旋转模板图片在前端实际显示的高度,单位像素"
},
"startTime": {
"type": "integer",
"format": "int64",
"description": "用户开始操作的时间戳,单位毫秒"
},
"stopTime": {
"type": "integer",
"format": "int64",
"description": "用户结束操作的时间戳,单位毫秒"
},
"left": {
"type": "integer",
"description": "滑块最终水平偏移量,单位像素;由天爱前端控件生成"
},
"top": {
"type": "integer",
"description": "点选或模板最终垂直偏移量,单位像素;由天爱前端控件生成"
},
"trackList": {
"type": "array",
"minItems": 1,
"description": "用户操作轨迹,不能为空,必须直接使用天爱前端控件产生的数据",
"items": {
"$ref": "#/components/schemas/TianaiCaptchaTrackPoint"
}
},
"data": {
"type": "object",
"additionalProperties": true,
"description": "不同验证码类型附带的扩展数据,由天爱前端控件原样提交",
"properties": {},
"nullable": true
}
}
},
"TianaiCaptchaTrackPoint": {
"type": "object",
"required": [
"x",
"y",
"t",
"type"
],
"properties": {
"x": {
"type": "number",
"format": "float",
"description": "当前轨迹点的水平坐标"
},
"y": {
"type": "number",
"format": "float",
"description": "当前轨迹点的垂直坐标"
},
"t": {
"type": "number",
"format": "float",
"description": "当前轨迹点相对操作开始时的时间,单位毫秒"
},
"type": {
"type": "string",
"description": "轨迹事件类型,例如 down、move、up"
}
}
},
"SystemImageVerificationPayload": {
"type": "object",
"required": [
"uuid",
"code"
],
"properties": {
"uuid": {
"type": "string",
"description": "系统图形验证码接口返回的唯一标识"
},
"code": {
"type": "string",
"description": "用户填写的图形验证码答案"
}
}
},
"RVoid": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"example": 200
},
"msg": {
"type": "string",
"example": "操作成功"
},
"data": {
"type": "null"
}
}
},
"RObject": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"example": 200
},
"msg": {
"type": "string",
"example": "操作成功"
},
"data": {
"type": "object",
"additionalProperties": true,
"properties": {}
}
}
},
"RList": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"example": 200
},
"msg": {
"type": "string",
"example": "操作成功"
},
"data": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"properties": {}
}
}
}
},
"PageResult": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"example": 200
},
"msg": {
"type": "string",
"example": "操作成功"
},
"rows": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"properties": {}
}
},
"total": {
"type": "integer",
"example": 0
}
}
},
"RLogin": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"example": 200
},
"msg": {
"type": "string",
"example": "操作成功"
},
"data": {
"$ref": "#/components/schemas/LoginVo"
}
}
},
"LoginVo": {
"type": "object",
"properties": {
"token": {
"type": "string"
},
"accessToken": {
"type": "string"
},
"tokenValue": {
"type": "string"
},
"userId": {
"type": "integer",
"format": "int64"
},
"tenantId": {
"type": "string"
},
"clientId": {
"type": "string"
},
"clientKey": {
"type": "string"
}
}
},
"RFileUpload": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"example": 200
},
"msg": {
"type": "string",
"example": "操作成功"
},
"data": {
"$ref": "#/components/schemas/FileUploadVo"
}
}
},
"FileUploadVo": {
"type": "object",
"properties": {
"ossId": {
"type": "integer",
"format": "int64"
},
"url": {
"type": "string"
},
"thumbnailUrl": {
"type": "string",
"nullable": true
},
"fileName": {
"type": "string"
},
"originalName": {
"type": "string"
}
}
},
"RVoid1": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"type": "null"
}
}
},
"RObject2": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"type": "object",
"additionalProperties": true,
"properties": {}
}
}
},
"RList3": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"properties": {}
}
}
}
},
"PageResult4": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"rows": {
"description": "分页数据列表",
"type": "array",
"items": {
"type": "object",
"additionalProperties": true,
"properties": {}
}
},
"total": {
"type": "integer",
"example": 0
}
}
},
"RLogin5": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"$ref": "#/components/schemas/LoginVo6"
}
}
},
"LoginVo6": {
"type": "object",
"properties": {
"token": {
"type": "string"
},
"accessToken": {
"type": "string"
},
"tokenValue": {
"type": "string"
},
"userId": {
"type": "integer",
"format": "int64"
},
"tenantId": {
"description": "租户ID,用于区分不同租户的数据和验证策略",
"type": "string"
},
"clientId": {
"description": "客户端ID,对应后台客户端管理中的APP/PC/小程序等终端",
"type": "string"
},
"clientKey": {
"type": "string"
}
}
},
"RFileUpload7": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"$ref": "#/components/schemas/FileUploadVo8"
}
}
},
"FileUploadVo8": {
"type": "object",
"properties": {
"ossId": {
"description": "OSS文件ID,表单内部使用,用户侧应通过上传组件获取",
"type": "integer",
"format": "int64"
},
"url": {
"type": "string"
},
"thumbnailUrl": {
"type": "string",
"nullable": true
},
"fileName": {
"description": "原始文件名",
"type": "string"
},
"originalName": {
"type": "string"
}
}
},
"RVerificationRequire": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"$ref": "#/components/schemas/VerificationRequireVo"
}
}
},
"VerificationRequireVo": {
"type": "object",
"properties": {
"required": {
"description": "当前场景是否需要验证",
"type": "boolean"
},
"providerCode": {
"description": "第三方服务商编码",
"type": "string"
},
"captchaType": {
"description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK",
"type": "string"
},
"sceneCode": {
"description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER",
"type": "string"
},
"ttlSeconds": {
"description": "验证或票据有效秒数",
"type": "integer"
}
},
"example": {
"required": true,
"providerCode": "tianai",
"captchaType": "SLIDER",
"sceneCode": "APP_LOGIN",
"ttlSeconds": 300
}
},
"RVerificationChallenge": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"$ref": "#/components/schemas/VerificationChallengeVo"
}
}
},
"VerificationChallengeVo": {
"type": "object",
"properties": {
"required": {
"description": "当前场景是否需要验证",
"type": "boolean"
},
"providerCode": {
"description": "第三方服务商编码",
"type": "string"
},
"captchaType": {
"description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK",
"type": "string"
},
"challengeId": {
"description": "验证挑战ID,由验证挑战接口返回",
"type": "string"
},
"uuid": {
"type": "string",
"description": "系统图形验证码 uuid"
},
"img": {
"type": "string",
"description": "系统图形验证码 base64 图片"
},
"payload": {
"type": "object",
"additionalProperties": true,
"description": "天爱验证码数据,包括背景图、模板图、尺寸等",
"properties": {}
},
"expireSeconds": {
"description": "验证挑战过期秒数",
"type": "integer"
}
},
"example": {
"required": true,
"providerCode": "tianai",
"captchaType": "SLIDER",
"challengeId": "CAPTCHA_CHALLENGE_ID",
"payload": {
"backgroundImage": "data:image/png;base64,...",
"templateImage": "data:image/png;base64,...",
"backgroundImageWidth": 340,
"backgroundImageHeight": 180
},
"expireSeconds": 300
}
},
"RVerificationCheck": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"$ref": "#/components/schemas/VerificationCheckVo"
}
}
},
"VerificationCheckVo": {
"type": "object",
"properties": {
"passed": {
"description": "验证是否通过",
"type": "boolean"
},
"validToken": {
"type": "string",
"description": "验证通过后交给业务接口的票据"
},
"expireSeconds": {
"description": "验证挑战过期秒数",
"type": "integer"
},
"message": {
"description": "返回消息",
"type": "string"
}
},
"example": {
"passed": true,
"validToken": "captcha-ticket",
"expireSeconds": 300,
"message": "验证通过"
}
},
"RLegacyCaptcha": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"$ref": "#/components/schemas/LegacyCaptchaVo"
}
}
},
"LegacyCaptchaVo": {
"type": "object",
"properties": {
"captchaEnabled": {
"type": "boolean"
},
"uuid": {
"description": "系统图形验证码UUID",
"type": "string"
},
"img": {
"type": "string",
"description": "base64 图形验证码"
}
},
"example": {
"captchaEnabled": true,
"uuid": "captcha-uuid",
"img": "data:image/png;base64,..."
}
},
"RVerificationRequire9": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"$ref": "#/components/schemas/VerificationRequireVo10"
}
}
},
"VerificationRequireVo10": {
"type": "object",
"properties": {
"required": {
"description": "当前场景是否需要验证",
"type": "boolean"
},
"providerCode": {
"description": "第三方服务商编码",
"type": "string"
},
"captchaType": {
"description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK",
"type": "string"
},
"sceneCode": {
"description": "验证场景编码,例如APP_LOGIN、PC_LOGIN、APP_REGISTER",
"type": "string"
},
"ttlSeconds": {
"description": "验证或票据有效秒数",
"type": "integer"
}
},
"example": {
"required": true,
"providerCode": "tianai",
"captchaType": "SLIDER",
"sceneCode": "WEB_H5_LOGIN",
"ttlSeconds": 300
}
},
"RVerificationChallenge11": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"$ref": "#/components/schemas/VerificationChallengeVo12"
}
}
},
"VerificationChallengeVo12": {
"type": "object",
"properties": {
"required": {
"description": "当前场景是否需要验证",
"type": "boolean"
},
"providerCode": {
"description": "第三方服务商编码",
"type": "string"
},
"captchaType": {
"description": "验证码类型,例如SLIDER、ROTATE、CONCAT、WORD_IMAGE_CLICK",
"type": "string"
},
"challengeId": {
"description": "验证挑战ID,由验证挑战接口返回",
"type": "string"
},
"uuid": {
"type": "string",
"description": "系统图形验证码 uuid"
},
"img": {
"type": "string",
"description": "系统图形验证码 base64 图片"
},
"payload": {
"type": "object",
"additionalProperties": true,
"description": "天爱验证码数据,包括背景图、模板图、尺寸等",
"properties": {}
},
"expireSeconds": {
"description": "验证挑战过期秒数",
"type": "integer"
}
},
"example": {
"required": true,
"providerCode": "tianai",
"captchaType": "SLIDER",
"challengeId": "CAPTCHA_CHALLENGE_ID",
"payload": {
"backgroundImage": "data:image/png;base64,...",
"templateImage": "data:image/png;base64,...",
"backgroundImageWidth": 340,
"backgroundImageHeight": 180
},
"expireSeconds": 300
}
},
"RVerificationCheck13": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"$ref": "#/components/schemas/VerificationCheckVo14"
}
}
},
"VerificationCheckVo14": {
"type": "object",
"properties": {
"passed": {
"description": "验证是否通过",
"type": "boolean"
},
"validToken": {
"type": "string",
"description": "验证通过后交给业务接口的票据"
},
"expireSeconds": {
"description": "验证挑战过期秒数",
"type": "integer"
},
"message": {
"description": "返回消息",
"type": "string"
}
},
"example": {
"passed": true,
"validToken": "captcha-ticket",
"expireSeconds": 300,
"message": "验证通过"
}
},
"RLegacyCaptcha15": {
"type": "object",
"properties": {
"code": {
"description": "系统图形验证码或响应状态码",
"type": "integer",
"example": 200
},
"msg": {
"description": "响应消息",
"type": "string",
"example": "操作成功"
},
"data": {
"description": "响应数据主体",
"$ref": "#/components/schemas/LegacyCaptchaVo16"
}
}
},
"LegacyCaptchaVo16": {
"type": "object",
"properties": {
"captchaEnabled": {
"type": "boolean"
},
"uuid": {
"description": "系统图形验证码UUID",
"type": "string"
},
"img": {
"type": "string",
"description": "base64 图形验证码"
}
},
"example": {
"captchaEnabled": true,
"uuid": "captcha-uuid",
"img": "data:image/png;base64,..."
}
}
},
"responses": {
"VoidResult": {
"description": "通用成功响应",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RVoid1"
}
}
}
},
"ObjectResult": {
"description": "通用对象响应",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RObject2"
}
}
}
},
"ListResult": {
"description": "通用列表响应",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RList3"
}
}
}
},
"PageResult": {
"description": "通用分页响应",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PageResult4"
}
}
}
},
"LoginResult": {
"description": "登录结果",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RLogin5"
}
}
}
},
"FileUploadResult": {
"description": "文件上传结果",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RFileUpload7"
}
}
}
},
"VerificationRequireResult": {
"description": "验证需求查询结果",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RVerificationRequire9"
}
}
}
},
"VerificationChallengeResult": {
"description": "验证挑战生成结果",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RVerificationChallenge11"
}
}
}
},
"VerificationCheckResult": {
"description": "验证校验结果",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RVerificationCheck13"
}
}
}
},
"LegacyCaptchaResult": {
"description": "兼容旧图形验证码结果",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RLegacyCaptcha15"
}
}
}
}
},
"securitySchemes": {
"SaToken1": {
"type": "apiKey",
"in": "header",
"name": "Authorization",
"description": "登录后返回的 token。若本地配置使用 sa-token 名称,请按项目实际 token-name 调整。"
}
}
},
"servers": [],
"security": [
{
"SaToken1": []
}
]
}