From a507af06e34015a5cceef4ec3817679c1da0d45d Mon Sep 17 00:00:00 2001
From: Pavel Antonov <antonov@perx.ru>
Date: Tue, 25 Jul 2023 17:11:28 +0400
Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=20=D0=BC?=
 =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=20References.Publish?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 proto/references/references.proto | 33 +++++++++++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/proto/references/references.proto b/proto/references/references.proto
index e8ef011..a6e7070 100644
--- a/proto/references/references.proto
+++ b/proto/references/references.proto
@@ -24,8 +24,37 @@ message GetResponse {
   repeated Reference notfound = 2;
 }
 
-// References принимает список ссылок на записи и возвращает два списка:
-// список найденных записей и не найденных ссылок
+// PublishRequest запрос на публикацию записей по ссылкам
+message PublishRequest {
+  string space_id = 1; // Пространство публикации
+  string env_id = 2; // Окружение публикации
+  repeated Reference references = 3; // Список ссылок на записи для публикации
+  bool recursive = 4; // Рекурсивно публиковать все ссылки на найденные записи
+  bool force = 5; // Принудительно публиковать записи, даже если они содержат не опубликованные ссылки
+}
+
+// PublishResponse ответ на запрос публикации записей
+message PublishResponse {
+  repeated Reference published = 2; // Список опубликованных записей
+  repeated Reference notfound = 3; // Список не найденных записей
+  repeated Reference unpublished = 4; // Список не опубликованных записей, требующих публикации
+}
+
+// References сервис предназначен для работы со ссылками на записи
 service References  {
+
+  // Get возвращает список записей по ссылкам
   rpc Get(GetRequest) returns(GetResponse) {}
+
+  // Publish принимает список ссылок на записи и публикует их с учетом вложенных ссылок.
+  //
+  // - В случае если флаг `recursive` установлен в true, то будут рекурсивно опубликованы
+  //   все записи на которые ссылаются найденные записи.
+  // - Если флаг `recursive` установлен в false, то будут опубликованы записи
+  //   только из списка `references` в случае если они не содержат не опубликованных
+  //   ссылок. В противном случае возвращается список не опубликованных записей `unpublished`
+  //   которые требуют публикации. Список `published` при этом будет пустым. В случае если флаг
+  //   `force` установлен в true, то записи будут опубликованы даже если они содержат
+  //   не опубликованные ссылки.
+  rpc Publish(PublishRequest) returns(PublishResponse) {}
 }
-- 
GitLab