@mamindom/contracts 1.0.143 → 1.0.145

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 (97) hide show
  1. package/dist/gen/attribute.d.ts +40 -0
  2. package/dist/gen/attribute.js +1 -0
  3. package/dist/gen/brand.d.ts +19 -0
  4. package/dist/gen/brand.js +8 -1
  5. package/dist/gen/bundle.d.ts +0 -2
  6. package/dist/gen/cart.d.ts +0 -28
  7. package/dist/gen/category.d.ts +26 -0
  8. package/dist/gen/category.js +1 -0
  9. package/dist/gen/delivery.d.ts +0 -1
  10. package/dist/gen/delivery_settings.d.ts +0 -4
  11. package/dist/gen/faq.d.ts +0 -6
  12. package/dist/gen/manager.d.ts +0 -12
  13. package/dist/gen/notification.d.ts +0 -71
  14. package/dist/gen/order.d.ts +0 -29
  15. package/dist/gen/page.d.ts +0 -5
  16. package/dist/gen/payment.d.ts +0 -22
  17. package/dist/gen/pickup.d.ts +0 -9
  18. package/dist/gen/product.d.ts +107 -11
  19. package/dist/gen/product.js +4 -0
  20. package/dist/gen/promotion.d.ts +0 -16
  21. package/dist/gen/rbac.d.ts +0 -16
  22. package/dist/gen/search.d.ts +0 -14
  23. package/dist/gen/seo_filter.d.ts +16 -48
  24. package/dist/gen/seo_filter.js +1 -0
  25. package/dist/gen/shop_filters.d.ts +0 -5
  26. package/dist/gen/users.d.ts +0 -9
  27. package/dist/gen/warehouse.d.ts +34 -0
  28. package/dist/gen/warehouse.js +28 -0
  29. package/dist/proto/attribute.proto +35 -0
  30. package/dist/proto/brand.proto +25 -0
  31. package/dist/proto/bundle.proto +2 -2
  32. package/dist/proto/cart.proto +5 -14
  33. package/dist/proto/category.proto +26 -0
  34. package/dist/proto/delivery.proto +1 -6
  35. package/dist/proto/delivery_settings.proto +4 -4
  36. package/dist/proto/faq.proto +3 -10
  37. package/dist/proto/manager.proto +3 -5
  38. package/dist/proto/notification.proto +33 -56
  39. package/dist/proto/order.proto +9 -21
  40. package/dist/proto/page.proto +1 -3
  41. package/dist/proto/payment.proto +8 -14
  42. package/dist/proto/pickup.proto +7 -9
  43. package/dist/proto/product.proto +129 -18
  44. package/dist/proto/promotion.proto +9 -22
  45. package/dist/proto/rbac.proto +7 -9
  46. package/dist/proto/search.proto +10 -14
  47. package/dist/proto/seo_filter.proto +37 -32
  48. package/dist/proto/shop_filters.proto +1 -3
  49. package/dist/proto/users.proto +5 -8
  50. package/dist/proto/warehouse.proto +38 -0
  51. package/dist/src/proto/paths.d.ts +1 -0
  52. package/dist/src/proto/paths.js +1 -0
  53. package/gen/attribute.ts +48 -0
  54. package/gen/brand.ts +35 -1
  55. package/gen/bundle.ts +1 -5
  56. package/gen/cart.ts +1 -35
  57. package/gen/category.ts +34 -0
  58. package/gen/delivery.ts +0 -1
  59. package/gen/delivery_settings.ts +0 -4
  60. package/gen/faq.ts +0 -12
  61. package/gen/manager.ts +1 -17
  62. package/gen/notification.ts +5 -98
  63. package/gen/order.ts +0 -33
  64. package/gen/page.ts +0 -5
  65. package/gen/payment.ts +0 -34
  66. package/gen/pickup.ts +2 -19
  67. package/gen/product.ts +147 -28
  68. package/gen/promotion.ts +3 -33
  69. package/gen/rbac.ts +1 -25
  70. package/gen/search.ts +0 -22
  71. package/gen/seo_filter.ts +27 -63
  72. package/gen/shop_filters.ts +0 -5
  73. package/gen/users.ts +1 -20
  74. package/gen/warehouse.ts +67 -0
  75. package/package.json +1 -1
  76. package/proto/attribute.proto +35 -0
  77. package/proto/brand.proto +25 -0
  78. package/proto/bundle.proto +2 -2
  79. package/proto/cart.proto +5 -14
  80. package/proto/category.proto +26 -0
  81. package/proto/delivery.proto +1 -6
  82. package/proto/delivery_settings.proto +4 -4
  83. package/proto/faq.proto +3 -10
  84. package/proto/manager.proto +3 -5
  85. package/proto/notification.proto +33 -56
  86. package/proto/order.proto +9 -21
  87. package/proto/page.proto +1 -3
  88. package/proto/payment.proto +8 -14
  89. package/proto/pickup.proto +7 -9
  90. package/proto/product.proto +129 -18
  91. package/proto/promotion.proto +9 -22
  92. package/proto/rbac.proto +7 -9
  93. package/proto/search.proto +10 -14
  94. package/proto/seo_filter.proto +37 -32
  95. package/proto/shop_filters.proto +1 -3
  96. package/proto/users.proto +5 -8
  97. package/proto/warehouse.proto +38 -0
@@ -6,9 +6,7 @@ export interface AggregateByCustomersRequest {
6
6
  export interface CustomerOrderAggregate {
7
7
  userId: string;
8
8
  ordersCount: number;
9
- /** Decimal у вигляді рядка ('1234.56') — щоб не втратити точність на gRPC border. */
10
9
  totalSum: string;
11
- /** ISO-рядок, відсутній якщо клієнт ще не робив замовлень. */
12
10
  lastOrderAt?: string | undefined;
13
11
  }
14
12
  export interface AggregateByCustomersResponse {
@@ -48,10 +46,6 @@ export interface OrderDelivery {
48
46
  trackingUrl: string;
49
47
  estimatedDate: string;
50
48
  shipmentStatus: string;
51
- /**
52
- * Адмін-облік: область/регіон з City.region від delivery-service.
53
- * Старі замовлення можуть мати порожнє значення.
54
- */
55
49
  region: string;
56
50
  }
57
51
  export interface OrderPayment {
@@ -65,10 +59,6 @@ export interface OrderPayment {
65
59
  capturedAt: number;
66
60
  cancelledAt: number;
67
61
  refundedAt: number;
68
- /**
69
- * Денормалізовано з payment-service для відображення в адмінці
70
- * без додаткового gRPC дзвінка. Оновлюється з payment-events listener.
71
- */
72
62
  capturedAmount: number;
73
63
  refundedAmount: number;
74
64
  }
@@ -132,12 +122,7 @@ export interface Order {
132
122
  tags: string[];
133
123
  createdAt: number;
134
124
  updatedAt: number;
135
- /**
136
- * Внутрішні нотатки менеджерів (видимі тільки в адмінці).
137
- * Сортуються від новіших до старіших — server-side.
138
- */
139
125
  notes: OrderNote[];
140
- /** 0 = не в архіві; інакше timestamp коли архівовано. */
141
126
  archivedAt: number;
142
127
  }
143
128
  export interface CreateOrderRequest {
@@ -187,10 +172,6 @@ export interface ListOrdersRequest {
187
172
  totalTo: number;
188
173
  sortBy: string;
189
174
  sortDir: string;
190
- /**
191
- * 0 = тільки активні (default), 1 = тільки архівні, 2 = всі.
192
- * Менеджер бачить тільки свої через manager_id (вище).
193
- */
194
175
  archivedFilter: number;
195
176
  }
196
177
  export interface ListUserOrdersRequest {
@@ -292,10 +273,6 @@ export interface OrderServiceClient {
292
273
  listUserOrders(request: ListUserOrdersRequest): Observable<ListOrdersResponse>;
293
274
  updateStatus(request: UpdateStatusRequest): Observable<OrderResponse>;
294
275
  cancelOrder(request: CancelOrderRequest): Observable<OrderResponse>;
295
- /**
296
- * Archive (soft delete) — встановлює archived_at. Замовлення зникає
297
- * з дефолтного списку, але доступне через ?archived=true.
298
- */
299
276
  archiveOrder(request: ArchiveOrderRequest): Observable<OrderResponse>;
300
277
  unarchiveOrder(request: UnarchiveOrderRequest): Observable<OrderResponse>;
301
278
  assignManager(request: AssignManagerRequest): Observable<OrderResponse>;
@@ -306,7 +283,6 @@ export interface OrderServiceClient {
306
283
  setTrackingNumber(request: SetTrackingNumberRequest): Observable<OrderResponse>;
307
284
  reorderOrder(request: ReorderOrderRequest): Observable<ReorderResponse>;
308
285
  listHistory(request: ListHistoryRequest): Observable<ListHistoryResponse>;
309
- /** CRM-агрегація для експорту клієнтів — повертає count/sum/last для кожного userId. */
310
286
  aggregateByCustomers(request: AggregateByCustomersRequest): Observable<AggregateByCustomersResponse>;
311
287
  }
312
288
  export interface OrderServiceController {
@@ -318,10 +294,6 @@ export interface OrderServiceController {
318
294
  listUserOrders(request: ListUserOrdersRequest): Promise<ListOrdersResponse> | Observable<ListOrdersResponse> | ListOrdersResponse;
319
295
  updateStatus(request: UpdateStatusRequest): Promise<OrderResponse> | Observable<OrderResponse> | OrderResponse;
320
296
  cancelOrder(request: CancelOrderRequest): Promise<OrderResponse> | Observable<OrderResponse> | OrderResponse;
321
- /**
322
- * Archive (soft delete) — встановлює archived_at. Замовлення зникає
323
- * з дефолтного списку, але доступне через ?archived=true.
324
- */
325
297
  archiveOrder(request: ArchiveOrderRequest): Promise<OrderResponse> | Observable<OrderResponse> | OrderResponse;
326
298
  unarchiveOrder(request: UnarchiveOrderRequest): Promise<OrderResponse> | Observable<OrderResponse> | OrderResponse;
327
299
  assignManager(request: AssignManagerRequest): Promise<OrderResponse> | Observable<OrderResponse> | OrderResponse;
@@ -332,7 +304,6 @@ export interface OrderServiceController {
332
304
  setTrackingNumber(request: SetTrackingNumberRequest): Promise<OrderResponse> | Observable<OrderResponse> | OrderResponse;
333
305
  reorderOrder(request: ReorderOrderRequest): Promise<ReorderResponse> | Observable<ReorderResponse> | ReorderResponse;
334
306
  listHistory(request: ListHistoryRequest): Promise<ListHistoryResponse> | Observable<ListHistoryResponse> | ListHistoryResponse;
335
- /** CRM-агрегація для експорту клієнтів — повертає count/sum/last для кожного userId. */
336
307
  aggregateByCustomers(request: AggregateByCustomersRequest): Promise<AggregateByCustomersResponse> | Observable<AggregateByCustomersResponse> | AggregateByCustomersResponse;
337
308
  }
338
309
  export declare function OrderServiceControllerMethods(): (constructor: Function) => void;
@@ -15,11 +15,6 @@ export interface PageResponse {
15
15
  title: {
16
16
  [key: string]: string;
17
17
  };
18
- /**
19
- * PageBlock[] serialized as JSON-string. ts-proto without oneofs
20
- * turns discriminated unions into a soup of optional fields; keep
21
- * the typed union on the gateway side via zod instead.
22
- */
23
18
  blocksJson: string;
24
19
  coverImage?: string | undefined;
25
20
  coverImageId?: string | undefined;
@@ -68,7 +68,6 @@ export interface ListPaymentsResponse {
68
68
  }
69
69
  export interface CaptureRequest {
70
70
  id: string;
71
- /** 0 → captures full amount */
72
71
  amount: number;
73
72
  actorId: string;
74
73
  }
@@ -79,7 +78,6 @@ export interface CancelRequest {
79
78
  }
80
79
  export interface RefundRequest {
81
80
  id: string;
82
- /** 0 → full refund of captured */
83
81
  amount: number;
84
82
  reason: string;
85
83
  actorId: string;
@@ -113,47 +111,27 @@ export interface PaymentResponse {
113
111
  }
114
112
  export declare const PAYMENT_V1_PACKAGE_NAME = "payment.v1";
115
113
  export interface PaymentServiceClient {
116
- /** CreateInvoice — провайдер створює інвойс у режимі hold (2-stage). */
117
114
  createInvoice(request: CreateInvoiceRequest): Observable<PaymentResponse>;
118
115
  getPayment(request: GetPaymentRequest): Observable<PaymentResponse>;
119
116
  getPaymentByOrder(request: GetPaymentByOrderRequest): Observable<PaymentResponse>;
120
117
  listPayments(request: ListPaymentsRequest): Observable<ListPaymentsResponse>;
121
- /** Capture — фіксація списання раніше зарезервованих коштів. */
122
118
  capture(request: CaptureRequest): Observable<PaymentResponse>;
123
- /** Cancel — повне скасування hold (без списання). */
124
119
  cancel(request: CancelRequest): Observable<PaymentResponse>;
125
- /** Refund — повернення вже captured коштів (повне або часткове). */
126
120
  refund(request: RefundRequest): Observable<PaymentResponse>;
127
- /** SyncStatus — підтягує актуальний статус від провайдера (manual reconciliation). */
128
121
  syncStatus(request: SyncStatusRequest): Observable<PaymentResponse>;
129
- /**
130
- * RegenerateInvoice — створює новий invoice у провайдера для існуючого Payment.
131
- * Використовується коли paymentUrl застарів (TTL у Mono ≈ 24г) або клієнт
132
- * загубив SMS — менеджер ділиться новим лінком через адмін UI.
133
- */
134
122
  regenerateInvoice(request: RegenerateInvoiceRequest): Observable<PaymentResponse>;
135
123
  listProviders(request: ListProvidersRequest): Observable<ListProvidersResponse>;
136
124
  toggleProvider(request: ToggleProviderRequest): Observable<ToggleProviderResponse>;
137
125
  }
138
126
  export interface PaymentServiceController {
139
- /** CreateInvoice — провайдер створює інвойс у режимі hold (2-stage). */
140
127
  createInvoice(request: CreateInvoiceRequest): Promise<PaymentResponse> | Observable<PaymentResponse> | PaymentResponse;
141
128
  getPayment(request: GetPaymentRequest): Promise<PaymentResponse> | Observable<PaymentResponse> | PaymentResponse;
142
129
  getPaymentByOrder(request: GetPaymentByOrderRequest): Promise<PaymentResponse> | Observable<PaymentResponse> | PaymentResponse;
143
130
  listPayments(request: ListPaymentsRequest): Promise<ListPaymentsResponse> | Observable<ListPaymentsResponse> | ListPaymentsResponse;
144
- /** Capture — фіксація списання раніше зарезервованих коштів. */
145
131
  capture(request: CaptureRequest): Promise<PaymentResponse> | Observable<PaymentResponse> | PaymentResponse;
146
- /** Cancel — повне скасування hold (без списання). */
147
132
  cancel(request: CancelRequest): Promise<PaymentResponse> | Observable<PaymentResponse> | PaymentResponse;
148
- /** Refund — повернення вже captured коштів (повне або часткове). */
149
133
  refund(request: RefundRequest): Promise<PaymentResponse> | Observable<PaymentResponse> | PaymentResponse;
150
- /** SyncStatus — підтягує актуальний статус від провайдера (manual reconciliation). */
151
134
  syncStatus(request: SyncStatusRequest): Promise<PaymentResponse> | Observable<PaymentResponse> | PaymentResponse;
152
- /**
153
- * RegenerateInvoice — створює новий invoice у провайдера для існуючого Payment.
154
- * Використовується коли paymentUrl застарів (TTL у Mono ≈ 24г) або клієнт
155
- * загубив SMS — менеджер ділиться новим лінком через адмін UI.
156
- */
157
135
  regenerateInvoice(request: RegenerateInvoiceRequest): Promise<PaymentResponse> | Observable<PaymentResponse> | PaymentResponse;
158
136
  listProviders(request: ListProvidersRequest): Promise<ListProvidersResponse> | Observable<ListProvidersResponse> | ListProvidersResponse;
159
137
  toggleProvider(request: ToggleProviderRequest): Promise<ToggleProviderResponse> | Observable<ToggleProviderResponse> | ToggleProviderResponse;
@@ -11,7 +11,6 @@ export interface PickupPointResponse {
11
11
  lng?: number | undefined;
12
12
  isActive: boolean;
13
13
  code1c?: string | undefined;
14
- /** JSON-encoded WeekSchedule */
15
14
  schedule?: string | undefined;
16
15
  }
17
16
  export interface GetPickupPointsRequest {
@@ -55,7 +54,6 @@ export interface PickupStockItemResponse {
55
54
  productId: string;
56
55
  variantId?: string | undefined;
57
56
  qty: number;
58
- /** "MANUAL" | "SYNC_1C" */
59
57
  source: string;
60
58
  updatedAt: string;
61
59
  pickupPointName?: string | undefined;
@@ -73,20 +71,17 @@ export interface SetPickupStockRequest {
73
71
  productId: string;
74
72
  variantId?: string | undefined;
75
73
  qty: number;
76
- /** default MANUAL */
77
74
  source?: string | undefined;
78
75
  }
79
76
  export interface AdjustPickupStockRequest {
80
77
  pickupPointId: string;
81
78
  productId: string;
82
79
  variantId?: string | undefined;
83
- /** positive = add, negative = subtract */
84
80
  delta: number;
85
81
  }
86
82
  export interface BulkSetPickupStockRequest {
87
83
  items: SetPickupStockRequest[];
88
84
  }
89
- /** Масова синхронізація з 1С: масив рядків вигляду "code1c:productGuid1c:variantGuid1c?:qty" */
90
85
  export interface BulkSyncFromOnecRequest {
91
86
  entries: OnecStockEntry[];
92
87
  }
@@ -98,13 +93,11 @@ export interface OnecStockEntry {
98
93
  }
99
94
  export declare const CATALOG_V1_PACKAGE_NAME = "catalog.v1";
100
95
  export interface PickupPointServiceClient {
101
- /** Pickup points CRUD */
102
96
  getPickupPoints(request: GetPickupPointsRequest): Observable<GetPickupPointsResponse>;
103
97
  getPickupPoint(request: GetPickupPointRequest): Observable<PickupPointResponse>;
104
98
  createPickupPoint(request: CreatePickupPointRequest): Observable<PickupPointResponse>;
105
99
  updatePickupPoint(request: UpdatePickupPointRequest): Observable<PickupPointResponse>;
106
100
  deletePickupPoint(request: DeletePickupPointRequest): Observable<DeleteResponse>;
107
- /** Stock per pickup point */
108
101
  getPickupStock(request: GetPickupStockRequest): Observable<GetPickupStockResponse>;
109
102
  setPickupStock(request: SetPickupStockRequest): Observable<PickupStockItemResponse>;
110
103
  adjustPickupStock(request: AdjustPickupStockRequest): Observable<PickupStockItemResponse>;
@@ -112,13 +105,11 @@ export interface PickupPointServiceClient {
112
105
  bulkSyncFromOnec(request: BulkSyncFromOnecRequest): Observable<SuccessResponse>;
113
106
  }
114
107
  export interface PickupPointServiceController {
115
- /** Pickup points CRUD */
116
108
  getPickupPoints(request: GetPickupPointsRequest): Promise<GetPickupPointsResponse> | Observable<GetPickupPointsResponse> | GetPickupPointsResponse;
117
109
  getPickupPoint(request: GetPickupPointRequest): Promise<PickupPointResponse> | Observable<PickupPointResponse> | PickupPointResponse;
118
110
  createPickupPoint(request: CreatePickupPointRequest): Promise<PickupPointResponse> | Observable<PickupPointResponse> | PickupPointResponse;
119
111
  updatePickupPoint(request: UpdatePickupPointRequest): Promise<PickupPointResponse> | Observable<PickupPointResponse> | PickupPointResponse;
120
112
  deletePickupPoint(request: DeletePickupPointRequest): Promise<DeleteResponse> | Observable<DeleteResponse> | DeleteResponse;
121
- /** Stock per pickup point */
122
113
  getPickupStock(request: GetPickupStockRequest): Promise<GetPickupStockResponse> | Observable<GetPickupStockResponse> | GetPickupStockResponse;
123
114
  setPickupStock(request: SetPickupStockRequest): Promise<PickupStockItemResponse> | Observable<PickupStockItemResponse> | PickupStockItemResponse;
124
115
  adjustPickupStock(request: AdjustPickupStockRequest): Promise<PickupStockItemResponse> | Observable<PickupStockItemResponse> | PickupStockItemResponse;
@@ -101,7 +101,6 @@ export interface ProductListItemResponse {
101
101
  reviewCount: number;
102
102
  stickers: ProductStickerResponse[];
103
103
  activePromo?: ProductPromoInfo | undefined;
104
- /** Вага у кг для розрахунку доставки (0 → fallback на defaultItemWeightKg). */
105
104
  weightKg: number;
106
105
  }
107
106
  export interface ProductListItemResponse_NameEntry {
@@ -166,7 +165,6 @@ export interface ProductDetailResponse {
166
165
  manualRating?: number | undefined;
167
166
  activePromo?: ProductPromoInfo | undefined;
168
167
  colors: ProductColorResponse[];
169
- /** Вага товару у кг для розрахунку доставки (variant може override'ити). */
170
168
  weightKg: number;
171
169
  }
172
170
  export interface ProductDetailResponse_NameEntry {
@@ -679,7 +677,6 @@ export interface ProductVariantDetailResponse {
679
677
  attributes: ProductAttributeResponse[];
680
678
  overrides: VariantOverrides | undefined;
681
679
  colorId?: string | undefined;
682
- /** Override-вага варіанту у кг; 0 означає "успадкувати від продукту". */
683
680
  weightKg: number;
684
681
  }
685
682
  export interface ProductVariantDetailResponse_OptionsEntry {
@@ -752,7 +749,6 @@ export interface CreateProductVariantRequest {
752
749
  images: ProductImagePayload[];
753
750
  attributeValueIds: string[];
754
751
  colorId?: string | undefined;
755
- /** Override-вага варіанту у кг (null/unset → успадкувати від продукту). */
756
752
  weightKg?: number | undefined;
757
753
  }
758
754
  export interface CreateProductVariantRequest_OptionsEntry {
@@ -811,7 +807,6 @@ export interface UpdateProductVariantRequest {
811
807
  images: ProductImagePayload[];
812
808
  attributeValueIds: string[];
813
809
  colorId?: string | undefined;
814
- /** Override-вага варіанту у кг (null/unset → успадкувати від продукту). */
815
810
  weightKg?: number | undefined;
816
811
  clearPrice: boolean;
817
812
  clearOldPrice: boolean;
@@ -887,18 +882,14 @@ export interface VariantLookupResult {
887
882
  productId: string;
888
883
  sku: string;
889
884
  found: boolean;
890
- /** Резолвлена з урахуванням variant override. */
891
885
  price: number;
892
886
  oldPrice?: number | undefined;
893
887
  stock: number;
894
888
  hasOwnPrice: boolean;
895
- /** Локалізована назва (uk → ru → перше) для зручності клієнта. */
896
889
  nameUk: string;
897
890
  mainImage: string;
898
891
  colorId?: string | undefined;
899
- /** Вага у кг (variant.weight_kg ?? product.weight_kg ?? 0). */
900
892
  weightKg: number;
901
- /** Розмір з variant.options.size — для відображення у замовленнях. */
902
893
  size: string;
903
894
  }
904
895
  export interface BulkLookupVariantsRequest {
@@ -1016,6 +1007,105 @@ export interface ColorSortOrderItem {
1016
1007
  colorId: string;
1017
1008
  sortOrder: number;
1018
1009
  }
1010
+ export interface ProductSyncItem {
1011
+ productGuid: string;
1012
+ sku: string;
1013
+ name: {
1014
+ [key: string]: string;
1015
+ };
1016
+ brandValueGuid?: string | undefined;
1017
+ attributeValueGuids: string[];
1018
+ characteristicGuids: string[];
1019
+ categoryGuids: string[];
1020
+ }
1021
+ export interface ProductSyncItem_NameEntry {
1022
+ key: string;
1023
+ value: string;
1024
+ }
1025
+ export interface UpsertProductsRequest {
1026
+ items: ProductSyncItem[];
1027
+ syncId: string;
1028
+ createdBy: string;
1029
+ colorPropertyGuid: string;
1030
+ }
1031
+ export interface ProductUpsertResult {
1032
+ guid: string;
1033
+ status: string;
1034
+ reason?: string | undefined;
1035
+ id?: string | undefined;
1036
+ attributesLinked: number;
1037
+ attributesSkipped: number;
1038
+ variantsCreated: number;
1039
+ variantsUpdated: number;
1040
+ variantsSkipped: number;
1041
+ }
1042
+ export interface UpsertProductsResponse {
1043
+ results: ProductUpsertResult[];
1044
+ }
1045
+ export interface PriceSyncItem {
1046
+ productGuid: string;
1047
+ characteristicGuid?: string | undefined;
1048
+ price: number;
1049
+ oldPrice?: number | undefined;
1050
+ }
1051
+ export interface UpsertPricesRequest {
1052
+ items: PriceSyncItem[];
1053
+ syncId: string;
1054
+ }
1055
+ export interface PriceUpsertResult {
1056
+ guid: string;
1057
+ status: string;
1058
+ reason?: string | undefined;
1059
+ }
1060
+ export interface UpsertPricesResponse {
1061
+ results: PriceUpsertResult[];
1062
+ }
1063
+ export interface CharacteristicPropertyLink {
1064
+ propertyGuid: string;
1065
+ valueGuid: string;
1066
+ }
1067
+ export interface CharacteristicSyncItem {
1068
+ characteristicGuid: string;
1069
+ name: {
1070
+ [key: string]: string;
1071
+ };
1072
+ properties: CharacteristicPropertyLink[];
1073
+ }
1074
+ export interface CharacteristicSyncItem_NameEntry {
1075
+ key: string;
1076
+ value: string;
1077
+ }
1078
+ export interface UpsertCharacteristicsRequest {
1079
+ items: CharacteristicSyncItem[];
1080
+ syncId: string;
1081
+ }
1082
+ export interface CharacteristicUpsertResult {
1083
+ guid: string;
1084
+ status: string;
1085
+ reason?: string | undefined;
1086
+ id?: string | undefined;
1087
+ }
1088
+ export interface UpsertCharacteristicsResponse {
1089
+ results: CharacteristicUpsertResult[];
1090
+ }
1091
+ export interface StockSyncItem {
1092
+ productGuid: string;
1093
+ characteristicGuid?: string | undefined;
1094
+ warehouseGuid: string;
1095
+ quantity: number;
1096
+ }
1097
+ export interface UpsertStocksRequest {
1098
+ items: StockSyncItem[];
1099
+ syncId: string;
1100
+ }
1101
+ export interface StockUpsertResult {
1102
+ guid: string;
1103
+ status: string;
1104
+ reason?: string | undefined;
1105
+ }
1106
+ export interface UpsertStocksResponse {
1107
+ results: StockUpsertResult[];
1108
+ }
1019
1109
  export declare const CATALOG_V1_PACKAGE_NAME = "catalog.v1";
1020
1110
  export interface ProductServiceClient {
1021
1111
  getProducts(request: GetProductsRequest): Observable<GetProductsResponse>;
@@ -1024,6 +1114,10 @@ export interface ProductServiceClient {
1024
1114
  updateProduct(request: UpdateProductRequest): Observable<ProductDetailResponse>;
1025
1115
  deleteProduct(request: DeleteProductRequest): Observable<DeleteResponse>;
1026
1116
  setManualRating(request: SetManualRatingRequest): Observable<SuccessResponse>;
1117
+ upsertProducts(request: UpsertProductsRequest): Observable<UpsertProductsResponse>;
1118
+ upsertPrices(request: UpsertPricesRequest): Observable<UpsertPricesResponse>;
1119
+ upsertCharacteristics(request: UpsertCharacteristicsRequest): Observable<UpsertCharacteristicsResponse>;
1120
+ upsertStocks(request: UpsertStocksRequest): Observable<UpsertStocksResponse>;
1027
1121
  bulkUpdateStatus(request: BulkUpdateStatusRequest): Observable<SuccessResponse>;
1028
1122
  bulkUpdateCategory(request: BulkUpdateCategoryRequest): Observable<SuccessResponse>;
1029
1123
  bulkUpdateDiscount(request: BulkUpdateDiscountRequest): Observable<SuccessResponse>;
@@ -1057,7 +1151,6 @@ export interface ProductServiceClient {
1057
1151
  assignVariantSizeCharts(request: AssignVariantSizeChartsRequest): Observable<SuccessResponse>;
1058
1152
  removeVariantSizeChart(request: RemoveVariantSizeChartRequest): Observable<SuccessResponse>;
1059
1153
  getVariantSizeCharts(request: GetVariantSizeChartsRequest): Observable<GetProductSizeChartsResponse>;
1060
- /** ─── Product colors (нова ієрархія: Product → Color → Variant) ────────────── */
1061
1154
  createProductColor(request: CreateProductColorRequest): Observable<ProductColorResponse>;
1062
1155
  updateProductColor(request: UpdateProductColorRequest): Observable<ProductColorResponse>;
1063
1156
  deleteProductColor(request: DeleteProductColorRequest): Observable<DeleteResponse>;
@@ -1071,6 +1164,10 @@ export interface ProductServiceController {
1071
1164
  updateProduct(request: UpdateProductRequest): Promise<ProductDetailResponse> | Observable<ProductDetailResponse> | ProductDetailResponse;
1072
1165
  deleteProduct(request: DeleteProductRequest): Promise<DeleteResponse> | Observable<DeleteResponse> | DeleteResponse;
1073
1166
  setManualRating(request: SetManualRatingRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
1167
+ upsertProducts(request: UpsertProductsRequest): Promise<UpsertProductsResponse> | Observable<UpsertProductsResponse> | UpsertProductsResponse;
1168
+ upsertPrices(request: UpsertPricesRequest): Promise<UpsertPricesResponse> | Observable<UpsertPricesResponse> | UpsertPricesResponse;
1169
+ upsertCharacteristics(request: UpsertCharacteristicsRequest): Promise<UpsertCharacteristicsResponse> | Observable<UpsertCharacteristicsResponse> | UpsertCharacteristicsResponse;
1170
+ upsertStocks(request: UpsertStocksRequest): Promise<UpsertStocksResponse> | Observable<UpsertStocksResponse> | UpsertStocksResponse;
1074
1171
  bulkUpdateStatus(request: BulkUpdateStatusRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
1075
1172
  bulkUpdateCategory(request: BulkUpdateCategoryRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
1076
1173
  bulkUpdateDiscount(request: BulkUpdateDiscountRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
@@ -1104,7 +1201,6 @@ export interface ProductServiceController {
1104
1201
  assignVariantSizeCharts(request: AssignVariantSizeChartsRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
1105
1202
  removeVariantSizeChart(request: RemoveVariantSizeChartRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
1106
1203
  getVariantSizeCharts(request: GetVariantSizeChartsRequest): Promise<GetProductSizeChartsResponse> | Observable<GetProductSizeChartsResponse> | GetProductSizeChartsResponse;
1107
- /** ─── Product colors (нова ієрархія: Product → Color → Variant) ────────────── */
1108
1204
  createProductColor(request: CreateProductColorRequest): Promise<ProductColorResponse> | Observable<ProductColorResponse> | ProductColorResponse;
1109
1205
  updateProductColor(request: UpdateProductColorRequest): Promise<ProductColorResponse> | Observable<ProductColorResponse> | ProductColorResponse;
1110
1206
  deleteProductColor(request: DeleteProductColorRequest): Promise<DeleteResponse> | Observable<DeleteResponse> | DeleteResponse;
@@ -52,6 +52,10 @@ function ProductServiceControllerMethods() {
52
52
  "updateProduct",
53
53
  "deleteProduct",
54
54
  "setManualRating",
55
+ "upsertProducts",
56
+ "upsertPrices",
57
+ "upsertCharacteristics",
58
+ "upsertStocks",
55
59
  "bulkUpdateStatus",
56
60
  "bulkUpdateCategory",
57
61
  "bulkUpdateDiscount",
@@ -147,9 +147,7 @@ export interface GetPromotionsRequest {
147
147
  categoryId?: string | undefined;
148
148
  dateFrom?: string | undefined;
149
149
  dateTo?: string | undefined;
150
- /** startDate | endDate | priority | discountValue */
151
150
  sortBy?: string | undefined;
152
- /** asc | desc */
153
151
  sortDir?: string | undefined;
154
152
  }
155
153
  export interface GetPromotionsResponse {
@@ -342,10 +340,6 @@ export interface RemovePromotionProductsRequest {
342
340
  export interface GetPromotionEligibleProductIdsRequest {
343
341
  promotionId: string;
344
342
  }
345
- /**
346
- * Returns the full membership of the promotion (NOT resolved to a flat list).
347
- * Catalog-service joins these (UNION include − exclude) using its own data.
348
- */
349
343
  export interface GetPromotionEligibleProductIdsResponse {
350
344
  includeProductIds: string[];
351
345
  includeCategoryIds: string[];
@@ -369,14 +363,12 @@ export interface ActivePromotionSnapshotItem {
369
363
  seoSlug?: string | undefined;
370
364
  startsAt?: string | undefined;
371
365
  endsAt?: string | undefined;
372
- /** Resolved eligible product IDs (already deduped, exclusions applied). */
373
366
  productIds: string[];
374
367
  categoryIds: string[];
375
368
  brandIds: string[];
376
369
  excludedProductIds: string[];
377
370
  excludedCategoryIds: string[];
378
371
  excludedBrandIds: string[];
379
- /** Per-product label/color override (key = productId). */
380
372
  productLabels: {
381
373
  [key: string]: string;
382
374
  };
@@ -451,18 +443,14 @@ export interface PromotionServiceClient {
451
443
  bulkApplyToCategories(request: BulkApplyToCategoriesRequest): Observable<SuccessResponse>;
452
444
  getActivePromotions(request: GetActivePromotionsRequest): Observable<GetActivePromotionsResponse>;
453
445
  getActivePromotionsSnapshot(request: GetActivePromotionsSnapshotRequest): Observable<GetActivePromotionsSnapshotResponse>;
454
- /** Products */
455
446
  getPromotionProducts(request: GetPromotionProductsRequest): Observable<GetPromotionProductsResponse>;
456
447
  getPromotionEligibleProductIds(request: GetPromotionEligibleProductIdsRequest): Observable<GetPromotionEligibleProductIdsResponse>;
457
448
  addPromotionProducts(request: AddPromotionProductsRequest): Observable<SuccessResponse>;
458
449
  removePromotionProducts(request: RemovePromotionProductsRequest): Observable<SuccessResponse>;
459
- /** Categories */
460
450
  getPromotionCategories(request: GetPromotionCategoriesRequest): Observable<GetPromotionCategoriesResponse>;
461
451
  setPromotionCategories(request: SetPromotionCategoriesRequest): Observable<SuccessResponse>;
462
- /** Brands */
463
452
  getPromotionBrands(request: GetPromotionBrandsRequest): Observable<GetPromotionBrandsResponse>;
464
453
  setPromotionBrands(request: SetPromotionBrandsRequest): Observable<SuccessResponse>;
465
- /** Bundles */
466
454
  getPromotionBundles(request: GetPromotionBundlesRequest): Observable<GetPromotionBundlesResponse>;
467
455
  addPromotionBundles(request: AddPromotionBundlesRequest): Observable<SuccessResponse>;
468
456
  removePromotionBundles(request: RemovePromotionBundlesRequest): Observable<SuccessResponse>;
@@ -478,18 +466,14 @@ export interface PromotionServiceController {
478
466
  bulkApplyToCategories(request: BulkApplyToCategoriesRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
479
467
  getActivePromotions(request: GetActivePromotionsRequest): Promise<GetActivePromotionsResponse> | Observable<GetActivePromotionsResponse> | GetActivePromotionsResponse;
480
468
  getActivePromotionsSnapshot(request: GetActivePromotionsSnapshotRequest): Promise<GetActivePromotionsSnapshotResponse> | Observable<GetActivePromotionsSnapshotResponse> | GetActivePromotionsSnapshotResponse;
481
- /** Products */
482
469
  getPromotionProducts(request: GetPromotionProductsRequest): Promise<GetPromotionProductsResponse> | Observable<GetPromotionProductsResponse> | GetPromotionProductsResponse;
483
470
  getPromotionEligibleProductIds(request: GetPromotionEligibleProductIdsRequest): Promise<GetPromotionEligibleProductIdsResponse> | Observable<GetPromotionEligibleProductIdsResponse> | GetPromotionEligibleProductIdsResponse;
484
471
  addPromotionProducts(request: AddPromotionProductsRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
485
472
  removePromotionProducts(request: RemovePromotionProductsRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
486
- /** Categories */
487
473
  getPromotionCategories(request: GetPromotionCategoriesRequest): Promise<GetPromotionCategoriesResponse> | Observable<GetPromotionCategoriesResponse> | GetPromotionCategoriesResponse;
488
474
  setPromotionCategories(request: SetPromotionCategoriesRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
489
- /** Brands */
490
475
  getPromotionBrands(request: GetPromotionBrandsRequest): Promise<GetPromotionBrandsResponse> | Observable<GetPromotionBrandsResponse> | GetPromotionBrandsResponse;
491
476
  setPromotionBrands(request: SetPromotionBrandsRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
492
- /** Bundles */
493
477
  getPromotionBundles(request: GetPromotionBundlesRequest): Promise<GetPromotionBundlesResponse> | Observable<GetPromotionBundlesResponse> | GetPromotionBundlesResponse;
494
478
  addPromotionBundles(request: AddPromotionBundlesRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
495
479
  removePromotionBundles(request: RemovePromotionBundlesRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
@@ -46,7 +46,6 @@ export interface UpdateRoleRequest {
46
46
  name?: string | undefined;
47
47
  description?: string | undefined;
48
48
  color?: string | undefined;
49
- /** Якщо передано — повна заміна; якщо не передано — без змін. */
50
49
  permissionKeys: string[];
51
50
  replacePermissions: boolean;
52
51
  }
@@ -58,10 +57,6 @@ export interface DeleteRoleResponse {
58
57
  }
59
58
  export interface AssignAccountRoleRequest {
60
59
  accountId: string;
61
- /**
62
- * Якщо custom_role_id порожній — користувач відвʼязується від кастомної ролі,
63
- * і дозволи беруться з системної.
64
- */
65
60
  customRoleId?: string | undefined;
66
61
  }
67
62
  export interface AssignAccountRoleResponse {
@@ -71,39 +66,28 @@ export interface GetAccountPermissionsRequest {
71
66
  accountId: string;
72
67
  }
73
68
  export interface GetAccountPermissionsResponse {
74
- /**
75
- * Effective permissions з урахуванням system role + custom role override.
76
- * Може містити "*" — повний доступ (ADMIN).
77
- */
78
69
  permissionKeys: string[];
79
- /** Слаг ефективної ролі (для UI/labels). */
80
70
  roleSlug: string;
81
71
  roleName: string;
82
72
  }
83
73
  export declare const RBAC_V1_PACKAGE_NAME = "rbac.v1";
84
74
  export interface RbacServiceClient {
85
- /** Permissions catalog (read-only, seeded). */
86
75
  listPermissions(request: ListPermissionsRequest): Observable<ListPermissionsResponse>;
87
- /** Roles CRUD. */
88
76
  listRoles(request: ListRolesRequest): Observable<ListRolesResponse>;
89
77
  getRole(request: GetRoleRequest): Observable<RbacRole>;
90
78
  createRole(request: CreateRoleRequest): Observable<RbacRole>;
91
79
  updateRole(request: UpdateRoleRequest): Observable<RbacRole>;
92
80
  deleteRole(request: DeleteRoleRequest): Observable<DeleteRoleResponse>;
93
- /** Account ↔ role bindings. */
94
81
  assignAccountRole(request: AssignAccountRoleRequest): Observable<AssignAccountRoleResponse>;
95
82
  getAccountPermissions(request: GetAccountPermissionsRequest): Observable<GetAccountPermissionsResponse>;
96
83
  }
97
84
  export interface RbacServiceController {
98
- /** Permissions catalog (read-only, seeded). */
99
85
  listPermissions(request: ListPermissionsRequest): Promise<ListPermissionsResponse> | Observable<ListPermissionsResponse> | ListPermissionsResponse;
100
- /** Roles CRUD. */
101
86
  listRoles(request: ListRolesRequest): Promise<ListRolesResponse> | Observable<ListRolesResponse> | ListRolesResponse;
102
87
  getRole(request: GetRoleRequest): Promise<RbacRole> | Observable<RbacRole> | RbacRole;
103
88
  createRole(request: CreateRoleRequest): Promise<RbacRole> | Observable<RbacRole> | RbacRole;
104
89
  updateRole(request: UpdateRoleRequest): Promise<RbacRole> | Observable<RbacRole> | RbacRole;
105
90
  deleteRole(request: DeleteRoleRequest): Promise<DeleteRoleResponse> | Observable<DeleteRoleResponse> | DeleteRoleResponse;
106
- /** Account ↔ role bindings. */
107
91
  assignAccountRole(request: AssignAccountRoleRequest): Promise<AssignAccountRoleResponse> | Observable<AssignAccountRoleResponse> | AssignAccountRoleResponse;
108
92
  getAccountPermissions(request: GetAccountPermissionsRequest): Promise<GetAccountPermissionsResponse> | Observable<GetAccountPermissionsResponse> | GetAccountPermissionsResponse;
109
93
  }
@@ -8,18 +8,14 @@ export declare enum SynonymType {
8
8
  }
9
9
  export interface SuggestRequest {
10
10
  q: string;
11
- /** 1..20, default 8 */
12
11
  limit: number;
13
- /** default true */
14
12
  onlyInStock: boolean;
15
- /** 'uk' | 'ru', default 'uk' */
16
13
  locale: string;
17
14
  }
18
15
  export interface SuggestProduct {
19
16
  id: string;
20
17
  sku: string;
21
18
  slug: string;
22
- /** already локалізована (uk/ru) */
23
19
  name: string;
24
20
  mainImage: string;
25
21
  price: number;
@@ -39,7 +35,6 @@ export interface SuggestResponse {
39
35
  products: SuggestProduct[];
40
36
  categories: SuggestCategory[];
41
37
  popularQueries: string[];
42
- /** загальна кількість збігів у продуктах */
43
38
  total: number;
44
39
  }
45
40
  export interface SynonymResponse {
@@ -117,7 +112,6 @@ export interface ReorderPopularQueryItem {
117
112
  sortOrder: number;
118
113
  }
119
114
  export interface ListZeroResultsRequest {
120
- /** default 100, max 500 */
121
115
  limit?: number | undefined;
122
116
  }
123
117
  export interface ZeroResultItem {
@@ -131,40 +125,32 @@ export interface ClearZeroResultsRequest {
131
125
  }
132
126
  export declare const CATALOG_V1_PACKAGE_NAME = "catalog.v1";
133
127
  export interface SearchServiceClient {
134
- /** ─── Public (autocomplete) ─────────────────────────────────────────────── */
135
128
  suggest(request: SuggestRequest): Observable<SuggestResponse>;
136
- /** ─── Admin: synonyms ───────────────────────────────────────────────────── */
137
129
  listSynonyms(request: ListSynonymsRequest): Observable<ListSynonymsResponse>;
138
130
  createSynonym(request: CreateSynonymRequest): Observable<SynonymResponse>;
139
131
  updateSynonym(request: UpdateSynonymRequest): Observable<SynonymResponse>;
140
132
  deleteSynonym(request: DeleteSynonymRequest): Observable<DeleteResponse>;
141
133
  syncSynonymsToTypesense(request: SyncSynonymsRequest): Observable<SuccessResponse>;
142
- /** ─── Admin: popular queries ────────────────────────────────────────────── */
143
134
  listPopularQueries(request: ListPopularQueriesRequest): Observable<ListPopularQueriesResponse>;
144
135
  createPopularQuery(request: CreatePopularQueryRequest): Observable<PopularQueryResponse>;
145
136
  updatePopularQuery(request: UpdatePopularQueryRequest): Observable<PopularQueryResponse>;
146
137
  deletePopularQuery(request: DeletePopularQueryRequest): Observable<DeleteResponse>;
147
138
  reorderPopularQueries(request: ReorderPopularQueriesRequest): Observable<SuccessResponse>;
148
- /** ─── Admin: zero-result analytics ──────────────────────────────────────── */
149
139
  listZeroResults(request: ListZeroResultsRequest): Observable<ListZeroResultsResponse>;
150
140
  clearZeroResults(request: ClearZeroResultsRequest): Observable<SuccessResponse>;
151
141
  }
152
142
  export interface SearchServiceController {
153
- /** ─── Public (autocomplete) ─────────────────────────────────────────────── */
154
143
  suggest(request: SuggestRequest): Promise<SuggestResponse> | Observable<SuggestResponse> | SuggestResponse;
155
- /** ─── Admin: synonyms ───────────────────────────────────────────────────── */
156
144
  listSynonyms(request: ListSynonymsRequest): Promise<ListSynonymsResponse> | Observable<ListSynonymsResponse> | ListSynonymsResponse;
157
145
  createSynonym(request: CreateSynonymRequest): Promise<SynonymResponse> | Observable<SynonymResponse> | SynonymResponse;
158
146
  updateSynonym(request: UpdateSynonymRequest): Promise<SynonymResponse> | Observable<SynonymResponse> | SynonymResponse;
159
147
  deleteSynonym(request: DeleteSynonymRequest): Promise<DeleteResponse> | Observable<DeleteResponse> | DeleteResponse;
160
148
  syncSynonymsToTypesense(request: SyncSynonymsRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
161
- /** ─── Admin: popular queries ────────────────────────────────────────────── */
162
149
  listPopularQueries(request: ListPopularQueriesRequest): Promise<ListPopularQueriesResponse> | Observable<ListPopularQueriesResponse> | ListPopularQueriesResponse;
163
150
  createPopularQuery(request: CreatePopularQueryRequest): Promise<PopularQueryResponse> | Observable<PopularQueryResponse> | PopularQueryResponse;
164
151
  updatePopularQuery(request: UpdatePopularQueryRequest): Promise<PopularQueryResponse> | Observable<PopularQueryResponse> | PopularQueryResponse;
165
152
  deletePopularQuery(request: DeletePopularQueryRequest): Promise<DeleteResponse> | Observable<DeleteResponse> | DeleteResponse;
166
153
  reorderPopularQueries(request: ReorderPopularQueriesRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
167
- /** ─── Admin: zero-result analytics ──────────────────────────────────────── */
168
154
  listZeroResults(request: ListZeroResultsRequest): Promise<ListZeroResultsResponse> | Observable<ListZeroResultsResponse> | ListZeroResultsResponse;
169
155
  clearZeroResults(request: ClearZeroResultsRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
170
156
  }