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) {}; }