@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
@@ -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
  }
@@ -1,20 +1,13 @@
1
1
  import { Observable } from "rxjs";
2
2
  import { DeleteResponse, PaginationMeta, PaginationRequest } from "./common";
3
3
  export declare const protobufPackage = "catalog.v1";
4
- /**
5
- * Частина combo. Однаковий формат і у DB (combo_parts JSON), і у gRPC.
6
- * type: 'brand'|'price'|'color'|'size'
7
- */
8
4
  export interface FilterPart {
9
5
  type: string;
10
- /** Для brand/color/size: */
11
6
  valueId?: string | undefined;
12
7
  valueSlug?: string | undefined;
13
- /** Для price: */
14
8
  priceMin?: number | undefined;
15
9
  priceMax?: number | undefined;
16
10
  }
17
- /** Локалізовані поля (uk/ru) у форматі { uk: "...", ru: "..." }. */
18
11
  export interface LocaleStrings {
19
12
  uk: string;
20
13
  ru: string;
@@ -36,31 +29,16 @@ export interface SeoFilterResponse {
36
29
  }
37
30
  export interface ResolveSeoFilterRequest {
38
31
  categoryId: string;
39
- /**
40
- * Канонічно відсортовані URL segments як приходять з Next.js, напр.
41
- * ["brend-cybex", "cina-1000-5000"]. Caller гарантує що порядок canonical.
42
- */
43
32
  urlSegments: string[];
44
- /** 'uk' | 'ru' */
45
33
  locale: string;
46
34
  }
47
35
  export interface ResolveSeoFilterResponse {
48
- /** Якщо false → caller рендерить категорію з noindex,follow. */
49
36
  found: boolean;
50
- /**
51
- * Якщо false → caller додає <meta robots="noindex,follow"> навіть якщо
52
- * запис знайдено (наприклад, isIndexed=false manual override).
53
- */
54
37
  isIndexed: boolean;
55
38
  title: LocaleStrings | undefined;
56
39
  description: LocaleStrings | undefined;
57
40
  h1: LocaleStrings | undefined;
58
- /** Canonical-URL-path без host: "/uk/c/koliaski/brend-cybex" */
59
41
  canonicalPath: string;
60
- /**
61
- * Денормалізовані combo_parts з resolved valueId — для побудови
62
- * запиту до products (categoryId + filter ids).
63
- */
64
42
  resolvedParts: FilterPart[];
65
43
  }
66
44
  export interface ListSeoFiltersRequest {
@@ -68,7 +46,6 @@ export interface ListSeoFiltersRequest {
68
46
  categoryId?: string | undefined;
69
47
  isIndexed?: boolean | undefined;
70
48
  isAuto?: boolean | undefined;
71
- /** Пошук за uk/ru title (для адмін-фільтра). */
72
49
  search?: string | undefined;
73
50
  }
74
51
  export interface ListSeoFiltersResponse {
@@ -98,24 +75,18 @@ export interface DeleteSeoFilterRequest {
98
75
  }
99
76
  export interface SuggestSeoFiltersRequest {
100
77
  categoryId: string;
101
- /** default 20 */
102
78
  limit: number;
103
79
  }
104
80
  export interface SuggestSeoFilterCandidate {
105
- /** Запропоновані combo_parts (валідні, з resolved slug). */
106
81
  comboParts: FilterPart[];
107
- /** Оцінка популярності: clicks / impressions / товарообіг (single число). */
108
82
  score: number;
109
- /** Чи існує вже SeoFilter з таким комбо (тоді UI ховає кнопку Create). */
110
83
  alreadyExists: boolean;
111
- /** Pre-built canonical URL path для preview. */
112
84
  previewSegments: LocaleStrings | undefined;
113
85
  }
114
86
  export interface SuggestSeoFiltersResponse {
115
87
  items: SuggestSeoFilterCandidate[];
116
88
  }
117
89
  export interface ListIndexedForSitemapRequest {
118
- /** Опційний фільтр — для cursor-pagination якщо записів стане багато. */
119
90
  limit?: number | undefined;
120
91
  afterId?: string | undefined;
121
92
  }
@@ -130,52 +101,24 @@ export interface ListIndexedForSitemapResponse {
130
101
  nextAfterId?: string | undefined;
131
102
  }
132
103
  export declare const CATALOG_V1_PACKAGE_NAME = "catalog.v1";
133
- /** ─── Public ────────────────────────────────────────────────────────────── */
134
104
  export interface SeoFilterServiceClient {
135
- /**
136
- * Резолв ЧПУ-URL → metadata + canonical. Викликається SSR Next.js для
137
- * кожного category/[[...filters]] запиту. Якщо combo не знайдено —
138
- * повертає isIndexed=false і автогенерований fallback metadata.
139
- */
140
105
  resolveSeoFilter(request: ResolveSeoFilterRequest): Observable<ResolveSeoFilterResponse>;
141
106
  listSeoFilters(request: ListSeoFiltersRequest): Observable<ListSeoFiltersResponse>;
142
107
  getSeoFilter(request: GetSeoFilterRequest): Observable<SeoFilterResponse>;
143
108
  createSeoFilter(request: CreateSeoFilterRequest): Observable<SeoFilterResponse>;
144
109
  updateSeoFilter(request: UpdateSeoFilterRequest): Observable<SeoFilterResponse>;
145
110
  deleteSeoFilter(request: DeleteSeoFilterRequest): Observable<DeleteResponse>;
146
- /**
147
- * Топ-N непокритих combinations (за impressions/popularity) — для
148
- * швидкого створення SeoFilter з адмін-форми "Автопідказки".
149
- */
150
111
  suggestSeoFilters(request: SuggestSeoFiltersRequest): Observable<SuggestSeoFiltersResponse>;
151
- /**
152
- * Список усіх індексованих SeoFilter URL — для побудови sitemap.xml.
153
- * Повертає одночасно uk+ru сегменти (denormalized) + category slug.
154
- */
155
112
  listIndexedForSitemap(request: ListIndexedForSitemapRequest): Observable<ListIndexedForSitemapResponse>;
156
113
  }
157
- /** ─── Public ────────────────────────────────────────────────────────────── */
158
114
  export interface SeoFilterServiceController {
159
- /**
160
- * Резолв ЧПУ-URL → metadata + canonical. Викликається SSR Next.js для
161
- * кожного category/[[...filters]] запиту. Якщо combo не знайдено —
162
- * повертає isIndexed=false і автогенерований fallback metadata.
163
- */
164
115
  resolveSeoFilter(request: ResolveSeoFilterRequest): Promise<ResolveSeoFilterResponse> | Observable<ResolveSeoFilterResponse> | ResolveSeoFilterResponse;
165
116
  listSeoFilters(request: ListSeoFiltersRequest): Promise<ListSeoFiltersResponse> | Observable<ListSeoFiltersResponse> | ListSeoFiltersResponse;
166
117
  getSeoFilter(request: GetSeoFilterRequest): Promise<SeoFilterResponse> | Observable<SeoFilterResponse> | SeoFilterResponse;
167
118
  createSeoFilter(request: CreateSeoFilterRequest): Promise<SeoFilterResponse> | Observable<SeoFilterResponse> | SeoFilterResponse;
168
119
  updateSeoFilter(request: UpdateSeoFilterRequest): Promise<SeoFilterResponse> | Observable<SeoFilterResponse> | SeoFilterResponse;
169
120
  deleteSeoFilter(request: DeleteSeoFilterRequest): Promise<DeleteResponse> | Observable<DeleteResponse> | DeleteResponse;
170
- /**
171
- * Топ-N непокритих combinations (за impressions/popularity) — для
172
- * швидкого створення SeoFilter з адмін-форми "Автопідказки".
173
- */
174
121
  suggestSeoFilters(request: SuggestSeoFiltersRequest): Promise<SuggestSeoFiltersResponse> | Observable<SuggestSeoFiltersResponse> | SuggestSeoFiltersResponse;
175
- /**
176
- * Список усіх індексованих SeoFilter URL — для побудови sitemap.xml.
177
- * Повертає одночасно uk+ru сегменти (denormalized) + category slug.
178
- */
179
122
  listIndexedForSitemap(request: ListIndexedForSitemapRequest): Promise<ListIndexedForSitemapResponse> | Observable<ListIndexedForSitemapResponse> | ListIndexedForSitemapResponse;
180
123
  }
181
124
  export declare function SeoFilterServiceControllerMethods(): (constructor: Function) => void;
@@ -34,11 +34,6 @@ export interface ShopFilterOption {
34
34
  value: string;
35
35
  label: string;
36
36
  count: number;
37
- /**
38
- * slug ОПЦІЙНИЙ — потрібен для побудови ЧПУ-URL фільтрами
39
- * (brend-<slug>, kolir-<slug>, rozmir-<slug>). Якщо slug ще не
40
- * згенеровано через backfill — пусто, frontend fallback на id.
41
- */
42
37
  slug?: string | undefined;
43
38
  }
44
39
  export interface ShopFilterColorOption {
@@ -50,7 +50,6 @@ export interface AdminUpdateCustomerRequest {
50
50
  id: string;
51
51
  firstName?: string | undefined;
52
52
  lastName?: string | undefined;
53
- /** internal_note редагується тут окремо, бо це CRM-поле — не видиме клієнту. */
54
53
  internalNote?: string | undefined;
55
54
  }
56
55
  export interface AdminUpdateCustomerResponse {
@@ -277,21 +276,17 @@ export interface UsersServiceClient {
277
276
  clearViewedHistory(request: ClearViewedHistoryRequest): Observable<ClearViewedHistoryResponse>;
278
277
  exportUserData(request: ExportUserDataRequest): Observable<ExportUserDataResponse>;
279
278
  deleteAccount(request: DeleteAccountRequest): Observable<DeleteAccountResponse>;
280
- /** Family */
281
279
  getFamily(request: GetFamilyRequest): Observable<GetFamilyResponse>;
282
280
  addChild(request: AddChildRequest): Observable<ChildResponse>;
283
281
  updateChild(request: UpdateChildRequest): Observable<ChildResponse>;
284
282
  removeChild(request: RemoveChildRequest): Observable<RemoveChildResponse>;
285
- /** Pregnancy */
286
283
  getPregnancy(request: GetPregnancyRequest): Observable<GetPregnancyResponse>;
287
284
  updatePregnancy(request: UpdatePregnancyRequest): Observable<GetPregnancyResponse>;
288
- /** Cart */
289
285
  getCart(request: GetCartRequest): Observable<GetCartResponse>;
290
286
  upsertCartItem(request: UpsertCartItemRequest): Observable<GetCartResponse>;
291
287
  removeCartItem(request: RemoveCartItemRequest): Observable<GetCartResponse>;
292
288
  clearCart(request: ClearCartRequest): Observable<ClearCartResponse>;
293
289
  syncCart(request: SyncCartRequest): Observable<GetCartResponse>;
294
- /** Admin CRM — редагування клієнта менеджером (customers.edit на gateway). */
295
290
  adminUpdateCustomer(request: AdminUpdateCustomerRequest): Observable<AdminUpdateCustomerResponse>;
296
291
  }
297
292
  export interface UsersServiceController {
@@ -311,21 +306,17 @@ export interface UsersServiceController {
311
306
  clearViewedHistory(request: ClearViewedHistoryRequest): Promise<ClearViewedHistoryResponse> | Observable<ClearViewedHistoryResponse> | ClearViewedHistoryResponse;
312
307
  exportUserData(request: ExportUserDataRequest): Promise<ExportUserDataResponse> | Observable<ExportUserDataResponse> | ExportUserDataResponse;
313
308
  deleteAccount(request: DeleteAccountRequest): Promise<DeleteAccountResponse> | Observable<DeleteAccountResponse> | DeleteAccountResponse;
314
- /** Family */
315
309
  getFamily(request: GetFamilyRequest): Promise<GetFamilyResponse> | Observable<GetFamilyResponse> | GetFamilyResponse;
316
310
  addChild(request: AddChildRequest): Promise<ChildResponse> | Observable<ChildResponse> | ChildResponse;
317
311
  updateChild(request: UpdateChildRequest): Promise<ChildResponse> | Observable<ChildResponse> | ChildResponse;
318
312
  removeChild(request: RemoveChildRequest): Promise<RemoveChildResponse> | Observable<RemoveChildResponse> | RemoveChildResponse;
319
- /** Pregnancy */
320
313
  getPregnancy(request: GetPregnancyRequest): Promise<GetPregnancyResponse> | Observable<GetPregnancyResponse> | GetPregnancyResponse;
321
314
  updatePregnancy(request: UpdatePregnancyRequest): Promise<GetPregnancyResponse> | Observable<GetPregnancyResponse> | GetPregnancyResponse;
322
- /** Cart */
323
315
  getCart(request: GetCartRequest): Promise<GetCartResponse> | Observable<GetCartResponse> | GetCartResponse;
324
316
  upsertCartItem(request: UpsertCartItemRequest): Promise<GetCartResponse> | Observable<GetCartResponse> | GetCartResponse;
325
317
  removeCartItem(request: RemoveCartItemRequest): Promise<GetCartResponse> | Observable<GetCartResponse> | GetCartResponse;
326
318
  clearCart(request: ClearCartRequest): Promise<ClearCartResponse> | Observable<ClearCartResponse> | ClearCartResponse;
327
319
  syncCart(request: SyncCartRequest): Promise<GetCartResponse> | Observable<GetCartResponse> | GetCartResponse;
328
- /** Admin CRM — редагування клієнта менеджером (customers.edit на gateway). */
329
320
  adminUpdateCustomer(request: AdminUpdateCustomerRequest): Promise<AdminUpdateCustomerResponse> | Observable<AdminUpdateCustomerResponse> | AdminUpdateCustomerResponse;
330
321
  }
331
322
  export declare function UsersServiceControllerMethods(): (constructor: Function) => void;
@@ -0,0 +1,34 @@
1
+ import { Observable } from "rxjs";
2
+ export declare const protobufPackage = "catalog.v1";
3
+ export interface WarehouseSyncItem {
4
+ warehouseGuid: string;
5
+ name: string;
6
+ code1c: string;
7
+ pfCode?: string | undefined;
8
+ address?: string | undefined;
9
+ phone?: string | undefined;
10
+ isRetail?: boolean | undefined;
11
+ }
12
+ export interface UpsertWarehousesRequest {
13
+ items: WarehouseSyncItem[];
14
+ syncId: string;
15
+ onlineWarehouseCode: string;
16
+ }
17
+ export interface WarehouseUpsertResult {
18
+ guid: string;
19
+ status: string;
20
+ reason?: string | undefined;
21
+ id?: string | undefined;
22
+ }
23
+ export interface UpsertWarehousesResponse {
24
+ results: WarehouseUpsertResult[];
25
+ }
26
+ export declare const CATALOG_V1_PACKAGE_NAME = "catalog.v1";
27
+ export interface WarehouseServiceClient {
28
+ upsertWarehouses(request: UpsertWarehousesRequest): Observable<UpsertWarehousesResponse>;
29
+ }
30
+ export interface WarehouseServiceController {
31
+ upsertWarehouses(request: UpsertWarehousesRequest): Promise<UpsertWarehousesResponse> | Observable<UpsertWarehousesResponse> | UpsertWarehousesResponse;
32
+ }
33
+ export declare function WarehouseServiceControllerMethods(): (constructor: Function) => void;
34
+ export declare const WAREHOUSE_SERVICE_NAME = "WarehouseService";
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
3
+ // versions:
4
+ // protoc-gen-ts_proto v2.11.4
5
+ // protoc v3.21.12
6
+ // source: warehouse.proto
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.WAREHOUSE_SERVICE_NAME = exports.CATALOG_V1_PACKAGE_NAME = exports.protobufPackage = void 0;
9
+ exports.WarehouseServiceControllerMethods = WarehouseServiceControllerMethods;
10
+ /* eslint-disable */
11
+ const microservices_1 = require("@nestjs/microservices");
12
+ exports.protobufPackage = "catalog.v1";
13
+ exports.CATALOG_V1_PACKAGE_NAME = "catalog.v1";
14
+ function WarehouseServiceControllerMethods() {
15
+ return function (constructor) {
16
+ const grpcMethods = ["upsertWarehouses"];
17
+ for (const method of grpcMethods) {
18
+ const descriptor = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
19
+ (0, microservices_1.GrpcMethod)("WarehouseService", method)(constructor.prototype[method], method, descriptor);
20
+ }
21
+ const grpcStreamMethods = [];
22
+ for (const method of grpcStreamMethods) {
23
+ const descriptor = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
24
+ (0, microservices_1.GrpcStreamMethod)("WarehouseService", method)(constructor.prototype[method], method, descriptor);
25
+ }
26
+ };
27
+ }
28
+ exports.WAREHOUSE_SERVICE_NAME = "WarehouseService";
@@ -32,6 +32,41 @@ service AttributeService {
32
32
  rpc UnbindAttributeFromCategory (BindAttributeRequest) returns (SuccessResponse);
33
33
 
34
34
  rpc GetAllAttributesWithValues (GetAllAttributesWithValuesRequest) returns (GetAllAttributesWithValuesResponse);
35
+
36
+
37
+ rpc UpsertAttributes (UpsertAttributesRequest) returns (UpsertAttributesResponse);
38
+ }
39
+
40
+
41
+ message AttributeSyncValueItem {
42
+ string value_guid = 1;
43
+ map<string, string> value = 2;
44
+ }
45
+
46
+ message AttributeSyncItem {
47
+ string property_guid = 1;
48
+ map<string, string> name = 2;
49
+ bool is_color = 3;
50
+ repeated AttributeSyncValueItem values = 4;
51
+ }
52
+
53
+ message UpsertAttributesRequest {
54
+ repeated AttributeSyncItem items = 1;
55
+ string sync_id = 2;
56
+ }
57
+
58
+ message AttributeUpsertResult {
59
+ string guid = 1;
60
+ string status = 2;
61
+ optional string reason = 3;
62
+ optional string id = 4;
63
+ int32 values_created = 5;
64
+ int32 values_updated = 6;
65
+ int32 values_failed = 7;
66
+ }
67
+
68
+ message UpsertAttributesResponse {
69
+ repeated AttributeUpsertResult results = 1;
35
70
  }
36
71
 
37
72
  message GetAllAttributesWithValuesRequest {}
@@ -13,6 +13,31 @@ service BrandService {
13
13
  rpc CreateBrand (CreateBrandRequest) returns (BrandResponse);
14
14
  rpc UpdateBrand (UpdateBrandRequest) returns (BrandResponse);
15
15
  rpc DeleteBrand (DeleteBrandRequest) returns (DeleteResponse);
16
+
17
+
18
+ rpc UpsertBrands (UpsertBrandsRequest) returns (UpsertBrandsResponse);
19
+ }
20
+
21
+
22
+ message BrandSyncItem {
23
+ string brand_guid = 1;
24
+ string name = 2;
25
+ }
26
+
27
+ message UpsertBrandsRequest {
28
+ repeated BrandSyncItem items = 1;
29
+ string sync_id = 2;
30
+ }
31
+
32
+ message BrandUpsertResult {
33
+ string guid = 1;
34
+ string status = 2;
35
+ optional string reason = 3;
36
+ optional string id = 4;
37
+ }
38
+
39
+ message UpsertBrandsResponse {
40
+ repeated BrandUpsertResult results = 1;
16
41
  }
17
42
 
18
43
 
@@ -241,7 +241,7 @@ message CloneBundleRequest {
241
241
  message ExportBundlesRequest {
242
242
  optional BundleStatus status = 1;
243
243
  optional BundleType bundle_type = 2;
244
- string format = 3; // "json" | "csv"
244
+ string format = 3;
245
245
  }
246
246
 
247
247
  message AddCrossSellLinkRequest {
@@ -275,7 +275,7 @@ message BundleListItemResponse {
275
275
  double final_price = 13;
276
276
  bool in_stock = 14;
277
277
 
278
- // NEW
278
+
279
279
  BundleType bundle_type = 15;
280
280
  repeated DisplayPlacement display_placements = 16;
281
281
  }
@@ -13,8 +13,7 @@ service CartService {
13
13
  rpc ApplyPromo(ApplyPromoRequest) returns (CartResponse);
14
14
  rpc RemovePromo(RemovePromoRequest) returns (CartResponse);
15
15
 
16
- // ApplyCertificate — поки stub. Реальна перевірка номіналу/балансу
17
- // потребує синхронізації з 1С (фаза інтеграцій).
16
+
18
17
  rpc ApplyCertificate(ApplyCertificateRequest) returns (CartResponse);
19
18
  rpc RemoveCertificate(RemoveCertificateRequest) returns (CartResponse);
20
19
 
@@ -25,8 +24,7 @@ service CartService {
25
24
  rpc SetDeliveryDraft(SetDeliveryDraftRequest) returns (CartResponse);
26
25
  rpc SetPaymentDraft(SetPaymentDraftRequest) returns (CartResponse);
27
26
  rpc SetComment(SetCommentRequest) returns (CartResponse);
28
- // Batch-set всіх checkout-полів одним викликом + ОДИН Recalculate.
29
- // Фронт під час оформлення замовлення викликає це замість 4 окремих set-*.
27
+
30
28
  rpc SetCheckoutDraft(SetCheckoutDraftRequest) returns (CartResponse);
31
29
 
32
30
  rpc Recalculate(RecalculateRequest) returns (CartResponse);
@@ -38,7 +36,6 @@ service CartService {
38
36
  rpc GetWishlist(WishlistOwnerRequest) returns (WishlistResponse);
39
37
  }
40
38
 
41
- // ─── Cart core ──────────────────────────────────────────────────
42
39
 
43
40
  message CartItem {
44
41
  string product_id = 1;
@@ -104,8 +101,7 @@ message DeliveryDraft {
104
101
  string pickup_point_id = 7;
105
102
  double cost = 8;
106
103
  bool free_shipping = 9;
107
- // Область з City.region — клієнт передає при виборі міста, щоб
108
- // потім order-service зміг записати в snapshot замовлення.
104
+
109
105
  string region = 10;
110
106
  }
111
107
 
@@ -144,7 +140,6 @@ message Cart {
144
140
  int64 expires_at = 17;
145
141
  }
146
142
 
147
- // ─── Wishlist ───────────────────────────────────────────────────
148
143
 
149
144
  message WishlistItem {
150
145
  string product_id = 1;
@@ -162,7 +157,6 @@ message WishlistResponse {
162
157
  repeated WishlistItem items = 1;
163
158
  }
164
159
 
165
- // ─── Requests ───────────────────────────────────────────────────
166
160
 
167
161
  message CartOwner {
168
162
  string user_id = 1;
@@ -246,15 +240,13 @@ message SetCommentRequest {
246
240
 
247
241
  message SetCheckoutDraftRequest {
248
242
  CartOwner owner = 1;
249
- // Усі поля опціональні — оновлюються лише ті, що передані (proto3 default
250
- // означає "не міняти"). Recalculate виконується одноразово в кінці.
243
+
251
244
  Recipient recipient = 2;
252
245
  DeliveryDraft delivery = 3;
253
246
  PaymentDraft payment = 4;
254
247
  string comment = 5;
255
248
  bool do_not_call = 6;
256
- // Прапори "очистити поле" — щоб відрізнити default proto-значення
257
- // від явного запиту прибрати, бо у proto3 порожній string === unset.
249
+
258
250
  bool has_recipient = 7;
259
251
  bool has_delivery = 8;
260
252
  bool has_payment = 9;
@@ -280,7 +272,6 @@ message WishlistItemRequest {
280
272
  string variant_id = 3;
281
273
  }
282
274
 
283
- // ─── Responses ──────────────────────────────────────────────────
284
275
 
285
276
  message CartResponse {
286
277
  bool ok = 1;
@@ -23,6 +23,32 @@ service CategoryAdminService {
23
23
  rpc UpdateCategoryOrder (UpdateCategoryOrderRequest) returns (SuccessResponse);
24
24
 
25
25
  rpc GetAllCategories (GetAllCategoriesRequest) returns (GetAllCategoriesResponse);
26
+
27
+
28
+ rpc UpsertCategories (UpsertCategoriesRequest) returns (UpsertCategoriesResponse);
29
+ }
30
+
31
+
32
+ message CategorySyncItem {
33
+ string category_guid = 1;
34
+ optional string parent_guid = 2;
35
+ map<string, string> name = 3;
36
+ }
37
+
38
+ message UpsertCategoriesRequest {
39
+ repeated CategorySyncItem items = 1;
40
+ string sync_id = 2;
41
+ }
42
+
43
+ message CategoryUpsertResult {
44
+ string guid = 1;
45
+ string status = 2;
46
+ optional string reason = 3;
47
+ optional string id = 4;
48
+ }
49
+
50
+ message UpsertCategoriesResponse {
51
+ repeated CategoryUpsertResult results = 1;
26
52
  }
27
53
 
28
54
  message GetAllCategoriesRequest {}
@@ -16,10 +16,6 @@ service DeliveryService {
16
16
  rpc ListShipments(ListShipmentsRequest) returns (ListShipmentsResponse);
17
17
  }
18
18
 
19
- // ─── Domain ────────────────────────────────────────────────────
20
-
21
- // carrier: nova_poshta | ukrposhta | pickup | courier
22
- // method: warehouse | postomat | address | pickup
23
19
 
24
20
  message City {
25
21
  string ref = 1;
@@ -77,7 +73,6 @@ message ShipmentParcelItem {
77
73
  double weight_kg = 5;
78
74
  }
79
75
 
80
- // ─── Requests ──────────────────────────────────────────────────
81
76
 
82
77
  message Area {
83
78
  string ref = 1;
@@ -107,7 +102,7 @@ message ListAreasResponse {
107
102
  message ListWarehousesRequest {
108
103
  string carrier = 1;
109
104
  string city_ref = 2;
110
- string type = 3; // warehouse | postomat | both
105
+ string type = 3;
111
106
  string query = 4;
112
107
  int32 limit = 5;
113
108
  }
@@ -10,13 +10,13 @@ service DeliverySettingsService {
10
10
 
11
11
 
12
12
  message DeliverySettingsResponse {
13
- // Дефолтна вага позиції у кг — fallback коли catalog не повертає weight.
13
+
14
14
  double default_item_weight_kg = 1;
15
- // Поріг безкоштовної доставки в грн (0 = вимкнено).
15
+
16
16
  double free_shipping_threshold = 2;
17
- // Дефолтна оголошена вартість на одиницю товару у грн (для страхування НП).
17
+
18
18
  double default_declared_value = 3;
19
- // Reference відправника у НП (вибране warehouse адміністратором у settings).
19
+
20
20
  optional string np_sender_warehouse_ref = 4;
21
21
 
22
22
  string updated_at = 5;
@@ -6,11 +6,11 @@ import "common_post.proto";
6
6
 
7
7
 
8
8
  service FaqService {
9
- // Storefront
9
+
10
10
  rpc GetFaqStorefront (GetFaqStorefrontRequest) returns (GetFaqStorefrontResponse);
11
11
  rpc SearchFaq (SearchFaqRequest) returns (SearchFaqResponse);
12
12
 
13
- // Admin — categories
13
+
14
14
  rpc GetFaqCategories (GetFaqCategoriesRequest) returns (GetFaqCategoriesResponse);
15
15
  rpc GetFaqCategory (FaqCategoryIdRequest) returns (FaqCategoryResponse);
16
16
  rpc CreateFaqCategory (CreateFaqCategoryRequest) returns (FaqCategoryResponse);
@@ -18,7 +18,7 @@ service FaqService {
18
18
  rpc DeleteFaqCategory (FaqCategoryIdRequest) returns (DeleteResponse);
19
19
  rpc ReorderFaqCategories (ReorderFaqRequest) returns (SuccessResponse);
20
20
 
21
- // Admin — items
21
+
22
22
  rpc GetFaqItems (GetFaqItemsRequest) returns (GetFaqItemsResponse);
23
23
  rpc GetFaqItem (FaqItemIdRequest) returns (FaqItemResponse);
24
24
  rpc CreateFaqItem (CreateFaqItemRequest) returns (FaqItemResponse);
@@ -77,7 +77,6 @@ message FaqCategoryWithItems {
77
77
  }
78
78
 
79
79
 
80
- // ── Storefront ──────────────────────────────────────────────────────────────
81
80
 
82
81
  message GetFaqStorefrontRequest {
83
82
  optional int32 popular_limit = 1;
@@ -97,9 +96,6 @@ message SearchFaqResponse {
97
96
  repeated FaqItemResponse items = 1;
98
97
  }
99
98
 
100
-
101
- // ── Categories CRUD ─────────────────────────────────────────────────────────
102
-
103
99
  message FaqCategoryIdRequest {
104
100
  string id = 1;
105
101
  }
@@ -131,8 +127,6 @@ message UpdateFaqCategoryRequest {
131
127
  }
132
128
 
133
129
 
134
- // ── Items CRUD ──────────────────────────────────────────────────────────────
135
-
136
130
  message FaqItemIdRequest {
137
131
  string id = 1;
138
132
  }
@@ -169,7 +163,6 @@ message UpdateFaqItemRequest {
169
163
  }
170
164
 
171
165
 
172
- // ── Reorder / Bulk ──────────────────────────────────────────────────────────
173
166
 
174
167
  message FaqSortEntry {
175
168
  string id = 1;