thread-master/apps/backend/generate/api/auth.api

196 lines
5.1 KiB
Plaintext
Raw Normal View History

2026-07-10 12:54:45 +00:00
syntax = "v1"
type (
AuthLoginReq {
Email string `json:"email,optional"`
LoginId string `json:"login_id,optional"`
Password string `json:"password"`
Platform string `json:"platform,optional"` // platform|google|line (default platform)
}
AuthRegisterReq {
Email string `json:"email"`
Password string `json:"password"`
DisplayName string `json:"display_name,optional"`
Phone string `json:"phone,optional"`
}
AuthRefreshReq {
RefreshToken string `json:"refresh_token"`
}
AuthLogoutReq {
RefreshToken string `json:"refresh_token,optional"`
}
TokenPair {
AccessToken string `json:"access_token"`
RefreshToken string `json:"refresh_token"`
TokenType string `json:"token_type"`
ExpiresIn int64 `json:"expires_in"`
}
AuthSessionData {
Tokens TokenPair `json:"tokens"`
Member MemberPublic `json:"member"`
}
AuthTokensOnly {
Tokens TokenPair `json:"tokens"`
}
AuthProfilePatchReq {
DisplayName string `json:"display_name,optional"`
Nickname string `json:"nickname,optional"`
FullName string `json:"full_name,optional"`
Email string `json:"email,optional"`
Phone string `json:"phone,optional"`
Bio string `json:"bio,optional"`
Timezone string `json:"timezone,optional"`
NotifyEmail *bool `json:"notify_email,optional"`
// *string省略=不改;""=清除頭像http(s)=設定(禁止 data URL
AvatarUrl *string `json:"avatar_url,optional"`
GenderCode *int `json:"gender_code,optional"`
Birthdate *int64 `json:"birthdate,optional"`
National string `json:"national,optional"`
Address string `json:"address,optional"`
PostCode string `json:"post_code,optional"`
PreferredLanguage string `json:"preferred_language,optional"`
Currency string `json:"currency,optional"`
CurrentPassword string `json:"current_password,optional"`
NewPassword string `json:"new_password,optional"`
}
AuthRequestResetReq {
Email string `json:"email"`
// FE locale: zh-TW | en | en-US未登入時用有會員則優先 preferred_language
Language string `json:"language,optional"`
}
AuthRequestResetData {
Ok bool `json:"ok"`
Message string `json:"message"`
MockCode string `json:"mock_code,optional"`
MockResetPath string `json:"mock_reset_path,optional"`
}
AuthResetPasswordReq {
Email string `json:"email"`
Token string `json:"token,optional"`
Code string `json:"code,optional"`
NewPassword string `json:"new_password"`
}
AuthSendCodeData {
Ok bool `json:"ok"`
Message string `json:"message"`
MockCode string `json:"mock_code,optional"`
}
AuthVerifyEmailReq {
Code string `json:"code"`
}
AuthOAuthProviderPath {
Provider string `path:"provider"`
}
AuthOAuthCallbackReq {
Provider string `path:"provider"`
Code string `json:"code,optional"`
IdToken string `json:"id_token,optional"`
AccessToken string `json:"access_token,optional"`
RedirectUri string `json:"redirect_uri,optional"`
}
AuthOAuthStartData {
AuthorizeUrl string `json:"authorize_url"`
Provider string `json:"provider"`
State string `json:"state"`
}
AuthBindReq {
LoginId string `json:"login_id"`
Platform string `json:"platform"`
AccountType string `json:"account_type,optional"`
Password string `json:"password,optional"`
}
AuthUnbindReq {
LoginId string `json:"login_id"`
Platform string `json:"platform"`
}
AuthIdentitiesData {
List []IdentityPublic `json:"list"`
}
AuthLogoutAllData {
Ok bool `json:"ok"`
}
)
@server (
group: auth
prefix: /api/v1/auth
)
service gateway {
@handler Login
post /login (AuthLoginReq) returns (AuthSessionData)
@handler Logout
post /logout (AuthLogoutReq) returns (OkData)
@handler Refresh
post /refresh (AuthRefreshReq) returns (AuthTokensOnly)
@handler Register
post /register (AuthRegisterReq) returns (AuthSessionData)
@handler RequestPasswordReset
post /password/request-reset (AuthRequestResetReq) returns (AuthRequestResetData)
@handler ResetPassword
post /password/reset (AuthResetPasswordReq) returns (OkData)
@handler OAuthStart
post /oauth/:provider/start (AuthOAuthProviderPath) returns (AuthOAuthStartData)
@handler OAuthCallback
post /oauth/:provider/callback (AuthOAuthCallbackReq) returns (AuthSessionData)
}
@server (
group: auth
prefix: /api/v1/auth
middleware: AuthJWT
)
service gateway {
@handler Me
get /me returns (MemberPublic)
@handler UpdateProfile
patch /profile (AuthProfilePatchReq) returns (MemberPublic)
@handler UpdateProfilePut
put /profile (AuthProfilePatchReq) returns (MemberPublic)
@handler SendEmailCode
post /email/send-code returns (AuthSendCodeData)
@handler VerifyEmail
post /email/verify (AuthVerifyEmailReq) returns (MemberPublic)
@handler ListIdentities
get /identities returns (AuthIdentitiesData)
@handler BindAccount
post /bind (AuthBindReq) returns (IdentityPublic)
@handler UnbindAccount
post /unbind (AuthUnbindReq) returns (OkData)
@handler LogoutAll
post /logout-all returns (AuthLogoutAllData)
}