@mamindom/contracts 1.0.193 → 1.0.201

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.
Files changed (75) hide show
  1. package/dist/events/auth/user-authenticated.interface.d.ts +2 -0
  2. package/dist/events/orders/index.d.ts +1 -0
  3. package/dist/events/orders/index.js +1 -0
  4. package/dist/events/orders/order-side-effects.interface.d.ts +67 -0
  5. package/dist/events/orders/order-side-effects.interface.js +2 -0
  6. package/dist/gen/banner.d.ts +18 -27
  7. package/dist/gen/calculation.d.ts +21 -10
  8. package/dist/gen/calculation.js +1 -1
  9. package/dist/gen/cart.d.ts +31 -0
  10. package/dist/gen/cart.js +1 -0
  11. package/dist/gen/category.d.ts +1 -0
  12. package/dist/gen/coupon.d.ts +1 -0
  13. package/dist/gen/delivery_settings.d.ts +0 -3
  14. package/dist/gen/notification.d.ts +75 -2
  15. package/dist/gen/notification.js +34 -1
  16. package/dist/gen/order.d.ts +29 -1
  17. package/dist/gen/order.js +1 -0
  18. package/dist/gen/payment.d.ts +30 -4
  19. package/dist/gen/payment.js +3 -0
  20. package/dist/gen/post.d.ts +3 -0
  21. package/dist/gen/post_comment.d.ts +1 -0
  22. package/dist/gen/product.d.ts +21 -13
  23. package/dist/gen/promotion.d.ts +2 -0
  24. package/dist/gen/shop_filters.d.ts +0 -1
  25. package/dist/gen/site_settings.d.ts +2 -0
  26. package/dist/proto/banner.proto +8 -29
  27. package/dist/proto/calculation.proto +39 -8
  28. package/dist/proto/cart.proto +47 -0
  29. package/dist/proto/category.proto +1 -0
  30. package/dist/proto/coupon.proto +3 -0
  31. package/dist/proto/delivery_settings.proto +3 -3
  32. package/dist/proto/notification.proto +84 -2
  33. package/dist/proto/order.proto +43 -1
  34. package/dist/proto/payment.proto +49 -2
  35. package/dist/proto/post.proto +5 -0
  36. package/dist/proto/post_comment.proto +5 -2
  37. package/dist/proto/product.proto +12 -11
  38. package/dist/proto/promotion.proto +4 -0
  39. package/dist/proto/shop_filters.proto +1 -1
  40. package/dist/proto/site_settings.proto +4 -0
  41. package/events/auth/otp-requested.interface.ts +3 -4
  42. package/events/auth/user-authenticated.interface.ts +3 -0
  43. package/events/orders/index.ts +1 -0
  44. package/events/orders/order-side-effects.interface.ts +82 -0
  45. package/gen/banner.ts +16 -29
  46. package/gen/calculation.ts +26 -14
  47. package/gen/cart.ts +38 -0
  48. package/gen/category.ts +1 -0
  49. package/gen/coupon.ts +1 -0
  50. package/gen/delivery_settings.ts +0 -3
  51. package/gen/notification.ts +136 -2
  52. package/gen/order.ts +38 -1
  53. package/gen/payment.ts +49 -4
  54. package/gen/post.ts +3 -0
  55. package/gen/post_comment.ts +1 -0
  56. package/gen/product.ts +19 -16
  57. package/gen/promotion.ts +2 -0
  58. package/gen/shop_filters.ts +1 -4
  59. package/gen/site_settings.ts +2 -0
  60. package/package.json +1 -1
  61. package/proto/banner.proto +8 -29
  62. package/proto/calculation.proto +39 -8
  63. package/proto/cart.proto +47 -0
  64. package/proto/category.proto +1 -0
  65. package/proto/coupon.proto +3 -0
  66. package/proto/delivery_settings.proto +3 -3
  67. package/proto/notification.proto +84 -2
  68. package/proto/order.proto +43 -1
  69. package/proto/payment.proto +49 -2
  70. package/proto/post.proto +5 -0
  71. package/proto/post_comment.proto +5 -2
  72. package/proto/product.proto +12 -11
  73. package/proto/promotion.proto +4 -0
  74. package/proto/shop_filters.proto +1 -1
  75. package/proto/site_settings.proto +4 -0
@@ -7,15 +7,44 @@ import "common_promo.proto";
7
7
  service PromoCalculationService {
8
8
  rpc ValidateAndCalculate(ValidateAndCalculateRequest) returns (ValidateAndCalculateResponse);
9
9
 
10
- rpc ApplyPromotion(ApplyPromotionRequest) returns (SuccessResponse);
10
+
11
+ rpc ValidateCoupon(ValidateCouponRequest) returns (ValidateCouponResponse);
12
+ }
13
+
14
+ message ValidateCouponRequest {
15
+ string code = 1;
16
+ string user_id = 2;
17
+
18
+ repeated CartItem items = 3;
19
+ double order_total = 4;
20
+ bool is_first_order = 5;
21
+ int32 order_count = 6;
22
+ repeated string user_groups = 7;
23
+ }
24
+
25
+ message ValidateCouponResponse {
26
+ bool usable = 1;
27
+
28
+ string reason = 2;
29
+
30
+ bool permanent = 3;
31
+ double discount_amount = 4;
32
+
33
+ double min_order_amount = 5;
11
34
  }
12
35
 
13
36
  message CartItem {
14
37
  string product_id = 1;
38
+
39
+
15
40
  string category_id = 2;
41
+
16
42
  string brand_id = 3;
17
43
  int32 quantity = 4;
18
44
  double price = 5;
45
+
46
+
47
+ repeated string category_ids = 6;
19
48
  }
20
49
 
21
50
  message ValidateAndCalculateRequest {
@@ -35,13 +64,22 @@ message ValidateAndCalculateResponse {
35
64
  double final_total = 3;
36
65
 
37
66
  repeated AppliedPromotion applied_promotions = 4;
67
+
68
+
38
69
  optional AppliedCoupon applied_coupon = 5;
39
70
 
40
71
  optional string error_message = 6;
72
+
41
73
 
42
74
  optional string coupon_error = 7;
43
75
 
76
+
77
+ optional string coupon_error_reason = 10;
78
+
44
79
  repeated GiftSuggestion gift_suggestions = 8;
80
+
81
+
82
+ repeated AppliedCoupon applied_coupons = 9;
45
83
  }
46
84
 
47
85
  message GiftSuggestion {
@@ -65,10 +103,3 @@ message AppliedCoupon {
65
103
  double discount_amount = 4;
66
104
  }
67
105
 
68
- message ApplyPromotionRequest {
69
- string user_id = 1;
70
- string order_id = 2;
71
- double discount_amount = 3;
72
- optional string coupon_code = 4;
73
- repeated string promotion_ids = 5;
74
- }
package/proto/cart.proto CHANGED
@@ -8,6 +8,7 @@ service CartService {
8
8
  rpc GetCart(GetCartRequest) returns (CartResponse);
9
9
 
10
10
  rpc AddItem(AddItemRequest) returns (CartResponse);
11
+ rpc AddItems(AddItemsRequest) returns (AddItemsResponse);
11
12
  rpc UpdateItemQty(UpdateItemQtyRequest) returns (CartResponse);
12
13
  rpc RemoveItem(RemoveItemRequest) returns (CartResponse);
13
14
  rpc ClearCart(ClearCartRequest) returns (SuccessResponse);
@@ -56,6 +57,11 @@ message CartItem {
56
57
  double line_discount = 14;
57
58
  double line_total = 15;
58
59
  string size = 16;
60
+
61
+
62
+ bool unavailable = 17;
63
+
64
+ int32 available_stock = 18;
59
65
  }
60
66
 
61
67
  message AppliedPromotion {
@@ -80,9 +86,13 @@ message AppliedCertificate {
80
86
  string error = 6;
81
87
  }
82
88
 
89
+
83
90
  message AppliedBonuses {
84
91
  double available = 1;
92
+
85
93
  double applied = 2;
94
+
95
+ double requested = 3;
86
96
  }
87
97
 
88
98
  message Recipient {
@@ -116,6 +126,7 @@ message CartTotals {
116
126
  double promo_discount = 2;
117
127
  double coupon_discount = 3;
118
128
  double certificate_applied = 4;
129
+
119
130
  double bonuses_applied = 5;
120
131
  double shipping_cost = 6;
121
132
  double grand_total = 7;
@@ -165,6 +176,10 @@ message WishlistItem {
165
176
 
166
177
  message WishlistResponse {
167
178
  repeated WishlistItem items = 1;
179
+
180
+
181
+ bool ok = 2;
182
+ string error_message = 3;
168
183
  }
169
184
 
170
185
  message CartOwner {
@@ -193,6 +208,34 @@ message AddItemRequest {
193
208
  int32 quantity = 4;
194
209
  }
195
210
 
211
+ message AddItemInput {
212
+ string product_id = 1;
213
+ string variant_id = 2;
214
+ int32 quantity = 3;
215
+ }
216
+
217
+
218
+ message AddItemsRequest {
219
+ CartOwner owner = 1;
220
+ repeated AddItemInput items = 2;
221
+ }
222
+
223
+ message AddItemResult {
224
+ string product_id = 1;
225
+ string variant_id = 2;
226
+ bool ok = 3;
227
+
228
+ string reason = 4;
229
+ }
230
+
231
+ message AddItemsResponse {
232
+ bool ok = 1;
233
+ Cart cart = 2;
234
+ string error_message = 3;
235
+ repeated AddItemResult results = 4;
236
+ string error_code = 5;
237
+ }
238
+
196
239
  message UpdateItemQtyRequest {
197
240
  CartOwner owner = 1;
198
241
  string variant_id = 2;
@@ -266,6 +309,8 @@ message SetCheckoutDraftRequest {
266
309
  bool has_delivery = 8;
267
310
  bool has_payment = 9;
268
311
  bool has_comment = 10;
312
+
313
+ bool has_do_not_call = 11;
269
314
  }
270
315
 
271
316
  message RecalculateRequest {
@@ -291,6 +336,8 @@ message CartResponse {
291
336
  bool ok = 1;
292
337
  Cart cart = 2;
293
338
  string error_message = 3;
339
+
340
+ string error_code = 4;
294
341
  }
295
342
 
296
343
  message SuccessResponse {
@@ -145,6 +145,7 @@ message UpdateCategoryRequest {
145
145
  map<string, string> meta_h1 = 12;
146
146
 
147
147
  optional string image_id = 13;
148
+ optional string guid1c = 14;
148
149
  }
149
150
 
150
151
  message DeleteCategoryRequest {
@@ -81,6 +81,9 @@ message GenerateCouponsRequest {
81
81
 
82
82
  optional int32 usage_limit_per_user = 5;
83
83
  optional string expires_at = 6;
84
+
85
+
86
+ optional int32 usage_limit_total = 7;
84
87
  }
85
88
 
86
89
  message GenerateCouponsResponse {
@@ -18,7 +18,8 @@ message DeliverySettingsResponse {
18
18
 
19
19
  double default_declared_value = 3;
20
20
 
21
- optional string np_sender_warehouse_ref = 4;
21
+
22
+ reserved 4;
22
23
 
23
24
  string updated_at = 5;
24
25
  }
@@ -29,8 +30,7 @@ message UpdateDeliverySettingsRequest {
29
30
  optional double default_item_weight_kg = 1;
30
31
  optional double free_shipping_threshold = 2;
31
32
  optional double default_declared_value = 3;
32
- optional string np_sender_warehouse_ref = 4;
33
- bool clear_np_sender_warehouse_ref = 5;
33
+ reserved 4, 5;
34
34
  }
35
35
 
36
36
  message ListCarriersRequest {}
@@ -44,6 +44,80 @@ service NotificationLogsService {
44
44
  rpc ListLogs(ListLogsRequest) returns (ListLogsResponse);
45
45
  }
46
46
 
47
+
48
+ service NotificationConsentService {
49
+ rpc VerifyUnsubscribeToken(VerifyUnsubscribeTokenRequest) returns (VerifyUnsubscribeTokenResponse);
50
+ rpc ApplyUnsubscribe(ApplyUnsubscribeRequest) returns (ApplyUnsubscribeResponse);
51
+ }
52
+
53
+
54
+ service NewsletterService {
55
+ rpc Subscribe(NewsletterSubscribeRequest) returns (NewsletterSubscribeResponse);
56
+ rpc ListSubscribers(ListNewsletterSubscribersRequest) returns (ListNewsletterSubscribersResponse);
57
+ }
58
+
59
+ message NewsletterSubscribeRequest {
60
+ string email = 1;
61
+ optional string locale = 2;
62
+ optional string source = 3;
63
+ }
64
+
65
+ message NewsletterSubscribeResponse {
66
+ bool ok = 1;
67
+ string error_message = 2;
68
+
69
+ bool already_subscribed = 3;
70
+ }
71
+
72
+ message ListNewsletterSubscribersRequest {
73
+ int32 page = 1;
74
+ int32 limit = 2;
75
+ optional string search = 3;
76
+
77
+ optional bool active = 4;
78
+ }
79
+
80
+ message NewsletterSubscriberItem {
81
+ string id = 1;
82
+ string email = 2;
83
+ string locale = 3;
84
+ string source = 4;
85
+ bool active = 5;
86
+ string created_at = 6;
87
+ optional string unsubscribed_at = 7;
88
+ }
89
+
90
+ message ListNewsletterSubscribersResponse {
91
+ repeated NewsletterSubscriberItem items = 1;
92
+ int32 total = 2;
93
+ int32 page = 3;
94
+ int32 limit = 4;
95
+ int32 active_total = 5;
96
+ }
97
+
98
+ message VerifyUnsubscribeTokenRequest {
99
+ string token = 1;
100
+ }
101
+
102
+ message VerifyUnsubscribeTokenResponse {
103
+ bool ok = 1;
104
+ string error_message = 2;
105
+ optional string email = 3;
106
+ optional string user_id = 4;
107
+ repeated string unsubscribed_from = 5;
108
+ }
109
+
110
+ message ApplyUnsubscribeRequest {
111
+ string token = 1;
112
+ repeated string categories = 2;
113
+ }
114
+
115
+ message ApplyUnsubscribeResponse {
116
+ bool ok = 1;
117
+ string error_message = 2;
118
+ repeated string categories = 3;
119
+ }
120
+
47
121
  service TelegramChatsService {
48
122
  rpc ListChats(ListChatsRequest) returns (ListChatsResponse);
49
123
  rpc UpsertChat(UpsertChatRequest) returns (TelegramChatResponse);
@@ -240,6 +314,9 @@ enum CampaignRecipientStatusEnum {
240
314
  RECIPIENT_FAILED = 3;
241
315
  RECIPIENT_SKIPPED_OPT_OUT = 4;
242
316
  RECIPIENT_SKIPPED_NO_CONTACT = 5;
317
+
318
+
319
+ RECIPIENT_SENDING = 6;
243
320
  }
244
321
 
245
322
  service BrandingService {
@@ -373,6 +450,9 @@ message UpsertTemplateRequest {
373
450
  string body_text = 9;
374
451
  string variables_json = 10;
375
452
  bool is_active = 11;
453
+
454
+
455
+ optional string actor_id = 12;
376
456
  }
377
457
 
378
458
  message UpdateTemplateRequest {
@@ -380,8 +460,10 @@ message UpdateTemplateRequest {
380
460
  optional string title = 2;
381
461
  optional string subject = 3;
382
462
  optional string content_json = 4;
383
- string body_html = 5;
384
- string body_text = 6;
463
+
464
+
465
+ optional string body_html = 5;
466
+ optional string body_text = 6;
385
467
  optional string variables_json = 7;
386
468
  optional bool is_active = 8;
387
469
 
package/proto/order.proto CHANGED
@@ -23,6 +23,7 @@ service OrderService {
23
23
  rpc RemoveTag(RemoveTagRequest) returns (OrderResponse);
24
24
 
25
25
  rpc EditItems(EditItemsRequest) returns (OrderResponse);
26
+ rpc PreviewRecalculation(PreviewRecalculationRequest) returns (PreviewRecalculationResponse);
26
27
  rpc SetTrackingNumber(SetTrackingNumberRequest) returns (OrderResponse);
27
28
 
28
29
  rpc ApplyRecalculation(ApplyRecalculationRequest) returns (OrderResponse);
@@ -248,7 +249,10 @@ message Order {
248
249
  OrderPayment payment = 10;
249
250
  OrderTotals totals = 11;
250
251
 
251
- string promo_code = 12;
252
+
253
+ reserved 12;
254
+ repeated string promo_codes = 27;
255
+
252
256
  string certificate_code = 13;
253
257
  bool do_not_call = 14;
254
258
  string comment = 15;
@@ -418,6 +422,33 @@ message EditItemsRequest {
418
422
  string id = 1;
419
423
  repeated OrderItemInput items = 2;
420
424
  string actor_id = 3;
425
+
426
+
427
+ bool accept_discount_change = 4;
428
+ }
429
+
430
+
431
+ message PreviewRecalculationRequest {
432
+ string id = 1;
433
+ repeated OrderItemInput items = 2;
434
+ }
435
+
436
+ message DiscountChange {
437
+
438
+ string kind = 1;
439
+ string name = 2;
440
+ double before = 3;
441
+ double after = 4;
442
+ }
443
+
444
+ message PreviewRecalculationResponse {
445
+ bool ok = 1;
446
+ string error_message = 2;
447
+ OrderTotals before = 3;
448
+ OrderTotals after = 4;
449
+ repeated DiscountChange discount_changes = 5;
450
+
451
+ bool discounts_decreased = 6;
421
452
  }
422
453
 
423
454
  message ApplyRecalculationRequest {
@@ -429,8 +460,11 @@ message ApplyRecalculationRequest {
429
460
  double coupon_discount = 6;
430
461
  double certificate_applied = 7;
431
462
  double bonuses_used = 8;
463
+
432
464
  double shipping_cost = 9;
433
465
  double grand_total = 10;
466
+
467
+ string idempotency_key = 11;
434
468
  }
435
469
 
436
470
  message SetTrackingNumberRequest {
@@ -445,12 +479,20 @@ message ReorderOrderRequest {
445
479
  string user_id = 2;
446
480
  }
447
481
 
482
+ message ReorderSkippedItem {
483
+ string product_id = 1;
484
+ string variant_id = 2;
485
+
486
+ string reason = 3;
487
+ }
488
+
448
489
  message ReorderResponse {
449
490
  bool ok = 1;
450
491
  string cart_id = 2;
451
492
  int32 added = 3;
452
493
  int32 skipped = 4;
453
494
  string error = 5;
495
+ repeated ReorderSkippedItem skipped_items = 6;
454
496
  }
455
497
 
456
498
  message ListHistoryRequest {
@@ -12,6 +12,9 @@ service PaymentService {
12
12
 
13
13
 
14
14
  rpc Capture(CaptureRequest) returns (PaymentResponse);
15
+
16
+
17
+ rpc MarkPaidOffline(MarkPaidOfflineRequest) returns (PaymentResponse);
15
18
 
16
19
  rpc Cancel(CancelRequest) returns (PaymentResponse);
17
20
 
@@ -30,6 +33,10 @@ service PaymentService {
30
33
  rpc GetProviderConfig(GetProviderConfigRequest) returns (ProviderConfigResponse);
31
34
 
32
35
  rpc UpdateProviderConfig(UpdateProviderConfigRequest) returns (ProviderConfigResponse);
36
+
37
+
38
+ rpc GetPaymentsMode(GetPaymentsModeRequest) returns (PaymentsModeResponse);
39
+ rpc SetPaymentsMode(SetPaymentsModeRequest) returns (PaymentsModeResponse);
33
40
  }
34
41
 
35
42
 
@@ -52,6 +59,10 @@ message Payment {
52
59
  int64 captured_at = 16;
53
60
  int64 cancelled_at = 17;
54
61
  int64 refunded_at = 18;
62
+
63
+
64
+ string capture_source = 19;
65
+ string capture_note = 20;
55
66
  }
56
67
 
57
68
  message PaymentProviderInfo {
@@ -62,9 +73,14 @@ message PaymentProviderInfo {
62
73
  string description = 5;
63
74
 
64
75
  bool configured = 6;
65
- // Для installment-провайдерів — максимум частин оплати (з конфігу `parts`).
66
- // 0 для звичайних провайдерів. Фронт показує «до N платежів» без env-синхронізації.
76
+
67
77
  int32 installment_max_parts = 7;
78
+
79
+
80
+ string environment = 8;
81
+
82
+
83
+ bool blocked_by_mode = 9;
68
84
  }
69
85
 
70
86
 
@@ -119,6 +135,15 @@ message CaptureRequest {
119
135
  string actor_id = 3;
120
136
  }
121
137
 
138
+ message MarkPaidOfflineRequest {
139
+ string id = 1;
140
+
141
+ double amount = 2;
142
+
143
+ string note = 3;
144
+ string actor_id = 4;
145
+ }
146
+
122
147
  message CancelRequest {
123
148
  string id = 1;
124
149
  string reason = 2;
@@ -201,3 +226,25 @@ message UpdateProviderConfigRequest {
201
226
  repeated ProviderConfigPatch fields = 2;
202
227
  string actor_id = 3;
203
228
  }
229
+
230
+
231
+ message GetPaymentsModeRequest {}
232
+
233
+ message SetPaymentsModeRequest {
234
+
235
+ string mode = 1;
236
+ string actor_id = 2;
237
+
238
+
239
+ string confirmation = 3;
240
+ }
241
+
242
+ message PaymentsModeResponse {
243
+ bool ok = 1;
244
+ string mode = 2;
245
+ int64 updated_at = 3;
246
+ string updated_by = 4;
247
+
248
+
249
+ repeated string blocked_providers = 5;
250
+ }
package/proto/post.proto CHANGED
@@ -191,6 +191,11 @@ message UpdatePostRequest {
191
191
  repeated PostImagePayload images = 14;
192
192
 
193
193
  string updated_by_id = 15;
194
+
195
+
196
+ bool clear_categories = 16;
197
+ bool clear_tags = 17;
198
+ bool clear_images = 18;
194
199
  }
195
200
 
196
201
 
@@ -42,8 +42,11 @@ message CommentResponse {
42
42
  message GetCommentsRequest {
43
43
  PaginationRequest pagination = 1;
44
44
 
45
- optional string post_id = 2;
46
- optional CommentStatus status = 3;
45
+ optional string post_id = 2;
46
+ optional CommentStatus status = 3;
47
+
48
+
49
+ bool public_view = 4;
47
50
  }
48
51
 
49
52
  message GetCommentsResponse {
@@ -189,7 +189,7 @@ message ProductListItemResponse {
189
189
 
190
190
  string updated_at = 25;
191
191
 
192
- // Артикул із 1С. Неунікальний, на відміну від sku, тож зберігається окремо.
192
+
193
193
  optional string article1c = 26;
194
194
  }
195
195
 
@@ -248,6 +248,9 @@ message ProductDetailResponse {
248
248
 
249
249
 
250
250
  repeated string barcodes = 42;
251
+
252
+
253
+ map<string, string> seo_text = 43;
251
254
  }
252
255
 
253
256
 
@@ -414,6 +417,9 @@ message CreateProductRequest {
414
417
  map<string, string> color_label = 25;
415
418
  optional string color_hex = 26;
416
419
  optional double weight_kg = 27;
420
+
421
+
422
+ map<string, string> seo_text = 28;
417
423
  }
418
424
 
419
425
  message UpdateProductRequest {
@@ -451,18 +457,13 @@ message UpdateProductRequest {
451
457
  optional double weight_kg = 26;
452
458
  optional string guid1c = 27;
453
459
 
454
- // Явне очищення списків.
455
- //
456
- // У proto3 `repeated` не відрізняє «не передано» від «передано порожнім»,
457
- // тож порожній масив сам по собі означає «не чіпати». Раніше цього
458
- // розрізнення не було: клієнт, який не надіслав `images`, отримував від
459
- // gateway [] — і всі фото товару видалялися разом із файлами в S3.
460
- //
461
- // Той самий підхід уже застосований в UpdateProductVariantRequest.
460
+
462
461
  bool clear_images = 28;
463
462
  bool clear_categories = 29;
464
463
  bool clear_stickers = 30;
465
464
  bool clear_attributes = 31;
465
+
466
+ map<string, string> seo_text = 32;
466
467
  }
467
468
 
468
469
  message SetManualRatingRequest {
@@ -618,9 +619,9 @@ message ProductGroupMember {
618
619
  double price = 7;
619
620
  ProductStatus status = 8;
620
621
 
621
- // Потрібен вітрині: перемикач кольору веде на картку сусіда за ЧПУ.
622
+
622
623
  string slug = 9;
623
- // Чи є що купити — сусід без залишку показується неактивним, а не зникає.
624
+
624
625
  bool in_stock = 10;
625
626
  }
626
627
 
@@ -302,6 +302,10 @@ message UpdatePromotionRequest {
302
302
  optional string cascade_steps = 25;
303
303
  optional double bundle_price = 26;
304
304
  optional int32 bundle_size = 27;
305
+
306
+
307
+ optional bool replace_conditions = 28;
308
+ optional bool replace_exclusions = 29;
305
309
  }
306
310
 
307
311
  message DeletePromotionRequest {
@@ -63,7 +63,7 @@ message ShopFilterOption {
63
63
 
64
64
  optional string slug = 4;
65
65
 
66
- // Для розмірів: атрибут-джерело значення (вкладки у фільтрі «Розмір»).
66
+
67
67
  optional string group_slug = 5;
68
68
  optional string group_label = 6;
69
69
  }
@@ -42,6 +42,8 @@ message SiteSettingsResponse {
42
42
 
43
43
  optional string working_hours = 7;
44
44
  optional string working_hours_note = 8;
45
+
46
+ optional string size_category_slugs = 9;
45
47
  }
46
48
 
47
49
 
@@ -62,4 +64,6 @@ message UpdateSiteSettingsRequest {
62
64
 
63
65
  optional string working_hours = 9;
64
66
  optional string working_hours_note = 10;
67
+
68
+ optional string size_category_slugs = 11;
65
69
  }