63 lines
1.4 KiB
Plaintext
63 lines
1.4 KiB
Plaintext
syntax = "v1"
|
|
|
|
type (
|
|
AuthRegisterReq {
|
|
TenantID string `json:"tenant_id" validate:"required"`
|
|
Email string `json:"email" validate:"required,email"`
|
|
Password string `json:"password" validate:"required,min=8,max=128"`
|
|
DisplayName string `json:"display_name,optional"`
|
|
Language string `json:"language,optional"`
|
|
}
|
|
|
|
AuthLoginReq {
|
|
TenantID string `json:"tenant_id" validate:"required"`
|
|
Email string `json:"email" validate:"required,email"`
|
|
Password string `json:"password" validate:"required,min=8,max=128"`
|
|
}
|
|
|
|
AuthRefreshReq {
|
|
RefreshToken string `json:"refresh_token" validate:"required"`
|
|
}
|
|
|
|
AuthTokenData {
|
|
AccessToken string `json:"access_token"`
|
|
RefreshToken string `json:"refresh_token"`
|
|
ExpiresIn int64 `json:"expires_in"`
|
|
UID string `json:"uid"`
|
|
TokenType string `json:"token_type"`
|
|
}
|
|
|
|
LogoutData {
|
|
OK bool `json:"ok"`
|
|
}
|
|
)
|
|
|
|
@server(
|
|
group: auth
|
|
prefix: /api/v1/auth
|
|
tags: "Auth"
|
|
summary: "Native member auth and JWT token endpoints"
|
|
)
|
|
service gateway {
|
|
@handler register
|
|
post /register (AuthRegisterReq) returns (AuthTokenData)
|
|
|
|
@handler login
|
|
post /login (AuthLoginReq) returns (AuthTokenData)
|
|
|
|
@handler refresh
|
|
post /refresh (AuthRefreshReq) returns (AuthTokenData)
|
|
}
|
|
|
|
@server(
|
|
group: auth
|
|
prefix: /api/v1/auth
|
|
middleware: AuthJWT
|
|
tags: "Auth"
|
|
summary: "Logout requires member Bearer JWT"
|
|
)
|
|
service gateway {
|
|
@handler logout
|
|
post /logout returns (LogoutData)
|
|
}
|