@mamindom/contracts 1.0.144 → 1.0.146

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 (96) 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 +108 -11
  19. package/dist/gen/product.js +5 -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 +0 -57
  24. package/dist/gen/shop_filters.d.ts +0 -5
  25. package/dist/gen/users.d.ts +0 -9
  26. package/dist/gen/warehouse.d.ts +34 -0
  27. package/dist/gen/warehouse.js +28 -0
  28. package/dist/proto/attribute.proto +35 -0
  29. package/dist/proto/brand.proto +25 -0
  30. package/dist/proto/bundle.proto +2 -2
  31. package/dist/proto/cart.proto +5 -14
  32. package/dist/proto/category.proto +26 -0
  33. package/dist/proto/delivery.proto +1 -6
  34. package/dist/proto/delivery_settings.proto +4 -4
  35. package/dist/proto/faq.proto +3 -10
  36. package/dist/proto/manager.proto +3 -5
  37. package/dist/proto/notification.proto +33 -56
  38. package/dist/proto/order.proto +9 -21
  39. package/dist/proto/page.proto +1 -3
  40. package/dist/proto/payment.proto +8 -14
  41. package/dist/proto/pickup.proto +7 -9
  42. package/dist/proto/product.proto +144 -34
  43. package/dist/proto/promotion.proto +9 -22
  44. package/dist/proto/rbac.proto +7 -9
  45. package/dist/proto/search.proto +10 -14
  46. package/dist/proto/seo_filter.proto +17 -36
  47. package/dist/proto/shop_filters.proto +1 -3
  48. package/dist/proto/users.proto +5 -8
  49. package/dist/proto/warehouse.proto +38 -0
  50. package/dist/src/proto/paths.d.ts +1 -0
  51. package/dist/src/proto/paths.js +1 -0
  52. package/gen/attribute.ts +48 -0
  53. package/gen/brand.ts +35 -1
  54. package/gen/bundle.ts +1 -5
  55. package/gen/cart.ts +1 -35
  56. package/gen/category.ts +34 -0
  57. package/gen/delivery.ts +0 -1
  58. package/gen/delivery_settings.ts +0 -4
  59. package/gen/faq.ts +0 -12
  60. package/gen/manager.ts +1 -17
  61. package/gen/notification.ts +5 -98
  62. package/gen/order.ts +0 -33
  63. package/gen/page.ts +0 -5
  64. package/gen/payment.ts +0 -34
  65. package/gen/pickup.ts +2 -19
  66. package/gen/product.ts +148 -28
  67. package/gen/promotion.ts +3 -33
  68. package/gen/rbac.ts +1 -25
  69. package/gen/search.ts +0 -22
  70. package/gen/seo_filter.ts +3 -74
  71. package/gen/shop_filters.ts +0 -5
  72. package/gen/users.ts +1 -20
  73. package/gen/warehouse.ts +67 -0
  74. package/package.json +1 -1
  75. package/proto/attribute.proto +35 -0
  76. package/proto/brand.proto +25 -0
  77. package/proto/bundle.proto +2 -2
  78. package/proto/cart.proto +5 -14
  79. package/proto/category.proto +26 -0
  80. package/proto/delivery.proto +1 -6
  81. package/proto/delivery_settings.proto +4 -4
  82. package/proto/faq.proto +3 -10
  83. package/proto/manager.proto +3 -5
  84. package/proto/notification.proto +33 -56
  85. package/proto/order.proto +9 -21
  86. package/proto/page.proto +1 -3
  87. package/proto/payment.proto +8 -14
  88. package/proto/pickup.proto +7 -9
  89. package/proto/product.proto +144 -34
  90. package/proto/promotion.proto +9 -22
  91. package/proto/rbac.proto +7 -9
  92. package/proto/search.proto +10 -14
  93. package/proto/seo_filter.proto +17 -36
  94. package/proto/shop_filters.proto +1 -3
  95. package/proto/users.proto +5 -8
  96. 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;
@@ -7,6 +7,7 @@ export declare enum ProductStatus {
7
7
  PRODUCT_STATUS_ACTIVE = 2,
8
8
  PRODUCT_STATUS_INACTIVE = 3,
9
9
  PRODUCT_STATUS_ARCHIVED = 4,
10
+ PRODUCT_STATUS_MODERATION = 5,
10
11
  UNRECOGNIZED = -1
11
12
  }
12
13
  export declare enum RelatedProductType {
@@ -101,7 +102,6 @@ export interface ProductListItemResponse {
101
102
  reviewCount: number;
102
103
  stickers: ProductStickerResponse[];
103
104
  activePromo?: ProductPromoInfo | undefined;
104
- /** Вага у кг для розрахунку доставки (0 → fallback на defaultItemWeightKg). */
105
105
  weightKg: number;
106
106
  }
107
107
  export interface ProductListItemResponse_NameEntry {
@@ -166,7 +166,6 @@ export interface ProductDetailResponse {
166
166
  manualRating?: number | undefined;
167
167
  activePromo?: ProductPromoInfo | undefined;
168
168
  colors: ProductColorResponse[];
169
- /** Вага товару у кг для розрахунку доставки (variant може override'ити). */
170
169
  weightKg: number;
171
170
  }
172
171
  export interface ProductDetailResponse_NameEntry {
@@ -679,7 +678,6 @@ export interface ProductVariantDetailResponse {
679
678
  attributes: ProductAttributeResponse[];
680
679
  overrides: VariantOverrides | undefined;
681
680
  colorId?: string | undefined;
682
- /** Override-вага варіанту у кг; 0 означає "успадкувати від продукту". */
683
681
  weightKg: number;
684
682
  }
685
683
  export interface ProductVariantDetailResponse_OptionsEntry {
@@ -752,7 +750,6 @@ export interface CreateProductVariantRequest {
752
750
  images: ProductImagePayload[];
753
751
  attributeValueIds: string[];
754
752
  colorId?: string | undefined;
755
- /** Override-вага варіанту у кг (null/unset → успадкувати від продукту). */
756
753
  weightKg?: number | undefined;
757
754
  }
758
755
  export interface CreateProductVariantRequest_OptionsEntry {
@@ -811,7 +808,6 @@ export interface UpdateProductVariantRequest {
811
808
  images: ProductImagePayload[];
812
809
  attributeValueIds: string[];
813
810
  colorId?: string | undefined;
814
- /** Override-вага варіанту у кг (null/unset → успадкувати від продукту). */
815
811
  weightKg?: number | undefined;
816
812
  clearPrice: boolean;
817
813
  clearOldPrice: boolean;
@@ -887,18 +883,14 @@ export interface VariantLookupResult {
887
883
  productId: string;
888
884
  sku: string;
889
885
  found: boolean;
890
- /** Резолвлена з урахуванням variant override. */
891
886
  price: number;
892
887
  oldPrice?: number | undefined;
893
888
  stock: number;
894
889
  hasOwnPrice: boolean;
895
- /** Локалізована назва (uk → ru → перше) для зручності клієнта. */
896
890
  nameUk: string;
897
891
  mainImage: string;
898
892
  colorId?: string | undefined;
899
- /** Вага у кг (variant.weight_kg ?? product.weight_kg ?? 0). */
900
893
  weightKg: number;
901
- /** Розмір з variant.options.size — для відображення у замовленнях. */
902
894
  size: string;
903
895
  }
904
896
  export interface BulkLookupVariantsRequest {
@@ -1016,6 +1008,105 @@ export interface ColorSortOrderItem {
1016
1008
  colorId: string;
1017
1009
  sortOrder: number;
1018
1010
  }
1011
+ export interface ProductSyncItem {
1012
+ productGuid: string;
1013
+ sku: string;
1014
+ name: {
1015
+ [key: string]: string;
1016
+ };
1017
+ brandValueGuid?: string | undefined;
1018
+ attributeValueGuids: string[];
1019
+ characteristicGuids: string[];
1020
+ categoryGuids: string[];
1021
+ }
1022
+ export interface ProductSyncItem_NameEntry {
1023
+ key: string;
1024
+ value: string;
1025
+ }
1026
+ export interface UpsertProductsRequest {
1027
+ items: ProductSyncItem[];
1028
+ syncId: string;
1029
+ createdBy: string;
1030
+ colorPropertyGuid: string;
1031
+ }
1032
+ export interface ProductUpsertResult {
1033
+ guid: string;
1034
+ status: string;
1035
+ reason?: string | undefined;
1036
+ id?: string | undefined;
1037
+ attributesLinked: number;
1038
+ attributesSkipped: number;
1039
+ variantsCreated: number;
1040
+ variantsUpdated: number;
1041
+ variantsSkipped: number;
1042
+ }
1043
+ export interface UpsertProductsResponse {
1044
+ results: ProductUpsertResult[];
1045
+ }
1046
+ export interface PriceSyncItem {
1047
+ productGuid: string;
1048
+ characteristicGuid?: string | undefined;
1049
+ price: number;
1050
+ oldPrice?: number | undefined;
1051
+ }
1052
+ export interface UpsertPricesRequest {
1053
+ items: PriceSyncItem[];
1054
+ syncId: string;
1055
+ }
1056
+ export interface PriceUpsertResult {
1057
+ guid: string;
1058
+ status: string;
1059
+ reason?: string | undefined;
1060
+ }
1061
+ export interface UpsertPricesResponse {
1062
+ results: PriceUpsertResult[];
1063
+ }
1064
+ export interface CharacteristicPropertyLink {
1065
+ propertyGuid: string;
1066
+ valueGuid: string;
1067
+ }
1068
+ export interface CharacteristicSyncItem {
1069
+ characteristicGuid: string;
1070
+ name: {
1071
+ [key: string]: string;
1072
+ };
1073
+ properties: CharacteristicPropertyLink[];
1074
+ }
1075
+ export interface CharacteristicSyncItem_NameEntry {
1076
+ key: string;
1077
+ value: string;
1078
+ }
1079
+ export interface UpsertCharacteristicsRequest {
1080
+ items: CharacteristicSyncItem[];
1081
+ syncId: string;
1082
+ }
1083
+ export interface CharacteristicUpsertResult {
1084
+ guid: string;
1085
+ status: string;
1086
+ reason?: string | undefined;
1087
+ id?: string | undefined;
1088
+ }
1089
+ export interface UpsertCharacteristicsResponse {
1090
+ results: CharacteristicUpsertResult[];
1091
+ }
1092
+ export interface StockSyncItem {
1093
+ productGuid: string;
1094
+ characteristicGuid?: string | undefined;
1095
+ warehouseGuid: string;
1096
+ quantity: number;
1097
+ }
1098
+ export interface UpsertStocksRequest {
1099
+ items: StockSyncItem[];
1100
+ syncId: string;
1101
+ }
1102
+ export interface StockUpsertResult {
1103
+ guid: string;
1104
+ status: string;
1105
+ reason?: string | undefined;
1106
+ }
1107
+ export interface UpsertStocksResponse {
1108
+ results: StockUpsertResult[];
1109
+ }
1019
1110
  export declare const CATALOG_V1_PACKAGE_NAME = "catalog.v1";
1020
1111
  export interface ProductServiceClient {
1021
1112
  getProducts(request: GetProductsRequest): Observable<GetProductsResponse>;
@@ -1024,6 +1115,10 @@ export interface ProductServiceClient {
1024
1115
  updateProduct(request: UpdateProductRequest): Observable<ProductDetailResponse>;
1025
1116
  deleteProduct(request: DeleteProductRequest): Observable<DeleteResponse>;
1026
1117
  setManualRating(request: SetManualRatingRequest): Observable<SuccessResponse>;
1118
+ upsertProducts(request: UpsertProductsRequest): Observable<UpsertProductsResponse>;
1119
+ upsertPrices(request: UpsertPricesRequest): Observable<UpsertPricesResponse>;
1120
+ upsertCharacteristics(request: UpsertCharacteristicsRequest): Observable<UpsertCharacteristicsResponse>;
1121
+ upsertStocks(request: UpsertStocksRequest): Observable<UpsertStocksResponse>;
1027
1122
  bulkUpdateStatus(request: BulkUpdateStatusRequest): Observable<SuccessResponse>;
1028
1123
  bulkUpdateCategory(request: BulkUpdateCategoryRequest): Observable<SuccessResponse>;
1029
1124
  bulkUpdateDiscount(request: BulkUpdateDiscountRequest): Observable<SuccessResponse>;
@@ -1057,7 +1152,6 @@ export interface ProductServiceClient {
1057
1152
  assignVariantSizeCharts(request: AssignVariantSizeChartsRequest): Observable<SuccessResponse>;
1058
1153
  removeVariantSizeChart(request: RemoveVariantSizeChartRequest): Observable<SuccessResponse>;
1059
1154
  getVariantSizeCharts(request: GetVariantSizeChartsRequest): Observable<GetProductSizeChartsResponse>;
1060
- /** ─── Product colors (нова ієрархія: Product → Color → Variant) ────────────── */
1061
1155
  createProductColor(request: CreateProductColorRequest): Observable<ProductColorResponse>;
1062
1156
  updateProductColor(request: UpdateProductColorRequest): Observable<ProductColorResponse>;
1063
1157
  deleteProductColor(request: DeleteProductColorRequest): Observable<DeleteResponse>;
@@ -1071,6 +1165,10 @@ export interface ProductServiceController {
1071
1165
  updateProduct(request: UpdateProductRequest): Promise<ProductDetailResponse> | Observable<ProductDetailResponse> | ProductDetailResponse;
1072
1166
  deleteProduct(request: DeleteProductRequest): Promise<DeleteResponse> | Observable<DeleteResponse> | DeleteResponse;
1073
1167
  setManualRating(request: SetManualRatingRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
1168
+ upsertProducts(request: UpsertProductsRequest): Promise<UpsertProductsResponse> | Observable<UpsertProductsResponse> | UpsertProductsResponse;
1169
+ upsertPrices(request: UpsertPricesRequest): Promise<UpsertPricesResponse> | Observable<UpsertPricesResponse> | UpsertPricesResponse;
1170
+ upsertCharacteristics(request: UpsertCharacteristicsRequest): Promise<UpsertCharacteristicsResponse> | Observable<UpsertCharacteristicsResponse> | UpsertCharacteristicsResponse;
1171
+ upsertStocks(request: UpsertStocksRequest): Promise<UpsertStocksResponse> | Observable<UpsertStocksResponse> | UpsertStocksResponse;
1074
1172
  bulkUpdateStatus(request: BulkUpdateStatusRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
1075
1173
  bulkUpdateCategory(request: BulkUpdateCategoryRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
1076
1174
  bulkUpdateDiscount(request: BulkUpdateDiscountRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
@@ -1104,7 +1202,6 @@ export interface ProductServiceController {
1104
1202
  assignVariantSizeCharts(request: AssignVariantSizeChartsRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
1105
1203
  removeVariantSizeChart(request: RemoveVariantSizeChartRequest): Promise<SuccessResponse> | Observable<SuccessResponse> | SuccessResponse;
1106
1204
  getVariantSizeCharts(request: GetVariantSizeChartsRequest): Promise<GetProductSizeChartsResponse> | Observable<GetProductSizeChartsResponse> | GetProductSizeChartsResponse;
1107
- /** ─── Product colors (нова ієрархія: Product → Color → Variant) ────────────── */
1108
1205
  createProductColor(request: CreateProductColorRequest): Promise<ProductColorResponse> | Observable<ProductColorResponse> | ProductColorResponse;
1109
1206
  updateProductColor(request: UpdateProductColorRequest): Promise<ProductColorResponse> | Observable<ProductColorResponse> | ProductColorResponse;
1110
1207
  deleteProductColor(request: DeleteProductColorRequest): Promise<DeleteResponse> | Observable<DeleteResponse> | DeleteResponse;
@@ -17,6 +17,7 @@ var ProductStatus;
17
17
  ProductStatus[ProductStatus["PRODUCT_STATUS_ACTIVE"] = 2] = "PRODUCT_STATUS_ACTIVE";
18
18
  ProductStatus[ProductStatus["PRODUCT_STATUS_INACTIVE"] = 3] = "PRODUCT_STATUS_INACTIVE";
19
19
  ProductStatus[ProductStatus["PRODUCT_STATUS_ARCHIVED"] = 4] = "PRODUCT_STATUS_ARCHIVED";
20
+ ProductStatus[ProductStatus["PRODUCT_STATUS_MODERATION"] = 5] = "PRODUCT_STATUS_MODERATION";
20
21
  ProductStatus[ProductStatus["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
21
22
  })(ProductStatus || (exports.ProductStatus = ProductStatus = {}));
22
23
  var RelatedProductType;
@@ -52,6 +53,10 @@ function ProductServiceControllerMethods() {
52
53
  "updateProduct",
53
54
  "deleteProduct",
54
55
  "setManualRating",
56
+ "upsertProducts",
57
+ "upsertPrices",
58
+ "upsertCharacteristics",
59
+ "upsertStocks",
55
60
  "bulkUpdateStatus",
56
61
  "bulkUpdateCategory",
57
62
  "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
  }