@aepstore-dev/contracts 1.68.0 → 1.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aepstore-dev/contracts",
3
- "version": "1.68.0",
3
+ "version": "1.70.0",
4
4
  "description": "Protobuf definitions for aepstore microservices",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -9,22 +9,27 @@ service SupportService {
9
9
 
10
10
  // user
11
11
  rpc CreateTicket(CreateTicketRequest) returns (Ticket);
12
- rpc GetTicket(GetTicketRequest) returns (TicketWithMessages);
12
+ rpc GetTicket(GetTicketRequest) returns (Ticket);
13
+ rpc ListTicketMessages(ListTicketMessagesRequest) returns (TicketMessagesListResponse);
13
14
  rpc ListMyTickets(ListMyTicketsRequest) returns (TicketsListResponse);
14
15
  rpc ReplyTicket(ReplyTicketRequest) returns (TicketMessage);
15
16
  rpc CloseTicket(CloseTicketRequest) returns (Ticket);
16
17
  rpc ReopenTicket(ReopenTicketRequest) returns (ReopenTicketResponse);
18
+ rpc MarkTicketRead(MarkTicketReadRequest) returns (TicketReadState);
17
19
  rpc ReportTicket(ReportTicketRequest) returns (SupportTicketComplaint);
18
20
  rpc RateTicket(RateTicketRequest) returns (SupportTicketRating);
19
21
 
20
22
  // staff/admin
21
23
  rpc ListTickets(ListTicketsRequest) returns (TicketsListResponse);
22
- rpc AssignTicket(AssignTicketRequest) returns (Ticket);
23
- rpc SetTicketStatus(SetTicketStatusRequest) returns (Ticket);
24
- rpc DeleteTicket(DeleteTicketRequest) returns (Ticket);
25
- rpc UpdateTicketMessage(UpdateTicketMessageRequest) returns (TicketMessage);
26
- rpc DeleteTicketMessage(DeleteTicketMessageRequest) returns (TicketMessage);
27
- }
24
+ rpc AssignTicket(AssignTicketRequest) returns (Ticket);
25
+ rpc SetTicketStatus(SetTicketStatusRequest) returns (Ticket);
26
+ rpc DeleteTicket(DeleteTicketRequest) returns (Ticket);
27
+ rpc UpdateTicketMessage(UpdateTicketMessageRequest) returns (TicketMessage);
28
+ rpc DeleteTicketMessage(DeleteTicketMessageRequest) returns (TicketMessage);
29
+ rpc GetTicketCreationBan(GetTicketCreationBanRequest) returns (TicketCreationBanState);
30
+ rpc SetTicketCreationBan(SetTicketCreationBanRequest) returns (SupportTicketBan);
31
+ rpc ClearTicketCreationBan(ClearTicketCreationBanRequest) returns (TicketCreationBanState);
32
+ }
28
33
 
29
34
  message PingRequest { string message = 1; }
30
35
  message PingResponse { bool ok = 1; string message = 2; }
@@ -52,6 +57,9 @@ message Ticket {
52
57
  string deleted_at = 20;
53
58
  int32 rating = 21; // 0 if the current user has not rated it
54
59
  bool has_complaint = 22; // true if the current user has already reported it
60
+ int32 unread_messages_count = 23;
61
+ string last_read_message_id = 24;
62
+ string last_read_at = 25;
55
63
  }
56
64
 
57
65
  message TicketMessage {
@@ -67,8 +75,9 @@ message TicketMessage {
67
75
  string edited_at = 10; // '' если не редактировалось
68
76
  // Отображаемое имя автора: агент — «Имя Ф.» из fullName (фолбэк username),
69
77
  // клиент — username, системное — ''.
70
- string author_name = 11;
71
- }
78
+ string author_name = 11;
79
+ string deleted_at = 12;
80
+ }
72
81
 
73
82
  message TicketAttachment {
74
83
  string file_name = 1;
@@ -112,14 +121,43 @@ message CreateTicketRequest {
112
121
  repeated TicketAttachment attachments = 13; // storage_key+file_name+file_size+mime_type
113
122
  }
114
123
 
115
- message GetTicketRequest {
116
- string id = 1;
117
- string requester_id = 2;
118
- bool is_staff = 3; // staff see internal notes + any ticket
119
- }
120
-
121
- message ListMyTicketsRequest {
122
- string author_id = 1;
124
+ message GetTicketRequest {
125
+ string id = 1;
126
+ string requester_id = 2;
127
+ bool is_staff = 3; // staff see internal notes + any ticket
128
+ }
129
+
130
+ message ListTicketMessagesRequest {
131
+ string ticket_id = 1;
132
+ string requester_id = 2;
133
+ bool is_staff = 3; // staff see internal notes + any ticket
134
+ int32 page = 4; // page=1 returns latest messages
135
+ int32 limit = 5; // default 30, max 100
136
+ }
137
+
138
+ message TicketMessagesListResponse {
139
+ repeated TicketMessage items = 1;
140
+ int32 total = 2;
141
+ int32 page = 3;
142
+ int32 limit = 4;
143
+ }
144
+
145
+ message MarkTicketReadRequest {
146
+ string ticket_id = 1;
147
+ string requester_id = 2;
148
+ string last_read_message_id = 3; // optional; empty means latest visible message
149
+ }
150
+
151
+ message TicketReadState {
152
+ string ticket_id = 1;
153
+ string user_id = 2;
154
+ string last_read_message_id = 3;
155
+ string last_read_at = 4;
156
+ int32 unread_messages_count = 5;
157
+ }
158
+
159
+ message ListMyTicketsRequest {
160
+ string author_id = 1;
123
161
  string status = 2; // single value OR comma-separated (e.g. "OPEN,PENDING,IN_PROGRESS")
124
162
  int32 page = 3;
125
163
  int32 limit = 4;
@@ -192,6 +230,38 @@ message SupportTicketRating {
192
230
  string updated_at = 7;
193
231
  }
194
232
 
233
+ message SupportTicketBan {
234
+ string id = 1;
235
+ string user_id = 2;
236
+ string created_by_id = 3;
237
+ string reason = 4;
238
+ string expires_at = 5;
239
+ string created_at = 6;
240
+ string updated_at = 7;
241
+ bool is_active = 8;
242
+ }
243
+
244
+ message TicketCreationBanState {
245
+ bool is_banned = 1;
246
+ SupportTicketBan ban = 2;
247
+ }
248
+
249
+ message GetTicketCreationBanRequest {
250
+ string user_id = 1;
251
+ }
252
+
253
+ message SetTicketCreationBanRequest {
254
+ string user_id = 1;
255
+ string admin_id = 2;
256
+ string duration = 3; // DAY_1|DAY_7|MONTH_1
257
+ string reason = 4;
258
+ }
259
+
260
+ message ClearTicketCreationBanRequest {
261
+ string user_id = 1;
262
+ string admin_id = 2;
263
+ }
264
+
195
265
  message ListTicketsRequest {
196
266
  string status = 1; // single value OR comma-separated
197
267
  string category = 2;