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