From 88d4368c92114b5a8a117f0ec37070749f986393 Mon Sep 17 00:00:00 2001
From: Pavel Antonov <antonov@perx.ru>
Date: Tue, 15 Oct 2024 14:23:15 +0000
Subject: [PATCH] =?UTF-8?q?feat:=20API=20=D0=A1=D0=B5=D1=80=D0=B2=D0=B8?=
 =?UTF-8?q?=D1=81=D0=B0=20Mailbox?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 proto/mailbox/mailbox.proto | 69 +++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)
 create mode 100644 proto/mailbox/mailbox.proto

diff --git a/proto/mailbox/mailbox.proto b/proto/mailbox/mailbox.proto
new file mode 100644
index 0000000..a974538
--- /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) {};
+}
-- 
GitLab