diff --git a/proto/extensions/extension.proto b/proto/extensions/extension.proto index f82ac21cdab520cc7ede94b85f888ac3b267af45..59a43250bc7461959b08b25b0892547a803b0347 100644 --- a/proto/extensions/extension.proto +++ b/proto/extensions/extension.proto @@ -141,6 +141,18 @@ message ActionRequest { content.references.Reference params = 11020; } +// Target - определяет как открывать результат выполнения действия РІ пользовательском интерфейсе +enum Target { + DEFAULT = 0; // РџРѕ умолчанию (если нет РґСЂСѓРіРёС… условий, то MODAL) + MODAL = 1; // Открывать РІ модальном РѕРєРЅРµ + WIDE = 2; // Открывать РІ широком модальном РѕРєРЅРµ + MAIN = 4; // Открывать РІ главной рабочей области (часть без меню) + DRAWER = 5; // Открывать РІ Р±РѕРєРѕРІРѕР№ панели + NOTIFICATION = 6; // Открывать РІРёРґРµ всплывающего уведомлении + BLANK = 7; // Открывать РІ РЅРѕРІРѕР№ вкладке + NONE = 100; // РќРµ отображать результат +} + message ActionResponse { enum State { DONE = 0; // Запрос завершен @@ -150,33 +162,22 @@ message ActionResponse { PARAMETERS_REQUIRED = 4; // Требуются дополнительные данные для выполнения запроса } - State state = 10000; // Состояние расширение + 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 html = 10120; // HTML для отображения РІ интерфейсе (альтернатива msg) - string md = 10130; // Markdown для отображения РІ интерфейсе (альтернатива msg) string image = 10140; // Рзображение для отображения РІ интерфейсе (шапке РѕРєРЅР°) - string error = 10200; // Сообщение РІ случае ошибки - - enum Target { - MODAL = 0; // Открыть РІРѕ всплывающем РѕРєРЅРµ - WIDE_MODAL = 1; // Открыть РІРѕ всплывающем широком РѕРєРЅРµ (РІСЃСЏ страница) - WORKSPACE = 2; // Открыть РІ рабочей области (без меню) - NOTIFICATION = 3; // Открыть РІ РІРёРґРµ уведомления - DRAWER = 4; // Открыть РІ РІРёРґРµ выдвижной панели - NEW_WINDOW = 100; // Открыть РІ РЅРѕРІРѕРј РѕРєРЅРµ - NONE = 1000; // Без отображения результата - } - - // Как открывать результат выполнения действия - // Р’ случае ответа РІ РІРёРґРµ HTML/MD, открывать аналогично WIDE_MODAL, или брать значние РёР· заголовка 'X-Action-Target' - Target target = 10210; - + string error = 10200; // Сообщение РІ случае ошибки (дополнительно Рє msg) repeated Action next = 10300; // Следующие возможные действия. Рнтерфейс отображает как варианты дальнейших действий пользователя map<string,string>metadata = 10400; // Метаданные запроса repeated content.references.Reference refs = 10320; // Ссылки РЅР° записи (назначение ссылок зависит РѕС‚ действия Рё расширения) - } @@ -211,54 +212,43 @@ message Action { MAIN_MENU_BOTTOM = 10010; // Действие отображается РІ главном меню РІРЅРёР·Сѓ (требуется передача space_id, env_id) } - enum ActionType { - REQUEST = 0; // Действие выполняет запрос РЅР° сервер - NAVIGATION = 1; // Действие переносит пользователя РІ РґСЂСѓРіСѓСЋ часть интерфейса - } - - ActionType action_type = 9000; // РўРёРї действия - + // DEPRECATED: Рспользуйте `action` РІ формате URI string extension = 10000; // Расширение - string action = 10100; // Рдентификатор действия - - // URL для запроса действия (альтернатива `extension` Рё `action`). Р’ случае если параметр - // `action_url` указан, то интерфейс РЅРµ запрашивает расширение Рё действие, Р° выполняет запрос РїРѕ указанному URL используя - // указанный протокол. Р’ случае если указан `action_url` то `extension` Рё `action` игнорируются. - // - // Для форматов HTML/MD относительные ссылки РІ тексте преобразуются РІ абсолютные используя `action_url` РІ качестве - // базового URL. + // Рдентификатор действия (РІ формате URI) + // Варианты использования: + // - пустой - никаких действий РЅРµ выполняется + // - `action_id` - простое действие (если установлено расширение, то РѕРЅРѕ используется) + // - `grpc:///extension_id/action_id` - полное действие СЃ указанием расширения + // - `https://host/path` - действие РїРѕ HTTP(S) + // - `ui:///path` - действие РІ интерфейсе + // - `/path` - действие РІ интерфейсе // // Пример: `https://example.com/api/v1/action` - будет выполнен запрос HTTP РїРѕ указанному URL. // Сервер может вернуть ответ РІ формате JSON или HTML/MD. Дальнейшие действия определяется РѕРї заголовку ответа // `Content-Type`: // - `application/json` - ответ РІ формате JSON. Структура ответа соответствует `ActionResponse` Рё интерпретируется // тем Р¶Рµ СЃРїРѕСЃРѕР±РѕРј что Рё ответ РѕС‚ GRPC. - // - `text/html` - ответ РІ формате HTML. Рнтерфейс отображает ответ РІ РІРёРґРµ сообщения. + // - `text/html` - ответ РІ формате HTML. Рнтерфейс отображает ответ РІ РІРёРґРµ сообщения РІ IFrame // - `text/markdown` - ответ РІ формате MD. Рнтерфейс отображает ответ РІ РІРёРґРµ сообщения. // - // Пример: `grpc://example.com/api/v1/action` - будет выполнен запрос GRPC РїРѕ указанному URL. - // Сервер может вернуть ответ РІ `ActionResponse`. - // - // action_type == "NAVIGATION" - Строка шаблон для перехода РІ интерфейсе - // РџСЂРё указании полного адреса (http(s)://xyz), URL открывается РІ РЅРѕРІРѕРј РѕРєРЅРµ браузера - // Относительный адрес РІ пользовательском интерфейсе переносит пользователя РІ соответствующий раздел без перезагрузки приложения - // - // Переменные `:var` заменяются РЅР° текуще значение РІ пользовательском интерфейсе (Пример: `/spaces/:spaceId/envs/:envId/cols/:colId`) + // Переменные `:var` заменяются РЅР° текуще значение РІ пользовательском интерфейсе // Перечень переменных для подстановки: // - :spaceId // - :envId // - :colId // - :itemId // - string action_url = 10110; - + // Пример: `ui:///spaces/:spaceId/envs/:envId/cols/:colId` - будет выполнено действие РІ интерфейсе. + string action = 10100; + Target target = 10110; // как должен отображаться результат действия + string parent = 10120; // Рдентификатор родительского действия (для отображения РІ меню) string name = 10200; // Название действия для отображения РІ интерфейсе (РїСѓРЅРєС‚ меню, РєРЅРѕРїРєР°). string description = 10210; // Описание действия для отображения РІ интерфейсе string icon = 10220; // Название РёРєРѕРЅРєРё для отображения действия РІ интерфейсе content.references.Reference image = 10230; // Рзображение для отображения РІ действия РІ интерфейсе repeated string groups = 10240; // Группы отображения действия РІ интерфейсе - Kind kind = 10300; // Указывает РЅР° что направлено действие + Kind kind = 10300; // Указывает область действия (РіРґРµ отображается действие) repeated string classes = 10310; // Классы данных Рє которым применимо действие (название коллекций или специальных РіСЂСѓРїРї РІ рамках которых данное действие применимо) // Для `CREATE` действуют следующие правила: // - Для создание записей РІ коллекции применимы действия которые содержат РІ classes название коллекции @@ -290,13 +280,11 @@ message Action { // DEPRECATED: Рспользуйте `action_type == "NAVIGATION"` string navigation_route = 10510; - enum Autorun { - NONE = 0; // Действие РЅРµ выполняется автоматически - ONCE_PER_USER = 1; // Действие выполняется РїСЂРё старте приложения - PER_USER_SESSION = 2; // Действие выполняется РїСЂРё старте приложения Рё РїСЂРё каждом РІС…РѕРґРµ пользователя РІ пространство - ONCE_SPACE = 3; // Действие выполняется РѕРґРёРЅ раз для пространства - } + // Параметр указывающий что действие выполняется автоматически + // Если указано, то действие выполняется автоматически каждый раз РїСЂРё загрузке приложения + bool autorun = 10520; - Autorun autorun = 10520; // Параметр указывающий что действие выполняется автоматически - bool confirm = 10530; // Параметр указывающий что действие требует подтверждения пользователя + // Параметр указывающий что действие требует подтверждения пользователя + // Перед выполнением действия пользователю отображается информация Рѕ действии Рё РєРЅРѕРїРєРё подтверждения/отмены + bool confirm = 10530; } \ No newline at end of file