diff --git a/proto/collections/collections.proto b/proto/collections/collections.proto index a90256e801893d743017e9b3f374321db436265b..5d404f181bace93554844d63159b2130d992c9b2 100644 --- a/proto/collections/collections.proto +++ b/proto/collections/collections.proto @@ -19,6 +19,9 @@ message Access { repeated string deny_read_fields = 8; repeated string deny_write_fields = 9; + + // Скрыть коллекцию в интерфейсе от пользователя + bool hidden = 10; } message Collection { @@ -38,9 +41,6 @@ message Collection { string schema = 7; bool hidden = 13; - // Коллекция без архива. Включение опции приведет к удалению всех записей в архиве, а функция архивирования станет недоступна - bool no_archive = 35; - message View { string space_id = 1; string env_id = 2; @@ -66,9 +66,22 @@ message Collection { repeated string tags = 16; Access access = 20; // Возможные действия с коллекцией на основе контекста запроса - bool no_revisions = 30; // без истории изменений (ревизии). История изменений записей в коллекции не будет сохраняться и вернуться к предыдущим версиям будет нельзя + // Коллекция без истории изменений (ревизии) + // История изменений записей в коллекции не будет сохраняться и вернуться к предыдущим версиям будет нельзя + bool no_revisions = 30; + uint32 max_revisions = 31; // старые ревизии сверх указанного количества будут автоматически удаляться. 0, пусто - без ограничений google.protobuf.Duration revision_ttl = 32; // ревизии старше указанного времени хранения будут автоматически удалятся. 0, пусто - без ограничений + + // Коллекция без архива + // Включение опции приведет к удалению всех записей в архиве, а функция архивирования станет недоступна + bool no_archive = 35; + + // Коллекция без публикации + // Все записи коллекции считаются опубликованными, функции публикации и снятия с публикации недоступны. + // При включении параметра коллекции "без публикации" все записи, независимо от статуса, будут считаться опубликованными. + // При отключении параметра "без публикации" статусы публикации будут восстановлены. + bool no_publish = 40; } message CreateRequest { diff --git a/proto/common/common.proto b/proto/common/common.proto index 96c102f3f7598c8f3c6bd77ed94fe8a988b65892..5d969b4103cd8e4f760243d39c195a535a0f8f2b 100644 --- a/proto/common/common.proto +++ b/proto/common/common.proto @@ -55,6 +55,9 @@ message Rule { string write_filter = 9; repeated string deny_read_fields = 10; repeated string deny_write_fields = 11; + + // скрыть коллекцию в интерфейсе от пользователя + bool hidden = 12; } message Collaborator { diff --git a/proto/extensions/extension.proto b/proto/extensions/extension.proto index c55171a48f23316f26650a000fa5db6f7ced89ed..e1db1ee67bce29f42140f1bdbfd9f616b683bfbd 100644 --- a/proto/extensions/extension.proto +++ b/proto/extensions/extension.proto @@ -155,6 +155,9 @@ message ActionRequest { string item_id = 10530; repeated string item_ids = 10540; + // Идентификатор локали в пространстве: поле может использоваться расширением, если действие возможно выполнить на разных локалях + string locale_id = 11050; + // Поля к которым применимо действие. В случае если действие выполняется из списка записей, содержит перечень // полей которые пользователь выбрал для отображения в интерфейсе. repeated string fields = 10550; diff --git a/proto/files/files.proto b/proto/files/files.proto index 45eacf2975f5c8bbc6e9a32268f1b965a51b131c..a09422ce6d0a436c177cdc0e01ed7c04f901fdda 100644 --- a/proto/files/files.proto +++ b/proto/files/files.proto @@ -14,6 +14,7 @@ message File { uint64 size = 3; // Размер файла string mime_type = 4; // Mime-type файла string url = 5; // Адрес для загрузки файла + bool temporary = 6; // Находится ли файл во временном хранилище } message MultipartUpload { diff --git a/proto/mailbox/mailbox.proto b/proto/mailbox/mailbox.proto new file mode 100644 index 0000000000000000000000000000000000000000..1c506760ab45ee39042f7e1097b74d9966cc8673 --- /dev/null +++ b/proto/mailbox/mailbox.proto @@ -0,0 +1,68 @@ +syntax = "proto3"; + +import "google/protobuf/empty.proto"; +import "common/common.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "git.perx.ru/perxis/perxis-go/api/mailbox;mailbox"; + +package perxis.mailbox; + +// Сообщение для уведомления +message Message { + string id = 1; // Уникальный идентификатор уведомления + string object_id = 2; // Идентификатор объекта события + string from = 3; // Идентификатор отправителя пользователя/сервиса/подсистемы + string to = 4; // Идентификатор получателя пользователя/сервиса/подсистемы + + string title = 5; // Заголовок уведомления + string message = 6; // Текст уведомления + google.protobuf.Timestamp created_at = 7; // Время создания + bool is_read = 8; // Статус прочтения +} + +// Отправить уведомление +message SendMessageRequest { + repeated string to = 1; // список получателей пользователей/сервисов/подсистем + Message message = 2; +} + +// Запрос на получение уведомлений +message ListMessageRequest { + FindOptions options = 10; +} + +// Ответ на получение уведомлений +message ListMessageResponse { + repeated Message message = 1; +} + +// Пометка уведомлений как прочитанных +message MarkMessagesRequest { + bool unread = 1; // Установить статус сообщения не/прочитано + FindOptions options = 10; +} + + +message FindOptions { + string recipient = 1; + repeated string message_ids = 3; + google.protobuf.Timestamp after = 4; + google.protobuf.Timestamp before = 5; + optional bool unread = 6; + common.FindOptions options = 10; +} + + +// Сервис уведомлений +service Mailbox { + + // Отправка уведомления + rpc Send(SendMessageRequest) returns(google.protobuf.Empty) {}; + + // Получение уведомлений, поле to в Message всегда содержит только получателя из запроса + rpc List(ListMessageRequest) returns(ListMessageResponse); + + // Пометка уведомлений как прочитанных + rpc MarkAsRead(MarkMessagesRequest) returns(google.protobuf.Empty) {}; +}