@viu/emporix-sdk 2.21.0 → 2.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/dist/availability.cjs +118 -0
  3. package/dist/availability.cjs.map +1 -1
  4. package/dist/availability.d.cts +178 -2
  5. package/dist/availability.d.ts +178 -2
  6. package/dist/availability.js +1 -1
  7. package/dist/cart.cjs +215 -9
  8. package/dist/cart.cjs.map +1 -1
  9. package/dist/cart.d.cts +281 -3
  10. package/dist/cart.d.ts +281 -3
  11. package/dist/cart.js +1 -1
  12. package/dist/category.cjs +220 -2
  13. package/dist/category.cjs.map +1 -1
  14. package/dist/category.d.cts +408 -1
  15. package/dist/category.d.ts +408 -1
  16. package/dist/category.js +1 -1
  17. package/dist/{chunk-HD5RBCM6.js → chunk-27NLS646.js} +10 -2
  18. package/dist/chunk-27NLS646.js.map +1 -0
  19. package/dist/{chunk-PYLWZZC4.js → chunk-6PJFOX3A.js} +126 -2
  20. package/dist/chunk-6PJFOX3A.js.map +1 -0
  21. package/dist/chunk-HWVFF6B2.js +378 -0
  22. package/dist/chunk-HWVFF6B2.js.map +1 -0
  23. package/dist/chunk-LQFRJSVT.js +224 -0
  24. package/dist/chunk-LQFRJSVT.js.map +1 -0
  25. package/dist/chunk-P7G4LOOV.js +264 -0
  26. package/dist/chunk-P7G4LOOV.js.map +1 -0
  27. package/dist/{chunk-HBEQEIT6.js → chunk-PRN3T6TY.js} +63 -3
  28. package/dist/chunk-PRN3T6TY.js.map +1 -0
  29. package/dist/{chunk-44F52KRE.js → chunk-QQMLN76U.js} +27 -2
  30. package/dist/chunk-QQMLN76U.js.map +1 -0
  31. package/dist/chunk-UNW6SFSB.js +363 -0
  32. package/dist/chunk-UNW6SFSB.js.map +1 -0
  33. package/dist/chunk-V3275BA7.js +181 -0
  34. package/dist/chunk-V3275BA7.js.map +1 -0
  35. package/dist/chunk-W2KBVWJ2.js +323 -0
  36. package/dist/chunk-W2KBVWJ2.js.map +1 -0
  37. package/dist/chunk-YVZ6GOLE.js +399 -0
  38. package/dist/chunk-YVZ6GOLE.js.map +1 -0
  39. package/dist/chunk-ZOFGDNSX.js +305 -0
  40. package/dist/chunk-ZOFGDNSX.js.map +1 -0
  41. package/dist/companies.cjs +25 -0
  42. package/dist/companies.cjs.map +1 -1
  43. package/dist/companies.d.cts +14 -0
  44. package/dist/companies.d.ts +14 -0
  45. package/dist/companies.js +1 -1
  46. package/dist/contacts.cjs +8 -0
  47. package/dist/contacts.cjs.map +1 -1
  48. package/dist/contacts.d.cts +2 -0
  49. package/dist/contacts.d.ts +2 -0
  50. package/dist/contacts.js +1 -1
  51. package/dist/customer-groups-BxSNFHq1.d.cts +706 -0
  52. package/dist/customer-groups-GlzWhDsi.d.ts +706 -0
  53. package/dist/customer-groups.cjs +200 -17
  54. package/dist/customer-groups.cjs.map +1 -1
  55. package/dist/customer-groups.d.cts +2 -110
  56. package/dist/customer-groups.d.ts +2 -110
  57. package/dist/customer-groups.js +1 -1
  58. package/dist/customer.cjs +61 -1
  59. package/dist/customer.cjs.map +1 -1
  60. package/dist/customer.d.cts +48 -1
  61. package/dist/customer.d.ts +48 -1
  62. package/dist/customer.js +1 -1
  63. package/dist/index.cjs +2566 -554
  64. package/dist/index.cjs.map +1 -1
  65. package/dist/index.d.cts +455 -12
  66. package/dist/index.d.ts +455 -12
  67. package/dist/index.js +687 -342
  68. package/dist/index.js.map +1 -1
  69. package/dist/orders.cjs +160 -2
  70. package/dist/orders.cjs.map +1 -1
  71. package/dist/orders.d.cts +221 -1
  72. package/dist/orders.d.ts +221 -1
  73. package/dist/orders.js +1 -1
  74. package/dist/payment.cjs +124 -0
  75. package/dist/payment.cjs.map +1 -1
  76. package/dist/payment.d.cts +335 -1
  77. package/dist/payment.d.ts +335 -1
  78. package/dist/payment.js +1 -1
  79. package/dist/price.cjs +197 -0
  80. package/dist/price.cjs.map +1 -1
  81. package/dist/price.d.cts +577 -1
  82. package/dist/price.d.ts +577 -1
  83. package/dist/price.js +1 -1
  84. package/dist/product.cjs +190 -0
  85. package/dist/product.cjs.map +1 -1
  86. package/dist/product.d.cts +503 -1
  87. package/dist/product.d.ts +503 -1
  88. package/dist/product.js +1 -1
  89. package/dist/segment.cjs +179 -0
  90. package/dist/segment.cjs.map +1 -1
  91. package/dist/segment.d.cts +181 -1
  92. package/dist/segment.d.ts +181 -1
  93. package/dist/segment.js +1 -1
  94. package/package.json +1 -1
  95. package/dist/chunk-36T4YPQJ.js +0 -106
  96. package/dist/chunk-36T4YPQJ.js.map +0 -1
  97. package/dist/chunk-3BTPX7IJ.js +0 -41
  98. package/dist/chunk-3BTPX7IJ.js.map +0 -1
  99. package/dist/chunk-44F52KRE.js.map +0 -1
  100. package/dist/chunk-A3LYJUD4.js +0 -108
  101. package/dist/chunk-A3LYJUD4.js.map +0 -1
  102. package/dist/chunk-FZMP5NQZ.js +0 -173
  103. package/dist/chunk-FZMP5NQZ.js.map +0 -1
  104. package/dist/chunk-HBEQEIT6.js.map +0 -1
  105. package/dist/chunk-HD5RBCM6.js.map +0 -1
  106. package/dist/chunk-HUEMYP2L.js +0 -193
  107. package/dist/chunk-HUEMYP2L.js.map +0 -1
  108. package/dist/chunk-IVCCGJN5.js +0 -63
  109. package/dist/chunk-IVCCGJN5.js.map +0 -1
  110. package/dist/chunk-NE7MIZPR.js +0 -144
  111. package/dist/chunk-NE7MIZPR.js.map +0 -1
  112. package/dist/chunk-PYLWZZC4.js.map +0 -1
  113. package/dist/chunk-ZNLHLFQM.js +0 -160
  114. package/dist/chunk-ZNLHLFQM.js.map +0 -1
@@ -0,0 +1,181 @@
1
+ import { EmporixNotFoundError } from './chunk-UWGGF4MC.js';
2
+
3
+ // src/services/availability.ts
4
+ var ANON = { kind: "anonymous" };
5
+ var SERVICE = { kind: "service" };
6
+ var AvailabilityService = class {
7
+ constructor(ctx) {
8
+ this.ctx = ctx;
9
+ }
10
+ ctx;
11
+ static channel = "availability";
12
+ /**
13
+ * Single product. Resolves the availability record, or — when
14
+ * `opts.defaultAvailableOnNotFound` is set — a default available record on 404.
15
+ */
16
+ async get(productId, siteCode, auth = ANON, opts = {}) {
17
+ try {
18
+ return await this.ctx.http.request({
19
+ method: "GET",
20
+ path: `/availability/${this.ctx.tenant}/availability/${encodeURIComponent(
21
+ productId
22
+ )}/${encodeURIComponent(siteCode)}`,
23
+ auth
24
+ });
25
+ } catch (err) {
26
+ if (err instanceof EmporixNotFoundError && opts.defaultAvailableOnNotFound) {
27
+ return { productId, site: siteCode, available: true };
28
+ }
29
+ throw err;
30
+ }
31
+ }
32
+ /**
33
+ * Batch read via `POST .../availability/search` (one request). Products with
34
+ * no availability record are absent from the response; each is synthesized as
35
+ * `{ available: false }` (or `{ available: true }` when
36
+ * `opts.defaultAvailableOnNotFound` is set). The result preserves input order
37
+ * and length. An empty `productIds` resolves to `[]` without a request.
38
+ */
39
+ async getMany(productIds, siteCode, auth = ANON, opts = {}) {
40
+ if (productIds.length === 0) return [];
41
+ const found = await this.ctx.http.request({
42
+ method: "POST",
43
+ path: `/availability/${this.ctx.tenant}/availability/search`,
44
+ auth,
45
+ query: { site: siteCode, pageSize: productIds.length },
46
+ body: productIds,
47
+ idempotent: true
48
+ // pure read over POST — safe to replay on 5xx/429
49
+ });
50
+ const byId = /* @__PURE__ */ new Map();
51
+ for (const a of found) if (a.productId) byId.set(a.productId, a);
52
+ return productIds.map(
53
+ (id) => byId.get(id) ?? {
54
+ productId: id,
55
+ site: siteCode,
56
+ available: Boolean(opts.defaultAvailableOnNotFound)
57
+ }
58
+ );
59
+ }
60
+ /**
61
+ * Lists every availability record for a site (`GET /availability/site/{site}`),
62
+ * wrapped into `PaginatedItems`. Default auth: anonymous.
63
+ */
64
+ async listForSite(siteCode, params = {}, auth = ANON) {
65
+ const pageNumber = params.pageNumber ?? 1;
66
+ const pageSize = params.pageSize ?? 50;
67
+ const items = await this.ctx.http.request({
68
+ method: "GET",
69
+ path: `/availability/${this.ctx.tenant}/availability/site/${encodeURIComponent(siteCode)}`,
70
+ query: {
71
+ pageNumber,
72
+ pageSize,
73
+ ...params.q === void 0 ? {} : { q: params.q },
74
+ ...params.sort === void 0 ? {} : { sort: params.sort }
75
+ },
76
+ auth
77
+ });
78
+ return { items, pageNumber, pageSize, hasNextPage: items.length === pageSize };
79
+ }
80
+ // --- Admin writes. Default auth: service. ---
81
+ /**
82
+ * Creates an availability record for a product on a site
83
+ * (`POST /availability/{productId}/{site}`). Responds 409 when the record
84
+ * already exists — use {@link update} to upsert. Default auth: service.
85
+ */
86
+ async create(productId, siteCode, input, auth = SERVICE) {
87
+ return this.ctx.http.request({
88
+ method: "POST",
89
+ path: `/availability/${this.ctx.tenant}/availability/${encodeURIComponent(
90
+ productId
91
+ )}/${encodeURIComponent(siteCode)}`,
92
+ body: input,
93
+ auth
94
+ });
95
+ }
96
+ /**
97
+ * Upserts a product's availability on a site
98
+ * (`PUT /availability/{productId}/{site}`). Returns the created record's id
99
+ * on 201 and nothing on 204. This endpoint has no PATCH counterpart.
100
+ * Default auth: service.
101
+ */
102
+ async update(productId, siteCode, input, auth = SERVICE) {
103
+ return this.ctx.http.request({
104
+ method: "PUT",
105
+ path: `/availability/${this.ctx.tenant}/availability/${encodeURIComponent(
106
+ productId
107
+ )}/${encodeURIComponent(siteCode)}`,
108
+ body: input,
109
+ auth
110
+ });
111
+ }
112
+ /**
113
+ * Deletes a product's availability on a site
114
+ * (`DELETE /availability/{productId}/{site}`). Default auth: service.
115
+ */
116
+ async delete(productId, siteCode, auth = SERVICE) {
117
+ await this.ctx.http.request({
118
+ method: "DELETE",
119
+ path: `/availability/${this.ctx.tenant}/availability/${encodeURIComponent(
120
+ productId
121
+ )}/${encodeURIComponent(siteCode)}`,
122
+ auth
123
+ });
124
+ }
125
+ /**
126
+ * Bulk-creates availability records (`POST /availability/bulk`). Responds 207
127
+ * Multi-Status: partial failures do **not** throw — inspect each entry.
128
+ *
129
+ * `options.vendorId` limits the operation to a vendor's products. It is sent
130
+ * as the `vendor-id` header. **Note:** the OpenAPI schema spells this header
131
+ * `venodr-id`, which is an evident upstream typo (the body field is
132
+ * `vendorId`); the SDK sends the corrected name. Unverified against the live
133
+ * API — if the service really expects the misspelling, the filter silently
134
+ * has no effect.
135
+ *
136
+ * Default auth: service.
137
+ */
138
+ async bulkCreate(input, options = {}, auth = SERVICE) {
139
+ return this.ctx.http.request({
140
+ method: "POST",
141
+ path: `/availability/${this.ctx.tenant}/availability/bulk`,
142
+ ...options.vendorId === void 0 ? {} : { headers: { "vendor-id": options.vendorId } },
143
+ body: input,
144
+ auth
145
+ });
146
+ }
147
+ /**
148
+ * Bulk-updates availability records (`PUT /availability/bulk`). Responds 207
149
+ * Multi-Status: partial failures do **not** throw — inspect each entry. See
150
+ * {@link bulkCreate} for the `vendorId` header caveat. Default auth: service.
151
+ */
152
+ async bulkUpdate(input, options = {}, auth = SERVICE) {
153
+ return this.ctx.http.request({
154
+ method: "PUT",
155
+ path: `/availability/${this.ctx.tenant}/availability/bulk`,
156
+ ...options.vendorId === void 0 ? {} : { headers: { "vendor-id": options.vendorId } },
157
+ body: input,
158
+ auth
159
+ });
160
+ }
161
+ /**
162
+ * Bulk-deletes availability records (`DELETE /availability/bulk`). Unusually
163
+ * for a DELETE, this endpoint takes a body listing the records to remove.
164
+ * Responds 207 Multi-Status: partial failures do **not** throw — inspect each
165
+ * entry. See {@link bulkCreate} for the `vendorId` header caveat. Default
166
+ * auth: service.
167
+ */
168
+ async bulkDelete(input, options = {}, auth = SERVICE) {
169
+ return this.ctx.http.request({
170
+ method: "DELETE",
171
+ path: `/availability/${this.ctx.tenant}/availability/bulk`,
172
+ ...options.vendorId === void 0 ? {} : { headers: { "vendor-id": options.vendorId } },
173
+ body: input,
174
+ auth
175
+ });
176
+ }
177
+ };
178
+
179
+ export { AvailabilityService };
180
+ //# sourceMappingURL=chunk-V3275BA7.js.map
181
+ //# sourceMappingURL=chunk-V3275BA7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/availability.ts"],"names":[],"mappings":"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","file":"chunk-V3275BA7.js","sourcesContent":["import type { ClientContext, PaginatedItems } from \"../core/context\";\nimport type { AuthContext } from \"../core/auth\";\nimport { EmporixNotFoundError } from \"../core/errors\";\nimport type {\n Availability,\n AvailabilityInput,\n AvailabilityCreated,\n AvailabilityBulkInput,\n AvailabilityBulkDeleteInput,\n AvailabilityBulkResult,\n} from \"./availability-types\";\n\nexport type {\n Availability,\n AvailabilityInput,\n AvailabilityCreated,\n AvailabilityBulkInput,\n AvailabilityBulkDeleteInput,\n AvailabilityBulkResult,\n} from \"./availability-types\";\n\n/** Shared options for {@link AvailabilityService} reads. */\nexport interface AvailabilityOptions {\n /**\n * When `true`, a product with no availability record resolves to a default\n * `{ available: true }` instead of throwing (single `get`) / being marked\n * unavailable (`getMany`). Off by default — opt in for tenants that sell\n * without stock management.\n */\n defaultAvailableOnNotFound?: boolean;\n}\n\nconst ANON: AuthContext = { kind: \"anonymous\" };\nconst SERVICE: AuthContext = { kind: \"service\" };\n\n/**\n * Reads product availability per site. Default auth is anonymous (like\n * `PriceService.matchByContext`); pass a customer/raw/service context to use a\n * different token. Requires the `availability.availability_view` scope on\n * whichever token is used.\n */\nexport class AvailabilityService {\n static readonly channel = \"availability\" as const;\n constructor(private readonly ctx: ClientContext) {}\n\n /**\n * Single product. Resolves the availability record, or — when\n * `opts.defaultAvailableOnNotFound` is set — a default available record on 404.\n */\n async get(\n productId: string,\n siteCode: string,\n auth: AuthContext = ANON,\n opts: AvailabilityOptions = {},\n ): Promise<Availability> {\n try {\n return await this.ctx.http.request<Availability>({\n method: \"GET\",\n path: `/availability/${this.ctx.tenant}/availability/${encodeURIComponent(\n productId,\n )}/${encodeURIComponent(siteCode)}`,\n auth,\n });\n } catch (err) {\n if (err instanceof EmporixNotFoundError && opts.defaultAvailableOnNotFound) {\n return { productId, site: siteCode, available: true };\n }\n throw err;\n }\n }\n\n /**\n * Batch read via `POST .../availability/search` (one request). Products with\n * no availability record are absent from the response; each is synthesized as\n * `{ available: false }` (or `{ available: true }` when\n * `opts.defaultAvailableOnNotFound` is set). The result preserves input order\n * and length. An empty `productIds` resolves to `[]` without a request.\n */\n async getMany(\n productIds: string[],\n siteCode: string,\n auth: AuthContext = ANON,\n opts: AvailabilityOptions = {},\n ): Promise<Availability[]> {\n if (productIds.length === 0) return [];\n const found = await this.ctx.http.request<Availability[]>({\n method: \"POST\",\n path: `/availability/${this.ctx.tenant}/availability/search`,\n auth,\n query: { site: siteCode, pageSize: productIds.length },\n body: productIds,\n idempotent: true, // pure read over POST — safe to replay on 5xx/429\n });\n const byId = new Map<string, Availability>();\n for (const a of found) if (a.productId) byId.set(a.productId, a);\n return productIds.map(\n (id) =>\n byId.get(id) ?? {\n productId: id,\n site: siteCode,\n available: Boolean(opts.defaultAvailableOnNotFound),\n },\n );\n }\n\n /**\n * Lists every availability record for a site (`GET /availability/site/{site}`),\n * wrapped into `PaginatedItems`. Default auth: anonymous.\n */\n async listForSite(\n siteCode: string,\n params: { pageNumber?: number; pageSize?: number; q?: string; sort?: string } = {},\n auth: AuthContext = ANON,\n ): Promise<PaginatedItems<Availability>> {\n const pageNumber = params.pageNumber ?? 1;\n const pageSize = params.pageSize ?? 50;\n const items = await this.ctx.http.request<Availability[]>({\n method: \"GET\",\n path: `/availability/${this.ctx.tenant}/availability/site/${encodeURIComponent(siteCode)}`,\n query: {\n pageNumber,\n pageSize,\n ...(params.q === undefined ? {} : { q: params.q }),\n ...(params.sort === undefined ? {} : { sort: params.sort }),\n },\n auth,\n });\n return { items, pageNumber, pageSize, hasNextPage: items.length === pageSize };\n }\n\n // --- Admin writes. Default auth: service. ---\n\n /**\n * Creates an availability record for a product on a site\n * (`POST /availability/{productId}/{site}`). Responds 409 when the record\n * already exists — use {@link update} to upsert. Default auth: service.\n */\n async create(\n productId: string,\n siteCode: string,\n input: AvailabilityInput,\n auth: AuthContext = SERVICE,\n ): Promise<AvailabilityCreated> {\n return this.ctx.http.request<AvailabilityCreated>({\n method: \"POST\",\n path: `/availability/${this.ctx.tenant}/availability/${encodeURIComponent(\n productId,\n )}/${encodeURIComponent(siteCode)}`,\n body: input,\n auth,\n });\n }\n\n /**\n * Upserts a product's availability on a site\n * (`PUT /availability/{productId}/{site}`). Returns the created record's id\n * on 201 and nothing on 204. This endpoint has no PATCH counterpart.\n * Default auth: service.\n */\n async update(\n productId: string,\n siteCode: string,\n input: AvailabilityInput,\n auth: AuthContext = SERVICE,\n ): Promise<AvailabilityCreated | void> {\n return this.ctx.http.request<AvailabilityCreated | void>({\n method: \"PUT\",\n path: `/availability/${this.ctx.tenant}/availability/${encodeURIComponent(\n productId,\n )}/${encodeURIComponent(siteCode)}`,\n body: input,\n auth,\n });\n }\n\n /**\n * Deletes a product's availability on a site\n * (`DELETE /availability/{productId}/{site}`). Default auth: service.\n */\n async delete(productId: string, siteCode: string, auth: AuthContext = SERVICE): Promise<void> {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `/availability/${this.ctx.tenant}/availability/${encodeURIComponent(\n productId,\n )}/${encodeURIComponent(siteCode)}`,\n auth,\n });\n }\n\n /**\n * Bulk-creates availability records (`POST /availability/bulk`). Responds 207\n * Multi-Status: partial failures do **not** throw — inspect each entry.\n *\n * `options.vendorId` limits the operation to a vendor's products. It is sent\n * as the `vendor-id` header. **Note:** the OpenAPI schema spells this header\n * `venodr-id`, which is an evident upstream typo (the body field is\n * `vendorId`); the SDK sends the corrected name. Unverified against the live\n * API — if the service really expects the misspelling, the filter silently\n * has no effect.\n *\n * Default auth: service.\n */\n async bulkCreate(\n input: AvailabilityBulkInput[],\n options: { vendorId?: string } = {},\n auth: AuthContext = SERVICE,\n ): Promise<AvailabilityBulkResult[]> {\n return this.ctx.http.request<AvailabilityBulkResult[]>({\n method: \"POST\",\n path: `/availability/${this.ctx.tenant}/availability/bulk`,\n ...(options.vendorId === undefined ? {} : { headers: { \"vendor-id\": options.vendorId } }),\n body: input,\n auth,\n });\n }\n\n /**\n * Bulk-updates availability records (`PUT /availability/bulk`). Responds 207\n * Multi-Status: partial failures do **not** throw — inspect each entry. See\n * {@link bulkCreate} for the `vendorId` header caveat. Default auth: service.\n */\n async bulkUpdate(\n input: AvailabilityBulkInput[],\n options: { vendorId?: string } = {},\n auth: AuthContext = SERVICE,\n ): Promise<AvailabilityBulkResult[]> {\n return this.ctx.http.request<AvailabilityBulkResult[]>({\n method: \"PUT\",\n path: `/availability/${this.ctx.tenant}/availability/bulk`,\n ...(options.vendorId === undefined ? {} : { headers: { \"vendor-id\": options.vendorId } }),\n body: input,\n auth,\n });\n }\n\n /**\n * Bulk-deletes availability records (`DELETE /availability/bulk`). Unusually\n * for a DELETE, this endpoint takes a body listing the records to remove.\n * Responds 207 Multi-Status: partial failures do **not** throw — inspect each\n * entry. See {@link bulkCreate} for the `vendorId` header caveat. Default\n * auth: service.\n */\n async bulkDelete(\n input: AvailabilityBulkDeleteInput[],\n options: { vendorId?: string } = {},\n auth: AuthContext = SERVICE,\n ): Promise<AvailabilityBulkResult[]> {\n return this.ctx.http.request<AvailabilityBulkResult[]>({\n method: \"DELETE\",\n path: `/availability/${this.ctx.tenant}/availability/bulk`,\n ...(options.vendorId === undefined ? {} : { headers: { \"vendor-id\": options.vendorId } }),\n body: input,\n auth,\n });\n }\n}\n"]}
@@ -0,0 +1,323 @@
1
+ import { requireCustomer } from './chunk-3BDDYX3V.js';
2
+
3
+ // src/services/segment.ts
4
+ function setIfDefined(q, key, value) {
5
+ if (value !== void 0 && value !== "") {
6
+ q[key] = value;
7
+ }
8
+ }
9
+ var SERVICE = { kind: "service" };
10
+ var SegmentService = class {
11
+ constructor(ctx, deps) {
12
+ this.ctx = ctx;
13
+ this.deps = deps;
14
+ }
15
+ ctx;
16
+ deps;
17
+ static channel = "segment";
18
+ static deps = ["products", "categories"];
19
+ base() {
20
+ return `/customer-segment/${this.ctx.tenant}/segments`;
21
+ }
22
+ /** Lists segments the caller belongs to (with `segment_read_own`). */
23
+ async list(query = {}, auth) {
24
+ const q = {};
25
+ setIfDefined(q, "q", query.q);
26
+ setIfDefined(q, "pageNumber", query.pageNumber);
27
+ setIfDefined(q, "pageSize", query.pageSize);
28
+ return this.ctx.http.request({
29
+ method: "GET",
30
+ path: this.base(),
31
+ auth: requireCustomer(auth),
32
+ ...Object.keys(q).length ? { query: q } : {}
33
+ });
34
+ }
35
+ /** Fetches a single segment by id. */
36
+ async get(segmentId, auth) {
37
+ return this.ctx.http.request({
38
+ method: "GET",
39
+ path: `${this.base()}/${segmentId}`,
40
+ auth: requireCustomer(auth)
41
+ });
42
+ }
43
+ /** Item assignments (PRODUCT + CATEGORY) across all the caller's active segments. */
44
+ async listItems(query = {}, auth) {
45
+ const q = {};
46
+ setIfDefined(q, "q", query.q);
47
+ setIfDefined(q, "siteCode", query.siteCode);
48
+ setIfDefined(q, "legalEntityId", query.legalEntityId);
49
+ setIfDefined(q, "pageNumber", query.pageNumber);
50
+ setIfDefined(q, "pageSize", query.pageSize);
51
+ if (query.onlyActive !== void 0) q.onlyActive = String(query.onlyActive);
52
+ return this.ctx.http.request({
53
+ method: "GET",
54
+ path: `${this.base()}/items`,
55
+ auth: requireCustomer(auth),
56
+ ...Object.keys(q).length ? { query: q } : {}
57
+ });
58
+ }
59
+ /** Item assignments of one specific segment. */
60
+ async listSegmentItems(segmentId, query = {}, auth) {
61
+ const q = {};
62
+ setIfDefined(q, "q", query.q);
63
+ setIfDefined(q, "legalEntityId", query.legalEntityId);
64
+ setIfDefined(q, "pageNumber", query.pageNumber);
65
+ setIfDefined(q, "pageSize", query.pageSize);
66
+ return this.ctx.http.request({
67
+ method: "GET",
68
+ path: `${this.base()}/${segmentId}/items`,
69
+ auth: requireCustomer(auth),
70
+ ...Object.keys(q).length ? { query: q } : {}
71
+ });
72
+ }
73
+ /** Category tree built only from the caller's active segments. */
74
+ async getCategoryTree(query = {}, auth) {
75
+ const q = {};
76
+ setIfDefined(q, "siteCode", query.siteCode);
77
+ setIfDefined(q, "legalEntityId", query.legalEntityId);
78
+ return this.ctx.http.request({
79
+ method: "GET",
80
+ path: `${this.base()}/items/category-trees`,
81
+ auth: requireCustomer(auth),
82
+ ...Object.keys(q).length ? { query: q } : {}
83
+ });
84
+ }
85
+ async pickItemIds(kind, query, auth) {
86
+ const rows = await this.listItems(query, auth);
87
+ const ids = [];
88
+ for (const r of rows) {
89
+ const id = r.item?.id;
90
+ if (r.type === kind && typeof id === "string") ids.push(id);
91
+ }
92
+ return ids;
93
+ }
94
+ /** Product ids assigned to the caller's active segments. */
95
+ async listMyProductIds(query, auth) {
96
+ return this.pickItemIds("PRODUCT", query ?? {}, auth);
97
+ }
98
+ /** Category ids assigned to the caller's active segments. */
99
+ async listMyCategoryIds(query, auth) {
100
+ return this.pickItemIds("CATEGORY", query ?? {}, auth);
101
+ }
102
+ /**
103
+ * Hydrates `listMyProductIds` via `ProductService.get` in parallel.
104
+ * Resolves in the same order as the id list. Any single failure rejects
105
+ * the whole batch (`Promise.all`); use the id-list method + your own
106
+ * tolerance strategy if partial success matters.
107
+ */
108
+ async listMyProducts(query, auth) {
109
+ const pageNumber = query?.pageNumber ?? 1;
110
+ const pageSize = query?.pageSize ?? 20;
111
+ const sourceItems = await this.listItems(
112
+ { ...query ?? {}, pageNumber, pageSize },
113
+ auth
114
+ );
115
+ const ids = [];
116
+ for (const r of sourceItems) {
117
+ if (r.type === "PRODUCT" && typeof r.item?.id === "string") ids.push(r.item.id);
118
+ }
119
+ const items = await this.deps.products.searchByIds(ids, void 0, auth);
120
+ return { items, pageNumber, pageSize, hasNextPage: sourceItems.length === pageSize };
121
+ }
122
+ /**
123
+ * Hydrates a page of the caller's segment CATEGORY assignments into
124
+ * real categories via one bulk `categories.searchByIds` call. Same
125
+ * `hasNextPage` semantic as `listMyProducts`.
126
+ */
127
+ async listMyCategories(query, auth) {
128
+ const pageNumber = query?.pageNumber ?? 1;
129
+ const pageSize = query?.pageSize ?? 20;
130
+ const sourceItems = await this.listItems(
131
+ { ...query ?? {}, pageNumber, pageSize },
132
+ auth
133
+ );
134
+ const ids = [];
135
+ for (const r of sourceItems) {
136
+ if (r.type === "CATEGORY" && typeof r.item?.id === "string") ids.push(r.item.id);
137
+ }
138
+ const items = await this.deps.categories.searchByIds(ids, void 0, auth);
139
+ return { items, pageNumber, pageSize, hasNextPage: sourceItems.length === pageSize };
140
+ }
141
+ // --- Admin CRUD (segment_manage). Default auth: service. ---
142
+ /** Creates a segment. Default auth: service. */
143
+ async create(input, authCtx = SERVICE) {
144
+ return this.ctx.http.request({ method: "POST", path: this.base(), auth: authCtx, body: input });
145
+ }
146
+ /** Searches segments (POST body). Default auth: service. */
147
+ async search(query, authCtx = SERVICE) {
148
+ return this.ctx.http.request({
149
+ method: "POST",
150
+ path: `${this.base()}/search`,
151
+ auth: authCtx,
152
+ body: query
153
+ });
154
+ }
155
+ /** Full-replaces a segment (PUT). Default auth: service. */
156
+ async update(segmentId, input, authCtx = SERVICE) {
157
+ return this.ctx.http.request({
158
+ method: "PUT",
159
+ path: `${this.base()}/${segmentId}`,
160
+ auth: authCtx,
161
+ body: input
162
+ });
163
+ }
164
+ /** Partially updates a segment (PATCH). Default auth: service. */
165
+ async patch(segmentId, input, authCtx = SERVICE) {
166
+ return this.ctx.http.request({
167
+ method: "PATCH",
168
+ path: `${this.base()}/${segmentId}`,
169
+ auth: authCtx,
170
+ body: input
171
+ });
172
+ }
173
+ /** Deletes a segment. Default auth: service. */
174
+ async delete(segmentId, authCtx = SERVICE) {
175
+ await this.ctx.http.request({
176
+ method: "DELETE",
177
+ path: `${this.base()}/${segmentId}`,
178
+ auth: authCtx
179
+ });
180
+ }
181
+ /** Checks which segments the given items/customers match. Default auth: service. */
182
+ async match(input, authCtx = SERVICE) {
183
+ return this.ctx.http.request({
184
+ method: "POST",
185
+ path: `${this.base()}/match`,
186
+ auth: authCtx,
187
+ body: input
188
+ });
189
+ }
190
+ /** Creates multiple segments. Default auth: service. */
191
+ async bulkCreate(inputs, authCtx = SERVICE) {
192
+ return this.ctx.http.request({
193
+ method: "POST",
194
+ path: `${this.base()}/bulk`,
195
+ auth: authCtx,
196
+ body: inputs
197
+ });
198
+ }
199
+ /** Upserts multiple segments (PUT). Default auth: service. */
200
+ async bulkUpdate(inputs, authCtx = SERVICE) {
201
+ return this.ctx.http.request({
202
+ method: "PUT",
203
+ path: `${this.base()}/bulk`,
204
+ auth: authCtx,
205
+ body: inputs
206
+ });
207
+ }
208
+ /** Deletes multiple segments (DELETE with a body of ids). Default auth: service. */
209
+ async bulkDelete(body, authCtx = SERVICE) {
210
+ return this.ctx.http.request({
211
+ method: "DELETE",
212
+ path: `${this.base()}/bulk`,
213
+ auth: authCtx,
214
+ body
215
+ });
216
+ }
217
+ /** Customer→segment assignments (`segment_manage`). Default auth: service. */
218
+ customers = {
219
+ list: async (segmentId, query, authCtx = SERVICE) => this.ctx.http.request({
220
+ method: "GET",
221
+ path: `${this.base()}/${segmentId}/customers`,
222
+ auth: authCtx,
223
+ ...query ? { query } : {}
224
+ }),
225
+ search: async (segmentId, query, authCtx = SERVICE) => this.ctx.http.request({
226
+ method: "POST",
227
+ path: `${this.base()}/${segmentId}/customers/search`,
228
+ auth: authCtx,
229
+ body: query
230
+ }),
231
+ get: async (segmentId, customerId, authCtx = SERVICE) => this.ctx.http.request({
232
+ method: "GET",
233
+ path: `${this.base()}/${segmentId}/customers/${customerId}`,
234
+ auth: authCtx
235
+ }),
236
+ assign: async (segmentId, customerId, input, authCtx = SERVICE) => this.ctx.http.request({
237
+ method: "PUT",
238
+ path: `${this.base()}/${segmentId}/customers/${customerId}`,
239
+ auth: authCtx,
240
+ body: input
241
+ }),
242
+ remove: async (segmentId, customerId, authCtx = SERVICE) => {
243
+ await this.ctx.http.request({
244
+ method: "DELETE",
245
+ path: `${this.base()}/${segmentId}/customers/${customerId}`,
246
+ auth: authCtx
247
+ });
248
+ },
249
+ getForEntity: async (segmentId, customerId, legalEntityId, authCtx = SERVICE) => this.ctx.http.request({
250
+ method: "GET",
251
+ path: `${this.base()}/${segmentId}/customers/${customerId}/${legalEntityId}`,
252
+ auth: authCtx
253
+ }),
254
+ assignForEntity: async (segmentId, customerId, legalEntityId, input, authCtx = SERVICE) => this.ctx.http.request({
255
+ method: "PUT",
256
+ path: `${this.base()}/${segmentId}/customers/${customerId}/${legalEntityId}`,
257
+ auth: authCtx,
258
+ body: input
259
+ }),
260
+ removeForEntity: async (segmentId, customerId, legalEntityId, authCtx = SERVICE) => {
261
+ await this.ctx.http.request({
262
+ method: "DELETE",
263
+ path: `${this.base()}/${segmentId}/customers/${customerId}/${legalEntityId}`,
264
+ auth: authCtx
265
+ });
266
+ },
267
+ bulkAssign: async (segmentId, inputs, authCtx = SERVICE) => this.ctx.http.request({
268
+ method: "PUT",
269
+ path: `${this.base()}/${segmentId}/customers/bulk`,
270
+ auth: authCtx,
271
+ body: inputs
272
+ }),
273
+ bulkRemove: async (segmentId, body, authCtx = SERVICE) => this.ctx.http.request({
274
+ method: "DELETE",
275
+ path: `${this.base()}/${segmentId}/customers/bulk`,
276
+ auth: authCtx,
277
+ body
278
+ })
279
+ };
280
+ /** Item→segment assignments (`type` = PRODUCT | CATEGORY). Default auth: service. */
281
+ items = {
282
+ search: async (segmentId, query, authCtx = SERVICE) => this.ctx.http.request({
283
+ method: "POST",
284
+ path: `${this.base()}/${segmentId}/items/search`,
285
+ auth: authCtx,
286
+ body: query
287
+ }),
288
+ get: async (segmentId, type, itemId, authCtx = SERVICE) => this.ctx.http.request({
289
+ method: "GET",
290
+ path: `${this.base()}/${segmentId}/items/${type}/${itemId}`,
291
+ auth: authCtx
292
+ }),
293
+ assign: async (segmentId, type, itemId, input, authCtx = SERVICE) => this.ctx.http.request({
294
+ method: "PUT",
295
+ path: `${this.base()}/${segmentId}/items/${type}/${itemId}`,
296
+ auth: authCtx,
297
+ body: input
298
+ }),
299
+ remove: async (segmentId, type, itemId, authCtx = SERVICE) => {
300
+ await this.ctx.http.request({
301
+ method: "DELETE",
302
+ path: `${this.base()}/${segmentId}/items/${type}/${itemId}`,
303
+ auth: authCtx
304
+ });
305
+ },
306
+ bulkAssign: async (segmentId, type, inputs, authCtx = SERVICE) => this.ctx.http.request({
307
+ method: "PUT",
308
+ path: `${this.base()}/${segmentId}/items/${type}/bulk`,
309
+ auth: authCtx,
310
+ body: inputs
311
+ }),
312
+ bulkRemove: async (segmentId, type, body, authCtx = SERVICE) => this.ctx.http.request({
313
+ method: "DELETE",
314
+ path: `${this.base()}/${segmentId}/items/${type}/bulk`,
315
+ auth: authCtx,
316
+ body
317
+ })
318
+ };
319
+ };
320
+
321
+ export { SegmentService };
322
+ //# sourceMappingURL=chunk-W2KBVWJ2.js.map
323
+ //# sourceMappingURL=chunk-W2KBVWJ2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/services/segment.ts"],"names":[],"mappings":"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","file":"chunk-W2KBVWJ2.js","sourcesContent":["import type { ClientContext, PaginatedItems } from \"../core/context\";\nimport type { AuthContext } from \"../core/auth\";\nimport { requireCustomer } from \"../core/require-customer\";\nimport type { ProductService } from \"./product\";\nimport type { CategoryService } from \"./category\";\nimport type {\n SegmentResponse,\n ItemAssignmentResponse,\n CategoryTreeResponse,\n SegmentCreation,\n SegmentUpdate,\n SegmentsSearch,\n SegmentUpdateBulk,\n Match,\n CustomerAssignmentUpsert,\n CustomerAssignmentUpsertBulk,\n CustomerAssignmentResponse,\n ItemAssignmentUpsert,\n ItemAssignmentUpsertBulk,\n BulkResponse,\n BulkAssignmentResponse,\n} from \"../generated/customer-segment\";\n\n/** Generated segment types (read shapes — storefront `segment_read_own`). */\nexport type Segment = SegmentResponse;\nexport type SegmentItem = ItemAssignmentResponse;\nexport type SegmentCategoryTree = CategoryTreeResponse;\nexport type SegmentCategoryTreeNode = CategoryTreeResponse[number];\n\n/** Create body for a segment (generated). */\nexport type SegmentInput = SegmentCreation;\n/** Full-replace (PUT) body for a segment (generated). */\nexport type SegmentUpdateInput = SegmentUpdate;\n/** Partial (PATCH) body for a segment. */\nexport type SegmentPatchInput = Partial<SegmentUpdate>;\n/** Search body for segments (generated). */\nexport type SegmentSearchQuery = SegmentsSearch;\n/** Body for a segment match check (generated). */\nexport type SegmentMatchInput = Match;\n/** One entry of a segment bulk request (generated). */\nexport type SegmentBulkItem = SegmentUpdateBulk;\n/** Per-entry result of a segment bulk operation (generated). */\nexport type SegmentBulkResult = BulkResponse;\n/** Customer→segment assignment body (generated). */\nexport type SegmentCustomerInput = CustomerAssignmentUpsert;\n/** One entry of a customer-assignment bulk request (generated). */\nexport type SegmentCustomerBulkInput = CustomerAssignmentUpsertBulk;\n/** A customer→segment assignment (read). */\nexport type SegmentCustomer = CustomerAssignmentResponse;\n/** Item→segment assignment body (generated). */\nexport type SegmentItemInput = ItemAssignmentUpsert;\n/** One entry of an item-assignment bulk request (generated). */\nexport type SegmentItemBulkInput = ItemAssignmentUpsertBulk;\n/** Per-entry result of an assignment bulk operation (generated). */\nexport type SegmentAssignmentBulkResult = BulkAssignmentResponse;\n\n/** Cross-service hydrate dependencies, injected from `EmporixClient`. */\nexport interface SegmentServiceDeps {\n products: ProductService;\n categories: CategoryService;\n}\n\nfunction setIfDefined<V>(\n q: Record<string, string | number | undefined>,\n key: string,\n value: V | undefined,\n): void {\n if (value !== undefined && value !== \"\") {\n q[key] = value as unknown as string | number;\n }\n}\n\n/** Admin default: segment-manage operations use a service token. */\nconst SERVICE: AuthContext = { kind: \"service\" };\n\n/**\n * Customer-segment reads. Every method requires a customer/raw\n * `AuthContext` — the `segment_read_own` scope is on the customer token.\n * The standard product/category endpoints do **not** auto-filter by\n * segment; the storefront uses these reads to discover what to fetch.\n */\nexport class SegmentService {\n static readonly channel = \"segment\" as const;\n static readonly deps = [\"products\", \"categories\"] as const;\n constructor(\n private readonly ctx: ClientContext,\n private readonly deps: SegmentServiceDeps,\n ) {}\n\n private base(): string {\n return `/customer-segment/${this.ctx.tenant}/segments`;\n }\n\n /** Lists segments the caller belongs to (with `segment_read_own`). */\n async list(\n query: { q?: string; pageNumber?: number; pageSize?: number } = {},\n auth?: AuthContext,\n ): Promise<Segment[]> {\n const q: Record<string, string | number | undefined> = {};\n setIfDefined(q, \"q\", query.q);\n setIfDefined(q, \"pageNumber\", query.pageNumber);\n setIfDefined(q, \"pageSize\", query.pageSize);\n return this.ctx.http.request<Segment[]>({\n method: \"GET\",\n path: this.base(),\n auth: requireCustomer(auth),\n ...(Object.keys(q).length ? { query: q } : {}),\n });\n }\n\n /** Fetches a single segment by id. */\n async get(segmentId: string, auth?: AuthContext): Promise<Segment> {\n return this.ctx.http.request<Segment>({\n method: \"GET\",\n path: `${this.base()}/${segmentId}`,\n auth: requireCustomer(auth),\n });\n }\n\n /** Item assignments (PRODUCT + CATEGORY) across all the caller's active segments. */\n async listItems(\n query: {\n q?: string;\n siteCode?: string;\n legalEntityId?: string;\n onlyActive?: boolean;\n pageNumber?: number;\n pageSize?: number;\n } = {},\n auth?: AuthContext,\n ): Promise<SegmentItem[]> {\n const q: Record<string, string | number | undefined> = {};\n setIfDefined(q, \"q\", query.q);\n setIfDefined(q, \"siteCode\", query.siteCode);\n setIfDefined(q, \"legalEntityId\", query.legalEntityId);\n setIfDefined(q, \"pageNumber\", query.pageNumber);\n setIfDefined(q, \"pageSize\", query.pageSize);\n if (query.onlyActive !== undefined) q.onlyActive = String(query.onlyActive);\n return this.ctx.http.request<SegmentItem[]>({\n method: \"GET\",\n path: `${this.base()}/items`,\n auth: requireCustomer(auth),\n ...(Object.keys(q).length ? { query: q } : {}),\n });\n }\n\n /** Item assignments of one specific segment. */\n async listSegmentItems(\n segmentId: string,\n query: {\n q?: string;\n legalEntityId?: string;\n pageNumber?: number;\n pageSize?: number;\n } = {},\n auth?: AuthContext,\n ): Promise<SegmentItem[]> {\n const q: Record<string, string | number | undefined> = {};\n setIfDefined(q, \"q\", query.q);\n setIfDefined(q, \"legalEntityId\", query.legalEntityId);\n setIfDefined(q, \"pageNumber\", query.pageNumber);\n setIfDefined(q, \"pageSize\", query.pageSize);\n return this.ctx.http.request<SegmentItem[]>({\n method: \"GET\",\n path: `${this.base()}/${segmentId}/items`,\n auth: requireCustomer(auth),\n ...(Object.keys(q).length ? { query: q } : {}),\n });\n }\n\n /** Category tree built only from the caller's active segments. */\n async getCategoryTree(\n query: { siteCode?: string; legalEntityId?: string } = {},\n auth?: AuthContext,\n ): Promise<SegmentCategoryTree> {\n const q: Record<string, string | number | undefined> = {};\n setIfDefined(q, \"siteCode\", query.siteCode);\n setIfDefined(q, \"legalEntityId\", query.legalEntityId);\n return this.ctx.http.request<SegmentCategoryTree>({\n method: \"GET\",\n path: `${this.base()}/items/category-trees`,\n auth: requireCustomer(auth),\n ...(Object.keys(q).length ? { query: q } : {}),\n });\n }\n\n private async pickItemIds(\n kind: \"PRODUCT\" | \"CATEGORY\",\n query: Parameters<SegmentService[\"listItems\"]>[0],\n auth: AuthContext | undefined,\n ): Promise<string[]> {\n const rows = await this.listItems(query, auth);\n const ids: string[] = [];\n for (const r of rows) {\n const id = r.item?.id;\n if (r.type === kind && typeof id === \"string\") ids.push(id);\n }\n return ids;\n }\n\n /** Product ids assigned to the caller's active segments. */\n async listMyProductIds(\n query?: Parameters<SegmentService[\"listItems\"]>[0],\n auth?: AuthContext,\n ): Promise<string[]> {\n return this.pickItemIds(\"PRODUCT\", query ?? {}, auth);\n }\n\n /** Category ids assigned to the caller's active segments. */\n async listMyCategoryIds(\n query?: Parameters<SegmentService[\"listItems\"]>[0],\n auth?: AuthContext,\n ): Promise<string[]> {\n return this.pickItemIds(\"CATEGORY\", query ?? {}, auth);\n }\n\n /**\n * Hydrates `listMyProductIds` via `ProductService.get` in parallel.\n * Resolves in the same order as the id list. Any single failure rejects\n * the whole batch (`Promise.all`); use the id-list method + your own\n * tolerance strategy if partial success matters.\n */\n async listMyProducts(\n query?: Parameters<SegmentService[\"listItems\"]>[0],\n auth?: AuthContext,\n ): Promise<PaginatedItems<Awaited<ReturnType<ProductService[\"get\"]>>>> {\n const pageNumber = query?.pageNumber ?? 1;\n const pageSize = query?.pageSize ?? 20;\n const sourceItems = await this.listItems(\n { ...(query ?? {}), pageNumber, pageSize },\n auth,\n );\n const ids: string[] = [];\n for (const r of sourceItems) {\n if (r.type === \"PRODUCT\" && typeof r.item?.id === \"string\") ids.push(r.item.id);\n }\n const items = await this.deps.products.searchByIds(ids, undefined, auth);\n return { items, pageNumber, pageSize, hasNextPage: sourceItems.length === pageSize };\n }\n\n /**\n * Hydrates a page of the caller's segment CATEGORY assignments into\n * real categories via one bulk `categories.searchByIds` call. Same\n * `hasNextPage` semantic as `listMyProducts`.\n */\n async listMyCategories(\n query?: Parameters<SegmentService[\"listItems\"]>[0],\n auth?: AuthContext,\n ): Promise<PaginatedItems<Awaited<ReturnType<CategoryService[\"get\"]>>>> {\n const pageNumber = query?.pageNumber ?? 1;\n const pageSize = query?.pageSize ?? 20;\n const sourceItems = await this.listItems(\n { ...(query ?? {}), pageNumber, pageSize },\n auth,\n );\n const ids: string[] = [];\n for (const r of sourceItems) {\n if (r.type === \"CATEGORY\" && typeof r.item?.id === \"string\") ids.push(r.item.id);\n }\n const items = await this.deps.categories.searchByIds(ids, undefined, auth);\n return { items, pageNumber, pageSize, hasNextPage: sourceItems.length === pageSize };\n }\n\n // --- Admin CRUD (segment_manage). Default auth: service. ---\n\n /** Creates a segment. Default auth: service. */\n async create(input: SegmentInput, authCtx: AuthContext = SERVICE): Promise<Segment> {\n return this.ctx.http.request<Segment>({ method: \"POST\", path: this.base(), auth: authCtx, body: input });\n }\n\n /** Searches segments (POST body). Default auth: service. */\n async search(query: SegmentSearchQuery, authCtx: AuthContext = SERVICE): Promise<Segment[]> {\n return this.ctx.http.request<Segment[]>({\n method: \"POST\",\n path: `${this.base()}/search`,\n auth: authCtx,\n body: query,\n });\n }\n\n /** Full-replaces a segment (PUT). Default auth: service. */\n async update(segmentId: string, input: SegmentUpdateInput, authCtx: AuthContext = SERVICE): Promise<Segment> {\n return this.ctx.http.request<Segment>({\n method: \"PUT\",\n path: `${this.base()}/${segmentId}`,\n auth: authCtx,\n body: input,\n });\n }\n\n /** Partially updates a segment (PATCH). Default auth: service. */\n async patch(segmentId: string, input: SegmentPatchInput, authCtx: AuthContext = SERVICE): Promise<Segment> {\n return this.ctx.http.request<Segment>({\n method: \"PATCH\",\n path: `${this.base()}/${segmentId}`,\n auth: authCtx,\n body: input,\n });\n }\n\n /** Deletes a segment. Default auth: service. */\n async delete(segmentId: string, authCtx: AuthContext = SERVICE): Promise<void> {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `${this.base()}/${segmentId}`,\n auth: authCtx,\n });\n }\n\n /** Checks which segments the given items/customers match. Default auth: service. */\n async match(input: SegmentMatchInput, authCtx: AuthContext = SERVICE): Promise<Segment[]> {\n return this.ctx.http.request<Segment[]>({\n method: \"POST\",\n path: `${this.base()}/match`,\n auth: authCtx,\n body: input,\n });\n }\n\n /** Creates multiple segments. Default auth: service. */\n async bulkCreate(inputs: SegmentBulkItem[], authCtx: AuthContext = SERVICE): Promise<SegmentBulkResult[]> {\n return this.ctx.http.request<SegmentBulkResult[]>({\n method: \"POST\",\n path: `${this.base()}/bulk`,\n auth: authCtx,\n body: inputs,\n });\n }\n\n /** Upserts multiple segments (PUT). Default auth: service. */\n async bulkUpdate(inputs: SegmentBulkItem[], authCtx: AuthContext = SERVICE): Promise<SegmentBulkResult[]> {\n return this.ctx.http.request<SegmentBulkResult[]>({\n method: \"PUT\",\n path: `${this.base()}/bulk`,\n auth: authCtx,\n body: inputs,\n });\n }\n\n /** Deletes multiple segments (DELETE with a body of ids). Default auth: service. */\n async bulkDelete(body: Record<string, unknown>, authCtx: AuthContext = SERVICE): Promise<SegmentBulkResult[]> {\n return this.ctx.http.request<SegmentBulkResult[]>({\n method: \"DELETE\",\n path: `${this.base()}/bulk`,\n auth: authCtx,\n body,\n });\n }\n\n /** Customer→segment assignments (`segment_manage`). Default auth: service. */\n readonly customers = {\n list: async (segmentId: string, query?: Record<string, string | number>, authCtx: AuthContext = SERVICE): Promise<SegmentCustomer[]> =>\n this.ctx.http.request<SegmentCustomer[]>({\n method: \"GET\",\n path: `${this.base()}/${segmentId}/customers`,\n auth: authCtx,\n ...(query ? { query } : {}),\n }),\n search: async (segmentId: string, query: Record<string, unknown>, authCtx: AuthContext = SERVICE): Promise<SegmentCustomer[]> =>\n this.ctx.http.request<SegmentCustomer[]>({\n method: \"POST\",\n path: `${this.base()}/${segmentId}/customers/search`,\n auth: authCtx,\n body: query,\n }),\n get: async (segmentId: string, customerId: string, authCtx: AuthContext = SERVICE): Promise<SegmentCustomer> =>\n this.ctx.http.request<SegmentCustomer>({\n method: \"GET\",\n path: `${this.base()}/${segmentId}/customers/${customerId}`,\n auth: authCtx,\n }),\n assign: async (segmentId: string, customerId: string, input: SegmentCustomerInput, authCtx: AuthContext = SERVICE): Promise<SegmentCustomer> =>\n this.ctx.http.request<SegmentCustomer>({\n method: \"PUT\",\n path: `${this.base()}/${segmentId}/customers/${customerId}`,\n auth: authCtx,\n body: input,\n }),\n remove: async (segmentId: string, customerId: string, authCtx: AuthContext = SERVICE): Promise<void> => {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `${this.base()}/${segmentId}/customers/${customerId}`,\n auth: authCtx,\n });\n },\n getForEntity: async (segmentId: string, customerId: string, legalEntityId: string, authCtx: AuthContext = SERVICE): Promise<SegmentCustomer> =>\n this.ctx.http.request<SegmentCustomer>({\n method: \"GET\",\n path: `${this.base()}/${segmentId}/customers/${customerId}/${legalEntityId}`,\n auth: authCtx,\n }),\n assignForEntity: async (segmentId: string, customerId: string, legalEntityId: string, input: SegmentCustomerInput, authCtx: AuthContext = SERVICE): Promise<SegmentCustomer> =>\n this.ctx.http.request<SegmentCustomer>({\n method: \"PUT\",\n path: `${this.base()}/${segmentId}/customers/${customerId}/${legalEntityId}`,\n auth: authCtx,\n body: input,\n }),\n removeForEntity: async (segmentId: string, customerId: string, legalEntityId: string, authCtx: AuthContext = SERVICE): Promise<void> => {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `${this.base()}/${segmentId}/customers/${customerId}/${legalEntityId}`,\n auth: authCtx,\n });\n },\n bulkAssign: async (segmentId: string, inputs: SegmentCustomerBulkInput[], authCtx: AuthContext = SERVICE): Promise<SegmentAssignmentBulkResult[]> =>\n this.ctx.http.request<SegmentAssignmentBulkResult[]>({\n method: \"PUT\",\n path: `${this.base()}/${segmentId}/customers/bulk`,\n auth: authCtx,\n body: inputs,\n }),\n bulkRemove: async (segmentId: string, body: Record<string, unknown>, authCtx: AuthContext = SERVICE): Promise<SegmentAssignmentBulkResult[]> =>\n this.ctx.http.request<SegmentAssignmentBulkResult[]>({\n method: \"DELETE\",\n path: `${this.base()}/${segmentId}/customers/bulk`,\n auth: authCtx,\n body,\n }),\n };\n\n /** Item→segment assignments (`type` = PRODUCT | CATEGORY). Default auth: service. */\n readonly items = {\n search: async (segmentId: string, query: Record<string, unknown>, authCtx: AuthContext = SERVICE): Promise<SegmentItem[]> =>\n this.ctx.http.request<SegmentItem[]>({\n method: \"POST\",\n path: `${this.base()}/${segmentId}/items/search`,\n auth: authCtx,\n body: query,\n }),\n get: async (segmentId: string, type: string, itemId: string, authCtx: AuthContext = SERVICE): Promise<SegmentItem> =>\n this.ctx.http.request<SegmentItem>({\n method: \"GET\",\n path: `${this.base()}/${segmentId}/items/${type}/${itemId}`,\n auth: authCtx,\n }),\n assign: async (segmentId: string, type: string, itemId: string, input: SegmentItemInput, authCtx: AuthContext = SERVICE): Promise<SegmentItem> =>\n this.ctx.http.request<SegmentItem>({\n method: \"PUT\",\n path: `${this.base()}/${segmentId}/items/${type}/${itemId}`,\n auth: authCtx,\n body: input,\n }),\n remove: async (segmentId: string, type: string, itemId: string, authCtx: AuthContext = SERVICE): Promise<void> => {\n await this.ctx.http.request<void>({\n method: \"DELETE\",\n path: `${this.base()}/${segmentId}/items/${type}/${itemId}`,\n auth: authCtx,\n });\n },\n bulkAssign: async (segmentId: string, type: string, inputs: SegmentItemBulkInput[], authCtx: AuthContext = SERVICE): Promise<SegmentAssignmentBulkResult[]> =>\n this.ctx.http.request<SegmentAssignmentBulkResult[]>({\n method: \"PUT\",\n path: `${this.base()}/${segmentId}/items/${type}/bulk`,\n auth: authCtx,\n body: inputs,\n }),\n bulkRemove: async (segmentId: string, type: string, body: Record<string, unknown>, authCtx: AuthContext = SERVICE): Promise<SegmentAssignmentBulkResult[]> =>\n this.ctx.http.request<SegmentAssignmentBulkResult[]>({\n method: \"DELETE\",\n path: `${this.base()}/${segmentId}/items/${type}/bulk`,\n auth: authCtx,\n body,\n }),\n };\n}\n"]}