Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • perxis/perxis-proto
1 result
Show changes
Commits on Source (9)
syntax = "proto3";
package common;
import "google/protobuf/timestamp.proto";
import "google/protobuf/any.proto";
option go_package = "git.perx.ru/perxis/perxis-go/proto/common;common";
// Операция
message Operation {
// ID операции
string id = 1;
// Описание операции
string description = 2;
// Время создания операции
google.protobuf.Timestamp created_at = 3;
// Создатель операции
string created_by = 4;
// Время последнего изменения операции
google.protobuf.Timestamp modified_at = 6;
// Операция завершена
bool done = 7;
// Метаданные операции
google.protobuf.Any metadata = 8;
// Результат выполнения операции
oneof result {
// Результат выполнения операции в случае успеха
google.protobuf.Any response = 9;
// Результат выполнения операции в случае ошибки
string error = 10;
}
}
syntax = "proto3";
option go_package = "git.perx.ru/perxis/perxis-go/proto/common;common";
package common;
import "common/operation.proto";
import "common/validation.proto";
service OperationService {
// Возвращает статус операции и ее результат, если она завершена
rpc Get (GetOperationRequest) returns (Operation) {}
// Отменяет выполнение операции, если это поддерживается сервисом
rpc Cancel (CancelOperationRequest) returns (Operation) {}
}
message GetOperationRequest {
string operation_id = 1 [(required) = true];
}
message CancelOperationRequest {
string operation_id = 1 [(required) = true];
}
syntax = "proto3";
package common;
option go_package = "git.perx.ru/perxis/perxis-go/proto/common;common";
import "google/protobuf/descriptor.proto";
extend google.protobuf.OneofOptions {
bool exactly_one = 101400;
}
extend google.protobuf.FieldOptions {
bool required = 101501;
string pattern = 101502;
string value = 101503;
string size = 101504;
string length = 101505;
bool unique = 101506;
MapKeySpec map_key = 101510;
string bytes = 101511;
}
message MapKeySpec {
string value = 1;
string pattern = 2;
string length = 3;
}
\ No newline at end of file
......@@ -16,131 +16,6 @@ package extensions;
import "references/references.proto";
// Extension - API расширения
service Extension {
// Для установки расширения выполняется запрос к сервису с указанием расширений которые должны быть установлены. Если
// расширение уже установлено процесс возвращает ошибку.
rpc Install(InstallRequest) returns (InstallResponse) {}
// Можно запросить проверку статуса установки для расширения. При этом расширение проверяет наличие необходимых данных в
// пространстве или наличие новой версии расширения и сообщает об этом. Никаких действий с данными пространства не
// производится.
rpc Check(CheckRequest) returns (CheckResponse) {}
// Сервис выполняет необходимые действия с данными и миграции для соответствия нужной версии расширения.
// Если расширение не установлено процесс обновления возвращает ошибку.
rpc Update(UpdateRequest) returns (UpdateResponse) {}
// Удаление расширения из пространства.
rpc Uninstall(UninstallRequest) returns (UninstallResponse) {} // Удаление расширений
// Пользовательские Действия (Actions)
//
// Пользовательские действия позволяют расширить функционал пользовательского интерфейса путем
// добавления в интерфейс элементов взаимодействуя с которыми пользователь может вызывать реакцию на
// сервере или переход в интерфейсе.
//
// Пользовательские действия добавляются при установке расширений в системную коллекции `System/Actions`.
// Коллекция создается автоматически менеджером расширений. При установке так же отображается меню `Действия`
// доступное для всех пользователей.
//
// Примеры пользовательских действий:
// - "Собрать сайт" - добавляется Perxis.Web для сборки сайта, доступна пользователю через меню,
// параметры space_id, env_id. При вызове выполняется запрос на сервер ProcessAction.
// - "Посмотреть задачи" - добавляется Tasks для перехода на коллекцию задач. Отображается в меню,
// параметры space_id, env_id.
//
// Приложения так же могут использовать действия для вызова обработки в других приложениях при
// необходимости.
rpc Action(ActionRequest) returns(ActionResponse) {} // Выполнить указанное действие
}
message InstallRequest {
repeated string extensions = 10000; // Список расширений для установки
string space_id = 10010; // Пространство для установки расширений
string env_id = 10020; // Идентификатор окружения для установки (по умолчанию master)
bool force = 10100; // Игнорировать и автоматически исправлять ошибки установки
}
message ExtensionRequestResult {
enum State {
OK = 0; // Запрос завершен
ERROR = 1; // Возникла ошибка
PENDING = 2; // Запрос ожидает выполнения
IN_PROGRESS = 3; // Запрос выполняется
PARAMETERS_REQUIRED= 4; // Требуются дополнительные данные для выполнения запроса
}
State state = 10000; // Состояние расширение
string extension = 10100; // Имя расширения
string msg = 10200; // Сообщение
string error = 10300; // Ошибка (state == ERROR)
bool update_available = 10400; // Доступно обновление
}
message InstallResponse {
repeated ExtensionRequestResult results = 10000; // Список состояний расширений после установки
}
message UninstallRequest {
repeated string extensions = 10000; // Список расширений для удаления
string space_id = 10010; // Пространство для удаления расширений
string env_id = 10020; // Идентификатор окружения для установки (по умолчанию master)
bool remove = 10100; // Удалить все коллекции и данные
bool force = 10200; // Удалять расширения вне зависимости от возможных ошибок, без учета зависимостей
}
message UninstallResponse {
repeated ExtensionRequestResult results = 10000; // Список состояний расширений после удаления
}
message UpdateRequest {
repeated string extensions = 10000; // Список расширений для удаления
string space_id = 10010; // Пространство для удаления расширений
string env_id = 10020; // Идентификатор окружения для установки (по умолчанию master)
bool force = 10100; // Выполнять обновление и автоматически исправлять ошибки
}
message UpdateResponse {
repeated ExtensionRequestResult results = 10000; // Список состояний расширений после удаления
}
message CheckRequest {
repeated string extensions = 10000; // Список расширений для удаления
string space_id = 10010; // Пространство для удаления расширений
string env_id = 10020; // Идентификатор окружения для установки (по умолчанию master)
}
message CheckResponse {
repeated ExtensionRequestResult results = 10000; // Список состояний расширений
}
// ActionRequest - запрос на выполнение действия к расширению (или менеджеру расширений)
message ActionRequest {
string extension = 1000;
string action = 10100;
string space_id = 10500;
string env_id = 10510;
string collection_id = 10520;
string item_id = 10530;
repeated string item_ids = 10540;
// Поля к которым применимо действие. В случае если действие выполняется из списка записей, содержит перечень
// полей которые пользователь выбрал для отображения в интерфейсе.
repeated string fields = 10550;
map<string,string> metadata = 11000;
// Ссылки на записи используемые для выполнения действия (назначение ссылок зависит от действия и расширения)
repeated content.references.Reference refs = 11010;
// Ссылка на документ с параметрами выполнения Action.
// Чтобы при выполнении действия открывалась форма параметров, необходимо указать `Action.params_collection`
content.references.Reference params = 11020;
}
// Target - определяет как открывать результат выполнения действия в пользовательском интерфейсе
enum Target {
DEFAULT = 0; // По умолчанию (если нет других условий, то MODAL)
......@@ -153,33 +28,6 @@ enum Target {
NONE = 100; // Не отображать результат
}
message ActionResponse {
enum State {
DONE = 0; // Запрос завершен
ERROR = 1; // Возникла ошибка
PENDING = 2; // Запрос ожидает выполнения
IN_PROGRESS = 3; // Запрос выполняется
PARAMETERS_REQUIRED = 4; // Требуются дополнительные данные для выполнения запроса
}
enum Format {
PLAIN = 0;
HTML = 1;
MARKDOWN = 2;
}
State state = 10000; // Состояние расширение
Target target = 10010; // Как открывать результат выполнения действия в пользовательском интерфейсе (переопределяет значение в Action)
Format format = 10050; // Формат полей msg и error
string msg = 10100; // Сообщение о выполнении действия
string title = 10110; // Текст для отображения в интерфейсе
string image = 10140; // Изображение для отображения в интерфейсе (шапке окна)
string error = 10200; // Сообщение в случае ошибки (дополнительно к msg)
repeated Action next = 10300; // Следующие возможные действия. Интерфейс отображает как варианты дальнейших действий пользователя
map<string,string>metadata = 10400; // Метаданные запроса
repeated content.references.Reference refs = 10320; // Ссылки на записи (назначение ссылок зависит от действия и расширения)
}
/**
Action описывает как коллекцию в системе с предуставновленными действиями, так и возможные дальнейшие действия после
......@@ -261,7 +109,7 @@ message Action {
ActionRequest request = 10400; // Параметры запроса (используется в случае `ActionResponse.next`)
// DEPRECATED: Используйте `action_url` вместо `navigation_route`
// DEPRECATED: Используйте `action` вместо `navigation_route`
bool navigation_action = 10500; // Флаг указывающий что действие переносить пользователя в другую часть интерфейса, а не отправляет запрос на сервер
// navigation_route - Строка шаблон для перехода в интерфейсе
......@@ -275,7 +123,7 @@ message Action {
// - :colId
// - :itemId
//
// DEPRECATED: Используйте `action_type == "NAVIGATION"`
// DEPRECATED: Используйте `action`
string navigation_route = 10510;
// Параметр указывающий что действие выполняется автоматически
......@@ -295,4 +143,28 @@ message Action {
View view = 10540; // Отображение действия в интерфейсе
int32 order = 10550; // Порядок отображения действия в интерфейсе (Для пунктов меню)
}
// ActionRequest - запрос на выполнение действия к расширению (или менеджеру расширений)
message ActionRequest {
string extension = 1000;
string action = 10100;
string space_id = 10500;
string env_id = 10510;
string collection_id = 10520;
string item_id = 10530;
repeated string item_ids = 10540;
// Поля к которым применимо действие. В случае если действие выполняется из списка записей, содержит перечень
// полей которые пользователь выбрал для отображения в интерфейсе.
repeated string fields = 10550;
map<string,string> metadata = 11000;
// Ссылки на записи используемые для выполнения действия (назначение ссылок зависит от действия и расширения)
repeated content.references.Reference refs = 11010;
// Ссылка на документ с параметрами выполнения Action.
// Чтобы при выполнении действия открывалась форма параметров, необходимо указать `Action.params_collection`
content.references.Reference params = 11020;
}
\ No newline at end of file
/**
# Расширения (Extensions)
Расширения представляют собой отдельные сервисы предоставляющие дополнительные возможности для пользователей. Сервис
может предоставлять несколько расширений одновременно.
Для координации взаимодействия используется сервис менеджер расширений (Extension Manager). Для предоставления своих функций в систему сервис должен
зарегистрироваться на контроллере.
*/
syntax = "proto3";
option go_package = "git.perx.ru/perxis/perxis-go/proto/extensions;extensions";
package extensions;
import "references/references.proto";
import "common/operation.proto";
import "extensions/extension.proto";
// ExtensionService - API расширения
// Сервис должен реализовывать методы `common.OperationService` для работы операциями.
service ExtensionService {
// Install выполняет установку указанных расширений. Если
// расширение уже установлены выполняет процесс переустановки. Возвращает longtime операцию
rpc Install(InstallRequest) returns (common.Operation) {}
// Uninstall выполняет удаление указанных расширений.
rpc Uninstall(UninstallRequest) returns (common.Operation) {}
// Check выполняет проверку установки для расширения. При этом расширение проверяет наличие необходимых данных в
// пространстве или наличие новой версии расширения и сообщает об этом. Никаких действий с данными пространства не
// производится.
rpc Check(CheckRequest) returns (common.Operation) {}
// Пользовательские Действия (Actions)
//
// Пользовательские действия позволяют расширить функционал пользовательского интерфейса путем
// добавления в интерфейс элементов взаимодействуя с которыми пользователь может вызывать реакцию на
// сервере или переход в интерфейсе.
//
// Пользовательские действия добавляются при установке расширений в системную коллекции `System/Actions`.
// Коллекция создается автоматически менеджером расширений. При установке так же отображается меню `Действия`
// доступное для всех пользователей.
//
// Примеры пользовательских действий:
// - "Собрать сайт" - добавляется Perxis.Web для сборки сайта, доступна пользователю через меню,
// параметры space_id, env_id. При вызове выполняется запрос на сервер ProcessAction.
// - "Посмотреть задачи" - добавляется Tasks для перехода на коллекцию задач. Отображается в меню,
// параметры space_id, env_id.
//
// Приложения так же могут использовать действия для вызова обработки в других приложениях при
// необходимости.
rpc Action(ActionRequest) returns(ActionResponse) {} // Выполнить указанное действие
}
// InstallRequest - запрос на установку расширений
message InstallRequest {
repeated string extensions = 10000; // Список расширений для установки
string space_id = 10010; // Пространство для установки расширений
string env_id = 10020; // Идентификатор окружения для установки
bool force = 10100; // Устанавливать расширения вне зависимости от возможных ошибок
}
// UninstallRequest - запрос на удаление расширений
message UninstallRequest {
repeated string extensions = 10000; // Список расширений для удаления
string space_id = 10010; // Пространство для удаления расширений
string env_id = 10020; // Идентификатор окружения для установки (по умолчанию master)
bool remove = 10100; // Удалить сделанные расширением изменения в пространстве, если возможно
bool force = 10200; // Удалять расширения вне зависимости от возможных ошибок, без учета зависимостей
}
// CheckRequest - запрос на проверку статуса установки расширений
message CheckRequest {
repeated string extensions = 10000; // Список расширений для проверки
string space_id = 10010; // Пространство
string env_id = 10020; // Идентификатор окружения (по умолчанию master)
}
message ActionResponse {
enum State {
DONE = 0; // Запрос завершен
ERROR = 1; // Возникла ошибка
PENDING = 2; // Запрос ожидает выполнения
IN_PROGRESS = 3; // Запрос выполняется
PARAMETERS_REQUIRED = 4; // Требуются дополнительные данные для выполнения запроса
}
enum Format {
PLAIN = 0;
HTML = 1;
MARKDOWN = 2;
}
State state = 10000; // Состояние расширение
Target target = 10010; // Как открывать результат выполнения действия в пользовательском интерфейсе (переопределяет значение в Action)
Format format = 10050; // Формат полей msg и error
string msg = 10100; // Сообщение о выполнении действия
string title = 10110; // Текст для отображения в интерфейсе
string image = 10140; // Изображение для отображения в интерфейсе (шапке окна)
string error = 10200; // Сообщение в случае ошибки (дополнительно к msg)
repeated Action next = 10300; // Следующие возможные действия. Интерфейс отображает как варианты дальнейших действий пользователя
map<string,string>metadata = 10400; // Метаданные запроса
repeated content.references.Reference refs = 10320; // Ссылки на записи (назначение ссылок зависит от действия и расширения)
}
......@@ -32,28 +32,56 @@ option go_package = "git.perx.ru/perxis/perxis-go/proto/extensions;extensions";
package extensions;
// ExtensionManager - менеджер расширений. Должен реализовывать так же сервис Extension
service ExtensionManager {
service ExtensionManagerService {
// ## Регистрация расширений
//
// Регистрация\Дерегистрация происходить через сервис менеджера расширений (Extension Manager). В процессе регистрации сервис сообщает
// Регистрация\Дерегистрация происходит через сервис менеджера расширений (Extension Manager). В процессе регистрации сервис сообщает
// о поддерживаемых сервисом действиях (Actions) и версии сервиса и зависимостях:
// 1. Действия (Actions) - перечень действия которые обрабатываются сервисом. Включает в себя как системные действия,
// так и пользовательские, которые могут быть использованы в интерфейсе;
// ~~1. Действия (Actions) - перечень действия которые обрабатываются сервисом. Включает в себя как системные действия,
// так и пользовательские, которые могут быть использованы в интерфейсе;~~
// 2. Имя сервиса/расширения - название сервиса внутри системы;
// 3. Версия сервиса - сервис сообщает текущую версию сервиса. Контроллер сообщает пользователю о возможности обновления
// расширения при смене версии;
// 4. Описание версии - содержит информацию об изменениях в последних версиях расширения;
// 5. Зависимости - перечень расширений которые необходимы сервису для функционирования. При установке сервиса
// все расширения от которых он зависит, будут так же установлены.
// все расширения, от которых он зависит, будут также установлены.
rpc RegisterExtensions(RegisterExtensionsRequest) returns (RegisterExtensionsResponse) {}
rpc UnregisterExtensions(UnregisterExtensionsRequest) returns (UnregisterExtensionsResponse) {}
// Получить список зарегистрированных сервисов
rpc ListExtensions(ListExtensionsRequest) returns (ListExtensionsResponse) {} // Получить список сервисов
// GetInstalledExtensions - получить статус расширения
rpc GetInstalledExtensions(GetInstalledExtensionsRequest) returns (GetInstalledExtensionsResponse) {} // Получить описание сервиса
}
// GetInstalledExtensionsRequest - запрос на получение статуса расширений в пространстве и окружении.
// Если список расширений в запросе не передан, возвращаются все установленные расширения
message GetInstalledExtensionsRequest {
repeated string extensions = 1; // Имя расширения
string space_id = 2; // Пространство имен расширения
string env_id = 3; // Идентификатор окружения
}
// GetExtensionResponse - описание расширения
message GetInstalledExtensionsResponse {
message Status {
string extension = 10100; // Имя расширения
string title = 10110;
State state = 10120;
string msg = 10200; // Сообщение
string error = 10300; // Ошибка (state == ERROR)
bool not_found = 10350; // Расширение не найдено
bool installed = 10400; // Расширение установлено
bool update_available = 10500; // Доступно обновление
string installed_version = 10510; // Установленная версия расширения
string available_version = 10520; // Доступная версия расширения
}
repeated Status status = 1;
}
// ServiceDescription описание сервиса
// ExtensionDescriptor описание расширения (возвращается сервисом при регистрации)
message ExtensionDescriptor {
string extension = 10000; // Имя расширения
string title = 10010; // Название расширения
......@@ -92,16 +120,17 @@ message ListExtensionsResponse {
}
// Описание коллекций
// space_extensions (Пространство/Расширения)
enum State {
UNKNOWN = 0;
INSTALLED = 1;
IN_PROGRESS = 2;
FAIL = 3;
PENDING = 4;
}
message SpaceExtensions {
enum State {
PENDING = 0;
INSTALLED = 1;
IN_PROGRESS = 2;
FAIL = 3;
}
string extension = 10000;
string title = 10010;
string version = 10100;
......@@ -109,4 +138,4 @@ message SpaceExtensions {
State state = 10300;
string status_error = 10400; // Сообщение к ошибке
string status_msg = 10500; // Сообщение к статусу
}
\ No newline at end of file
}