diff --git a/proto/mailbox/mailbox.proto b/proto/mailbox/mailbox.proto new file mode 100644 index 0000000000000000000000000000000000000000..a974538183b50cd58dab767fe0a3004441db488a --- /dev/null +++ b/proto/mailbox/mailbox.proto @@ -0,0 +1,69 @@ +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 { + string recipient = 1; + FindOptions options = 2; // Дополнительные параметры РїРѕРёСЃРєР° +} + +// Ответ РЅР° получение уведомлений +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) {}; +}