{"openapi":"3.0.1","info":{"title":"Auth Service","description":"提供身份管理服务以及OAuth2授权服务。身份管理服务包含用户管理、角色管理、权限管理等，OAuth2授权服务包含应用管理、应用授权模式与授权作用域管理等。","contact":{"name":"Hansin1997","url":"https://github.com/Hansin1997","email":"hansin@dustlight.cn"},"license":{"name":"Apache License","url":"http://www.apache.org/licenses/LICENSE-2.0.txt"},"version":"v1"},"externalDocs":{"description":"View on Github","url":"https://github.com/dustlight-cn/auth"},"servers":[{"url":"https://api.dustlight.cn","description":"Generated server url"}],"tags":[{"name":"Authorities","description":"权限资源的增删改查。"},{"name":"Clients","description":"应用的增删改查"},{"name":"Roles","description":"角色的增删改查。"},{"name":"Token","description":"Token 颁发。"},{"name":"OIDC Discovery","description":"OpenID Connect Discovery Endpoint"},{"name":"User","description":"获取当前用户信息，用户注册。"},{"name":"Scopes","description":"授权作用域的增删改查。"},{"name":"Code","description":"验证码相关业务。"},{"name":"Users","description":"用户增删改查、信息更新。"},{"name":"UserInfo","description":"OpenID Connect UserInfo Endpoint"},{"name":"Authorization","description":"OAuth2 应用授权。"},{"name":"GrantTypes","description":"授权模式的增删改查。"}],"paths":{"/v1/users/{uid}/unlock-at":{"put":{"tags":["Users"],"summary":"设置用户解锁日期","description":"设置用户账号的解锁日期，在此日期日前账号不能使用。设置为 NULL 则不锁定。应用和用户需拥有 LOCK_USER 权限。","operationId":"updateUserUnlockAt","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"unlockAt","in":"query","required":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/roles":{"get":{"tags":["Roles"],"summary":"获取用户角色","description":"应用和用户（uid 为当前用户除外）需要 READ_USER 权限。","operationId":"getUserRoles","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Role"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["Roles"],"summary":"为用户添加角色","description":"应用和用户需要 GRANT_USER 权限。","operationId":"setUserRoles","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserRole"}}}},"required":true},"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Roles"],"summary":"删除用户的角色","description":"应用和用户需要 GRANT_USER 权限。","operationId":"deleteUserRoles","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"id","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/phone":{"put":{"tags":["Users"],"summary":"更新用户手机号码","description":"应用和用户需拥有 WRITE_USER_PHONE 权限。","operationId":"updateUserPhone","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"code","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/password":{"put":{"tags":["Users"],"summary":"更新用户密码","description":"应用和用户需拥有 WRITE_USER_PASSWORD 权限。","operationId":"updateUserPassword","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"password","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/nickname":{"put":{"tags":["Users"],"summary":"更新用户昵称","description":"应用和用户（修改自身信息除外）需要拥有 WRITE_USER 权限。","operationId":"updateUserNickname","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"nickname","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/gender":{"put":{"tags":["Users"],"summary":"更新用户性别","description":"应用和用户（修改自身信息除外）需要拥有 WRITE_USER 权限。","operationId":"updateUserGender","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"gender","in":"query","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/expired-at":{"put":{"tags":["Users"],"summary":"设置用户解锁日期","description":"设置用户账号过期日期。设置为 NULL 则无过期时间。应用和用户需拥有 LOCK_USER 权限。","operationId":"updateUserExpiredAt","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"expiredAt","in":"query","required":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/email":{"put":{"tags":["Users"],"summary":"更新用户邮箱","description":"应用和用户需拥有 WRITE_USER_EMAIL 权限。","operationId":"updateUserEmail","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"code","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients/{cid}/types":{"get":{"tags":["GrantTypes"],"summary":"获取应用授权模式","description":"应用和用户（uid 为当前用户除外）需要 READ_CLIENT 权限。","operationId":"getUserClientGrantTypes","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GrantType"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["GrantTypes"],"summary":"添加应用授权模式","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"addUserClientGrantTypes","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"tid","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["GrantTypes"],"summary":"删除应用授权模式","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"deleteUserClientGrantTypes","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"tid","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients/{cid}/secret":{"put":{"tags":["Clients"],"summary":"更新用户应用密钥","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"updateUserClientSecret","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"string"}}}}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients/{cid}/scopes":{"get":{"tags":["Scopes"],"summary":"获取应用授权作用域","description":"应用和用户（uid 为当前用户除外）需要 READ_CLIENT 权限。","operationId":"getUserClientScopes","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Scope"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["Scopes"],"summary":"添加应用授权作用域","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"addUserClientScopes","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"sid","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Scopes"],"summary":"删除应用授权作用域","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"removeUserClientScopes","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"sid","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients/{cid}/roles":{"get":{"tags":["Roles"],"summary":"获取用户角色","description":"应用需要 READ_USER 权限。","operationId":"getUserClientRoles","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Role"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["Roles"],"summary":"为用户添加角色","description":"应用和用户需要 GRANT_USER 权限。","operationId":"setUserClientRoles","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserRole"}}}},"required":true},"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Roles"],"summary":"删除用户的角色","description":"应用和用户需要 GRANT_USER 权限。","operationId":"deleteUserClientRoles","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients/{cid}/redirect":{"put":{"tags":["Clients"],"summary":"更新用户应用回调地址","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"updateUserClientRedirectUri","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"redirectUri","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients/{cid}/name":{"put":{"tags":["Clients"],"summary":"更新用户应用名称","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"updateUserClientName","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients/{cid}/members":{"put":{"tags":["Clients"],"summary":"添加应用成员","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"addUserClientMembers","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"uids","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Clients"],"summary":"移除应用成员","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"removeUserClientMembers","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"uids","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients/{cid}/logo":{"get":{"tags":["Clients"],"summary":"获取用户应用 Logo","description":"应用和用户（uid 为当前用户除外）需要 READ_CLIENT 权限。","operationId":"getUserClientLogo","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"put":{"tags":["Clients"],"summary":"更新用户应用 Logo","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"updateUserClientLogo","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"image/*":{"schema":{"type":"string","format":"binary"}}},"required":true},"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients/{cid}/description":{"put":{"tags":["Clients"],"summary":"更新用户应用描述","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"updateUserClientDescription","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"description","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/ban":{"put":{"tags":["Users"],"summary":"设置用户封禁或解封","description":"封禁或解封用户。应用和用户需拥有 LOCK_USER 权限。","operationId":"updateUserEnabled","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"enabled","in":"query","required":true,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/avatar":{"get":{"tags":["Users"],"summary":"获取用户头像","operationId":"getUserAvatar","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"put":{"tags":["Users"],"summary":"更新用户头像","description":"应用和用户（修改自身信息除外）需要拥有 WRITE_USER 权限。","operationId":"updateUserAvatar","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"image/*":{"schema":{"type":"string","format":"binary"}}},"required":true},"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/user/phone":{"put":{"tags":["User"],"summary":"通过密码更改手机号码","description":"应用需要 WRITE_USER_PHONE 权限。","operationId":"resetPhone","parameters":[{"name":"password","in":"query","required":true,"schema":{"type":"string"}},{"name":"code","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/user/password":{"put":{"tags":["User"],"summary":"通过原密码更改用户密码","description":"应用需要 WRITE_USER_PASSWORD 权限。","operationId":"resetPassword","parameters":[{"name":"oldPassword","in":"query","required":true,"schema":{"type":"string"}},{"name":"newPassword","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/user/email":{"put":{"tags":["User"],"summary":"通过密码更改邮箱","description":"应用需要 WRITE_USER_EMAIL 权限。","operationId":"resetEmail","parameters":[{"name":"password","in":"query","required":true,"schema":{"type":"string"}},{"name":"code","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/types":{"get":{"tags":["GrantTypes"],"summary":"获取授权模式","operationId":"getGrantTypes","parameters":[{"name":"tid","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GrantType"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["GrantTypes"],"summary":"添加或修改授权模式","description":"应用和用户需要 WRITE_TYPE 权限。","operationId":"setGrantTypes","requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GrantType"}}}},"required":true},"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["GrantTypes"],"summary":"删除授权模式","description":"应用和用户需要 WRITE_TYPE 权限。","operationId":"deleteGrantTypes","parameters":[{"name":"tid","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/scopes":{"get":{"tags":["Scopes"],"summary":"获取授权作用域","description":"应用和用户需要 READ_CLIENT 权限。","operationId":"getScopes","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Scope"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["Scopes"],"summary":"修改或添加授权作用域","description":"应用和用户需要 WRITE_SCOPE 权限。","operationId":"setScopes","requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Scope"}}}},"required":true},"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Scopes"],"summary":"删除授权作用域","description":"应用和用户需要 WRITE_SCOPE 权限。","operationId":"deleteScopes","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/roles/{rid}/authorities":{"get":{"tags":["Authorities"],"summary":"获取角色权限","operationId":"getRoleAuthorities","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"type":"string"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["Authorities"],"summary":"添加角色权限","description":"应用和用户需要 GRANT_ROLE 权限。","operationId":"setRoleAuthorities","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"authorityId","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"clientId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Authorities"],"summary":"删除角色权限","description":"应用和用户需要 GRANT_ROLE 权限。","operationId":"deleteRoleAuthorities","parameters":[{"name":"rid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"authorityId","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"clientId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/roles":{"get":{"tags":["Roles"],"summary":"获取角色","operationId":"getRoles","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"clientId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Role"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["Roles"],"summary":"修改或添加角色","description":"应用和用户需要 WRITE_ROLE 权限。","operationId":"setRoles","parameters":[{"name":"clientId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Role"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Role"}}}}}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Roles"],"summary":"删除角色","description":"应用和用户需要 WRITE_ROLE 权限。","operationId":"deleteRoles","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"clientId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/password":{"put":{"tags":["User"],"summary":"邮箱或手机重置密码","operationId":"resetPassword_1","parameters":[{"name":"password","in":"query","required":true,"schema":{"type":"string"}},{"name":"code","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/v1/clients/{cid}/types":{"get":{"tags":["GrantTypes"],"summary":"获取应用授权模式","description":"应用和用户需要 READ_CLIENT 权限。","operationId":"getClientGrantTypes","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GrantType"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["GrantTypes"],"summary":"添加应用授权模式","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"addClientGrantTypes","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"tid","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["GrantTypes"],"summary":"删除应用授权模式","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"deleteClientGrantTypes","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"tid","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/clients/{cid}/status":{"put":{"tags":["Clients"],"summary":"更新应用状态","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"updateClientStatus","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/clients/{cid}/secret":{"put":{"tags":["Clients"],"summary":"更新应用密钥","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"updateClientSecret","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"string"}}}}},"security":[{"AccessToken":[]}]}},"/v1/clients/{cid}/scopes":{"get":{"tags":["Scopes"],"summary":"获取应用授权作用域","description":"应用和用户需要 READ_CLIENT 权限。","operationId":"getClientScopes","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Scope"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["Scopes"],"summary":"添加应用授权作用域","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"addClientScopes","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"sid","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Scopes"],"summary":"删除应用授权作用域","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"removeClientScopes","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"sid","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/clients/{cid}/refresh-token-validity":{"put":{"tags":["Clients"],"summary":"更新应用RefreshToken有效期","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"updateClientRefreshTokenValidity","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"refreshTokenValidity","in":"query","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/clients/{cid}/redirect":{"put":{"tags":["Clients"],"summary":"更新应用回调地址","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"updateClientRedirectUri","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"redirectUri","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/clients/{cid}/name":{"put":{"tags":["Clients"],"summary":"更新应用名称","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"updateClientName","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"name","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/clients/{cid}/members":{"put":{"tags":["Clients"],"summary":"添加应用成员","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"addClientMembers","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"uids","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Clients"],"summary":"移除应用成员","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"removeClientMembers","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"uids","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/clients/{cid}/logo":{"get":{"tags":["Clients"],"summary":"获取应用 Logo","operationId":"getClientLogo","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"put":{"tags":["Clients"],"summary":"更新应用 Logo","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"updateClientLogo","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"image/*":{"schema":{"type":"string","format":"binary"}}},"required":true},"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/clients/{cid}/description":{"put":{"tags":["Clients"],"summary":"更新应用描述","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"updateClientDescription","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"description","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/clients/{cid}/authorities":{"get":{"tags":["Authorities"],"summary":"获取应用权限","description":"应用和用户需要 READ_CLIENT 权限。","operationId":"getClientAuthorities","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"type":"string"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["Authorities"],"summary":"添加应用权限","description":"应用和用户需要 GRANT_CLIENT 权限。","operationId":"setClientAuthorities","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"authorityId","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Authorities"],"summary":"删除应用权限","description":"应用和用户需要 GRANT_CLIENT 权限。","operationId":"deleteClientAuthorities","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"authorityId","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/clients/{cid}/access-token-validity":{"put":{"tags":["Clients"],"summary":"更新应用AccessToken有效期","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"updateClientAccessTokenValidity","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}},{"name":"accessTokenValidity","in":"query","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/authorities":{"get":{"tags":["Authorities"],"summary":"获取权限","operationId":"getAuthorities","parameters":[{"name":"id","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"clientId","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Authority"}}}}}},"security":[{"AccessToken":[]}]},"put":{"tags":["Authorities"],"summary":"修改或添加权限","description":"应用和用户需要 WRITE_AUTHORITY 权限。","operationId":"setAuthorities","parameters":[{"name":"clientId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Authority"}}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Authority"}}}}}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Authorities"],"summary":"删除权限","description":"应用和用户需要 WRITE_AUTHORITY 权限。","operationId":"deleteAuthorities","parameters":[{"name":"clientId","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}},"required":true},"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients":{"get":{"tags":["Clients"],"summary":"查询用户应用","description":"应用和用户（uid 为当前用户除外）需要 READ_CLIENT 权限。","operationId":"getUserClients","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"order","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/QueryResultsClient"}}}}},"security":[{"AccessToken":[]}]},"post":{"tags":["Clients"],"summary":"创建用户应用","description":"应用和用户需要 WRITE_CLIENT 权限，或者应用拥有 WRITE_CLIENT 权限且 uid 为当前用户并拥有 CREATE_CLIENT 权限）","operationId":"createUserClient","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"name","in":"query","required":true,"schema":{"type":"string"}},{"name":"description","in":"query","required":true,"schema":{"type":"string"}},{"name":"redirectUri","in":"query","required":true,"schema":{"type":"string"}},{"name":"scopes","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"grantTypes","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/Client"}}}}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Clients"],"summary":"删除用户应用","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"removeUserClients","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cids","in":"query","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users":{"get":{"tags":["Users"],"summary":"查找用户","description":"查询或者列出用户（取决于有无关键字(q)或者用户ID(uid)），获取公开信息。若应用和用户拥有 READ_USER 权限，则获取完整信息。","operationId":"getUsers","parameters":[{"name":"uid","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}},{"name":"order","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/QueryResultsUser"}}}}},"security":[{"AccessToken":[]}]},"post":{"tags":["Users"],"summary":"创建用户（用户名、邮箱、手机号码不可重复）","description":"应用和用户需要 CREATE_USER 权限。","operationId":"createUser","parameters":[{"name":"username","in":"query","required":true,"schema":{"type":"string"}},{"name":"password","in":"query","required":true,"schema":{"type":"string"}},{"name":"email","in":"query","required":false,"schema":{"type":"string"}},{"name":"phone","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/User"}}}}},"security":[{"AccessToken":[]}]}},"/v1/userinfo":{"get":{"tags":["UserInfo"],"summary":"获取用户信息 (OpenID Connect UserInfo Endpoint)","description":"返回已认证用户的标准 OpenID Connect 用户信息声明","operationId":"getUserInfo","responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}},"security":[{"AccessToken":[]}]},"post":{"tags":["UserInfo"],"summary":"获取用户信息 (POST)","description":"通过 POST 方法返回已认证用户的标准 OpenID Connect 用户信息声明","operationId":"getUserInfoPost","responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}},"security":[{"AccessToken":[]}]}},"/v1/user":{"get":{"tags":["User"],"summary":"获取当前 Token 的用户信息","description":"应用需要拥有 read:user 授权。","operationId":"getTokenUser","responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/User"}}}}},"security":[{"AccessToken":[]}]},"post":{"tags":["User"],"summary":"用户注册（通过邮箱验证码或者手机号）","operationId":"register","parameters":[{"name":"username","in":"query","required":true,"schema":{"type":"string"}},{"name":"password","in":"query","required":true,"schema":{"type":"string"}},{"name":"code","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/User"}}}}}}},"/v1/token/validity":{"get":{"tags":["Token"],"summary":"检查令牌有效性","operationId":"checkOAuthToken","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}},"post":{"tags":["Token"],"summary":"检查令牌有效性","operationId":"checkOAuthTokenPost","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TokenForm"}}}},"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/v1/token":{"post":{"tags":["Token"],"summary":"颁发默认令牌","operationId":"grantToken","parameters":[{"name":"username","in":"query","required":true,"schema":{"type":"string"}},{"name":"password","in":"query","required":true,"schema":{"type":"string"}},{"name":"g-recaptcha-response","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/OAuth2AccessToken"}}}}}},"delete":{"tags":["Token"],"summary":"删除令牌","operationId":"deleteToken","responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/realms/{realm}/oauth/token":{"post":{"tags":["Token"],"summary":"颁发 OAuth2 令牌","operationId":"grantOAuthTokenWithRealm","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string"}},{"name":"grant_type","in":"query","required":false,"schema":{"type":"string","default":"authorization_code","enum":["authorization_code","refresh_token","implicit","client_credentials","password"]}},{"name":"redirect_uri","in":"query","required":false,"schema":{"type":"string"}},{"name":"username","in":"query","required":false,"schema":{"type":"string"}},{"name":"password","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh_token","in":"query","required":false,"schema":{"type":"string"}},{"name":"realm","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/OAuth2AccessToken"}}}}},"security":[{"ClientCredentials":[]}]}},"/v1/oauth/token":{"post":{"tags":["Token"],"summary":"颁发 OAuth2 令牌","operationId":"grantOAuthToken","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string"}},{"name":"grant_type","in":"query","required":false,"schema":{"type":"string","default":"authorization_code","enum":["authorization_code","refresh_token","implicit","client_credentials","password"]}},{"name":"redirect_uri","in":"query","required":false,"schema":{"type":"string"}},{"name":"username","in":"query","required":false,"schema":{"type":"string"}},{"name":"password","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh_token","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/OAuth2AccessToken"}}}}},"security":[{"ClientCredentials":[]}]}},"/v1/oauth/authorization":{"get":{"tags":["Authorization"],"summary":"获取应用授权","description":"获取包含应用信息、所属用户信息、回调地址以及是否已授权。应用需要 AUTHORIZE 权限。","operationId":"getAuthorization","parameters":[{"name":"client_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"response_type","in":"query","required":false,"schema":{"type":"string","default":"code","enum":["code","token"]}},{"name":"redirect_uri","in":"query","required":false,"schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"state","in":"query","required":false,"schema":{"type":"string"}},{"name":"jwt","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/AuthorizationResponse"}}}}},"security":[{"AccessToken":[]}]},"post":{"tags":["Authorization"],"summary":"应用授权","description":"应用需要 AUTHORIZE 权限。","operationId":"createAuthorization","parameters":[{"name":"approved","in":"query","required":true,"schema":{"type":"boolean"}},{"name":"scope","in":"query","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string"}}},{"name":"jwt","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/AuthorizationResponse"}}}}},"security":[{"AccessToken":[]}]}},"/v1/jws":{"get":{"tags":["Token"],"summary":"获取签名 JWT（JWS）","operationId":"getJws","responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/OAuth2AccessToken"}}}}},"security":[{"AccessToken":[]}]},"post":{"tags":["Token"],"summary":"颁发签名 JWT（JWS）","operationId":"grantJws","parameters":[{"name":"code","in":"query","required":false,"schema":{"type":"string"}},{"name":"grant_type","in":"query","required":false,"schema":{"type":"string","default":"authorization_code","enum":["authorization_code","refresh_token","implicit","client_credentials","password"]}},{"name":"redirect_uri","in":"query","required":false,"schema":{"type":"string"}},{"name":"username","in":"query","required":false,"schema":{"type":"string"}},{"name":"password","in":"query","required":false,"schema":{"type":"string"}},{"name":"refresh_token","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/OAuth2AccessToken"}}}}},"security":[{"ClientCredentials":[]}]}},"/v1/code/registration/phone":{"post":{"tags":["Code"],"summary":"获取注册手机验证码","description":"发送验证码到手机，用于注册。","operationId":"createRegistrationPhoneCode","parameters":[{"name":"g-recaptcha-response","in":"query","required":true,"schema":{"type":"string"}},{"name":"phone","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/v1/code/registration/email":{"post":{"tags":["Code"],"summary":"获取注册邮箱验证码","description":"发送验证码到邮箱，用于注册。","operationId":"createRegistrationEmailCode","parameters":[{"name":"g-recaptcha-response","in":"query","required":true,"schema":{"type":"string"}},{"name":"email","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/v1/code/registration":{"post":{"tags":["Code"],"summary":"获取注册邮箱验证码","description":"发送验证码到邮箱，用于注册。","operationId":"createRegistrationCode","parameters":[{"name":"g-recaptcha-response","in":"query","required":true,"schema":{"type":"string"}},{"name":"email","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"deprecated":true}},"/v1/code/phone":{"post":{"tags":["Code"],"summary":"获取更换手机号码验证码","description":"发送验证码到手机，用于更改手机号码。","operationId":"createUpdatePhoneCode","parameters":[{"name":"g-recaptcha-response","in":"query","required":true,"schema":{"type":"string"}},{"name":"phone","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/code/password/phone":{"post":{"tags":["Code"],"summary":"获取重置密码手机验证码","description":"发送验证码到手机，用于更改密码。","operationId":"createUpdatePasswordPhoneCode","parameters":[{"name":"g-recaptcha-response","in":"query","required":true,"schema":{"type":"string"}},{"name":"phone","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/v1/code/password/email":{"post":{"tags":["Code"],"summary":"获取重置密码邮箱验证码","description":"发送验证码到邮箱，用于更改密码。","operationId":"createUpdatePasswordEmailCode","parameters":[{"name":"g-recaptcha-response","in":"query","required":true,"schema":{"type":"string"}},{"name":"email","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/v1/code/email":{"post":{"tags":["Code"],"summary":"获取更换邮箱验证码","description":"发送验证码到邮箱，用于更改邮箱。","operationId":"createUpdateEmailCode","parameters":[{"name":"g-recaptcha-response","in":"query","required":true,"schema":{"type":"string"}},{"name":"email","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/clients":{"get":{"tags":["Clients"],"summary":"查询应用","description":"应用和用户需要 READ_CLIENT 权限。","operationId":"getClients","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"order","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/QueryResultsClient"}}}}},"security":[{"AccessToken":[]}]},"post":{"tags":["Clients"],"summary":"创建应用","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"createClient","parameters":[{"name":"uid","in":"query","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"name","in":"query","required":true,"schema":{"type":"string"}},{"name":"description","in":"query","required":true,"schema":{"type":"string"}},{"name":"redirectUri","in":"query","required":true,"schema":{"type":"string"}},{"name":"scopes","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"grantTypes","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"accessTokenValidity","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":7200}},{"name":"refreshTokenValidity","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":86400}},{"name":"additionalInformation","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/Client"}}}}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Clients"],"summary":"删除应用","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"removeClients","parameters":[{"name":"cids","in":"query","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/role-clients":{"get":{"tags":["Roles"],"summary":"获取用户的角色应用","description":"应用需要 READ_USER 权限。","operationId":"getUserRoleClients","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"managed","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserRoleClient"}}}}}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients/{cid}/authorities":{"get":{"tags":["Authorities"],"summary":"获取应用权限","description":"应用和用户（uid 为当前用户除外）需要 READ_CLIENT 权限。","operationId":"getUserClientAuthorities","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"array","items":{"type":"string"}}}}}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}/clients/{cid}":{"get":{"tags":["Clients"],"summary":"获取用户应用","description":"应用和用户（uid 为当前用户除外）需要 READ_CLIENT 权限。","operationId":"getUserClient","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/Client"}}}}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Clients"],"summary":"删除用户应用","description":"应用和用户（uid 为当前用户除外）需要 WRITE_CLIENT 权限。","operationId":"removeUserClient","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/users/{uid}":{"get":{"tags":["Users"],"summary":"获取用户信息","description":"获取用户的公开信息。如果应用与用户拥有 READ_USER 权限，则获取完整信息。","operationId":"getUser","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/User"}}}}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Users"],"summary":"删除用户（永久删除）","description":"应用和用户需要 DELETE_USER 权限。","operationId":"deleteUser","parameters":[{"name":"uid","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/v1/username/{username}":{"get":{"tags":["User"],"summary":"检查用户名是否存在","operationId":"isUsernameExists","parameters":[{"name":"username","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"boolean"}}}}}}},"/v1/phone/{phone}":{"get":{"tags":["User"],"summary":"检查手机号码是否存在","operationId":"isPhoneExists","parameters":[{"name":"phone","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"boolean"}}}}}}},"/v1/jwk":{"get":{"tags":["Token"],"summary":"获取 JWT 公钥（JWK）","operationId":"getJwk","responses":{"200":{"description":"OK","content":{"application/jwk-set+json; charset=UTF-8":{"schema":{"type":"object"}},"application/json":{"schema":{"type":"object"}}}}}}},"/v1/email/{email}":{"get":{"tags":["User"],"summary":"检查邮箱是否存在","operationId":"isEmailExists","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"type":"boolean"}}}}}}},"/v1/clients/{cid}":{"get":{"tags":["Clients"],"summary":"获取应用","description":"应用和用户需要 READ_CLIENT 权限。","operationId":"getClient","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json; charset=UTF-8":{"schema":{"$ref":"#/components/schemas/Client"}}}}},"security":[{"AccessToken":[]}]},"delete":{"tags":["Clients"],"summary":"删除应用","description":"应用和用户需要 WRITE_CLIENT 权限。","operationId":"removeClient","parameters":[{"name":"cid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"security":[{"AccessToken":[]}]}},"/realms/{realm}/.well-known/openid-configuration":{"get":{"tags":["OIDC Discovery"],"summary":"OpenID Connect Discovery","description":"返回 OpenID Provider 配置元数据","operationId":"getConfigurationWithRealm","parameters":[{"name":"realm","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}},"/.well-known/openid-configuration":{"get":{"tags":["OIDC Discovery"],"summary":"OpenID Connect Discovery","description":"返回 OpenID Provider 配置元数据","operationId":"getConfiguration","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"object"}}}}}}}}},"components":{"schemas":{"UserRole":{"type":"object","properties":{"rid":{"type":"integer","format":"int64"},"roleName":{"type":"string"},"roleDescription":{"type":"string"},"expiredAt":{"type":"string","format":"date-time"},"expired":{"type":"boolean"}}},"GrantType":{"type":"object","properties":{"tid":{"type":"integer","format":"int64"},"name":{"type":"string"},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Scope":{"type":"object","properties":{"sid":{"type":"integer","format":"int64"},"name":{"type":"string"},"subtitle":{"type":"string"},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Role":{"type":"object","properties":{"rid":{"type":"integer","format":"int64"},"roleName":{"type":"string"},"roleDescription":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Authority":{"type":"object","properties":{"aid":{"type":"integer","format":"int64"},"authorityName":{"type":"string"},"authorityDescription":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Client":{"type":"object","properties":{"name":{"type":"string"},"members":{"type":"array","items":{"type":"string"}},"authorities":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"status":{"type":"integer","format":"int32"},"logo":{"type":"string"},"uid":{"type":"integer","format":"int64"},"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ClientScope"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"cid":{"type":"string"},"secret":{"type":"string"},"extra":{"type":"object","additionalProperties":{"type":"object"}},"resources":{"uniqueItems":true,"type":"array","items":{"type":"string"}},"refreshTokenValidity":{"type":"integer","format":"int32"},"accessTokenValidity":{"type":"integer","format":"int32"},"grantTypes":{"uniqueItems":true,"type":"array","items":{"type":"string"}},"redirectUri":{"uniqueItems":true,"type":"array","items":{"type":"string"}}}},"ClientScope":{"type":"object","properties":{"autoApprove":{"type":"boolean"},"name":{"type":"string"},"description":{"type":"string"},"sid":{"type":"integer","format":"int64"},"subtitle":{"type":"string"}}},"User":{"type":"object","properties":{"authorities":{"type":"array","items":{"type":"string"}},"email":{"type":"string"},"phone":{"type":"string"},"uid":{"type":"integer","format":"int64"},"nickname":{"type":"string"},"gender":{"type":"integer","format":"int32"},"avatar":{"type":"string"},"accountExpiredAt":{"type":"string","format":"date-time"},"credentialsExpiredAt":{"type":"string","format":"date-time"},"unlockedAt":{"type":"string","format":"date-time"},"enabled":{"type":"boolean"},"username":{"type":"string"},"accountNonExpired":{"type":"boolean"},"accountNonLocked":{"type":"boolean"},"credentialsNonExpired":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/UserRole"}}}},"TokenForm":{"type":"object","properties":{"token":{"type":"string"}}},"OAuth2AccessToken":{"type":"object","properties":{"value":{"type":"string"},"expired":{"type":"boolean"},"refreshToken":{"$ref":"#/components/schemas/OAuth2RefreshToken"},"additionalInformation":{"type":"object","additionalProperties":{"type":"object"}},"tokenType":{"type":"string"},"expiresIn":{"type":"integer","format":"int32"},"scope":{"uniqueItems":true,"type":"array","items":{"type":"string"}},"expiration":{"type":"string","format":"date-time"}}},"OAuth2RefreshToken":{"type":"object","properties":{"value":{"type":"string"}}},"AuthorizationClient":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"logo":{"type":"string"},"additionalInformation":{"type":"object","additionalProperties":{"type":"object"},"writeOnly":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"status":{"type":"integer","format":"int32"},"uid":{"type":"integer","format":"int64","writeOnly":true},"resources":{"type":"array","writeOnly":true,"items":{"$ref":"#/components/schemas/Resource"}},"members":{"type":"array","items":{"type":"string"}},"scopes":{"type":"array","items":{"$ref":"#/components/schemas/AuthorizationClientScope"}},"types":{"type":"array","writeOnly":true,"items":{"$ref":"#/components/schemas/GrantType"}},"authorities":{"type":"array","writeOnly":true,"items":{"type":"string"}},"clientSecret":{"type":"string","writeOnly":true},"refreshTokenValiditySeconds":{"type":"integer","format":"int32","writeOnly":true},"accessTokenValiditySeconds":{"type":"integer","format":"int32","writeOnly":true},"registeredRedirectUri":{"uniqueItems":true,"type":"array","writeOnly":true,"items":{"type":"string"}},"cid":{"type":"string"}}},"AuthorizationClientScope":{"type":"object","properties":{"sid":{"type":"integer","format":"int64","writeOnly":true},"name":{"type":"string"},"subtitle":{"type":"string"},"description":{"type":"string"},"approved":{"type":"boolean"}}},"AuthorizationResponse":{"type":"object","properties":{"client":{"$ref":"#/components/schemas/AuthorizationClient"},"owner":{"$ref":"#/components/schemas/PublicUser"},"redirect":{"type":"string"},"count":{"type":"integer","format":"int64"},"approved":{"type":"boolean"}}},"PublicUser":{"type":"object","properties":{"uid":{"type":"integer","format":"int64"},"nickname":{"type":"string"},"gender":{"type":"integer","format":"int32"},"avatar":{"type":"string"},"unlockedAt":{"type":"string","format":"date-time"},"enabled":{"type":"boolean"},"username":{"type":"string"},"accountNonExpired":{"type":"boolean"},"accountNonLocked":{"type":"boolean"},"credentialsNonExpired":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}}},"Resource":{"type":"object","properties":{"name":{"type":"string"},"rid":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"UserRoleClient":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"logo":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"status":{"type":"integer","format":"int32"},"uid":{"type":"integer","format":"int64"},"resources":{"uniqueItems":true,"type":"array","items":{"type":"string"}},"members":{"type":"array","items":{"type":"string"}},"scopes":{"type":"array","items":{"$ref":"#/components/schemas/ClientScope"}},"types":{"type":"array","writeOnly":true,"items":{"$ref":"#/components/schemas/GrantType"}},"authorities":{"type":"array","items":{"type":"string"}},"count":{"type":"integer","format":"int32"},"clientSecret":{"type":"string","writeOnly":true},"extra":{"type":"object","additionalProperties":{"type":"object"}},"cid":{"type":"string"},"refreshTokenValidity":{"type":"integer","format":"int32"},"accessTokenValidity":{"type":"integer","format":"int32"},"grantTypes":{"uniqueItems":true,"type":"array","items":{"type":"string"}},"redirectUri":{"uniqueItems":true,"type":"array","items":{"type":"string"}}}},"QueryResultsClient":{"type":"object","properties":{"count":{"type":"integer","format":"int32"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Client"}}}},"QueryResultsUser":{"type":"object","properties":{"count":{"type":"integer","format":"int32"},"data":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"securitySchemes":{"AccessToken":{"type":"http","in":"header","scheme":"bearer"},"ClientCredentials":{"type":"http","in":"header","scheme":"basic"}}}}