5013 lines
125 KiB
YAML
5013 lines
125 KiB
YAML
|
|
basePath: /api/v1
|
|||
|
|
definitions:
|
|||
|
|
auth.OAuthProvider:
|
|||
|
|
enum:
|
|||
|
|
- wechat
|
|||
|
|
- qq
|
|||
|
|
- weibo
|
|||
|
|
- google
|
|||
|
|
- facebook
|
|||
|
|
- twitter
|
|||
|
|
- github
|
|||
|
|
- alipay
|
|||
|
|
- douyin
|
|||
|
|
type: string
|
|||
|
|
x-enum-varnames:
|
|||
|
|
- OAuthProviderWeChat
|
|||
|
|
- OAuthProviderQQ
|
|||
|
|
- OAuthProviderWeibo
|
|||
|
|
- OAuthProviderGoogle
|
|||
|
|
- OAuthProviderFacebook
|
|||
|
|
- OAuthProviderTwitter
|
|||
|
|
- OAuthProviderGitHub
|
|||
|
|
- OAuthProviderAlipay
|
|||
|
|
- OAuthProviderDouyin
|
|||
|
|
auth.OAuthProviderInfo:
|
|||
|
|
properties:
|
|||
|
|
enabled:
|
|||
|
|
type: boolean
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
provider:
|
|||
|
|
$ref: '#/definitions/auth.OAuthProvider'
|
|||
|
|
type: object
|
|||
|
|
domain.UserStatus:
|
|||
|
|
enum:
|
|||
|
|
- 0
|
|||
|
|
- 1
|
|||
|
|
- 2
|
|||
|
|
- 3
|
|||
|
|
type: integer
|
|||
|
|
x-enum-comments:
|
|||
|
|
UserStatusActive: 已激活
|
|||
|
|
UserStatusDisabled: 已禁用
|
|||
|
|
UserStatusInactive: 未激活
|
|||
|
|
UserStatusLocked: 已锁定
|
|||
|
|
x-enum-descriptions:
|
|||
|
|
- 未激活
|
|||
|
|
- 已激活
|
|||
|
|
- 已锁定
|
|||
|
|
- 已禁用
|
|||
|
|
x-enum-varnames:
|
|||
|
|
- UserStatusInactive
|
|||
|
|
- UserStatusActive
|
|||
|
|
- UserStatusLocked
|
|||
|
|
- UserStatusDisabled
|
|||
|
|
domain.Webhook:
|
|||
|
|
properties:
|
|||
|
|
created_at:
|
|||
|
|
type: string
|
|||
|
|
created_by:
|
|||
|
|
type: integer
|
|||
|
|
events:
|
|||
|
|
description: JSON 数组,订阅的事件类型
|
|||
|
|
type: string
|
|||
|
|
id:
|
|||
|
|
type: integer
|
|||
|
|
max_retries:
|
|||
|
|
type: integer
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
status:
|
|||
|
|
$ref: '#/definitions/domain.WebhookStatus'
|
|||
|
|
timeout_sec:
|
|||
|
|
type: integer
|
|||
|
|
updated_at:
|
|||
|
|
type: string
|
|||
|
|
url:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
domain.WebhookEventType:
|
|||
|
|
enum:
|
|||
|
|
- user.registered
|
|||
|
|
- user.login
|
|||
|
|
- user.logout
|
|||
|
|
- user.updated
|
|||
|
|
- user.deleted
|
|||
|
|
- user.locked
|
|||
|
|
- user.password_changed
|
|||
|
|
- user.password_reset
|
|||
|
|
- user.totp_enabled
|
|||
|
|
- user.totp_disabled
|
|||
|
|
- user.login_failed
|
|||
|
|
- security.anomaly_detected
|
|||
|
|
type: string
|
|||
|
|
x-enum-varnames:
|
|||
|
|
- EventUserRegistered
|
|||
|
|
- EventUserLogin
|
|||
|
|
- EventUserLogout
|
|||
|
|
- EventUserUpdated
|
|||
|
|
- EventUserDeleted
|
|||
|
|
- EventUserLocked
|
|||
|
|
- EventPasswordChanged
|
|||
|
|
- EventPasswordReset
|
|||
|
|
- EventTOTPEnabled
|
|||
|
|
- EventTOTPDisabled
|
|||
|
|
- EventLoginFailed
|
|||
|
|
- EventAnomalyDetected
|
|||
|
|
domain.WebhookStatus:
|
|||
|
|
enum:
|
|||
|
|
- 1
|
|||
|
|
- 0
|
|||
|
|
type: integer
|
|||
|
|
x-enum-varnames:
|
|||
|
|
- WebhookStatusActive
|
|||
|
|
- WebhookStatusInactive
|
|||
|
|
handler.ActivateEmailRequest:
|
|||
|
|
properties:
|
|||
|
|
token:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- token
|
|||
|
|
type: object
|
|||
|
|
handler.AssignPermissionsRequest:
|
|||
|
|
properties:
|
|||
|
|
permission_ids:
|
|||
|
|
items:
|
|||
|
|
type: integer
|
|||
|
|
type: array
|
|||
|
|
type: object
|
|||
|
|
handler.AssignRolesRequest:
|
|||
|
|
properties:
|
|||
|
|
role_ids:
|
|||
|
|
items:
|
|||
|
|
type: integer
|
|||
|
|
type: array
|
|||
|
|
type: object
|
|||
|
|
handler.AvatarResponse:
|
|||
|
|
properties:
|
|||
|
|
avatar_url:
|
|||
|
|
type: string
|
|||
|
|
thumbnail:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.BootstrapAdminRequest:
|
|||
|
|
properties:
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
password:
|
|||
|
|
type: string
|
|||
|
|
username:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.CSRFTokenResponse:
|
|||
|
|
properties:
|
|||
|
|
token:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.CaptchaResponse:
|
|||
|
|
properties:
|
|||
|
|
captcha_id:
|
|||
|
|
type: string
|
|||
|
|
image:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.CreateAdminRequest:
|
|||
|
|
properties:
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
nickname:
|
|||
|
|
type: string
|
|||
|
|
password:
|
|||
|
|
type: string
|
|||
|
|
username:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.CreateUserRequest:
|
|||
|
|
properties:
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
nickname:
|
|||
|
|
type: string
|
|||
|
|
password:
|
|||
|
|
type: string
|
|||
|
|
phone:
|
|||
|
|
type: string
|
|||
|
|
username:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.CustomFieldValuesResponse:
|
|||
|
|
additionalProperties:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.DeviceListResponse:
|
|||
|
|
properties:
|
|||
|
|
cursor:
|
|||
|
|
type: string
|
|||
|
|
has_more:
|
|||
|
|
type: boolean
|
|||
|
|
items: {}
|
|||
|
|
next_cursor:
|
|||
|
|
type: string
|
|||
|
|
page:
|
|||
|
|
type: integer
|
|||
|
|
page_size:
|
|||
|
|
type: integer
|
|||
|
|
total:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
handler.DisableTOTPRequest:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.EnableTOTPRequest:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.ForgotPasswordByPhoneRequest:
|
|||
|
|
properties:
|
|||
|
|
phone:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- phone
|
|||
|
|
type: object
|
|||
|
|
handler.ForgotPasswordRequest:
|
|||
|
|
properties:
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.IntrospectResponse:
|
|||
|
|
properties:
|
|||
|
|
active:
|
|||
|
|
type: boolean
|
|||
|
|
exp:
|
|||
|
|
type: integer
|
|||
|
|
scope:
|
|||
|
|
type: string
|
|||
|
|
user_id:
|
|||
|
|
type: integer
|
|||
|
|
username:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.LoginByEmailCodeRequest:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: string
|
|||
|
|
device_browser:
|
|||
|
|
type: string
|
|||
|
|
device_id:
|
|||
|
|
type: string
|
|||
|
|
device_name:
|
|||
|
|
type: string
|
|||
|
|
device_os:
|
|||
|
|
type: string
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.LoginLogListResponse:
|
|||
|
|
properties:
|
|||
|
|
cursor:
|
|||
|
|
type: string
|
|||
|
|
has_more:
|
|||
|
|
type: boolean
|
|||
|
|
items: {}
|
|||
|
|
list: {}
|
|||
|
|
next_cursor:
|
|||
|
|
type: string
|
|||
|
|
page:
|
|||
|
|
type: integer
|
|||
|
|
page_size:
|
|||
|
|
type: integer
|
|||
|
|
total:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
handler.OAuthProvidersResponse:
|
|||
|
|
properties:
|
|||
|
|
providers:
|
|||
|
|
items:
|
|||
|
|
type: string
|
|||
|
|
type: array
|
|||
|
|
type: object
|
|||
|
|
handler.OperationLogListResponse:
|
|||
|
|
properties:
|
|||
|
|
cursor:
|
|||
|
|
type: string
|
|||
|
|
has_more:
|
|||
|
|
type: boolean
|
|||
|
|
items: {}
|
|||
|
|
list: {}
|
|||
|
|
next_cursor:
|
|||
|
|
type: string
|
|||
|
|
page:
|
|||
|
|
type: integer
|
|||
|
|
page_size:
|
|||
|
|
type: integer
|
|||
|
|
total:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
handler.RefreshTokenRequest:
|
|||
|
|
properties:
|
|||
|
|
refresh_token:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.ResendActivationRequest:
|
|||
|
|
properties:
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.ResetPasswordByPhoneRequest:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: string
|
|||
|
|
new_password:
|
|||
|
|
type: string
|
|||
|
|
phone:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- code
|
|||
|
|
- new_password
|
|||
|
|
- phone
|
|||
|
|
type: object
|
|||
|
|
handler.ResetPasswordRequest:
|
|||
|
|
properties:
|
|||
|
|
new_password:
|
|||
|
|
type: string
|
|||
|
|
token:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.Response:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
data: {}
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.RoleListResponse:
|
|||
|
|
properties:
|
|||
|
|
items: {}
|
|||
|
|
page:
|
|||
|
|
type: integer
|
|||
|
|
page_size:
|
|||
|
|
type: integer
|
|||
|
|
total:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
handler.SMSLoginRequest:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: string
|
|||
|
|
device_browser:
|
|||
|
|
type: string
|
|||
|
|
device_id:
|
|||
|
|
type: string
|
|||
|
|
device_name:
|
|||
|
|
type: string
|
|||
|
|
device_os:
|
|||
|
|
type: string
|
|||
|
|
phone:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- code
|
|||
|
|
- phone
|
|||
|
|
type: object
|
|||
|
|
handler.SendEmailCodeRequest:
|
|||
|
|
properties:
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.SetUserFieldValuesRequest:
|
|||
|
|
properties:
|
|||
|
|
values:
|
|||
|
|
additionalProperties:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
type: object
|
|||
|
|
handler.SwaggerCustomField:
|
|||
|
|
properties:
|
|||
|
|
active:
|
|||
|
|
type: boolean
|
|||
|
|
created_at:
|
|||
|
|
type: string
|
|||
|
|
field_key:
|
|||
|
|
type: string
|
|||
|
|
field_type:
|
|||
|
|
type: string
|
|||
|
|
help_text:
|
|||
|
|
type: string
|
|||
|
|
id:
|
|||
|
|
type: integer
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
options:
|
|||
|
|
type: string
|
|||
|
|
placeholder:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
type: boolean
|
|||
|
|
sort_order:
|
|||
|
|
type: integer
|
|||
|
|
updated_at:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.SwaggerDevice:
|
|||
|
|
properties:
|
|||
|
|
created_at:
|
|||
|
|
type: string
|
|||
|
|
current:
|
|||
|
|
type: boolean
|
|||
|
|
device_browser:
|
|||
|
|
type: string
|
|||
|
|
device_id:
|
|||
|
|
type: string
|
|||
|
|
device_name:
|
|||
|
|
type: string
|
|||
|
|
device_os:
|
|||
|
|
type: string
|
|||
|
|
device_type:
|
|||
|
|
type: integer
|
|||
|
|
id:
|
|||
|
|
type: integer
|
|||
|
|
ip:
|
|||
|
|
type: string
|
|||
|
|
is_trusted:
|
|||
|
|
type: boolean
|
|||
|
|
last_active_at:
|
|||
|
|
type: string
|
|||
|
|
last_used_at:
|
|||
|
|
type: string
|
|||
|
|
location:
|
|||
|
|
type: string
|
|||
|
|
status:
|
|||
|
|
type: integer
|
|||
|
|
trusted_until:
|
|||
|
|
type: string
|
|||
|
|
updated_at:
|
|||
|
|
type: string
|
|||
|
|
user_id:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
handler.SwaggerPermission:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: string
|
|||
|
|
created_at:
|
|||
|
|
type: string
|
|||
|
|
description:
|
|||
|
|
type: string
|
|||
|
|
icon:
|
|||
|
|
type: string
|
|||
|
|
id:
|
|||
|
|
type: integer
|
|||
|
|
method:
|
|||
|
|
type: string
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
parent_id:
|
|||
|
|
type: integer
|
|||
|
|
path:
|
|||
|
|
type: string
|
|||
|
|
sort:
|
|||
|
|
type: integer
|
|||
|
|
status:
|
|||
|
|
type: integer
|
|||
|
|
type:
|
|||
|
|
type: integer
|
|||
|
|
updated_at:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.SwaggerRole:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: string
|
|||
|
|
created_at:
|
|||
|
|
type: string
|
|||
|
|
description:
|
|||
|
|
type: string
|
|||
|
|
id:
|
|||
|
|
type: integer
|
|||
|
|
is_system:
|
|||
|
|
type: boolean
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
sort:
|
|||
|
|
type: integer
|
|||
|
|
status:
|
|||
|
|
type: integer
|
|||
|
|
updated_at:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.SwaggerTheme:
|
|||
|
|
properties:
|
|||
|
|
accent_color:
|
|||
|
|
type: string
|
|||
|
|
background_color:
|
|||
|
|
type: string
|
|||
|
|
created_at:
|
|||
|
|
type: string
|
|||
|
|
error_color:
|
|||
|
|
type: string
|
|||
|
|
id:
|
|||
|
|
type: integer
|
|||
|
|
info_color:
|
|||
|
|
type: string
|
|||
|
|
is_default:
|
|||
|
|
type: boolean
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
primary_color:
|
|||
|
|
type: string
|
|||
|
|
secondary_color:
|
|||
|
|
type: string
|
|||
|
|
success_color:
|
|||
|
|
type: string
|
|||
|
|
text_color:
|
|||
|
|
type: string
|
|||
|
|
updated_at:
|
|||
|
|
type: string
|
|||
|
|
warning_color:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.TOTPSetupResponse:
|
|||
|
|
properties:
|
|||
|
|
qr_code_base64:
|
|||
|
|
type: string
|
|||
|
|
recovery_codes:
|
|||
|
|
items:
|
|||
|
|
type: string
|
|||
|
|
type: array
|
|||
|
|
secret:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.TOTPStatusResponse:
|
|||
|
|
properties:
|
|||
|
|
enabled:
|
|||
|
|
type: boolean
|
|||
|
|
type: object
|
|||
|
|
handler.TOTPVerifyRequest:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: string
|
|||
|
|
device_id:
|
|||
|
|
type: string
|
|||
|
|
temp_token:
|
|||
|
|
type: string
|
|||
|
|
user_id:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
handler.TokenResponse:
|
|||
|
|
properties:
|
|||
|
|
access_token:
|
|||
|
|
type: string
|
|||
|
|
expires_in:
|
|||
|
|
type: integer
|
|||
|
|
scope:
|
|||
|
|
type: string
|
|||
|
|
token_type:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.TrustDeviceRequest:
|
|||
|
|
properties:
|
|||
|
|
trust_duration:
|
|||
|
|
description: 信任持续时间,如 "30d" 表示30天
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.UpdateDeviceStatusRequest:
|
|||
|
|
properties:
|
|||
|
|
status:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.UpdatePasswordRequest:
|
|||
|
|
properties:
|
|||
|
|
new_password:
|
|||
|
|
type: string
|
|||
|
|
old_password:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.UpdatePermissionStatusRequest:
|
|||
|
|
properties:
|
|||
|
|
status:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.UpdateRoleStatusRequest:
|
|||
|
|
properties:
|
|||
|
|
status:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.UpdateStatusRequest:
|
|||
|
|
properties:
|
|||
|
|
status:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.UpdateUserRequest:
|
|||
|
|
properties:
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
nickname:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.UserInfoResponse:
|
|||
|
|
properties:
|
|||
|
|
user_id:
|
|||
|
|
type: integer
|
|||
|
|
username:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.UserListResponse:
|
|||
|
|
properties:
|
|||
|
|
has_more:
|
|||
|
|
type: boolean
|
|||
|
|
items: {}
|
|||
|
|
limit:
|
|||
|
|
type: integer
|
|||
|
|
next_cursor:
|
|||
|
|
type: string
|
|||
|
|
offset:
|
|||
|
|
type: integer
|
|||
|
|
page_size:
|
|||
|
|
type: integer
|
|||
|
|
total:
|
|||
|
|
type: integer
|
|||
|
|
users: {}
|
|||
|
|
type: object
|
|||
|
|
handler.UserResponse:
|
|||
|
|
properties:
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
id:
|
|||
|
|
type: integer
|
|||
|
|
nickname:
|
|||
|
|
type: string
|
|||
|
|
status:
|
|||
|
|
type: string
|
|||
|
|
username:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.ValidateResetTokenRequest:
|
|||
|
|
properties:
|
|||
|
|
token:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- token
|
|||
|
|
type: object
|
|||
|
|
handler.ValidateTokenResponse:
|
|||
|
|
properties:
|
|||
|
|
valid:
|
|||
|
|
type: boolean
|
|||
|
|
type: object
|
|||
|
|
handler.VerifyCaptchaRequest:
|
|||
|
|
properties:
|
|||
|
|
answer:
|
|||
|
|
type: string
|
|||
|
|
captcha_id:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.VerifyResponse:
|
|||
|
|
properties:
|
|||
|
|
verified:
|
|||
|
|
type: boolean
|
|||
|
|
type: object
|
|||
|
|
handler.VerifyTOTPRequest:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: string
|
|||
|
|
device_id:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
handler.VerifyTOTPResponse:
|
|||
|
|
properties:
|
|||
|
|
verified:
|
|||
|
|
type: boolean
|
|||
|
|
type: object
|
|||
|
|
service.AuthCapabilities:
|
|||
|
|
properties:
|
|||
|
|
admin_bootstrap_required:
|
|||
|
|
type: boolean
|
|||
|
|
email_activation:
|
|||
|
|
type: boolean
|
|||
|
|
email_code:
|
|||
|
|
type: boolean
|
|||
|
|
oauth_providers:
|
|||
|
|
items:
|
|||
|
|
$ref: '#/definitions/auth.OAuthProviderInfo'
|
|||
|
|
type: array
|
|||
|
|
password:
|
|||
|
|
type: boolean
|
|||
|
|
password_reset:
|
|||
|
|
type: boolean
|
|||
|
|
sms_code:
|
|||
|
|
type: boolean
|
|||
|
|
type: object
|
|||
|
|
service.BatchDeleteRequest:
|
|||
|
|
properties:
|
|||
|
|
ids:
|
|||
|
|
items:
|
|||
|
|
type: integer
|
|||
|
|
minItems: 1
|
|||
|
|
type: array
|
|||
|
|
required:
|
|||
|
|
- ids
|
|||
|
|
type: object
|
|||
|
|
service.BatchUpdateStatusRequest:
|
|||
|
|
properties:
|
|||
|
|
ids:
|
|||
|
|
items:
|
|||
|
|
type: integer
|
|||
|
|
minItems: 1
|
|||
|
|
type: array
|
|||
|
|
status:
|
|||
|
|
$ref: '#/definitions/domain.UserStatus'
|
|||
|
|
required:
|
|||
|
|
- ids
|
|||
|
|
- status
|
|||
|
|
type: object
|
|||
|
|
service.CreateDeviceRequest:
|
|||
|
|
properties:
|
|||
|
|
device_browser:
|
|||
|
|
type: string
|
|||
|
|
device_id:
|
|||
|
|
type: string
|
|||
|
|
device_name:
|
|||
|
|
type: string
|
|||
|
|
device_os:
|
|||
|
|
type: string
|
|||
|
|
device_type:
|
|||
|
|
type: integer
|
|||
|
|
ip:
|
|||
|
|
type: string
|
|||
|
|
location:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- device_id
|
|||
|
|
type: object
|
|||
|
|
service.CreateFieldRequest:
|
|||
|
|
properties:
|
|||
|
|
default:
|
|||
|
|
type: string
|
|||
|
|
field_key:
|
|||
|
|
type: string
|
|||
|
|
max_len:
|
|||
|
|
type: integer
|
|||
|
|
max_val:
|
|||
|
|
type: number
|
|||
|
|
min_len:
|
|||
|
|
type: integer
|
|||
|
|
min_val:
|
|||
|
|
type: number
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
options:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
type: boolean
|
|||
|
|
sort:
|
|||
|
|
type: integer
|
|||
|
|
type:
|
|||
|
|
type: integer
|
|||
|
|
required:
|
|||
|
|
- field_key
|
|||
|
|
- name
|
|||
|
|
- type
|
|||
|
|
type: object
|
|||
|
|
service.CreatePermissionRequest:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: string
|
|||
|
|
description:
|
|||
|
|
type: string
|
|||
|
|
icon:
|
|||
|
|
type: string
|
|||
|
|
method:
|
|||
|
|
type: string
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
parent_id:
|
|||
|
|
type: integer
|
|||
|
|
path:
|
|||
|
|
type: string
|
|||
|
|
sort:
|
|||
|
|
type: integer
|
|||
|
|
type:
|
|||
|
|
type: integer
|
|||
|
|
required:
|
|||
|
|
- code
|
|||
|
|
- name
|
|||
|
|
- type
|
|||
|
|
type: object
|
|||
|
|
service.CreateRoleRequest:
|
|||
|
|
properties:
|
|||
|
|
code:
|
|||
|
|
type: string
|
|||
|
|
description:
|
|||
|
|
type: string
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
parent_id:
|
|||
|
|
type: integer
|
|||
|
|
required:
|
|||
|
|
- code
|
|||
|
|
- name
|
|||
|
|
type: object
|
|||
|
|
service.CreateThemeRequest:
|
|||
|
|
properties:
|
|||
|
|
background_color:
|
|||
|
|
type: string
|
|||
|
|
custom_css:
|
|||
|
|
type: string
|
|||
|
|
custom_js:
|
|||
|
|
type: string
|
|||
|
|
favicon_url:
|
|||
|
|
type: string
|
|||
|
|
is_default:
|
|||
|
|
type: boolean
|
|||
|
|
logo_url:
|
|||
|
|
type: string
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
primary_color:
|
|||
|
|
type: string
|
|||
|
|
secondary_color:
|
|||
|
|
type: string
|
|||
|
|
text_color:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- name
|
|||
|
|
type: object
|
|||
|
|
service.CreateWebhookRequest:
|
|||
|
|
properties:
|
|||
|
|
events:
|
|||
|
|
items:
|
|||
|
|
$ref: '#/definitions/domain.WebhookEventType'
|
|||
|
|
minItems: 1
|
|||
|
|
type: array
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
secret:
|
|||
|
|
type: string
|
|||
|
|
url:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- events
|
|||
|
|
- name
|
|||
|
|
- url
|
|||
|
|
type: object
|
|||
|
|
service.DashboardStats:
|
|||
|
|
properties:
|
|||
|
|
logins:
|
|||
|
|
$ref: '#/definitions/service.LoginStats'
|
|||
|
|
users:
|
|||
|
|
$ref: '#/definitions/service.UserStats'
|
|||
|
|
type: object
|
|||
|
|
service.FeaturesInfo:
|
|||
|
|
properties:
|
|||
|
|
data_export_enabled:
|
|||
|
|
type: boolean
|
|||
|
|
data_import_enabled:
|
|||
|
|
type: boolean
|
|||
|
|
email_verification:
|
|||
|
|
type: boolean
|
|||
|
|
login_log_enabled:
|
|||
|
|
type: boolean
|
|||
|
|
oauth_providers:
|
|||
|
|
items:
|
|||
|
|
type: string
|
|||
|
|
type: array
|
|||
|
|
operation_log_enabled:
|
|||
|
|
type: boolean
|
|||
|
|
phone_verification:
|
|||
|
|
type: boolean
|
|||
|
|
sso_enabled:
|
|||
|
|
type: boolean
|
|||
|
|
type: object
|
|||
|
|
service.LoginRequest:
|
|||
|
|
properties:
|
|||
|
|
account:
|
|||
|
|
type: string
|
|||
|
|
device_browser:
|
|||
|
|
description: 浏览器
|
|||
|
|
type: string
|
|||
|
|
device_id:
|
|||
|
|
description: 设备唯一标识
|
|||
|
|
type: string
|
|||
|
|
device_name:
|
|||
|
|
description: 设备名称
|
|||
|
|
type: string
|
|||
|
|
device_os:
|
|||
|
|
description: 操作系统
|
|||
|
|
type: string
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
password:
|
|||
|
|
type: string
|
|||
|
|
phone:
|
|||
|
|
type: string
|
|||
|
|
remember:
|
|||
|
|
description: 记住登录
|
|||
|
|
type: boolean
|
|||
|
|
username:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
service.LoginResponse:
|
|||
|
|
properties:
|
|||
|
|
access_token:
|
|||
|
|
type: string
|
|||
|
|
expires_in:
|
|||
|
|
type: integer
|
|||
|
|
refresh_token:
|
|||
|
|
type: string
|
|||
|
|
requires_totp:
|
|||
|
|
description: RequiresTOTP 指示登录需要额外的TOTP验证(当设备未信任时)
|
|||
|
|
type: boolean
|
|||
|
|
temp_token:
|
|||
|
|
description: TempToken 临时令牌,用于TOTP验证阶段(短生命周期,不可用于常规API)
|
|||
|
|
type: string
|
|||
|
|
user:
|
|||
|
|
$ref: '#/definitions/service.UserInfo'
|
|||
|
|
user_id:
|
|||
|
|
description: UserID 当RequiresTOTP为true时返回,用于后续TOTP验证
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
service.LoginStats:
|
|||
|
|
properties:
|
|||
|
|
logins_today_failed:
|
|||
|
|
type: integer
|
|||
|
|
logins_today_success:
|
|||
|
|
type: integer
|
|||
|
|
logins_week:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
service.LogoutRequest:
|
|||
|
|
properties:
|
|||
|
|
access_token:
|
|||
|
|
type: string
|
|||
|
|
refresh_token:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
service.RegisterRequest:
|
|||
|
|
properties:
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
nickname:
|
|||
|
|
type: string
|
|||
|
|
password:
|
|||
|
|
type: string
|
|||
|
|
phone:
|
|||
|
|
type: string
|
|||
|
|
phone_code:
|
|||
|
|
type: string
|
|||
|
|
username:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- password
|
|||
|
|
- username
|
|||
|
|
type: object
|
|||
|
|
service.SecurityInfo:
|
|||
|
|
properties:
|
|||
|
|
device_trust_duration:
|
|||
|
|
description: 秒
|
|||
|
|
type: integer
|
|||
|
|
login_fail_duration:
|
|||
|
|
description: 分钟
|
|||
|
|
type: integer
|
|||
|
|
login_fail_lock:
|
|||
|
|
type: boolean
|
|||
|
|
login_fail_threshold:
|
|||
|
|
type: integer
|
|||
|
|
password_history:
|
|||
|
|
type: integer
|
|||
|
|
password_min_length:
|
|||
|
|
type: integer
|
|||
|
|
password_require_lowercase:
|
|||
|
|
type: boolean
|
|||
|
|
password_require_numbers:
|
|||
|
|
type: boolean
|
|||
|
|
password_require_symbols:
|
|||
|
|
type: boolean
|
|||
|
|
password_require_uppercase:
|
|||
|
|
type: boolean
|
|||
|
|
session_timeout:
|
|||
|
|
description: 秒
|
|||
|
|
type: integer
|
|||
|
|
totp_enabled:
|
|||
|
|
type: boolean
|
|||
|
|
type: object
|
|||
|
|
service.SendCodeRequest:
|
|||
|
|
properties:
|
|||
|
|
phone:
|
|||
|
|
type: string
|
|||
|
|
purpose:
|
|||
|
|
type: string
|
|||
|
|
scene:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
- phone
|
|||
|
|
type: object
|
|||
|
|
service.SystemInfo:
|
|||
|
|
properties:
|
|||
|
|
description:
|
|||
|
|
type: string
|
|||
|
|
environment:
|
|||
|
|
type: string
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
version:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
service.SystemSettings:
|
|||
|
|
properties:
|
|||
|
|
features:
|
|||
|
|
$ref: '#/definitions/service.FeaturesInfo'
|
|||
|
|
security:
|
|||
|
|
$ref: '#/definitions/service.SecurityInfo'
|
|||
|
|
system:
|
|||
|
|
$ref: '#/definitions/service.SystemInfo'
|
|||
|
|
type: object
|
|||
|
|
service.UpdateDeviceRequest:
|
|||
|
|
properties:
|
|||
|
|
device_browser:
|
|||
|
|
type: string
|
|||
|
|
device_name:
|
|||
|
|
type: string
|
|||
|
|
device_os:
|
|||
|
|
type: string
|
|||
|
|
device_type:
|
|||
|
|
type: integer
|
|||
|
|
ip:
|
|||
|
|
type: string
|
|||
|
|
location:
|
|||
|
|
type: string
|
|||
|
|
status:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
service.UpdateFieldRequest:
|
|||
|
|
properties:
|
|||
|
|
default:
|
|||
|
|
type: string
|
|||
|
|
max_len:
|
|||
|
|
type: integer
|
|||
|
|
max_val:
|
|||
|
|
type: number
|
|||
|
|
min_len:
|
|||
|
|
type: integer
|
|||
|
|
min_val:
|
|||
|
|
type: number
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
options:
|
|||
|
|
type: string
|
|||
|
|
required:
|
|||
|
|
type: boolean
|
|||
|
|
sort:
|
|||
|
|
type: integer
|
|||
|
|
status:
|
|||
|
|
type: integer
|
|||
|
|
type:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
service.UpdatePermissionRequest:
|
|||
|
|
properties:
|
|||
|
|
description:
|
|||
|
|
type: string
|
|||
|
|
icon:
|
|||
|
|
type: string
|
|||
|
|
method:
|
|||
|
|
type: string
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
parent_id:
|
|||
|
|
type: integer
|
|||
|
|
path:
|
|||
|
|
type: string
|
|||
|
|
sort:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
service.UpdateRoleRequest:
|
|||
|
|
properties:
|
|||
|
|
description:
|
|||
|
|
type: string
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
parent_id:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
service.UpdateThemeRequest:
|
|||
|
|
properties:
|
|||
|
|
background_color:
|
|||
|
|
type: string
|
|||
|
|
custom_css:
|
|||
|
|
type: string
|
|||
|
|
custom_js:
|
|||
|
|
type: string
|
|||
|
|
enabled:
|
|||
|
|
type: boolean
|
|||
|
|
favicon_url:
|
|||
|
|
type: string
|
|||
|
|
is_default:
|
|||
|
|
type: boolean
|
|||
|
|
logo_url:
|
|||
|
|
type: string
|
|||
|
|
primary_color:
|
|||
|
|
type: string
|
|||
|
|
secondary_color:
|
|||
|
|
type: string
|
|||
|
|
text_color:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
service.UpdateWebhookRequest:
|
|||
|
|
properties:
|
|||
|
|
events:
|
|||
|
|
items:
|
|||
|
|
$ref: '#/definitions/domain.WebhookEventType'
|
|||
|
|
type: array
|
|||
|
|
name:
|
|||
|
|
type: string
|
|||
|
|
status:
|
|||
|
|
$ref: '#/definitions/domain.WebhookStatus'
|
|||
|
|
url:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
service.UserInfo:
|
|||
|
|
properties:
|
|||
|
|
avatar:
|
|||
|
|
type: string
|
|||
|
|
email:
|
|||
|
|
type: string
|
|||
|
|
id:
|
|||
|
|
type: integer
|
|||
|
|
nickname:
|
|||
|
|
type: string
|
|||
|
|
phone:
|
|||
|
|
type: string
|
|||
|
|
status:
|
|||
|
|
$ref: '#/definitions/domain.UserStatus'
|
|||
|
|
username:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
service.UserStats:
|
|||
|
|
properties:
|
|||
|
|
active_users:
|
|||
|
|
type: integer
|
|||
|
|
disabled_users:
|
|||
|
|
type: integer
|
|||
|
|
inactive_users:
|
|||
|
|
type: integer
|
|||
|
|
locked_users:
|
|||
|
|
type: integer
|
|||
|
|
new_users_month:
|
|||
|
|
type: integer
|
|||
|
|
new_users_today:
|
|||
|
|
type: integer
|
|||
|
|
new_users_week:
|
|||
|
|
type: integer
|
|||
|
|
total_users:
|
|||
|
|
type: integer
|
|||
|
|
type: object
|
|||
|
|
info:
|
|||
|
|
contact: {}
|
|||
|
|
description: API for user management, authentication, authorization, and administration.
|
|||
|
|
title: User Management System API
|
|||
|
|
version: "1.0"
|
|||
|
|
paths:
|
|||
|
|
/api/v1/admin/admins:
|
|||
|
|
get:
|
|||
|
|
description: 获取所有管理员用户列表(仅管理员)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 管理员列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
items:
|
|||
|
|
$ref: '#/definitions/handler.UserResponse'
|
|||
|
|
type: array
|
|||
|
|
type: object
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取管理员列表
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 创建新管理员账号(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 管理员信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.CreateAdminRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"201":
|
|||
|
|
description: 管理员创建成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.UserResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 创建管理员
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
/api/v1/admin/admins/{id}:
|
|||
|
|
delete:
|
|||
|
|
description: 删除管理员角色(最后管理员保护、自删保护)(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 用户ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 管理员已移除
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 无效的用户ID
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"409":
|
|||
|
|
description: 无法删除(最后管理员或自删)
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 删除管理员
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
/api/v1/admin/devices:
|
|||
|
|
get:
|
|||
|
|
description: 获取所有设备列表(仅管理员),支持游标分页和偏移分页
|
|||
|
|
parameters:
|
|||
|
|
- description: 游标分页游标
|
|||
|
|
in: query
|
|||
|
|
name: cursor
|
|||
|
|
type: string
|
|||
|
|
- description: 每页数量(游标模式)
|
|||
|
|
in: query
|
|||
|
|
name: size
|
|||
|
|
type: integer
|
|||
|
|
- description: 页码
|
|||
|
|
in: query
|
|||
|
|
name: page
|
|||
|
|
type: integer
|
|||
|
|
- description: 每页数量
|
|||
|
|
in: query
|
|||
|
|
name: page_size
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 设备列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.DeviceListResponse'
|
|||
|
|
type: object
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取所有设备列表
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
/api/v1/admin/settings:
|
|||
|
|
get:
|
|||
|
|
description: 获取系统配置、安全设置和功能开关信息
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: OK
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/service.SystemSettings'
|
|||
|
|
type: object
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取系统设置
|
|||
|
|
tags:
|
|||
|
|
- 系统设置
|
|||
|
|
/api/v1/admin/stats/dashboard:
|
|||
|
|
get:
|
|||
|
|
description: 获取系统仪表盘统计数据(仅管理员)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 仪表盘数据
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/service.DashboardStats'
|
|||
|
|
type: object
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取仪表盘统计
|
|||
|
|
tags:
|
|||
|
|
- 统计
|
|||
|
|
/api/v1/admin/stats/users:
|
|||
|
|
get:
|
|||
|
|
description: 获取用户统计数据(仅管理员)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 用户统计数据
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/service.UserStats'
|
|||
|
|
type: object
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取用户统计
|
|||
|
|
tags:
|
|||
|
|
- 统计
|
|||
|
|
/api/v1/admin/users/export:
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 导出用户数据为 CSV 或 Excel 格式
|
|||
|
|
parameters:
|
|||
|
|
- default: csv
|
|||
|
|
description: 导出格式
|
|||
|
|
enum:
|
|||
|
|
- csv
|
|||
|
|
- excel
|
|||
|
|
in: query
|
|||
|
|
name: format
|
|||
|
|
type: string
|
|||
|
|
- description: 导出字段,逗号分隔
|
|||
|
|
in: query
|
|||
|
|
name: fields
|
|||
|
|
type: string
|
|||
|
|
- description: 关键词过滤
|
|||
|
|
in: query
|
|||
|
|
name: keyword
|
|||
|
|
type: string
|
|||
|
|
- description: 用户状态过滤
|
|||
|
|
in: query
|
|||
|
|
name: status
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 用户数据文件
|
|||
|
|
schema:
|
|||
|
|
type: file
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 导出用户数据
|
|||
|
|
tags:
|
|||
|
|
- 数据导入导出
|
|||
|
|
/api/v1/admin/users/import:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- multipart/form-data
|
|||
|
|
description: 从 CSV 或 Excel 文件导入用户数据
|
|||
|
|
parameters:
|
|||
|
|
- description: 导入文件
|
|||
|
|
in: formData
|
|||
|
|
name: file
|
|||
|
|
required: true
|
|||
|
|
type: file
|
|||
|
|
- default: csv
|
|||
|
|
description: 文件格式
|
|||
|
|
enum:
|
|||
|
|
- csv
|
|||
|
|
- excel
|
|||
|
|
in: query
|
|||
|
|
name: format
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 导入结果
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 导入用户数据
|
|||
|
|
tags:
|
|||
|
|
- 数据导入导出
|
|||
|
|
/api/v1/admin/users/import/template:
|
|||
|
|
get:
|
|||
|
|
description: 下载用户批量导入的 CSV 或 Excel 模板
|
|||
|
|
parameters:
|
|||
|
|
- default: csv
|
|||
|
|
description: 模板格式
|
|||
|
|
enum:
|
|||
|
|
- csv
|
|||
|
|
- excel
|
|||
|
|
in: query
|
|||
|
|
name: format
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 导入模板文件
|
|||
|
|
schema:
|
|||
|
|
type: file
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取用户导入模板
|
|||
|
|
tags:
|
|||
|
|
- 数据导入导出
|
|||
|
|
/api/v1/auth/2fa/disable:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 输入验证码禁用 TOTP 两步验证
|
|||
|
|
parameters:
|
|||
|
|
- description: 验证码
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.DisableTOTPRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 禁用成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证或验证码错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 禁用 TOTP 两步验证
|
|||
|
|
tags:
|
|||
|
|
- 两步验证
|
|||
|
|
/api/v1/auth/2fa/enable:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 输入验证码启用 TOTP 两步验证
|
|||
|
|
parameters:
|
|||
|
|
- description: 验证码
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.EnableTOTPRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 启用成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证或验证码错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 启用 TOTP 两步验证
|
|||
|
|
tags:
|
|||
|
|
- 两步验证
|
|||
|
|
/api/v1/auth/2fa/setup:
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 为当前用户设置 TOTP 两步验证,返回密钥和二维码
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: TOTP设置信息
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.TOTPSetupResponse'
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 设置 TOTP 两步验证
|
|||
|
|
tags:
|
|||
|
|
- 两步验证
|
|||
|
|
/api/v1/auth/2fa/status:
|
|||
|
|
get:
|
|||
|
|
description: 获取当前用户的TOTP两步验证状态
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: TOTP状态
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.TOTPStatusResponse'
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取TOTP状态
|
|||
|
|
tags:
|
|||
|
|
- 两步验证
|
|||
|
|
/api/v1/auth/2fa/verify:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 在登录或其他敏感操作时验证 TOTP 验证码
|
|||
|
|
parameters:
|
|||
|
|
- description: 验证码
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.VerifyTOTPRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 验证结果
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.VerifyTOTPResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证或验证码错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 验证 TOTP 验证码
|
|||
|
|
tags:
|
|||
|
|
- 两步验证
|
|||
|
|
/api/v1/auth/activate-email:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 使用邮箱激活token激活用户账号
|
|||
|
|
parameters:
|
|||
|
|
- description: 激活请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.ActivateEmailRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 激活成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: token缺失
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: token无效或已过期
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 激活用户邮箱
|
|||
|
|
tags:
|
|||
|
|
- 邮箱认证
|
|||
|
|
/api/v1/auth/bootstrap-admin:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 在系统未配置管理员时,创建第一个管理员账号(需要BOOTSTRAP_SECRET)
|
|||
|
|
parameters:
|
|||
|
|
- description: 引导密钥
|
|||
|
|
in: header
|
|||
|
|
name: X-Bootstrap-Secret
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 管理员信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.BootstrapAdminRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"201":
|
|||
|
|
description: 管理员创建成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/service.UserInfo'
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 引导密钥无效
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 引导初始化未授权
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BootstrapSecret: []
|
|||
|
|
summary: 引导初始化管理员账号
|
|||
|
|
tags:
|
|||
|
|
- 系统初始化
|
|||
|
|
/api/v1/auth/capabilities:
|
|||
|
|
get:
|
|||
|
|
description: 返回系统支持的认证方式和配置(如是否需要邮件激活、是否支持OAuth等)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 认证能力配置
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/service.AuthCapabilities'
|
|||
|
|
type: object
|
|||
|
|
summary: 获取系统认证能力
|
|||
|
|
tags:
|
|||
|
|
- 认证
|
|||
|
|
/api/v1/auth/captcha:
|
|||
|
|
get:
|
|||
|
|
description: 生成图形验证码
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 验证码信息
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.CaptchaResponse'
|
|||
|
|
type: object
|
|||
|
|
summary: 生成验证码
|
|||
|
|
tags:
|
|||
|
|
- 验证码
|
|||
|
|
/api/v1/auth/captcha/image:
|
|||
|
|
get:
|
|||
|
|
description: 根据captcha_id获取验证码图片(当前未实现)
|
|||
|
|
parameters:
|
|||
|
|
- description: 验证码ID
|
|||
|
|
in: query
|
|||
|
|
name: captcha_id
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 验证码图片
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 获取验证码图片
|
|||
|
|
tags:
|
|||
|
|
- 验证码
|
|||
|
|
/api/v1/auth/captcha/verify:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 验证用户输入的验证码是否正确
|
|||
|
|
parameters:
|
|||
|
|
- description: 验证码信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.VerifyCaptchaRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 验证成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.VerifyResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 验证码无效
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 验证验证码
|
|||
|
|
tags:
|
|||
|
|
- 验证码
|
|||
|
|
/api/v1/auth/csrf-token:
|
|||
|
|
get:
|
|||
|
|
description: 由于系统使用JWT Bearer Token认证,不存在CSRF风险,返回空token
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: CSRF token(为空)
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.CSRFTokenResponse'
|
|||
|
|
type: object
|
|||
|
|
summary: 获取CSRF令牌
|
|||
|
|
tags:
|
|||
|
|
- 认证
|
|||
|
|
/api/v1/auth/forgot-password:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 请求密码重置邮件
|
|||
|
|
parameters:
|
|||
|
|
- description: 邮箱地址
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.ForgotPasswordRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 密码重置邮件已发送
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 忘记密码
|
|||
|
|
tags:
|
|||
|
|
- 密码重置
|
|||
|
|
/api/v1/auth/forgot-password/phone:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 向绑定的手机号发送短信验证码用于重置密码
|
|||
|
|
parameters:
|
|||
|
|
- description: 手机号
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.ForgotPasswordByPhoneRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 验证码发送成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"503":
|
|||
|
|
description: 短信服务未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 发送短信验证码(忘记密码)
|
|||
|
|
tags:
|
|||
|
|
- 密码重置
|
|||
|
|
/api/v1/auth/login:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 用户使用账号密码登录,支持多种认证方式(用户名/邮箱/手机号)
|
|||
|
|
parameters:
|
|||
|
|
- description: 登录请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.LoginRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 登录成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/service.LoginResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 认证失败
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
"429":
|
|||
|
|
description: 登录尝试过多
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
summary: 用户登录
|
|||
|
|
tags:
|
|||
|
|
- 认证
|
|||
|
|
/api/v1/auth/login/code:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 使用手机号和短信验证码登录(带设备信息以支持设备信任链路)
|
|||
|
|
parameters:
|
|||
|
|
- description: 登录请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.SMSLoginRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 登录成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 验证码错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"503":
|
|||
|
|
description: 短信登录未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 短信验证码登录
|
|||
|
|
tags:
|
|||
|
|
- 短信验证
|
|||
|
|
/api/v1/auth/login/email-code:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 使用邮箱和验证码完成登录
|
|||
|
|
parameters:
|
|||
|
|
- description: 登录请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.LoginByEmailCodeRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 登录成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/service.LoginResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 验证码错误或已过期
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 邮箱验证码登录
|
|||
|
|
tags:
|
|||
|
|
- 邮箱认证
|
|||
|
|
/api/v1/auth/login/totp-verify:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 当登录返回requires_totp=true时,使用此接口完成TOTP验证
|
|||
|
|
parameters:
|
|||
|
|
- description: TOTP验证请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.TOTPVerifyRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 验证成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/service.LoginResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: TOTP验证失败
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: TOTP验证(密码登录后)
|
|||
|
|
tags:
|
|||
|
|
- 认证
|
|||
|
|
/api/v1/auth/logout:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 使当前 access_token 和 refresh_token 失效
|
|||
|
|
parameters:
|
|||
|
|
- description: 登出请求(token可从header获取)
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.LogoutRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 登出成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 用户登出
|
|||
|
|
tags:
|
|||
|
|
- 认证
|
|||
|
|
/api/v1/auth/oauth/{provider}:
|
|||
|
|
get:
|
|||
|
|
description: 发起OAuth登录流程(当前未配置)
|
|||
|
|
parameters:
|
|||
|
|
- description: OAuth提供商(如 github, google)
|
|||
|
|
in: path
|
|||
|
|
name: provider
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: OAuth未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: OAuth登录初始化
|
|||
|
|
tags:
|
|||
|
|
- OAuth
|
|||
|
|
/api/v1/auth/oauth/{provider}/callback:
|
|||
|
|
get:
|
|||
|
|
description: 处理OAuth provider回调(当前未配置)
|
|||
|
|
parameters:
|
|||
|
|
- description: OAuth提供商
|
|||
|
|
in: path
|
|||
|
|
name: provider
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: OAuth未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: OAuth回调处理
|
|||
|
|
tags:
|
|||
|
|
- OAuth
|
|||
|
|
/api/v1/auth/oauth/exchange:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 使用OAuth code交换access_token(当前未配置)
|
|||
|
|
parameters:
|
|||
|
|
- description: OAuth提供商
|
|||
|
|
in: path
|
|||
|
|
name: provider
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: OAuth未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: OAuth令牌交换
|
|||
|
|
tags:
|
|||
|
|
- OAuth
|
|||
|
|
/api/v1/auth/oauth/providers:
|
|||
|
|
get:
|
|||
|
|
description: 返回系统已配置并启用的OAuth提供商列表
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 提供商列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.OAuthProvidersResponse'
|
|||
|
|
type: object
|
|||
|
|
summary: 获取OAuth提供商列表
|
|||
|
|
tags:
|
|||
|
|
- OAuth
|
|||
|
|
/api/v1/auth/password/validate:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 验证密码重置链接中的 Token 是否有效
|
|||
|
|
parameters:
|
|||
|
|
- description: 重置 Token
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.ValidateResetTokenRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: Token验证结果
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.ValidateTokenResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 验证密码重置 Token
|
|||
|
|
tags:
|
|||
|
|
- 密码重置
|
|||
|
|
/api/v1/auth/refresh:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 使用 refresh_token 获取新的 access_token
|
|||
|
|
parameters:
|
|||
|
|
- description: 刷新令牌请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.RefreshTokenRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 刷新成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/service.LoginResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: refresh_token无效或已过期
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
summary: 刷新访问令牌
|
|||
|
|
tags:
|
|||
|
|
- 认证
|
|||
|
|
/api/v1/auth/register:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 用户注册新账号,支持用户名+密码或手机号注册
|
|||
|
|
parameters:
|
|||
|
|
- description: 注册请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.RegisterRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"201":
|
|||
|
|
description: 注册成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/service.UserInfo'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
"409":
|
|||
|
|
description: 用户已存在
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
summary: 用户注册
|
|||
|
|
tags:
|
|||
|
|
- 认证
|
|||
|
|
/api/v1/auth/resend-activation:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 重新发送账号激活邮件(防枚举:无论邮箱是否注册都返回成功)
|
|||
|
|
parameters:
|
|||
|
|
- description: 邮箱地址
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.ResendActivationRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 激活邮件已发送(如果邮箱已注册)
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 邮箱格式错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 重发激活邮件
|
|||
|
|
tags:
|
|||
|
|
- 邮箱认证
|
|||
|
|
/api/v1/auth/reset-password:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 使用 Token 重置密码
|
|||
|
|
parameters:
|
|||
|
|
- description: 重置请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.ResetPasswordRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 密码重置成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 重置密码
|
|||
|
|
tags:
|
|||
|
|
- 密码重置
|
|||
|
|
/api/v1/auth/reset-password/phone:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 使用短信验证码重置登录密码
|
|||
|
|
parameters:
|
|||
|
|
- description: 重置请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.ResetPasswordByPhoneRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 密码重置成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 验证码错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"503":
|
|||
|
|
description: 短信服务未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 通过短信验证码重置密码
|
|||
|
|
tags:
|
|||
|
|
- 密码重置
|
|||
|
|
/api/v1/auth/send-code:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 向指定手机号发送短信验证码(用于注册或登录)
|
|||
|
|
parameters:
|
|||
|
|
- description: 发送验证码请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.SendCodeRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 发送成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"503":
|
|||
|
|
description: 短信服务未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 发送短信验证码
|
|||
|
|
tags:
|
|||
|
|
- 短信验证
|
|||
|
|
/api/v1/auth/send-email-code:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 发送邮箱登录验证码(防枚举:无论邮箱是否注册都返回成功)
|
|||
|
|
parameters:
|
|||
|
|
- description: 邮箱地址
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.SendEmailCodeRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 验证码已发送
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 邮箱格式错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 发送邮箱验证码
|
|||
|
|
tags:
|
|||
|
|
- 邮箱认证
|
|||
|
|
/api/v1/auth/userinfo:
|
|||
|
|
get:
|
|||
|
|
description: 获取已登录用户的详细信息
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 用户信息
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/service.UserInfo'
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
code:
|
|||
|
|
type: integer
|
|||
|
|
message:
|
|||
|
|
type: string
|
|||
|
|
type: object
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取当前用户信息
|
|||
|
|
tags:
|
|||
|
|
- 认证
|
|||
|
|
/api/v1/custom-fields:
|
|||
|
|
get:
|
|||
|
|
description: 获取所有自定义字段定义列表
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 字段列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
items:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerCustomField'
|
|||
|
|
type: array
|
|||
|
|
type: object
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取自定义字段列表
|
|||
|
|
tags:
|
|||
|
|
- 自定义字段
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 创建新的自定义字段定义(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 字段定义
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.CreateFieldRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"201":
|
|||
|
|
description: 创建成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerCustomField'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 创建自定义字段
|
|||
|
|
tags:
|
|||
|
|
- 自定义字段
|
|||
|
|
/api/v1/custom-fields/{id}:
|
|||
|
|
delete:
|
|||
|
|
description: 删除自定义字段定义(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 字段ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 删除成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 字段不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 删除自定义字段
|
|||
|
|
tags:
|
|||
|
|
- 自定义字段
|
|||
|
|
get:
|
|||
|
|
description: 根据ID获取自定义字段定义
|
|||
|
|
parameters:
|
|||
|
|
- description: 字段ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 字段信息
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerCustomField'
|
|||
|
|
type: object
|
|||
|
|
"404":
|
|||
|
|
description: 字段不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取自定义字段详情
|
|||
|
|
tags:
|
|||
|
|
- 自定义字段
|
|||
|
|
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/service.UpdateFieldRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 更新成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerCustomField'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 字段不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新自定义字段
|
|||
|
|
tags:
|
|||
|
|
- 自定义字段
|
|||
|
|
/api/v1/devices:
|
|||
|
|
get:
|
|||
|
|
description: 获取当前用户的所有设备记录
|
|||
|
|
parameters:
|
|||
|
|
- description: 页码
|
|||
|
|
in: query
|
|||
|
|
name: page
|
|||
|
|
type: integer
|
|||
|
|
- description: 每页数量
|
|||
|
|
in: query
|
|||
|
|
name: page_size
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 设备列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.DeviceListResponse'
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取当前用户的设备列表
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 当前用户创建设备记录
|
|||
|
|
parameters:
|
|||
|
|
- description: 设备信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.CreateDeviceRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"201":
|
|||
|
|
description: 设备创建成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerDevice'
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 创建设备记录
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
/api/v1/devices/{id}:
|
|||
|
|
delete:
|
|||
|
|
description: 删除设备记录
|
|||
|
|
parameters:
|
|||
|
|
- description: 设备ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 删除成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 设备不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 删除设备
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
get:
|
|||
|
|
description: 根据ID获取设备详细信息
|
|||
|
|
parameters:
|
|||
|
|
- description: 设备ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 设备信息
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerDevice'
|
|||
|
|
type: object
|
|||
|
|
"404":
|
|||
|
|
description: 设备不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取设备详情
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
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/service.UpdateDeviceRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 更新成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerDevice'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 设备不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新设备信息
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
/api/v1/devices/{id}/status:
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 更新设备状态(active/inactive)
|
|||
|
|
parameters:
|
|||
|
|
- description: 设备ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
- description: 状态信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.UpdateDeviceStatusRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 状态更新成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 无效的状态值
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 设备不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新设备状态
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
/api/v1/devices/{id}/trust:
|
|||
|
|
delete:
|
|||
|
|
description: 取消设备的信任状态
|
|||
|
|
parameters:
|
|||
|
|
- description: 设备ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 取消成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 设备不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 取消设备信任
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
post:
|
|||
|
|
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/handler.TrustDeviceRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 设置成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 设备不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 设置设备为信任设备
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
/api/v1/devices/by-device-id/{deviceId}/trust:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 根据设备唯一标识字符串设置设备为信任状态
|
|||
|
|
parameters:
|
|||
|
|
- description: 设备唯一标识
|
|||
|
|
in: path
|
|||
|
|
name: deviceId
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 信任配置
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.TrustDeviceRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 设置成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 根据设备标识设置信任
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
/api/v1/devices/me/logout-others:
|
|||
|
|
post:
|
|||
|
|
description: 登出当前用户除指定设备外的所有其他设备
|
|||
|
|
parameters:
|
|||
|
|
- description: 当前设备ID
|
|||
|
|
in: header
|
|||
|
|
name: X-Device-ID
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 登出成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 无效的设备ID
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 登出其他设备
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
/api/v1/devices/me/trusted:
|
|||
|
|
get:
|
|||
|
|
description: 获取当前用户的信任设备列表
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 信任设备列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
items:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerDevice'
|
|||
|
|
type: array
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取信任设备列表
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
/api/v1/devices/users/{id}:
|
|||
|
|
get:
|
|||
|
|
description: 获取指定用户的设备列表(仅本人或管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 用户ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
- description: 页码
|
|||
|
|
in: query
|
|||
|
|
name: page
|
|||
|
|
type: integer
|
|||
|
|
- description: 每页数量
|
|||
|
|
in: query
|
|||
|
|
name: page_size
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 设备列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.DeviceListResponse'
|
|||
|
|
type: object
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取用户设备列表
|
|||
|
|
tags:
|
|||
|
|
- 设备管理
|
|||
|
|
/api/v1/logs/login:
|
|||
|
|
get:
|
|||
|
|
description: 获取所有登录日志(仅管理员),支持游标分页和偏移分页
|
|||
|
|
parameters:
|
|||
|
|
- description: 游标分页游标
|
|||
|
|
in: query
|
|||
|
|
name: cursor
|
|||
|
|
type: string
|
|||
|
|
- description: 每页数量(游标模式)
|
|||
|
|
in: query
|
|||
|
|
name: size
|
|||
|
|
type: integer
|
|||
|
|
- description: 页码
|
|||
|
|
in: query
|
|||
|
|
name: page
|
|||
|
|
type: integer
|
|||
|
|
- description: 每页数量
|
|||
|
|
in: query
|
|||
|
|
name: page_size
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 登录日志列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.LoginLogListResponse'
|
|||
|
|
type: object
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取登录日志列表
|
|||
|
|
tags:
|
|||
|
|
- 日志
|
|||
|
|
/api/v1/logs/login/export:
|
|||
|
|
get:
|
|||
|
|
description: 导出登录日志为 CSV 文件
|
|||
|
|
parameters:
|
|||
|
|
- description: 开始时间
|
|||
|
|
in: query
|
|||
|
|
name: start_time
|
|||
|
|
type: string
|
|||
|
|
- description: 结束时间
|
|||
|
|
in: query
|
|||
|
|
name: end_time
|
|||
|
|
type: string
|
|||
|
|
- description: 用户ID
|
|||
|
|
format: int64
|
|||
|
|
in: query
|
|||
|
|
name: user_id
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: CSV文件
|
|||
|
|
schema:
|
|||
|
|
type: file
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 导出登录日志
|
|||
|
|
tags:
|
|||
|
|
- 日志
|
|||
|
|
/api/v1/logs/login/me:
|
|||
|
|
get:
|
|||
|
|
description: 获取当前用户的登录日志
|
|||
|
|
parameters:
|
|||
|
|
- description: 页码
|
|||
|
|
in: query
|
|||
|
|
name: page
|
|||
|
|
type: integer
|
|||
|
|
- description: 每页数量
|
|||
|
|
in: query
|
|||
|
|
name: page_size
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 登录日志列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.LoginLogListResponse'
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取登录日志
|
|||
|
|
tags:
|
|||
|
|
- 日志
|
|||
|
|
/api/v1/logs/operation:
|
|||
|
|
get:
|
|||
|
|
description: 获取所有操作日志(仅管理员),支持游标分页和偏移分页
|
|||
|
|
parameters:
|
|||
|
|
- description: 游标分页游标
|
|||
|
|
in: query
|
|||
|
|
name: cursor
|
|||
|
|
type: string
|
|||
|
|
- description: 每页数量(游标模式)
|
|||
|
|
in: query
|
|||
|
|
name: size
|
|||
|
|
type: integer
|
|||
|
|
- description: 页码
|
|||
|
|
in: query
|
|||
|
|
name: page
|
|||
|
|
type: integer
|
|||
|
|
- description: 每页数量
|
|||
|
|
in: query
|
|||
|
|
name: page_size
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 操作日志列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.OperationLogListResponse'
|
|||
|
|
type: object
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取操作日志列表
|
|||
|
|
tags:
|
|||
|
|
- 日志
|
|||
|
|
/api/v1/logs/operation/me:
|
|||
|
|
get:
|
|||
|
|
description: 获取当前用户的操作日志
|
|||
|
|
parameters:
|
|||
|
|
- description: 页码
|
|||
|
|
in: query
|
|||
|
|
name: page
|
|||
|
|
type: integer
|
|||
|
|
- description: 每页数量
|
|||
|
|
in: query
|
|||
|
|
name: page_size
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 操作日志列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.OperationLogListResponse'
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取操作日志
|
|||
|
|
tags:
|
|||
|
|
- 日志
|
|||
|
|
/api/v1/permissions:
|
|||
|
|
get:
|
|||
|
|
description: 获取系统权限列表
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 权限列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
items:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerPermission'
|
|||
|
|
type: array
|
|||
|
|
type: object
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取权限列表
|
|||
|
|
tags:
|
|||
|
|
- 权限管理
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 创建新的权限定义(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 权限信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.CreatePermissionRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"201":
|
|||
|
|
description: 创建成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerPermission'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 创建权限
|
|||
|
|
tags:
|
|||
|
|
- 权限管理
|
|||
|
|
/api/v1/permissions/{id}:
|
|||
|
|
delete:
|
|||
|
|
description: 删除权限定义(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 权限ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 删除成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 权限不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 删除权限
|
|||
|
|
tags:
|
|||
|
|
- 权限管理
|
|||
|
|
get:
|
|||
|
|
description: 根据ID获取权限详细信息
|
|||
|
|
parameters:
|
|||
|
|
- description: 权限ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 权限信息
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerPermission'
|
|||
|
|
type: object
|
|||
|
|
"404":
|
|||
|
|
description: 权限不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取权限详情
|
|||
|
|
tags:
|
|||
|
|
- 权限管理
|
|||
|
|
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/service.UpdatePermissionRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 更新成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerPermission'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 权限不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新权限
|
|||
|
|
tags:
|
|||
|
|
- 权限管理
|
|||
|
|
/api/v1/permissions/{id}/status:
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 更新权限状态(enabled/disabled)(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 权限ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
- description: 状态信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.UpdatePermissionStatusRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 状态更新成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 无效的状态值
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 权限不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新权限状态
|
|||
|
|
tags:
|
|||
|
|
- 权限管理
|
|||
|
|
/api/v1/permissions/tree:
|
|||
|
|
get:
|
|||
|
|
description: 获取系统权限的树形结构
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 权限树
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
items:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerPermission'
|
|||
|
|
type: array
|
|||
|
|
type: object
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取权限树
|
|||
|
|
tags:
|
|||
|
|
- 权限管理
|
|||
|
|
/api/v1/roles:
|
|||
|
|
get:
|
|||
|
|
description: 获取系统角色列表
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 角色列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.RoleListResponse'
|
|||
|
|
type: object
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取角色列表
|
|||
|
|
tags:
|
|||
|
|
- 角色管理
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 创建新角色(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 角色信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.CreateRoleRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"201":
|
|||
|
|
description: 角色创建成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerRole'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 创建角色
|
|||
|
|
tags:
|
|||
|
|
- 角色管理
|
|||
|
|
/api/v1/roles/{id}:
|
|||
|
|
delete:
|
|||
|
|
description: 删除角色(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 角色ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 删除成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 角色不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 删除角色
|
|||
|
|
tags:
|
|||
|
|
- 角色管理
|
|||
|
|
get:
|
|||
|
|
description: 根据ID获取角色详细信息
|
|||
|
|
parameters:
|
|||
|
|
- description: 角色ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 角色信息
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerRole'
|
|||
|
|
type: object
|
|||
|
|
"404":
|
|||
|
|
description: 角色不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取角色详情
|
|||
|
|
tags:
|
|||
|
|
- 角色管理
|
|||
|
|
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/service.UpdateRoleRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 更新成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerRole'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 角色不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新角色
|
|||
|
|
tags:
|
|||
|
|
- 角色管理
|
|||
|
|
/api/v1/roles/{id}/permissions:
|
|||
|
|
get:
|
|||
|
|
description: 获取角色的权限列表
|
|||
|
|
parameters:
|
|||
|
|
- description: 角色ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 权限列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
items:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerPermission'
|
|||
|
|
type: array
|
|||
|
|
type: object
|
|||
|
|
"404":
|
|||
|
|
description: 角色不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取角色权限列表
|
|||
|
|
tags:
|
|||
|
|
- 角色管理
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 为角色分配权限(替换现有权限)(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 角色ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
- description: 权限ID列表
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.AssignPermissionsRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 权限分配成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 角色不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 分配角色权限
|
|||
|
|
tags:
|
|||
|
|
- 角色管理
|
|||
|
|
/api/v1/roles/{id}/status:
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 更新角色状态(enabled/disabled)(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 角色ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
- description: 状态信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.UpdateRoleStatusRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 状态更新成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 无效的状态值
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 角色不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新角色状态
|
|||
|
|
tags:
|
|||
|
|
- 角色管理
|
|||
|
|
/api/v1/sso/authorize:
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 处理 SSO 授权请求,返回授权码
|
|||
|
|
parameters:
|
|||
|
|
- description: 客户端ID
|
|||
|
|
in: query
|
|||
|
|
name: client_id
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 回调地址
|
|||
|
|
in: query
|
|||
|
|
name: redirect_uri
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 响应类型
|
|||
|
|
enum:
|
|||
|
|
- code
|
|||
|
|
in: query
|
|||
|
|
name: response_type
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 授权范围
|
|||
|
|
in: query
|
|||
|
|
name: scope
|
|||
|
|
type: string
|
|||
|
|
- description: 状态参数
|
|||
|
|
in: query
|
|||
|
|
name: state
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"302":
|
|||
|
|
description: 重定向到回调地址
|
|||
|
|
schema:
|
|||
|
|
type: string
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: SSO 授权
|
|||
|
|
tags:
|
|||
|
|
- SSO
|
|||
|
|
/api/v1/sso/introspect:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/x-www-form-urlencoded
|
|||
|
|
description: 验证 Access Token 的有效性并返回相关信息
|
|||
|
|
parameters:
|
|||
|
|
- description: Access Token
|
|||
|
|
in: formData
|
|||
|
|
name: token
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 客户端ID
|
|||
|
|
in: formData
|
|||
|
|
name: client_id
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 客户端密钥
|
|||
|
|
in: formData
|
|||
|
|
name: client_secret
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: Token信息
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.IntrospectResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 客户端认证失败
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 验证 Access Token
|
|||
|
|
tags:
|
|||
|
|
- SSO
|
|||
|
|
/api/v1/sso/revoke:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/x-www-form-urlencoded
|
|||
|
|
description: 撤销指定的 Access Token
|
|||
|
|
parameters:
|
|||
|
|
- description: Access Token
|
|||
|
|
in: formData
|
|||
|
|
name: token
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 客户端ID
|
|||
|
|
in: formData
|
|||
|
|
name: client_id
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 客户端密钥
|
|||
|
|
in: formData
|
|||
|
|
name: client_secret
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 撤销成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 客户端认证失败
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 撤销 Access Token
|
|||
|
|
tags:
|
|||
|
|
- SSO
|
|||
|
|
/api/v1/sso/token:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/x-www-form-urlencoded
|
|||
|
|
description: 使用授权码获取 Access Token(授权码模式第二步)
|
|||
|
|
parameters:
|
|||
|
|
- description: 授权类型
|
|||
|
|
enum:
|
|||
|
|
- authorization_code
|
|||
|
|
in: formData
|
|||
|
|
name: grant_type
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 授权码
|
|||
|
|
in: formData
|
|||
|
|
name: code
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 回调地址
|
|||
|
|
in: formData
|
|||
|
|
name: redirect_uri
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 客户端ID
|
|||
|
|
in: formData
|
|||
|
|
name: client_id
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
- description: 客户端密钥
|
|||
|
|
in: formData
|
|||
|
|
name: client_secret
|
|||
|
|
required: true
|
|||
|
|
type: string
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 访问令牌响应
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.TokenResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 客户端认证失败
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 获取 Access Token
|
|||
|
|
tags:
|
|||
|
|
- SSO
|
|||
|
|
/api/v1/sso/userinfo:
|
|||
|
|
get:
|
|||
|
|
description: 获取当前通过 SSO Access Token 授权的用户信息
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 用户信息
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.UserInfoResponse'
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取 SSO 用户信息
|
|||
|
|
tags:
|
|||
|
|
- SSO
|
|||
|
|
/api/v1/theme/active:
|
|||
|
|
get:
|
|||
|
|
description: 获取当前系统正在使用的主题(公开接口)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 当前生效主题
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerTheme'
|
|||
|
|
type: object
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 获取当前生效的主题
|
|||
|
|
tags:
|
|||
|
|
- 主题管理
|
|||
|
|
/api/v1/themes:
|
|||
|
|
get:
|
|||
|
|
description: 获取所有主题(包括已禁用的)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 主题列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
items:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerTheme'
|
|||
|
|
type: array
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取所有主题
|
|||
|
|
tags:
|
|||
|
|
- 主题管理
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 创建新的主题配置
|
|||
|
|
parameters:
|
|||
|
|
- description: 主题信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.CreateThemeRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"201":
|
|||
|
|
description: 主题创建成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerTheme'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 创建主题
|
|||
|
|
tags:
|
|||
|
|
- 主题管理
|
|||
|
|
/api/v1/themes/{id}:
|
|||
|
|
delete:
|
|||
|
|
description: 删除指定的主题
|
|||
|
|
parameters:
|
|||
|
|
- description: 主题ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 主题删除成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 删除主题
|
|||
|
|
tags:
|
|||
|
|
- 主题管理
|
|||
|
|
get:
|
|||
|
|
description: 根据ID获取主题详情
|
|||
|
|
parameters:
|
|||
|
|
- description: 主题ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 主题详情
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerTheme'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取主题
|
|||
|
|
tags:
|
|||
|
|
- 主题管理
|
|||
|
|
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/service.UpdateThemeRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 主题更新成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerTheme'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新主题
|
|||
|
|
tags:
|
|||
|
|
- 主题管理
|
|||
|
|
/api/v1/themes/default:
|
|||
|
|
get:
|
|||
|
|
description: 获取系统默认主题
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 默认主题
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerTheme'
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取默认主题
|
|||
|
|
tags:
|
|||
|
|
- 主题管理
|
|||
|
|
/api/v1/themes/default/{id}:
|
|||
|
|
put:
|
|||
|
|
description: 将指定主题设为系统默认主题
|
|||
|
|
parameters:
|
|||
|
|
- description: 主题ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 设置成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 设置默认主题
|
|||
|
|
tags:
|
|||
|
|
- 主题管理
|
|||
|
|
/api/v1/users:
|
|||
|
|
get:
|
|||
|
|
description: 获取用户列表,支持游标分页和偏移分页
|
|||
|
|
parameters:
|
|||
|
|
- description: 游标分页游标
|
|||
|
|
in: query
|
|||
|
|
name: cursor
|
|||
|
|
type: string
|
|||
|
|
- description: 每页大小
|
|||
|
|
in: query
|
|||
|
|
name: size
|
|||
|
|
type: integer
|
|||
|
|
- description: 偏移分页偏移量
|
|||
|
|
in: query
|
|||
|
|
name: offset
|
|||
|
|
type: integer
|
|||
|
|
- description: 每页大小
|
|||
|
|
in: query
|
|||
|
|
name: limit
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 用户列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.UserListResponse'
|
|||
|
|
type: object
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取用户列表
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 创建新用户账号(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 用户信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.CreateUserRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"201":
|
|||
|
|
description: 用户创建成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.UserResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 创建用户
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
/api/v1/users/{id}:
|
|||
|
|
delete:
|
|||
|
|
description: 删除用户账号(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 用户ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 删除成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 用户不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 删除用户
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
get:
|
|||
|
|
description: 根据ID获取用户详细信息
|
|||
|
|
parameters:
|
|||
|
|
- description: 用户ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 用户信息
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.UserResponse'
|
|||
|
|
type: object
|
|||
|
|
"404":
|
|||
|
|
description: 用户不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取用户详情
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
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/handler.UpdateUserRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 更新成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.UserResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 用户不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新用户信息
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
/api/v1/users/{id}/avatar:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- multipart/form-data
|
|||
|
|
description: 上传并更新用户头像(仅本人或管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 用户ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
- description: 头像文件(最大5MB,支持jpg/jpeg/png/gif/webp)
|
|||
|
|
in: formData
|
|||
|
|
name: avatar
|
|||
|
|
required: true
|
|||
|
|
type: file
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 上传成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.AvatarResponse'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 文件无效或大小超限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 用户不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 上传用户头像
|
|||
|
|
tags:
|
|||
|
|
- 用户头像
|
|||
|
|
/api/v1/users/{id}/password:
|
|||
|
|
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/handler.UpdatePasswordRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 密码修改成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 用户不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 修改用户密码
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
/api/v1/users/{id}/roles:
|
|||
|
|
get:
|
|||
|
|
description: 获取指定用户的角色列表(仅本人或管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 用户ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 角色列表
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
items:
|
|||
|
|
$ref: '#/definitions/handler.SwaggerRole'
|
|||
|
|
type: array
|
|||
|
|
type: object
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 用户不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取用户角色列表
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 为用户分配角色(替换现有角色)(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 用户ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
- description: 角色ID列表
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.AssignRolesRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 角色分配成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 用户不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 分配用户角色
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
/api/v1/users/{id}/status:
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 更新用户账号状态(active/inactive/locked/disabled)(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 用户ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
- description: 状态信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.UpdateStatusRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 状态更新成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 无效的状态值
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"404":
|
|||
|
|
description: 用户不存在
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新用户状态
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
/api/v1/users/batch:
|
|||
|
|
delete:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 批量删除多个用户(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 批量删除请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.BatchDeleteRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 批量删除成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 批量删除用户
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
/api/v1/users/batch/status:
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 批量更新多个用户的状态(仅管理员)
|
|||
|
|
parameters:
|
|||
|
|
- description: 批量更新请求
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.BatchUpdateStatusRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 批量更新成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"403":
|
|||
|
|
description: 无权限
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 批量更新用户状态
|
|||
|
|
tags:
|
|||
|
|
- 用户管理
|
|||
|
|
/api/v1/users/me/bind-email:
|
|||
|
|
delete:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 解绑账号关联的邮箱(当前未配置)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 功能未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 解绑邮箱
|
|||
|
|
tags:
|
|||
|
|
- 邮箱绑定
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 使用邮箱验证码绑定账号(当前未配置)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 功能未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 绑定邮箱
|
|||
|
|
tags:
|
|||
|
|
- 邮箱绑定
|
|||
|
|
/api/v1/users/me/bind-email/code:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 发送验证码到邮箱以绑定邮箱(当前未配置)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 功能未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 发送邮箱绑定验证码
|
|||
|
|
tags:
|
|||
|
|
- 邮箱绑定
|
|||
|
|
/api/v1/users/me/bind-phone:
|
|||
|
|
delete:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 解绑账号关联的手机号(当前未配置)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 功能未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 解绑手机号
|
|||
|
|
tags:
|
|||
|
|
- 手机绑定
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 使用手机验证码绑定账号(当前未配置)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 功能未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 绑定手机号
|
|||
|
|
tags:
|
|||
|
|
- 手机绑定
|
|||
|
|
/api/v1/users/me/bind-phone/code:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 发送验证码到手机以绑定手机号(当前未配置)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 功能未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 发送手机绑定验证码
|
|||
|
|
tags:
|
|||
|
|
- 手机绑定
|
|||
|
|
/api/v1/users/me/bind-social:
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 绑定第三方社交账号到当前用户(当前未配置)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 功能未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 绑定社交账号
|
|||
|
|
tags:
|
|||
|
|
- 社交账号
|
|||
|
|
/api/v1/users/me/bind-social/{provider}:
|
|||
|
|
delete:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 解绑当前用户关联的第三方社交账号(当前未配置)
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 功能未配置
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
summary: 解绑社交账号
|
|||
|
|
tags:
|
|||
|
|
- 社交账号
|
|||
|
|
/api/v1/users/me/custom-fields:
|
|||
|
|
get:
|
|||
|
|
description: 获取当前用户的自定义字段值
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 字段值
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/handler.CustomFieldValuesResponse'
|
|||
|
|
type: object
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取用户自定义字段值
|
|||
|
|
tags:
|
|||
|
|
- 自定义字段
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 设置当前用户的自定义字段值
|
|||
|
|
parameters:
|
|||
|
|
- description: 字段值
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.SetUserFieldValuesRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 设置成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 设置用户自定义字段值
|
|||
|
|
tags:
|
|||
|
|
- 自定义字段
|
|||
|
|
/api/v1/users/me/social-accounts:
|
|||
|
|
get:
|
|||
|
|
description: 获取当前用户绑定的第三方社交账号列表
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 社交账号列表
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取已绑定的社交账号列表
|
|||
|
|
tags:
|
|||
|
|
- 社交账号
|
|||
|
|
/api/v1/webhooks:
|
|||
|
|
get:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 获取当前用户的 Webhook 配置列表
|
|||
|
|
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: Webhook列表
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取 Webhook 列表
|
|||
|
|
tags:
|
|||
|
|
- Webhook管理
|
|||
|
|
post:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 创建新的 Webhook 配置
|
|||
|
|
parameters:
|
|||
|
|
- description: Webhook信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.CreateWebhookRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"201":
|
|||
|
|
description: Webhook创建成功
|
|||
|
|
schema:
|
|||
|
|
allOf:
|
|||
|
|
- $ref: '#/definitions/handler.Response'
|
|||
|
|
- properties:
|
|||
|
|
data:
|
|||
|
|
$ref: '#/definitions/domain.Webhook'
|
|||
|
|
type: object
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 创建 Webhook
|
|||
|
|
tags:
|
|||
|
|
- Webhook管理
|
|||
|
|
/api/v1/webhooks/{id}:
|
|||
|
|
delete:
|
|||
|
|
description: 删除指定的 Webhook 配置
|
|||
|
|
parameters:
|
|||
|
|
- description: Webhook ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 删除成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 删除 Webhook
|
|||
|
|
tags:
|
|||
|
|
- Webhook管理
|
|||
|
|
put:
|
|||
|
|
consumes:
|
|||
|
|
- application/json
|
|||
|
|
description: 更新指定 Webhook 的配置
|
|||
|
|
parameters:
|
|||
|
|
- description: Webhook ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
- description: 更新信息
|
|||
|
|
in: body
|
|||
|
|
name: request
|
|||
|
|
required: true
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/service.UpdateWebhookRequest'
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 更新成功
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 更新 Webhook
|
|||
|
|
tags:
|
|||
|
|
- Webhook管理
|
|||
|
|
/api/v1/webhooks/{id}/deliveries:
|
|||
|
|
get:
|
|||
|
|
description: 获取指定 Webhook 的最近投递记录
|
|||
|
|
parameters:
|
|||
|
|
- description: Webhook ID
|
|||
|
|
in: path
|
|||
|
|
name: id
|
|||
|
|
required: true
|
|||
|
|
type: integer
|
|||
|
|
- default: 20
|
|||
|
|
description: 返回记录数量
|
|||
|
|
in: query
|
|||
|
|
name: limit
|
|||
|
|
type: integer
|
|||
|
|
produces:
|
|||
|
|
- application/json
|
|||
|
|
responses:
|
|||
|
|
"200":
|
|||
|
|
description: 投递记录列表
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"400":
|
|||
|
|
description: 请求参数错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"401":
|
|||
|
|
description: 未认证
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
"500":
|
|||
|
|
description: 服务器错误
|
|||
|
|
schema:
|
|||
|
|
$ref: '#/definitions/handler.Response'
|
|||
|
|
security:
|
|||
|
|
- BearerAuth: []
|
|||
|
|
summary: 获取 Webhook 投递记录
|
|||
|
|
tags:
|
|||
|
|
- Webhook管理
|
|||
|
|
schemes:
|
|||
|
|
- http
|
|||
|
|
- https
|
|||
|
|
swagger: "2.0"
|