From 595e1e03da0c9457c74a63748f74f0a636c6ed37 Mon Sep 17 00:00:00 2001
From: Alena Petraki <alena.petraki@gmail.com>
Date: Thu, 12 Oct 2023 17:58:31 +0300
Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D1=81=D1=88=D0=B8=D1=80=D0=B5?=
 =?UTF-8?q?=D0=BD=D0=B0=20=D1=81=D0=BF=D0=B5=D1=86=D0=B8=D1=84=D0=B8=D0=BA?=
 =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D1=81=D1=82?=
 =?UTF-8?q?=D1=80=D1=83=D0=BA=D1=82=D1=83=D1=80=D0=B8=D1=80=D0=BE=D0=B2?=
 =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D0=BE=D0=B9=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?=
 =?UTF-8?q?=D0=B8.=20=D0=92=20Operation=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB?=
 =?UTF-8?q?=D1=8C=D0=B7=D1=83=D0=B5=D1=82=D1=81=D1=8F=20=D0=BE=D1=88=D0=B8?=
 =?UTF-8?q?=D0=B1=D0=BA=D0=B0=20=D1=82=D0=B8=D0=BF=D0=B0=20common.Error?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 proto/common/common.proto    | 38 ----------------------------
 proto/common/error.proto     | 49 ++++++++++++++++++++++++++++++++++++
 proto/common/operation.proto |  3 ++-
 proto/items/items.proto      |  1 +
 4 files changed, 52 insertions(+), 39 deletions(-)
 create mode 100644 proto/common/error.proto

diff --git a/proto/common/common.proto b/proto/common/common.proto
index 60a918a..a929133 100644
--- a/proto/common/common.proto
+++ b/proto/common/common.proto
@@ -6,44 +6,6 @@ package common;
 
 import "google/protobuf/struct.proto";
 
-message Error {
-  message BadRequest {
-    message FieldViolation {
-      string field = 1;
-      string description = 2;
-    }
-    repeated FieldViolation errors = 1;
-  }
-
-  message Help {
-    message Link {
-      string description =1;
-      string url = 2;
-    }
-    repeated Link links = 1;
-  }
-
-  message DebugInfo {
-    repeated string stack_trace = 1;
-    string detail = 2;
-  }
-
-  message LocalizedMessage {
-    string locale = 1;
-    string message = 2;
-  }
-
-  uint64 error_code = 1; // Код ошибки
-  string error_id = 2; // ID конкретного инцидента, ID уникальна для каждого случая.
-  string reason = 3; // ???
-  string domain = 4; // Сервис,Пакет к которому относится ошибка
-  map<string,string> metadata = 9; // Мета-информация
-  BadRequest bad_request = 10; // Ошибка запроса
-  DebugInfo debug_info = 11; // Отладочная информация
-  Help help = 100; // Пользовательская информации и инструкции
-  repeated LocalizedMessage localized_messages = 200; // Перевод сообщения об ошибке
-}
-
 message Filter {
   string op = 1;
   string field = 2;
diff --git a/proto/common/error.proto b/proto/common/error.proto
new file mode 100644
index 0000000..5dce268
--- /dev/null
+++ b/proto/common/error.proto
@@ -0,0 +1,49 @@
+syntax = "proto3";
+
+option go_package = "git.perx.ru/perxis/perxis-go/proto/common;common";
+
+package common;
+
+import "google/protobuf/struct.proto";
+
+message Error {
+  message BadRequest {
+    message FieldViolation {
+      string field = 1;
+      string description = 2;
+    }
+    repeated FieldViolation errors = 1;
+  }
+
+  message Help {
+    message Link {
+      string description =1;
+      string url = 2;
+    }
+    repeated Link links = 1;
+  }
+
+  message DebugInfo {
+    repeated string stack_trace = 1;
+    string detail = 2;
+  }
+
+  message LocalizedMessage {
+    string locale = 1;
+    string message = 2;
+  }
+
+  uint64 error_code = 1; // Код ошибки
+  string error_id = 2; // ID конкретного инцидента, ID уникальна для каждого случая.
+  string reason = 3; // ???
+  string domain = 4; // Сервис, пакет к которому относится ошибка
+  string message = 5; // Текст ошибки
+  string details = 6; // Дополнительные детали об ошибке
+  map<string,string> metadata = 9; // Мета-информация
+  BadRequest bad_request = 10; // Ошибка запроса
+  DebugInfo debug_info = 11; // Отладочная информация
+  Help help = 100; // Пользовательская информации и инструкции
+  repeated LocalizedMessage localized_messages = 200; // Перевод сообщения об ошибке
+
+  repeated Error errors = 500; // Вложенные ошибки
+}
diff --git a/proto/common/operation.proto b/proto/common/operation.proto
index d77171a..888ff4b 100644
--- a/proto/common/operation.proto
+++ b/proto/common/operation.proto
@@ -4,6 +4,7 @@ package common;
 
 import "google/protobuf/timestamp.proto";
 import "google/protobuf/any.proto";
+import "common/error.proto";
 
 option go_package = "git.perx.ru/perxis/perxis-go/proto/common;common";
 
@@ -37,6 +38,6 @@ message Operation {
     google.protobuf.Any response = 9;
 
     // Результат выполнения операции в случае ошибки
-    string error = 10;
+    Error error = 10;
   }
 }
diff --git a/proto/items/items.proto b/proto/items/items.proto
index 9ab01fe..444cdb0 100644
--- a/proto/items/items.proto
+++ b/proto/items/items.proto
@@ -10,6 +10,7 @@ syntax = "proto3";
 
 import "google/protobuf/empty.proto";
 import "common/common.proto";
+import "common/error.proto";
 import "google/protobuf/timestamp.proto";
 import "google/protobuf/struct.proto";
 
-- 
GitLab