1111 lines
29 KiB
YAML
1111 lines
29 KiB
YAML
|
|
definitions:
|
|||
|
|
carrotskin_internal_model.ErrorResponse:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
error:
|
|||
|
|
description: 详细错误信息(仅开发环境)
|
|||
|
|
type: string
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_model.PaginationResponse:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
data: {}
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
page:
|
|||
|
|
description: 当前页码
|
|||
|
|
type: integer
|
|||
|
|
per_page:
|
|||
|
|
description: 每页数量
|
|||
|
|
type: integer
|
|||
|
|
total:
|
|||
|
|
description: 总记录数
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_model.Response:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
description: 业务状态码
|
|||
|
|
type: integer
|
|||
|
|
data:
|
|||
|
|
description: 响应数据
|
|||
|
|
message:
|
|||
|
|
description: 响应消息
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.ChangeEmailRequest:
|
|||
|
|
properties:
|
|||
|
|
new_email:
|
|||
|
|
example: newemail@example.com
|
|||
|
|
type: string
|
|||
|
|
verification_code:
|
|||
|
|
example: "123456"
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- new_email
|
|||
|
|
- verification_code
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.CreateProfileRequest:
|
|||
|
|
properties:
|
|||
|
|
name:
|
|||
|
|
example: PlayerName
|
|||
|
|
maxLength: 16
|
|||
|
|
minLength: 1
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- name
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.CreateTextureRequest:
|
|||
|
|
properties:
|
|||
|
|
description:
|
|||
|
|
example: A very cool skin
|
|||
|
|
maxLength: 500
|
|||
|
|
type: string
|
|||
|
|
hash:
|
|||
|
|
example: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
|||
|
|
type: string
|
|||
|
|
is_public:
|
|||
|
|
example: true
|
|||
|
|
type: boolean
|
|||
|
|
is_slim:
|
|||
|
|
description: Alex模型(细臂)为true,Steve模型(粗臂)为false
|
|||
|
|
example: false
|
|||
|
|
type: boolean
|
|||
|
|
name:
|
|||
|
|
example: My Cool Skin
|
|||
|
|
maxLength: 100
|
|||
|
|
minLength: 1
|
|||
|
|
type: string
|
|||
|
|
size:
|
|||
|
|
example: 2048
|
|||
|
|
minimum: 1
|
|||
|
|
type: integer
|
|||
|
|
type:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/carrotskin_internal_types.TextureType'
|
|||
|
|
enum:
|
|||
|
|
- SKIN
|
|||
|
|
- CAPE
|
|||
|
|
example: SKIN
|
|||
|
|
url:
|
|||
|
|
example: https://rustfs.example.com/textures/user_1/skin/xxx.png
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- hash
|
|||
|
|
- name
|
|||
|
|
- size
|
|||
|
|
- type
|
|||
|
|
- url
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.GenerateAvatarUploadURLRequest:
|
|||
|
|
properties:
|
|||
|
|
file_name:
|
|||
|
|
example: avatar.png
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- file_name
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.GenerateTextureUploadURLRequest:
|
|||
|
|
properties:
|
|||
|
|
file_name:
|
|||
|
|
example: skin.png
|
|||
|
|
type: string
|
|||
|
|
texture_type:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/carrotskin_internal_types.TextureType'
|
|||
|
|
enum:
|
|||
|
|
- SKIN
|
|||
|
|
- CAPE
|
|||
|
|
example: SKIN
|
|||
|
|
required:
|
|||
|
|
- file_name
|
|||
|
|
- texture_type
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.LoginRequest:
|
|||
|
|
properties:
|
|||
|
|
password:
|
|||
|
|
example: password123
|
|||
|
|
maxLength: 128
|
|||
|
|
minLength: 6
|
|||
|
|
type: string
|
|||
|
|
username:
|
|||
|
|
description: 支持用户名或邮箱
|
|||
|
|
example: testuser
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- password
|
|||
|
|
- username
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.LoginResponse:
|
|||
|
|
properties:
|
|||
|
|
token:
|
|||
|
|
type: string
|
|||
|
|
user_info:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.UserInfo'
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.ProfileInfo:
|
|||
|
|
properties:
|
|||
|
|
cape_id:
|
|||
|
|
example: 2
|
|||
|
|
type: integer
|
|||
|
|
created_at:
|
|||
|
|
example: "2025-10-01T10:00:00Z"
|
|||
|
|
type: string
|
|||
|
|
is_active:
|
|||
|
|
example: true
|
|||
|
|
type: boolean
|
|||
|
|
last_used_at:
|
|||
|
|
example: "2025-10-01T12:00:00Z"
|
|||
|
|
type: string
|
|||
|
|
name:
|
|||
|
|
example: PlayerName
|
|||
|
|
type: string
|
|||
|
|
skin_id:
|
|||
|
|
example: 1
|
|||
|
|
type: integer
|
|||
|
|
updated_at:
|
|||
|
|
example: "2025-10-01T10:00:00Z"
|
|||
|
|
type: string
|
|||
|
|
user_id:
|
|||
|
|
example: 1
|
|||
|
|
type: integer
|
|||
|
|
uuid:
|
|||
|
|
example: 550e8400-e29b-41d4-a716-446655440000
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.RegisterRequest:
|
|||
|
|
properties:
|
|||
|
|
avatar:
|
|||
|
|
description: 可选,用户自定义头像
|
|||
|
|
example: https://rustfs.example.com/avatars/user_1/avatar.png
|
|||
|
|
type: string
|
|||
|
|
email:
|
|||
|
|
example: user@example.com
|
|||
|
|
type: string
|
|||
|
|
password:
|
|||
|
|
example: password123
|
|||
|
|
maxLength: 128
|
|||
|
|
minLength: 6
|
|||
|
|
type: string
|
|||
|
|
username:
|
|||
|
|
example: newuser
|
|||
|
|
maxLength: 50
|
|||
|
|
minLength: 3
|
|||
|
|
type: string
|
|||
|
|
verification_code:
|
|||
|
|
description: 邮箱验证码
|
|||
|
|
example: "123456"
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- email
|
|||
|
|
- password
|
|||
|
|
- username
|
|||
|
|
- verification_code
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.ResetPasswordRequest:
|
|||
|
|
properties:
|
|||
|
|
email:
|
|||
|
|
example: user@example.com
|
|||
|
|
type: string
|
|||
|
|
new_password:
|
|||
|
|
example: newpassword123
|
|||
|
|
maxLength: 128
|
|||
|
|
minLength: 6
|
|||
|
|
type: string
|
|||
|
|
verification_code:
|
|||
|
|
example: "123456"
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- email
|
|||
|
|
- new_password
|
|||
|
|
- verification_code
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.SendVerificationCodeRequest:
|
|||
|
|
properties:
|
|||
|
|
email:
|
|||
|
|
example: user@example.com
|
|||
|
|
type: string
|
|||
|
|
type:
|
|||
|
|
description: '类型: register/reset_password/change_email'
|
|||
|
|
enum:
|
|||
|
|
- register
|
|||
|
|
- reset_password
|
|||
|
|
- change_email
|
|||
|
|
example: register
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- email
|
|||
|
|
- type
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.TextureType:
|
|||
|
|
enum:
|
|||
|
|
- SKIN
|
|||
|
|
- CAPE
|
|||
|
|
type: string
|
|||
|
|
x-enum-varnames:
|
|||
|
|
- TextureTypeSkin
|
|||
|
|
- TextureTypeCape
|
|||
|
|
carrotskin_internal_types.UpdateProfileRequest:
|
|||
|
|
properties:
|
|||
|
|
cape_id:
|
|||
|
|
example: 2
|
|||
|
|
type: integer
|
|||
|
|
name:
|
|||
|
|
example: NewPlayerName
|
|||
|
|
maxLength: 16
|
|||
|
|
minLength: 1
|
|||
|
|
type: string
|
|||
|
|
skin_id:
|
|||
|
|
example: 1
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.UpdateTextureRequest:
|
|||
|
|
properties:
|
|||
|
|
description:
|
|||
|
|
example: A cool skin
|
|||
|
|
maxLength: 500
|
|||
|
|
type: string
|
|||
|
|
is_public:
|
|||
|
|
example: true
|
|||
|
|
type: boolean
|
|||
|
|
name:
|
|||
|
|
example: My Skin
|
|||
|
|
maxLength: 100
|
|||
|
|
minLength: 1
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.UpdateUserRequest:
|
|||
|
|
properties:
|
|||
|
|
avatar:
|
|||
|
|
example: https://example.com/new-avatar.png
|
|||
|
|
type: string
|
|||
|
|
new_password:
|
|||
|
|
description: 新密码
|
|||
|
|
example: newpassword123
|
|||
|
|
maxLength: 128
|
|||
|
|
minLength: 6
|
|||
|
|
type: string
|
|||
|
|
old_password:
|
|||
|
|
description: 修改密码时必需
|
|||
|
|
example: oldpassword123
|
|||
|
|
maxLength: 128
|
|||
|
|
minLength: 6
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
carrotskin_internal_types.UserInfo:
|
|||
|
|
properties:
|
|||
|
|
avatar:
|
|||
|
|
example: https://example.com/avatar.png
|
|||
|
|
type: string
|
|||
|
|
created_at:
|
|||
|
|
example: "2025-10-01T10:00:00Z"
|
|||
|
|
type: string
|
|||
|
|
email:
|
|||
|
|
example: test@example.com
|
|||
|
|
type: string
|
|||
|
|
id:
|
|||
|
|
example: 1
|
|||
|
|
type: integer
|
|||
|
|
last_login_at:
|
|||
|
|
example: "2025-10-01T12:00:00Z"
|
|||
|
|
type: string
|
|||
|
|
points:
|
|||
|
|
example: 100
|
|||
|
|
type: integer
|
|||
|
|
role:
|
|||
|
|
example: user
|
|||
|
|
type: string
|
|||
|
|
status:
|
|||
|
|
example: 1
|
|||
|
|
type: integer
|
|||
|
|
updated_at:
|
|||
|
|
example: "2025-10-01T10:00:00Z"
|
|||
|
|
type: string
|
|||
|
|
username:
|
|||
|
|
example: testuser
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
info:
|
|||
|
|
contact: {}
|
|||
|
|
paths:
|
|||
|
|
/api/v1/auth/login:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 用户登录获取JWT Token,支持用户名或邮箱登录
|
|||
|
|
parameters:
|
|||
|
|
- description: 登录信息(username字段支持用户名或邮箱)
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.LoginRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 登录成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.LoginResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"401":
|
|||
|
|
description: 登录失败
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
summary: 用户登录
|
|||
|
|
tags:
|
|||
|
|
- auth
|
|||
|
|
/api/v1/auth/register:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 注册新用户账号
|
|||
|
|
parameters:
|
|||
|
|
- description: 注册信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.RegisterRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 注册成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
summary: 用户注册
|
|||
|
|
tags:
|
|||
|
|
- auth
|
|||
|
|
/api/v1/auth/reset-password:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 通过邮箱验证码重置密码
|
|||
|
|
parameters:
|
|||
|
|
- description: 重置密码请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.ResetPasswordRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 重置成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
summary: 重置密码
|
|||
|
|
tags:
|
|||
|
|
- auth
|
|||
|
|
/api/v1/auth/send-code:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 发送邮箱验证码(注册/重置密码/更换邮箱)
|
|||
|
|
parameters:
|
|||
|
|
- description: 发送验证码请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.SendVerificationCodeRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 发送成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
summary: 发送验证码
|
|||
|
|
tags:
|
|||
|
|
- auth
|
|||
|
|
/api/v1/profile:
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 获取当前用户的所有档案
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 获取成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未授权
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取档案列表
|
|||
|
|
tags:
|
|||
|
|
- profile
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 创建新的Minecraft角色档案,UUID由后端自动生成
|
|||
|
|
parameters:
|
|||
|
|
- description: 档案信息(仅需提供角色名)
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.CreateProfileRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 创建成功,返回完整档案信息(含自动生成的UUID)
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.ProfileInfo'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误或已达档案数量上限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"401":
|
|||
|
|
description: 未授权
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 创建Minecraft档案
|
|||
|
|
tags:
|
|||
|
|
- profile
|
|||
|
|
/api/v1/profile/{uuid}:
|
|||
|
|
delete:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 删除指定的Minecraft档案
|
|||
|
|
parameters:
|
|||
|
|
- description: 档案UUID
|
|||
|
|
in: path
|
|||
|
|
name: uuid
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 删除成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未授权
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"403":
|
|||
|
|
description: 无权操作
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"404":
|
|||
|
|
description: 档案不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 删除档案
|
|||
|
|
tags:
|
|||
|
|
- profile
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 根据UUID获取档案详细信息
|
|||
|
|
parameters:
|
|||
|
|
- description: 档案UUID
|
|||
|
|
in: path
|
|||
|
|
name: uuid
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 获取成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 档案不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
summary: 获取档案详情
|
|||
|
|
tags:
|
|||
|
|
- profile
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 更新档案信息
|
|||
|
|
parameters:
|
|||
|
|
- description: 档案UUID
|
|||
|
|
in: path
|
|||
|
|
name: uuid
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 更新信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.UpdateProfileRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 更新成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"401":
|
|||
|
|
description: 未授权
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"403":
|
|||
|
|
description: 无权操作
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"404":
|
|||
|
|
description: 档案不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新档案
|
|||
|
|
tags:
|
|||
|
|
- profile
|
|||
|
|
/api/v1/profile/{uuid}/activate:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 将指定档案设置为活跃状态
|
|||
|
|
parameters:
|
|||
|
|
- description: 档案UUID
|
|||
|
|
in: path
|
|||
|
|
name: uuid
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 设置成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未授权
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"403":
|
|||
|
|
description: 无权操作
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"404":
|
|||
|
|
description: 档案不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 设置活跃档案
|
|||
|
|
tags:
|
|||
|
|
- profile
|
|||
|
|
/api/v1/system/config:
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 获取公开的系统配置信息
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 获取成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
summary: 获取系统配置
|
|||
|
|
tags:
|
|||
|
|
- system
|
|||
|
|
/api/v1/texture:
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 根据关键词和类型搜索材质
|
|||
|
|
parameters:
|
|||
|
|
- description: 关键词
|
|||
|
|
in: query
|
|||
|
|
name: keyword
|
|||
|
|
type: string
|
|||
|
|
- description: 材质类型(SKIN/CAPE)
|
|||
|
|
in: query
|
|||
|
|
name: type
|
|||
|
|
type: string
|
|||
|
|
- description: 只看公开材质
|
|||
|
|
in: query
|
|||
|
|
name: public_only
|
|||
|
|
type: boolean
|
|||
|
|
- default: 1
|
|||
|
|
description: 页码
|
|||
|
|
in: query
|
|||
|
|
name: page
|
|||
|
|
type: integer
|
|||
|
|
- default: 20
|
|||
|
|
description: 每页数量
|
|||
|
|
in: query
|
|||
|
|
name: page_size
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 搜索成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.PaginationResponse'
|
|||
|
|
summary: 搜索材质
|
|||
|
|
tags:
|
|||
|
|
- texture
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 文件上传完成后,创建材质记录到数据库
|
|||
|
|
parameters:
|
|||
|
|
- description: 创建材质请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.CreateTextureRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 创建成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 创建材质记录
|
|||
|
|
tags:
|
|||
|
|
- texture
|
|||
|
|
/api/v1/texture/{id}:
|
|||
|
|
delete:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 删除材质(软删除,仅上传者可操作)
|
|||
|
|
parameters:
|
|||
|
|
- description: 材质ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 删除成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权操作
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 删除材质
|
|||
|
|
tags:
|
|||
|
|
- texture
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 根据ID获取材质详细信息
|
|||
|
|
parameters:
|
|||
|
|
- description: 材质ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 获取成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 材质不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
summary: 获取材质详情
|
|||
|
|
tags:
|
|||
|
|
- texture
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 更新材质信息(仅上传者可操作)
|
|||
|
|
parameters:
|
|||
|
|
- description: 材质ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
- description: 更新材质请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.UpdateTextureRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 更新成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权操作
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新材质
|
|||
|
|
tags:
|
|||
|
|
- texture
|
|||
|
|
/api/v1/texture/{id}/favorite:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 收藏或取消收藏材质
|
|||
|
|
parameters:
|
|||
|
|
- description: 材质ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 切换成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 切换收藏状态
|
|||
|
|
tags:
|
|||
|
|
- texture
|
|||
|
|
/api/v1/texture/favorites:
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 获取当前用户收藏的所有材质
|
|||
|
|
parameters:
|
|||
|
|
- default: 1
|
|||
|
|
description: 页码
|
|||
|
|
in: query
|
|||
|
|
name: page
|
|||
|
|
type: integer
|
|||
|
|
- default: 20
|
|||
|
|
description: 每页数量
|
|||
|
|
in: query
|
|||
|
|
name: page_size
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 获取成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.PaginationResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取用户收藏的材质列表
|
|||
|
|
tags:
|
|||
|
|
- texture
|
|||
|
|
/api/v1/texture/my:
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 获取当前用户上传的所有材质
|
|||
|
|
parameters:
|
|||
|
|
- default: 1
|
|||
|
|
description: 页码
|
|||
|
|
in: query
|
|||
|
|
name: page
|
|||
|
|
type: integer
|
|||
|
|
- default: 20
|
|||
|
|
description: 每页数量
|
|||
|
|
in: query
|
|||
|
|
name: page_size
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 获取成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.PaginationResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取用户上传的材质列表
|
|||
|
|
tags:
|
|||
|
|
- texture
|
|||
|
|
/api/v1/texture/upload-url:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 生成预签名URL用于上传材质文件
|
|||
|
|
parameters:
|
|||
|
|
- description: 上传URL请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.GenerateTextureUploadURLRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 生成成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 生成材质上传URL
|
|||
|
|
tags:
|
|||
|
|
- texture
|
|||
|
|
/api/v1/user/avatar:
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 上传完成后更新用户的头像URL到数据库
|
|||
|
|
parameters:
|
|||
|
|
- description: 头像URL
|
|||
|
|
in: query
|
|||
|
|
name: avatar_url
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 更新成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新头像URL
|
|||
|
|
tags:
|
|||
|
|
- user
|
|||
|
|
/api/v1/user/avatar/upload-url:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 生成预签名URL用于上传用户头像
|
|||
|
|
parameters:
|
|||
|
|
- description: 文件名
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.GenerateAvatarUploadURLRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 生成成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 生成头像上传URL
|
|||
|
|
tags:
|
|||
|
|
- user
|
|||
|
|
/api/v1/user/change-email:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 通过验证码更换用户邮箱
|
|||
|
|
parameters:
|
|||
|
|
- description: 更换邮箱请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.ChangeEmailRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 更换成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.UserInfo'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"401":
|
|||
|
|
description: 未授权
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更换邮箱
|
|||
|
|
tags:
|
|||
|
|
- user
|
|||
|
|
/api/v1/user/profile:
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 获取当前登录用户的详细信息
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 获取成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未授权
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取用户信息
|
|||
|
|
tags:
|
|||
|
|
- user
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 更新当前登录用户的头像和密码(修改邮箱请使用 /change-email 接口)
|
|||
|
|
parameters:
|
|||
|
|
- description: 更新信息(修改密码时需同时提供old_password和new_password)
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.UpdateUserRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 更新成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/carrotskin_internal_model.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_types.UserInfo'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"401":
|
|||
|
|
description: 未授权
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"404":
|
|||
|
|
description: 用户不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/carrotskin_internal_model.ErrorResponse'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新用户信息
|
|||
|
|
tags:
|
|||
|
|
- user
|
|||
|
|
/health:
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 检查服务是否正常运行
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 成功
|
|||
|
|
schema:
|
|||
|
|
additionalProperties: true
|
|||
|
|
type: object
|
|||
|
|
summary: 健康检查
|
|||
|
|
tags:
|
|||
|
|
- system
|
|||
|
|
swagger: "2.0"
|