biz-member-gateway/generate/api/member.api

252 lines
11 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

syntax = "v1"
info(
title: "Portal-Api-Gateway (PGW)"
desc: "netpute web portal api gateway"
author: "daniel wang"
email: "daniel.wang@30cm.net"
version: "0.0.1"
)
type MemberLoginHeader {
DeviceID string `header:"device_id"`
IpAddress string `header:"ip_address"`
Brewser string `header:"brewser"`
}
// -------------------------------------------
type CreateAccountRequest {
Account string `json:"account" validate:"required"` // 帳號名稱line code 輸入在這邊)
Token string `json:"token" validate:"required"` // 密碼或平台token密碼請 sha256 轉碼如果三方token 請隨便給一個 sha256 字串
TokenCheck string `json:"token_check" validate:"required"` // 密碼或平台tokentoken 請保持原樣,填在這邊,不用管 token
Platform string `json:"platform" validate:"oneof=platform google line"` // 平台名稱 (platform) 平台、google、line
AccountType string `json:"account_type" validate:"oneof=phone email platform"` // 帳號類型 phone(手機)、email(信箱)、platform(自定義帳號) -> (如果為第三方都寫 platform)
MemberLoginHeader
}
type LoginReq {
Account string `json:"account" validate:"required"` // 帳號名稱
Token string `json:"token"` // 密碼或平台token密碼請 sha256 轉碼
Platform string `json:"platform" validate:"oneof=platform google line"` // 平台名稱 platform, google
AccountType string `json:"account_type" validate:"oneof=phone email platform"` // 帳號類型 1 手機 2 信箱 3 自定義帳號
MemberLoginHeader
}
type LoginTokenResp {
UID string `json:"uid"` // Account
AccessToken string `json:"access_token"` // 訪問令牌 預設 5 分鐘過期
RefreshToken string `json:"refresh_token"` // 刷新令牌 (預設一天過期,只能用一次)當呼叫更新token api 時,會自動把舊的失效,變成新的 refresh_token ,前端要記得過其實協助刷新,刷新不過表示全失效了(重新登入)
TokenType string `json:"token_type"` // Bearer
}
type ForgetPasswordCodeReq {
Account string `json:"account" validate:"required"` // 帳號名稱
AccountType string `json:"account_type" validate:"oneof=phone email"` // 帳號類型 (phone) 手機 (email) 信箱
}
type PreVerifyForgetPasswdReq {
Identifier string `json:"identifier" validate:"required"` // 聯繫方式,可以是 email 或 phone
VerifyCode string `json:"verify_code" validate:"required,len=6"` // 驗證碼長度為6
}
type UpdateTokenReq {
UID string `json:"uid" validate:"required"` // 誰要更新
Token string `json:"token" validate:"required"` // access token -> 已過期要被更新的
RefreshToken string `json:"refresh_token" validate:"required"` // refresh token -> 重點,要驗證他的
// MemberLoginHeader
}
type UpdatePasswordReq {
Account string `json:"account" validate:"required"` // 帳號名稱
VerifyCode string `json:"verify_code" validate:"required,len=6"` // 驗證碼長度為6
Token string `json:"token" validate:"required,len=64"` // 密碼或平台token密碼請 sha256 轉碼
TokenCheck string `json:"token_check" validate:"required,len=64"` // 密碼或平台token密碼請 sha256 轉碼
}
@server(
group: member
prefix: /api/v1
schemes: https
timeout: 10s
)
service gateway {
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary:"創建新會員"
description: "創建一個全新的帳號,創完成之後會自動登入"
)
@handler AccountCreate
post /member (CreateAccountRequest) returns (LoginTokenResp)
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-401 (BaseResponse) // 輸入的帳號密碼未經驗證-> 帳號密碼錯誤的意思 */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary:"登入"
description: "會員登入"
)
@handler Login
post /member/login (LoginReq) returns (LoginTokenResp)
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary:"發送忘記密碼驗證"
description: "發送忘記密碼驗證(三分鐘內只能發一次信)"
)
@handler ForgetPasswordCode
post /member/forget-password-code (ForgetPasswordCodeReq) returns (RespOK)
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-401 (BaseResponse) // 無效的驗證碼 */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary:"更新密碼(要發送驗證碼才可以的流程)"
description: "更新密碼(要發送驗證碼才可以的流程)"
)
@handler UpdatePassword
put /member/update-password (UpdatePasswordReq) returns (RespOK)
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-401 (BaseResponse) // 無效的驗證碼 */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary:"預先驗證驗證碼"
description: "忘記密碼的時候看 ui. 流程要預先驗證一次才給送,"
)
@handler PreVerifyUpdatePasswordCode
put /member/pre-verify (PreVerifyForgetPasswdReq) returns (RespOK)
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-401 (BaseResponse) // 無效的 Refresh Token */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary:"更新 Access Token"
description: "用 RefreshToken 換取 AccessToken"
)
@handler RefreshAccessToken
put /member/refresh_access_token (UpdateTokenReq) returns (LoginTokenResp)
}
// ------------------- 要登入之後才可以做的事情 ------------------------
type UserInfo {
Platform string `json:"platform"` // 用戶平台 platform, google, line
UID string `json:"uid"` // 用戶 UID
AvatarURL string `json:"avatar_url"` // 頭像 URL可選
FullName string `json:"full_name"` // 用戶全名
Nickname string `json:"nickname"` // 暱稱(可選)
GenderCode string `json:"gender_code"` // 性別代碼 mail, femail ,sec
Birthdate string `json:"birthdate"` // 生日 (格式: 19930417)
PhoneNumber string `json:"phone_number"` // 電話
Address string `json:"address"` // 地址
Email string `json:"email"` // 驗證後的信箱
AlarmCategory string `json:"alarm_category"` // 告警狀態
UserStatus string `json:"user_status"` // 用戶狀態
PreferredLanguage string `json:"preferred_language"` // 使用語言
Currency string `json:"currency"` // 使用幣種
UpdateAt string `json:"update_at"`
CreateAt string `json:"create_at"`
}
type BindingUserInfoReq {
VerifyHeader
PreferredLanguage string `json:"preferred_language,optional" validate:"oneof=zh-tw en-us"` // 使用語言
Currency string `json:"currency,optional" validate:"oneof=TWD USD"`
AvatarURL string `json:"avatar_url,optional"` // 頭像 URL可選
Nickname string `json:"nickname,optional"`
FullName string `json:"full_name,optional"` // 用戶全名
GenderCode string `json:"gender_code" validate:"oneof=secret male female"` // 性別代碼
Birthday string `json:"birthday,optional" validate:"rfc3339"` // 生日 (格式: unix)
Address string `json:"address,optional"` // 地址
}
type VerificationCodeRequest {
VerifyHeader
Identifier string `json:"identifier" validate:"required"` // 聯繫方式,可以是 email 或 phone
CodeType string `json:"code_type" validate:"oneof=email phone forget_password"` // 驗證碼類型
}
type CheckoutVerifyReq {
VerifyHeader
Account string `json:"account" validate:"required"` // 帳號名稱
CodeType string `json:"code_type" validate:"oneof=email phone"` // 驗證碼類型 1 信箱 2 手機
VerifyCode string `json:"verify_code" validate:"required,len=6"` // 驗證碼長度為6
UID string `json:"uid" validate:"required"`
}
type ModifyPasswdReq {
VerifyHeader
NewToken string `json:"token" validate:"required,len=64"` // 密碼或平台token密碼請 sha256 轉碼
NewTokenCheck string `json:"token_check" validate:"required,len=64"` // 密碼或平台token密碼請 sha256 轉碼
}
@server(
group: member
prefix: /api/v1
schemes: https
timeout: 10s
middleware: AuthMiddleware
)
service gateway {
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-401 (BaseResponse) // 無效的Token */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary: "會員登出"
)
@handler Logout
get /member/logout (VerifyHeader) returns (RespOK)
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-401 (BaseResponse) // 無效的Token */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary: "取得會員資訊"
)
@handler Info
get /member/info (VerifyHeader) returns (UserInfo)
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-403 (BaseResponse) // 無效的Token */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary: "更新會員詳細資訊"
)
@handler ModifyMemberInfo
put /member/info (BindingUserInfoReq) returns (UserInfo)
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-401 (BaseResponse) // 無效的Token */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary: "發送邀請 - 綁定會員"
description: "可以依照類別手機驗證email驗證同一個類型十分鐘內只能發送一次"
)
@handler SendVerifyCode
post /member/verify (VerificationCodeRequest) returns (RespOK)
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-401 (BaseResponse) // 無效的驗證碼 */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary: "確認邀請 - 綁定會員"
description: "確認驗證碼是否有效"
)
@handler CheckVerifyCode
post /member/check-verify-code (CheckoutVerifyReq) returns (RespOK)
/* @respdoc-400 (BaseResponse) // 輸入的參數錯誤 */
/* @respdoc-401 (BaseResponse) // 無效的驗證碼 */
/* @respdoc-500 (BaseResponse) // 伺服器出錯 */
@doc(
summary: "修改密碼"
description: "修改密碼"
)
@handler ModifyPasswdHandler
put /member/modify-passwd (ModifyPasswdReq) returns (RespOK)
}