196 lines
5.1 KiB
Plaintext
196 lines
5.1 KiB
Plaintext
|
|
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)
|
|||
|
|
}
|