Skip to content

Commit

Permalink
update api documentation (#4)
Browse files Browse the repository at this point in the history
  • Loading branch information
dmryabov authored Aug 24, 2022
1 parent 3245220 commit 10a9a2b
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 17 deletions.
58 changes: 42 additions & 16 deletions proto/v1/auth.proto
Original file line number Diff line number Diff line change
Expand Up @@ -4,33 +4,57 @@ package beget.auth.v1.auth;

import "google/api/annotations.proto";

// Сервис аутентификации, выдает JWT токены для доступа к cp.beget.com/api.beget.com
// Аутентификация
//
// Сервис предоставляет набор методов для работы с токеном аутентификации, используемом для
// доступа в панель управления и к API: cp.beget.com и api.beget.com
service AuthService {
// Получить JWT токен
rpc auth (AuthRequest) returns (AuthResponse) {
//
// Выполняет вход в аккаунт и выдает JWT токен, который далее может быть использован для аутентификации запросов в API.
//
// При отключенной двухфакторной аутентификации (2FA) поле `code` не используется и не должно передаваться в запросе.
//
// При включенной двухфакторной аутентификации (2FA) первоначальный запрос к данному методу вернет ошибку с кодом
// `CODE_REQUIRED_EMAIL` или `CODE_REQUIRED_SMS`, а на соответствующий адрес 2FA придет код. Для получения токена
// необходимо выполнить повторный запрос этого же метода, добавив к уже введенным данным полученный код в поле `code`.
rpc auth(AuthRequest) returns (AuthResponse) {
option (google.api.http) = {
post: "/v1/auth"
body: "*"
};
}

// Обновить JWT токен
rpc refreshToken (RefreshTokenRequest) returns (RefreshTokenResponse) {
//
// Продлевает действие текущего JWT токена.
rpc refreshToken(RefreshTokenRequest) returns (RefreshTokenResponse) {
option (google.api.http) = {
post: "/v1/auth/refresh"
};
}

// Получить JWT токен подчиненного аккаунта
rpc switchUser (SwitchUserRequest) returns (SwitchUserResponse) {
//
// Выполняет вход в аккаунт, входящий в группу мульти-аккаунтов, и выдает для него JWT токен,
// который далее может быть использован для аутентификации запросов в API.
//
// При отключенной двухфакторной аутентификации (2FA) на подчиненном аккаунте поле `code` не используется
// и не должно передаваться в запросе.
//
// При включенной двухфакторной аутентификации (2FA) на подчиненном аккаунте, поле `code` действует таким же
// образом, как одноименное поле в методе "Получить JWT токен" из API "Аутентификация".
rpc switchUser(SwitchUserRequest) returns (SwitchUserResponse) {
option (google.api.http) = {
post: "/v1/auth/switch"
body: "*"
};
}

// Отозвать JWT токен(logout)
rpc logout (LogoutRequest) returns (LogoutResponse) {
// Отозвать JWT токен
//
// Отзывает JWT токен, делая его невалидным для дальнейших запросов.
rpc logout(LogoutRequest) returns (LogoutResponse) {
option (google.api.http) = {
post: "/v1/auth/logout"
};
Expand All @@ -44,23 +68,23 @@ message AuthRequest {
// Пароль
string password = 2;

// Код двухфакторной аутентификации
// Код двухфакторной аутентификации (необязательное поле, см. описание метода)
string code = 3;

// Выдать токен на 1 год
bool saveMe = 4;
}

message AuthResponse {
// Результат запроса
oneof response {
// JWT токен
// Результат запроса: JWT токен
string token = 1;

// Ошибка аутентификации
// Результат запроса: ошибка аутентификации
ErrorStatus error = 2;
}


enum ErrorStatus {
// Внутрення ошибка
INTERNAL_ERROR = 0;
Expand Down Expand Up @@ -110,16 +134,17 @@ message SwitchUserRequest {
// Пароль
string password = 2;

// Код двухфакторной аутентификации
// Код двухфакторной аутентификации (необязательное поле, см. описание метода)
string code = 3;
}

message SwitchUserResponse {
// Результат запроса
oneof response {
// JWT Токен
// Результат запроса: JWT Токен
string token = 1;

// Ошибка при получении токена
// Результат запроса: ошибка при получении токена
ErrorStatus error = 2;
}

Expand Down Expand Up @@ -175,11 +200,12 @@ message RefreshTokenRequest {
}

message RefreshTokenResponse {
// Результат запроса
oneof response {
// JWT Токен
// Результат запроса: JWT Токен
string token = 1;

// Ошибка при обновлении токена
// Результат запроса: ошибка при обновлении токена
ErrorStatus error = 2;
}

Expand Down Expand Up @@ -208,4 +234,4 @@ message LogoutRequest {
}

message LogoutResponse {
}
}
8 changes: 7 additions & 1 deletion proto/v1/key.proto
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,15 @@ package beget.auth.v1.key;

import "google/api/annotations.proto";

// Публичный ключ
//
// Сервис предоставляет метод для получения публичной части ключа, используемого для подписи JWT данного API.
service KeyService {
// Получить публичный ключ
rpc getKey (GetKeyRequest) returns (GetKeyResponse) {
//
// Возвращает публичный ключ, который может быть использован для проверки валидности подписи JWT,
// полученного в методах из API "Аутентификация".
rpc getKey(GetKeyRequest) returns (GetKeyResponse) {
option (google.api.http) = {
get: "/v1/auth/key"
};
Expand Down

0 comments on commit 10a9a2b

Please sign in to comment.