Files
tyapi-server/docs/swagger/swagger.json

568 lines
19 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"swagger": "2.0",
"info": {
"description": "基于DDD和Clean Architecture的企业级后端API服务\n采用Gin框架构建支持用户管理、JWT认证、事件驱动等功能",
"title": "TYAPI Server API",
"contact": {
"name": "API Support",
"url": "https://github.com/your-org/tyapi-server-gin",
"email": "support@example.com"
},
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
},
"version": "1.0"
},
"host": "localhost:8080",
"basePath": "/api/v1",
"paths": {
"/users/login-password": {
"post": {
"description": "使用手机号和密码进行用户登录返回JWT令牌",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"用户认证"
],
"summary": "用户密码登录",
"parameters": [
{
"description": "密码登录请求",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.LoginWithPasswordRequest"
}
}
],
"responses": {
"200": {
"description": "登录成功",
"schema": {
"$ref": "#/definitions/dto.LoginResponse"
}
},
"400": {
"description": "请求参数错误",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"401": {
"description": "认证失败",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "服务器内部错误",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/users/login-sms": {
"post": {
"description": "使用手机号和短信验证码进行用户登录返回JWT令牌",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"用户认证"
],
"summary": "用户短信验证码登录",
"parameters": [
{
"description": "短信登录请求",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.LoginWithSMSRequest"
}
}
],
"responses": {
"200": {
"description": "登录成功",
"schema": {
"$ref": "#/definitions/dto.LoginResponse"
}
},
"400": {
"description": "请求参数错误或验证码无效",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"401": {
"description": "认证失败",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "服务器内部错误",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/users/me": {
"get": {
"security": [
{
"Bearer": []
}
],
"description": "根据JWT令牌获取当前登录用户的详细信息",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"用户管理"
],
"summary": "获取当前用户信息",
"responses": {
"200": {
"description": "用户信息",
"schema": {
"$ref": "#/definitions/dto.UserResponse"
}
},
"401": {
"description": "未认证",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"404": {
"description": "用户不存在",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "服务器内部错误",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/users/me/password": {
"put": {
"security": [
{
"Bearer": []
}
],
"description": "使用旧密码、新密码确认和验证码修改当前用户的密码",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"用户管理"
],
"summary": "修改密码",
"parameters": [
{
"description": "修改密码请求",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.ChangePasswordRequest"
}
}
],
"responses": {
"200": {
"description": "密码修改成功",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"400": {
"description": "请求参数错误或验证码无效",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"401": {
"description": "未认证",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "服务器内部错误",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/users/register": {
"post": {
"description": "使用手机号、密码和验证码进行用户注册,需要确认密码",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"用户认证"
],
"summary": "用户注册",
"parameters": [
{
"description": "用户注册请求",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.RegisterRequest"
}
}
],
"responses": {
"201": {
"description": "注册成功",
"schema": {
"$ref": "#/definitions/dto.UserResponse"
}
},
"400": {
"description": "请求参数错误或验证码无效",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"409": {
"description": "手机号已存在",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "服务器内部错误",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
},
"/users/send-code": {
"post": {
"description": "向指定手机号发送验证码,支持注册、登录、修改密码等场景",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"用户认证"
],
"summary": "发送短信验证码",
"parameters": [
{
"description": "发送验证码请求",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.SendCodeRequest"
}
}
],
"responses": {
"200": {
"description": "验证码发送成功",
"schema": {
"$ref": "#/definitions/dto.SendCodeResponse"
}
},
"400": {
"description": "请求参数错误",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"429": {
"description": "请求频率限制",
"schema": {
"type": "object",
"additionalProperties": true
}
},
"500": {
"description": "服务器内部错误",
"schema": {
"type": "object",
"additionalProperties": true
}
}
}
}
}
},
"definitions": {
"dto.ChangePasswordRequest": {
"type": "object",
"required": [
"code",
"confirm_new_password",
"new_password",
"old_password"
],
"properties": {
"code": {
"type": "string",
"example": "123456"
},
"confirm_new_password": {
"type": "string",
"example": "newpassword123"
},
"new_password": {
"type": "string",
"maxLength": 128,
"minLength": 6,
"example": "newpassword123"
},
"old_password": {
"type": "string",
"example": "oldpassword123"
}
}
},
"dto.LoginResponse": {
"type": "object",
"properties": {
"access_token": {
"type": "string",
"example": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
},
"expires_in": {
"type": "integer",
"example": 86400
},
"login_method": {
"description": "password 或 sms",
"type": "string",
"example": "password"
},
"token_type": {
"type": "string",
"example": "Bearer"
},
"user": {
"$ref": "#/definitions/dto.UserResponse"
}
}
},
"dto.LoginWithPasswordRequest": {
"type": "object",
"required": [
"password",
"phone"
],
"properties": {
"password": {
"type": "string",
"example": "password123"
},
"phone": {
"type": "string",
"example": "13800138000"
}
}
},
"dto.LoginWithSMSRequest": {
"type": "object",
"required": [
"code",
"phone"
],
"properties": {
"code": {
"type": "string",
"example": "123456"
},
"phone": {
"type": "string",
"example": "13800138000"
}
}
},
"dto.RegisterRequest": {
"type": "object",
"required": [
"code",
"confirm_password",
"password",
"phone"
],
"properties": {
"code": {
"type": "string",
"example": "123456"
},
"confirm_password": {
"type": "string",
"example": "password123"
},
"password": {
"type": "string",
"maxLength": 128,
"minLength": 6,
"example": "password123"
},
"phone": {
"type": "string",
"example": "13800138000"
}
}
},
"dto.SendCodeRequest": {
"type": "object",
"required": [
"phone",
"scene"
],
"properties": {
"phone": {
"type": "string",
"example": "13800138000"
},
"scene": {
"enum": [
"register",
"login",
"change_password",
"reset_password",
"bind",
"unbind"
],
"allOf": [
{
"$ref": "#/definitions/entities.SMSScene"
}
],
"example": "register"
}
}
},
"dto.SendCodeResponse": {
"type": "object",
"properties": {
"expires_at": {
"type": "string",
"example": "2024-01-01T00:05:00Z"
},
"message": {
"type": "string",
"example": "验证码发送成功"
}
}
},
"dto.UserResponse": {
"type": "object",
"properties": {
"created_at": {
"type": "string",
"example": "2024-01-01T00:00:00Z"
},
"id": {
"type": "string",
"example": "123e4567-e89b-12d3-a456-426614174000"
},
"phone": {
"type": "string",
"example": "13800138000"
},
"updated_at": {
"type": "string",
"example": "2024-01-01T00:00:00Z"
}
}
},
"entities.SMSScene": {
"type": "string",
"enum": [
"register",
"login",
"change_password",
"reset_password",
"bind",
"unbind"
],
"x-enum-comments": {
"SMSSceneBind": "绑定手机号",
"SMSSceneChangePassword": "修改密码",
"SMSSceneLogin": "登录",
"SMSSceneRegister": "注册",
"SMSSceneResetPassword": "重置密码",
"SMSSceneUnbind": "解绑手机号"
},
"x-enum-varnames": [
"SMSSceneRegister",
"SMSSceneLogin",
"SMSSceneChangePassword",
"SMSSceneResetPassword",
"SMSSceneBind",
"SMSSceneUnbind"
]
}
},
"securityDefinitions": {
"Bearer": {
"description": "Type \"Bearer\" followed by a space and JWT token.",
"type": "apiKey",
"name": "Authorization",
"in": "header"
}
}
}