@viu/emporix-sdk 3.5.0 → 4.0.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 (61) hide show
  1. package/CHANGELOG.md +148 -0
  2. package/README.md +2 -2
  3. package/dist/availability.d.cts +1 -1
  4. package/dist/availability.d.ts +1 -1
  5. package/dist/cart.d.cts +1 -1
  6. package/dist/cart.d.ts +1 -1
  7. package/dist/category.d.cts +1 -1
  8. package/dist/category.d.ts +1 -1
  9. package/dist/checkout.d.cts +1 -1
  10. package/dist/checkout.d.ts +1 -1
  11. package/dist/{chunk-JQWUGGRV.js → chunk-2SHTDVOC.js} +22 -2
  12. package/dist/chunk-2SHTDVOC.js.map +1 -0
  13. package/dist/{chunk-TI56QENX.js → chunk-CSYXGTOH.js} +31 -2
  14. package/dist/chunk-CSYXGTOH.js.map +1 -0
  15. package/dist/{chunk-3G5KROEC.js → chunk-XJJDCK2Z.js} +80 -3
  16. package/dist/chunk-XJJDCK2Z.js.map +1 -0
  17. package/dist/companies.d.cts +1 -1
  18. package/dist/companies.d.ts +1 -1
  19. package/dist/contacts.d.cts +1 -1
  20. package/dist/contacts.d.ts +1 -1
  21. package/dist/{context-CZdtWgQO.d.cts → context-5lt8Q0MT.d.cts} +1 -1
  22. package/dist/{context-CZdtWgQO.d.ts → context-5lt8Q0MT.d.ts} +1 -1
  23. package/dist/{customer-groups-OEnqHFsX.d.cts → customer-groups-8cgS8S5d.d.cts} +1 -1
  24. package/dist/{customer-groups-DhrOoC8M.d.ts → customer-groups-DizW_a-w.d.ts} +1 -1
  25. package/dist/customer-groups.d.cts +2 -2
  26. package/dist/customer-groups.d.ts +2 -2
  27. package/dist/customer.d.cts +1 -1
  28. package/dist/customer.d.ts +1 -1
  29. package/dist/index.cjs +272 -132
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/index.d.cts +333 -591
  32. package/dist/index.d.ts +333 -591
  33. package/dist/index.js +152 -137
  34. package/dist/index.js.map +1 -1
  35. package/dist/locations.d.cts +1 -1
  36. package/dist/locations.d.ts +1 -1
  37. package/dist/media.cjs +29 -0
  38. package/dist/media.cjs.map +1 -1
  39. package/dist/media.d.cts +45 -3
  40. package/dist/media.d.ts +45 -3
  41. package/dist/media.js +1 -1
  42. package/dist/orders.d.cts +1 -1
  43. package/dist/orders.d.ts +1 -1
  44. package/dist/payment.d.cts +1 -1
  45. package/dist/payment.d.ts +1 -1
  46. package/dist/price.d.cts +1 -1
  47. package/dist/price.d.ts +1 -1
  48. package/dist/product.cjs +20 -0
  49. package/dist/product.cjs.map +1 -1
  50. package/dist/product.d.cts +24 -2
  51. package/dist/product.d.ts +24 -2
  52. package/dist/product.js +1 -1
  53. package/dist/segment.cjs +78 -1
  54. package/dist/segment.cjs.map +1 -1
  55. package/dist/segment.d.cts +90 -3
  56. package/dist/segment.d.ts +90 -3
  57. package/dist/segment.js +1 -1
  58. package/package.json +3 -3
  59. package/dist/chunk-3G5KROEC.js.map +0 -1
  60. package/dist/chunk-JQWUGGRV.js.map +0 -1
  61. package/dist/chunk-TI56QENX.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1242,7 +1242,7 @@ var HttpClient = class {
1242
1242
  };
1243
1243
 
1244
1244
  // package.json
1245
- var version = "3.5.0";
1245
+ var version = "4.0.0";
1246
1246
 
1247
1247
  // src/version.ts
1248
1248
  var SDK_VERSION = version;
@@ -1872,6 +1872,20 @@ var ProductService = class {
1872
1872
  /**
1873
1873
  * Partially updates a product (`PATCH /products/{productId}`). Default auth:
1874
1874
  * service. Use {@link replace} for a full replace (PUT).
1875
+ *
1876
+ * Omitted fields stay as they are. **Mixins merge rather than replace**, and
1877
+ * the corollary catches people out: there is no way to delete a mixin here.
1878
+ * - a mixin name you omit stays on the product;
1879
+ * - fields you send inside a mixin are merged recursively, and fields you
1880
+ * omit inside that mixin keep their values;
1881
+ * - `null` does **not** delete a mixin — it stores `null` as its value.
1882
+ *
1883
+ * To actually remove one, read the product and send it back through
1884
+ * {@link replace} with `partial: false`, leaving the mixin out of both
1885
+ * `mixins` and `metadata.mixins`.
1886
+ *
1887
+ * Despite the HTTP verb this is **not** a JSON-Patch endpoint: an op-array of
1888
+ * `{ op, path, value }` is rejected. Send a partial product document.
1875
1889
  */
1876
1890
  async update(productId, input, options = {}, auth2 = SERVICE) {
1877
1891
  const query = {
@@ -1891,6 +1905,12 @@ var ProductService = class {
1891
1905
  * Full-replaces a product (`PUT /products/{productId}`). Returns the created
1892
1906
  * resource on 201 (upsert) and nothing on 204. `options.partial` sends
1893
1907
  * `?partial=true` for a merge-style replace. Default auth: service.
1908
+ *
1909
+ * With `partial: false` (the default) the body must be the **complete**
1910
+ * product document, and any mixin name missing from it is removed — which is
1911
+ * what makes this the only way to delete a mixin, since {@link update} merges
1912
+ * them. The flip side is that a body you did not build from a fresh read will
1913
+ * silently drop mixins.
1894
1914
  */
1895
1915
  async replace(productId, input, options = {}, auth2 = SERVICE) {
1896
1916
  const query = {
@@ -3453,6 +3473,35 @@ var MediaService = class {
3453
3473
  body: input.body
3454
3474
  });
3455
3475
  }
3476
+ /**
3477
+ * Partially update an asset with an RFC-6902 JSON-Patch op-array
3478
+ * (`PATCH /assets/{id}`, HTTP 204 — nothing is returned).
3479
+ *
3480
+ * This is the way to change one field without resending the whole asset, and
3481
+ * the only way to touch a `BLOB` asset's metadata **without re-uploading the
3482
+ * file** — {@link update} in `blob` mode always replaces the bytes.
3483
+ *
3484
+ * Append to an array with a path ending in `/-`, which preserves the existing
3485
+ * entries:
3486
+ *
3487
+ * ```ts
3488
+ * await client.media.patch(assetId, [
3489
+ * { op: "add", path: "/refIds/-", value: { id: "product1", type: "PRODUCT" } },
3490
+ * ]);
3491
+ * ```
3492
+ *
3493
+ * `type` and `access` are immutable here too, as with {@link update}. Only
3494
+ * `add`, `remove` and `replace` are accepted, and optimistic locking still
3495
+ * applies — a stale `metadata.version` gets a 409.
3496
+ */
3497
+ async patch(assetId, ops, auth2 = SERVICE5) {
3498
+ await this.ctx.http.request({
3499
+ method: "PATCH",
3500
+ path: `${this.base()}/${encodeURIComponent(assetId)}`,
3501
+ auth: auth2,
3502
+ body: ops
3503
+ });
3504
+ }
3456
3505
  /** Remove an asset. */
3457
3506
  async remove(assetId, auth2 = SERVICE5) {
3458
3507
  await this.ctx.http.request({
@@ -3616,7 +3665,12 @@ var SegmentService = class {
3616
3665
  base() {
3617
3666
  return `/customer-segment/${this.ctx.tenant}/segments`;
3618
3667
  }
3619
- /** Lists segments the caller belongs to (with `segment_read_own`). */
3668
+ /**
3669
+ * Lists segments via the generic `GET /segments` (with `segment_read_own`).
3670
+ * Its documentation does not say whether segments inherited through IAM
3671
+ * groups are included — for "which segments is this customer in", use
3672
+ * {@link listMine}, which is documented to include them.
3673
+ */
3620
3674
  async list(query = {}, auth2) {
3621
3675
  const q = {};
3622
3676
  setIfDefined(q, "q", query.q);
@@ -3629,6 +3683,26 @@ var SegmentService = class {
3629
3683
  ...Object.keys(q).length ? { query: q } : {}
3630
3684
  });
3631
3685
  }
3686
+ /**
3687
+ * The authenticated customer's **active** segments (`GET /segments/me`,
3688
+ * `segment_read_own`): assigned directly, and inherited through the
3689
+ * customer's IAM groups — groups not bound to a legal entity, plus groups
3690
+ * bound to the customer's *current* legal entity. Switching the active company
3691
+ * can therefore change the result.
3692
+ */
3693
+ async listMine(query = {}, auth2) {
3694
+ const q = {};
3695
+ setIfDefined(q, "q", query.q);
3696
+ setIfDefined(q, "pageNumber", query.pageNumber);
3697
+ setIfDefined(q, "pageSize", query.pageSize);
3698
+ setIfDefined(q, "sort", query.sort);
3699
+ return this.ctx.http.request({
3700
+ method: "GET",
3701
+ path: `${this.base()}/me`,
3702
+ auth: requireCustomer(auth2),
3703
+ ...Object.keys(q).length ? { query: q } : {}
3704
+ });
3705
+ }
3632
3706
  /** Fetches a single segment by id. */
3633
3707
  async get(segmentId, auth2) {
3634
3708
  return this.ctx.http.request({
@@ -3880,6 +3954,58 @@ var SegmentService = class {
3880
3954
  body
3881
3955
  })
3882
3956
  };
3957
+ /**
3958
+ * IAM group→segment assignments (`segment_read` / `segment_manage`). Customers
3959
+ * inherit a segment through their groups, on top of direct assignment — see
3960
+ * {@link listMine}. Only groups with `userType: "CUSTOMER"` can be assigned;
3961
+ * anything else is a `400`. Default auth: service.
3962
+ */
3963
+ groups = {
3964
+ list: async (segmentId, query = {}, authCtx = SERVICE6) => {
3965
+ const q = {};
3966
+ setIfDefined(q, "q", query.q);
3967
+ setIfDefined(q, "pageNumber", query.pageNumber);
3968
+ setIfDefined(q, "pageSize", query.pageSize);
3969
+ setIfDefined(q, "sort", query.sort);
3970
+ return this.ctx.http.request({
3971
+ method: "GET",
3972
+ path: `${this.base()}/${encodeURIComponent(segmentId)}/groups`,
3973
+ auth: authCtx,
3974
+ ...Object.keys(q).length ? { query: q } : {}
3975
+ });
3976
+ },
3977
+ search: async (segmentId, query, authCtx = SERVICE6) => this.ctx.http.request({
3978
+ method: "POST",
3979
+ path: `${this.base()}/${encodeURIComponent(segmentId)}/groups/search`,
3980
+ auth: authCtx,
3981
+ body: query
3982
+ }),
3983
+ get: async (segmentId, groupId, authCtx = SERVICE6) => this.ctx.http.request({
3984
+ method: "GET",
3985
+ path: `${this.base()}/${encodeURIComponent(segmentId)}/groups/${encodeURIComponent(groupId)}`,
3986
+ auth: authCtx
3987
+ }),
3988
+ /**
3989
+ * Upsert: `201` when the assignment is created, `204` when it is updated —
3990
+ * **neither returns a body**, so this resolves to nothing. Fetch it with
3991
+ * {@link get} if you need the stored assignment.
3992
+ */
3993
+ assign: async (segmentId, groupId, input = {}, authCtx = SERVICE6) => {
3994
+ await this.ctx.http.request({
3995
+ method: "PUT",
3996
+ path: `${this.base()}/${encodeURIComponent(segmentId)}/groups/${encodeURIComponent(groupId)}`,
3997
+ auth: authCtx,
3998
+ body: input
3999
+ });
4000
+ },
4001
+ remove: async (segmentId, groupId, authCtx = SERVICE6) => {
4002
+ await this.ctx.http.request({
4003
+ method: "DELETE",
4004
+ path: `${this.base()}/${encodeURIComponent(segmentId)}/groups/${encodeURIComponent(groupId)}`,
4005
+ auth: authCtx
4006
+ });
4007
+ }
4008
+ };
3883
4009
  /** Item→segment assignments (`type` = PRODUCT | CATEGORY). Default auth: service. */
3884
4010
  items = {
3885
4011
  search: async (segmentId, query, authCtx = SERVICE6) => this.ctx.http.request({
@@ -6367,6 +6493,16 @@ var AnalyticsResource = class {
6367
6493
 
6368
6494
  // src/services/ai.ts
6369
6495
  var SERVICE17 = { kind: "service" };
6496
+ function assertChatOptions(opts, method) {
6497
+ if (typeof opts === "object" && opts !== null && "kind" in opts) {
6498
+ throw new Error(
6499
+ `ai.${method}: the second argument is { sessionId? } since 4.0.0 \u2014 pass the auth context third`
6500
+ );
6501
+ }
6502
+ }
6503
+ function sessionHeader(opts) {
6504
+ return opts.sessionId ? { headers: { "session-id": opts.sessionId } } : {};
6505
+ }
6370
6506
  var AiService = class {
6371
6507
  constructor(ctx) {
6372
6508
  this.ctx = ctx;
@@ -6497,40 +6633,50 @@ var AiService = class {
6497
6633
  /**
6498
6634
  * Synchronous agent chat (`POST /agentic/chat`). Returns the response
6499
6635
  * ARRAY verbatim (the upstream contract is an array, not a single object).
6636
+ *
6637
+ * `opts.sessionId` is sent as the `session-id` header. It carries the
6638
+ * conversation — continuity needs it plus `enabledMemory` on the agent — and
6639
+ * it is how a chat reaches an attachment: pass the `sessionId` the upload or
6640
+ * reuse returned, and list the file under `input.attachments`.
6500
6641
  */
6501
- async chat(input, auth2 = SERVICE17) {
6642
+ async chat(input, opts = {}, auth2 = SERVICE17) {
6643
+ assertChatOptions(opts, "chat");
6502
6644
  return this.ctx.http.request({
6503
6645
  method: "POST",
6504
6646
  path: `${this.base()}/agentic/chat`,
6505
6647
  auth: auth2,
6506
- body: input
6648
+ body: input,
6649
+ ...sessionHeader(opts)
6507
6650
  });
6508
6651
  }
6509
6652
  /**
6510
6653
  * Fire-and-forget agent chat (`POST /agentic/chat-async`, HTTP 201).
6511
- * Returns the job-id ARRAY verbatim.
6654
+ * Returns the job-id ARRAY verbatim. `opts` as for {@link chat}.
6512
6655
  */
6513
- async chatAsync(input, auth2 = SERVICE17) {
6656
+ async chatAsync(input, opts = {}, auth2 = SERVICE17) {
6657
+ assertChatOptions(opts, "chatAsync");
6514
6658
  return this.ctx.http.request({
6515
6659
  method: "POST",
6516
6660
  path: `${this.base()}/agentic/chat-async`,
6517
6661
  auth: auth2,
6518
- body: input
6662
+ body: input,
6663
+ ...sessionHeader(opts)
6519
6664
  });
6520
6665
  }
6521
6666
  /**
6522
6667
  * Streaming agent chat (`POST /agentic/chat-stream`, `text/event-stream`).
6523
6668
  * Yields each SSE `data` payload verbatim — the upstream contract types the
6524
6669
  * stream body as an opaque string, so chunks are raw strings, not parsed
6525
- * objects. Consume with `for await`.
6670
+ * objects. Consume with `for await`. `opts` as for {@link chat}.
6526
6671
  */
6527
6672
  async *chatStream(input, opts = {}, auth2 = SERVICE17) {
6673
+ assertChatOptions(opts, "chatStream");
6528
6674
  const events = this.ctx.http.requestStream({
6529
6675
  method: "POST",
6530
6676
  path: `${this.base()}/agentic/chat-stream`,
6531
6677
  auth: auth2,
6532
6678
  body: input,
6533
- ...opts.sessionId ? { headers: { "session-id": opts.sessionId } } : {}
6679
+ ...sessionHeader(opts)
6534
6680
  });
6535
6681
  for await (const ev of events) yield ev.data;
6536
6682
  }
@@ -6573,6 +6719,10 @@ var AiService = class {
6573
6719
  * (`POST /agentic/{agentId}/attachments`, multipart, HTTP 201). The response
6574
6720
  * `sessionId` must be threaded into subsequent chat calls to bind the file.
6575
6721
  * Pass `opts.sessionId` to attach to an existing session.
6722
+ *
6723
+ * The endpoint takes exactly one of `attachment` or `attachmentId` — both or
6724
+ * neither is a `400`. This method always sends the file; to point a second
6725
+ * agent at a file already in the session, use {@link reuseAttachment}.
6576
6726
  */
6577
6727
  async uploadAttachment(agentId, attachment, opts = {}, auth2 = SERVICE17) {
6578
6728
  const form = new FormData();
@@ -6585,6 +6735,34 @@ var AiService = class {
6585
6735
  ...opts.sessionId ? { headers: { "session-id": opts.sessionId } } : {}
6586
6736
  });
6587
6737
  }
6738
+ /**
6739
+ * Assign an existing media asset to an agent as a chat attachment
6740
+ * (`POST /agentic/{agentId}/attachments` with the `attachmentId` form field,
6741
+ * HTTP 200). Resolves to the attachment `id` and the `sessionId` to send on
6742
+ * the following chat calls.
6743
+ *
6744
+ * Use it to hand a second agent the same file instead of uploading it twice.
6745
+ * Pass `opts.sessionId` to attach to an existing chat session; without it the
6746
+ * service opens a new one and returns its id — thread that into the chat, or
6747
+ * the agent never sees the file. With `ai.agentexecution_manage` the asset may
6748
+ * be any media asset, not only one uploaded to this session.
6749
+ *
6750
+ * ```ts
6751
+ * const { id, sessionId } = await client.ai.uploadAttachment("agent-a", file);
6752
+ * await client.ai.reuseAttachment("agent-b", id!, { sessionId: sessionId! });
6753
+ * ```
6754
+ */
6755
+ async reuseAttachment(agentId, attachmentId, opts = {}, auth2 = SERVICE17) {
6756
+ const form = new FormData();
6757
+ form.append("attachmentId", attachmentId);
6758
+ return this.ctx.http.request({
6759
+ method: "POST",
6760
+ path: `${this.base()}/agentic/${encodeURIComponent(agentId)}/attachments`,
6761
+ auth: auth2,
6762
+ body: form,
6763
+ ...opts.sessionId ? { headers: { "session-id": opts.sessionId } } : {}
6764
+ });
6765
+ }
6588
6766
  /** Export agents + components as a base64/checksum blob (`POST /agentic/agents/export`). */
6589
6767
  async exportAgents(body, auth2 = SERVICE17) {
6590
6768
  return this.ctx.http.request({
@@ -8125,6 +8303,23 @@ var ImportService = class {
8125
8303
  auth: auth2
8126
8304
  });
8127
8305
  }
8306
+ /**
8307
+ * The order in which a configuration's streams run, and the dependencies
8308
+ * behind it. Read it here instead of deriving it from the stream definitions:
8309
+ * mapping transformations add dependencies that no single stream shows, so a
8310
+ * self-computed order can differ from the one used at run time.
8311
+ *
8312
+ * The result lists stream **names**, while {@link triggerRun}'s `streamIds`
8313
+ * takes stream **ids** — map through {@link listStreams} before passing a
8314
+ * subset back.
8315
+ */
8316
+ async getStreamOrder(configId, auth2 = SERVICE29) {
8317
+ return this.ctx.http.request({
8318
+ method: "GET",
8319
+ path: `${this.base()}/configs/${encodeURIComponent(configId)}/stream-order`,
8320
+ auth: auth2
8321
+ });
8322
+ }
8128
8323
  /**
8129
8324
  * Fetch a configuration's schedule. Resolves to `null` when none is
8130
8325
  * configured — the service answers `204`, not `404`, so an absent schedule is
@@ -8189,6 +8384,9 @@ var ImportService = class {
8189
8384
  * integration scenario are indistinguishable in the history. Note the service
8190
8385
  * **rejects** an `origin` over 40 characters instead of shortening it.
8191
8386
  *
8387
+ * `streamIds` runs a subset — see {@link ImportRunInput} for what is rejected,
8388
+ * and note it takes ids where {@link getStreamOrder} reports names.
8389
+ *
8192
8390
  * Not retried on a 5xx: a POST that timed out may already have queued a run.
8193
8391
  *
8194
8392
  * @example
@@ -8280,6 +8478,43 @@ var ImportService = class {
8280
8478
  });
8281
8479
  return toPage(wire, args);
8282
8480
  }
8481
+ /**
8482
+ * The rows behind a run's feed-quality counters: source rows that repeated a
8483
+ * natural key (`kind: "REPEATED_KEY"`, counted as `duplicateKeys`) and child
8484
+ * lines with no parent to attach to (`"UNRESOLVED_PARENT"`, counted as
8485
+ * `unresolvedParents`). Neither is a failure, which is why these rows are not
8486
+ * in {@link listRunErrors}.
8487
+ *
8488
+ * **A capped sample** — see {@link ImportRunDiagnostics} before reading
8489
+ * `rows.length` as the size of the problem. `limit` defaults to 500 here
8490
+ * (1–50 000); {@link downloadRunDiagnosticsCsv} defaults to 50 000.
8491
+ */
8492
+ async listRunDiagnostics(runId, query = {}, auth2 = SERVICE29) {
8493
+ return this.ctx.http.request({
8494
+ method: "GET",
8495
+ path: `${this.base()}/runs/${encodeURIComponent(runId)}/diagnostics`,
8496
+ query: { ...query },
8497
+ auth: auth2
8498
+ });
8499
+ }
8500
+ /**
8501
+ * The same rows as {@link listRunDiagnostics}, as CSV text for a spreadsheet
8502
+ * or a ticket. Comment lines above the header record whether `limit` or the
8503
+ * recording cap cut rows off, so the file keeps that context when shared on
8504
+ * its own. `limit` defaults to 50 000 here, not 500.
8505
+ *
8506
+ * Every value is quoted, and a value starting with `=`, `+`, `-` or `@` is
8507
+ * prefixed with an apostrophe so spreadsheet software does not evaluate source
8508
+ * data as a formula. Strip it if you parse the file instead of opening it.
8509
+ */
8510
+ async downloadRunDiagnosticsCsv(runId, query = {}, auth2 = SERVICE29) {
8511
+ return this.ctx.http.request({
8512
+ method: "GET",
8513
+ path: `${this.base()}/runs/${encodeURIComponent(runId)}/diagnostics/csv`,
8514
+ query: { ...query },
8515
+ auth: auth2
8516
+ });
8517
+ }
8283
8518
  /** List the target types that hold imported records — the valid `type` values for {@link searchRecords}. */
8284
8519
  async listDataTypes(auth2 = SERVICE29) {
8285
8520
  return this.ctx.http.request({
@@ -8727,100 +8962,8 @@ var VendorService = class {
8727
8962
  }
8728
8963
  };
8729
8964
 
8730
- // src/services/pick-pack.ts
8731
- var SERVICE34 = { kind: "service" };
8732
- var PickPackService = class {
8733
- constructor(ctx) {
8734
- this.ctx = ctx;
8735
- }
8736
- ctx;
8737
- static channel = "pick-pack";
8738
- base() {
8739
- return `/pick-pack/${this.ctx.tenant}`;
8740
- }
8741
- orderPath(orderId) {
8742
- return `${this.base()}/orders/${encodeURIComponent(orderId)}`;
8743
- }
8744
- /** List packlist orders. */
8745
- async listOrders(query = {}, auth2 = SERVICE34) {
8746
- return this.ctx.http.request({
8747
- method: "GET",
8748
- path: `${this.base()}/orders`,
8749
- auth: auth2,
8750
- ...Object.keys(query).length ? { query } : {}
8751
- });
8752
- }
8753
- /** Retrieve a packlist order by id. */
8754
- async getOrder(orderId, auth2 = SERVICE34) {
8755
- return this.ctx.http.request({ method: "GET", path: this.orderPath(orderId), auth: auth2 });
8756
- }
8757
- /** Update an order's status (`PATCH`). Returns an acknowledgement. */
8758
- async updateOrder(orderId, change, auth2 = SERVICE34) {
8759
- return this.ctx.http.request({ method: "PATCH", path: this.orderPath(orderId), auth: auth2, body: change });
8760
- }
8761
- /** Finish an order. Returns an acknowledgement. */
8762
- async finishOrder(orderId, auth2 = SERVICE34) {
8763
- return this.ctx.http.request({ method: "POST", path: `${this.orderPath(orderId)}/finish`, auth: auth2 });
8764
- }
8765
- /** List order cycles (ids). */
8766
- async listOrderCycles(query = {}, auth2 = SERVICE34) {
8767
- return this.ctx.http.request({
8768
- method: "GET",
8769
- path: `${this.base()}/orderCycles`,
8770
- auth: auth2,
8771
- ...Object.keys(query).length ? { query } : {}
8772
- });
8773
- }
8774
- /** Add an assignee to an order. Returns an acknowledgement. */
8775
- async addAssignee(orderId, assignee, auth2 = SERVICE34) {
8776
- return this.ctx.http.request({ method: "POST", path: `${this.orderPath(orderId)}/assignees`, auth: auth2, body: assignee });
8777
- }
8778
- /** Remove an assignee from an order. */
8779
- async removeAssignee(orderId, assigneeId, auth2 = SERVICE34) {
8780
- await this.ctx.http.request({
8781
- method: "DELETE",
8782
- path: `${this.orderPath(orderId)}/assignees/${encodeURIComponent(assigneeId)}`,
8783
- auth: auth2
8784
- });
8785
- }
8786
- /** Update packaging products for an order (`PUT`). Returns an acknowledgement. */
8787
- async updatePackaging(orderId, change, auth2 = SERVICE34) {
8788
- return this.ctx.http.request({ method: "PUT", path: `${this.orderPath(orderId)}/packaging`, auth: auth2, body: change });
8789
- }
8790
- /** Create a packing event. Returns an acknowledgement. */
8791
- async createEvent(event, auth2 = SERVICE34) {
8792
- return this.ctx.http.request({ method: "POST", path: `${this.base()}/events`, auth: auth2, body: event });
8793
- }
8794
- /** List packing events. */
8795
- async listEvents(query = {}, auth2 = SERVICE34) {
8796
- return this.ctx.http.request({
8797
- method: "GET",
8798
- path: `${this.base()}/events`,
8799
- auth: auth2,
8800
- ...Object.keys(query).length ? { query } : {}
8801
- });
8802
- }
8803
- /** Trigger an order recalculation. Returns the created job's id. */
8804
- async triggerRecalculation(input, auth2 = SERVICE34) {
8805
- return this.ctx.http.request({
8806
- method: "POST",
8807
- path: `${this.base()}/jobs/recalculations`,
8808
- auth: auth2,
8809
- body: input
8810
- });
8811
- }
8812
- /** Retrieve a recalculation job by id. */
8813
- async getRecalculationJob(jobId, auth2 = SERVICE34) {
8814
- return this.ctx.http.request({
8815
- method: "GET",
8816
- path: `${this.base()}/jobs/recalculations/${encodeURIComponent(jobId)}`,
8817
- auth: auth2
8818
- });
8819
- }
8820
- };
8821
-
8822
8965
  // src/services/customer-admin.ts
8823
- var SERVICE35 = { kind: "service" };
8966
+ var SERVICE34 = { kind: "service" };
8824
8967
  var CustomerAdminService = class {
8825
8968
  constructor(ctx) {
8826
8969
  this.ctx = ctx;
@@ -8841,7 +8984,7 @@ var CustomerAdminService = class {
8841
8984
  }
8842
8985
  // --- Customers ---
8843
8986
  /** List customers. */
8844
- async listCustomers(query = {}, auth2 = SERVICE35) {
8987
+ async listCustomers(query = {}, auth2 = SERVICE34) {
8845
8988
  return this.ctx.http.request({
8846
8989
  method: "GET",
8847
8990
  path: this.base(),
@@ -8850,33 +8993,33 @@ var CustomerAdminService = class {
8850
8993
  });
8851
8994
  }
8852
8995
  /** Search customers (`POST /customers/search`). A built filter in `q` is resolved to a string. */
8853
- async searchCustomers(query, auth2 = SERVICE35) {
8996
+ async searchCustomers(query, auth2 = SERVICE34) {
8854
8997
  const body = query.q !== void 0 ? { ...query, q: resolveQuery(query.q, { compoundLogicalQuery: false }) } : query;
8855
8998
  return this.ctx.http.request({ method: "POST", path: `${this.base()}/search`, auth: auth2, body });
8856
8999
  }
8857
9000
  /** Retrieve a customer profile by number. */
8858
- async getCustomer(customerNumber, auth2 = SERVICE35) {
9001
+ async getCustomer(customerNumber, auth2 = SERVICE34) {
8859
9002
  return this.ctx.http.request({ method: "GET", path: this.customerPath(customerNumber), auth: auth2 });
8860
9003
  }
8861
9004
  /** Create a customer. */
8862
- async createCustomer(input, auth2 = SERVICE35) {
9005
+ async createCustomer(input, auth2 = SERVICE34) {
8863
9006
  return this.ctx.http.request({ method: "POST", path: this.base(), auth: auth2, body: input });
8864
9007
  }
8865
9008
  /** Upsert a customer profile by number (`PUT`). */
8866
- async upsertCustomer(customerNumber, input, auth2 = SERVICE35) {
9009
+ async upsertCustomer(customerNumber, input, auth2 = SERVICE34) {
8867
9010
  return this.ctx.http.request({ method: "PUT", path: this.customerPath(customerNumber), auth: auth2, body: input });
8868
9011
  }
8869
9012
  /** Partially update a customer profile (`PATCH`). */
8870
- async patchCustomer(customerNumber, patch, auth2 = SERVICE35) {
9013
+ async patchCustomer(customerNumber, patch, auth2 = SERVICE34) {
8871
9014
  await this.ctx.http.request({ method: "PATCH", path: this.customerPath(customerNumber), auth: auth2, body: patch });
8872
9015
  }
8873
9016
  /** Delete a customer profile. */
8874
- async deleteCustomer(customerNumber, auth2 = SERVICE35) {
9017
+ async deleteCustomer(customerNumber, auth2 = SERVICE34) {
8875
9018
  await this.ctx.http.request({ method: "DELETE", path: this.customerPath(customerNumber), auth: auth2 });
8876
9019
  }
8877
9020
  // --- Addresses ---
8878
9021
  /** List a customer's addresses. */
8879
- async listAddresses(customerNumber, auth2 = SERVICE35) {
9022
+ async listAddresses(customerNumber, auth2 = SERVICE34) {
8880
9023
  return this.ctx.http.request({
8881
9024
  method: "GET",
8882
9025
  path: `${this.customerPath(customerNumber)}/addresses`,
@@ -8884,11 +9027,11 @@ var CustomerAdminService = class {
8884
9027
  });
8885
9028
  }
8886
9029
  /** Retrieve one address. */
8887
- async getAddress(customerNumber, addressId, auth2 = SERVICE35) {
9030
+ async getAddress(customerNumber, addressId, auth2 = SERVICE34) {
8888
9031
  return this.ctx.http.request({ method: "GET", path: this.addressPath(customerNumber, addressId), auth: auth2 });
8889
9032
  }
8890
9033
  /** Add an address. */
8891
- async addAddress(customerNumber, input, auth2 = SERVICE35) {
9034
+ async addAddress(customerNumber, input, auth2 = SERVICE34) {
8892
9035
  return this.ctx.http.request({
8893
9036
  method: "POST",
8894
9037
  path: `${this.customerPath(customerNumber)}/addresses`,
@@ -8897,19 +9040,19 @@ var CustomerAdminService = class {
8897
9040
  });
8898
9041
  }
8899
9042
  /** Upsert an address by id (`PUT`). */
8900
- async upsertAddress(customerNumber, addressId, input, auth2 = SERVICE35) {
9043
+ async upsertAddress(customerNumber, addressId, input, auth2 = SERVICE34) {
8901
9044
  return this.ctx.http.request({ method: "PUT", path: this.addressPath(customerNumber, addressId), auth: auth2, body: input });
8902
9045
  }
8903
9046
  /** Partially update an address by id (`PATCH`). */
8904
- async patchAddress(customerNumber, addressId, patch, auth2 = SERVICE35) {
9047
+ async patchAddress(customerNumber, addressId, patch, auth2 = SERVICE34) {
8905
9048
  await this.ctx.http.request({ method: "PATCH", path: this.addressPath(customerNumber, addressId), auth: auth2, body: patch });
8906
9049
  }
8907
9050
  /** Delete an address by id. */
8908
- async deleteAddress(customerNumber, addressId, auth2 = SERVICE35) {
9051
+ async deleteAddress(customerNumber, addressId, auth2 = SERVICE34) {
8909
9052
  await this.ctx.http.request({ method: "DELETE", path: this.addressPath(customerNumber, addressId), auth: auth2 });
8910
9053
  }
8911
9054
  /** Add tags to an address (`?tags=` query). */
8912
- async addAddressTags(customerNumber, addressId, tags, auth2 = SERVICE35) {
9055
+ async addAddressTags(customerNumber, addressId, tags, auth2 = SERVICE34) {
8913
9056
  await this.ctx.http.request({
8914
9057
  method: "POST",
8915
9058
  path: `${this.addressPath(customerNumber, addressId)}/tags`,
@@ -8918,7 +9061,7 @@ var CustomerAdminService = class {
8918
9061
  });
8919
9062
  }
8920
9063
  /** Remove tags from an address (`?tags=` query). */
8921
- async removeAddressTags(customerNumber, addressId, tags, auth2 = SERVICE35) {
9064
+ async removeAddressTags(customerNumber, addressId, tags, auth2 = SERVICE34) {
8922
9065
  await this.ctx.http.request({
8923
9066
  method: "DELETE",
8924
9067
  path: `${this.addressPath(customerNumber, addressId)}/tags`,
@@ -8932,7 +9075,7 @@ var CustomerAdminService = class {
8932
9075
  * `customer.import_read` scope. An unconfigured tenant answers with an empty
8933
9076
  * object rather than a 404.
8934
9077
  */
8935
- async getPasswordMigrationRetention(auth2 = SERVICE35) {
9078
+ async getPasswordMigrationRetention(auth2 = SERVICE34) {
8936
9079
  return this.ctx.http.request({
8937
9080
  method: "GET",
8938
9081
  path: this.configPath(),
@@ -8945,7 +9088,7 @@ var CustomerAdminService = class {
8945
9088
  * `legacyAuth`** — that import is rejected without an active config. Re-POST with
8946
9089
  * an earlier `retentionEndDate` to shorten a running window.
8947
9090
  */
8948
- async configurePasswordMigrationRetention(input, auth2 = SERVICE35) {
9091
+ async configurePasswordMigrationRetention(input, auth2 = SERVICE34) {
8949
9092
  return this.ctx.http.request({
8950
9093
  method: "POST",
8951
9094
  path: this.configPath(),
@@ -8958,7 +9101,7 @@ var CustomerAdminService = class {
8958
9101
  * Intended for after the migration window: when the window ends, unmigrated
8959
9102
  * accounts need a password reset and their legacy credentials are cleared.
8960
9103
  */
8961
- async deletePasswordMigrationRetention(auth2 = SERVICE35) {
9104
+ async deletePasswordMigrationRetention(auth2 = SERVICE34) {
8962
9105
  await this.ctx.http.request({ method: "DELETE", path: this.configPath(), auth: auth2 });
8963
9106
  }
8964
9107
  // --- Bulk import ---
@@ -8971,7 +9114,7 @@ var CustomerAdminService = class {
8971
9114
  * `account.legacyAuth`, and importing `legacyAuth` requires an active retention
8972
9115
  * config (see `configurePasswordMigrationRetention`).
8973
9116
  */
8974
- async importCustomers(input, auth2 = SERVICE35) {
9117
+ async importCustomers(input, auth2 = SERVICE34) {
8975
9118
  return this.ctx.http.request({
8976
9119
  method: "POST",
8977
9120
  path: `${this.base()}/import`,
@@ -8982,7 +9125,7 @@ var CustomerAdminService = class {
8982
9125
  };
8983
9126
 
8984
9127
  // src/services/approval.ts
8985
- var SERVICE36 = { kind: "service" };
9128
+ var SERVICE35 = { kind: "service" };
8986
9129
  var ApprovalService = class {
8987
9130
  constructor(ctx) {
8988
9131
  this.ctx = ctx;
@@ -8993,7 +9136,7 @@ var ApprovalService = class {
8993
9136
  return `/approval/${this.ctx.tenant}`;
8994
9137
  }
8995
9138
  /** List approvals (paged via `pageNumber`/`pageSize`/`sort`/`q`). Returns an array. */
8996
- async listApprovals(query = {}, auth2 = SERVICE36) {
9139
+ async listApprovals(query = {}, auth2 = SERVICE35) {
8997
9140
  return this.ctx.http.request({
8998
9141
  method: "GET",
8999
9142
  path: `${this.base()}/approvals`,
@@ -9002,7 +9145,7 @@ var ApprovalService = class {
9002
9145
  });
9003
9146
  }
9004
9147
  /** Retrieve a single approval by id. */
9005
- async getApproval(approvalId, auth2 = SERVICE36) {
9148
+ async getApproval(approvalId, auth2 = SERVICE35) {
9006
9149
  return this.ctx.http.request({
9007
9150
  method: "GET",
9008
9151
  path: `${this.base()}/approvals/${encodeURIComponent(approvalId)}`,
@@ -9010,7 +9153,7 @@ var ApprovalService = class {
9010
9153
  });
9011
9154
  }
9012
9155
  /** Create an approval request (cart or quote). Returns the created `{ id }`. */
9013
- async createApproval(input, auth2 = SERVICE36) {
9156
+ async createApproval(input, auth2 = SERVICE35) {
9014
9157
  return this.ctx.http.request({
9015
9158
  method: "POST",
9016
9159
  path: `${this.base()}/approvals`,
@@ -9019,7 +9162,7 @@ var ApprovalService = class {
9019
9162
  });
9020
9163
  }
9021
9164
  /** Approve/reject/amend an approval via a JSON-Patch op-array (`PATCH`). */
9022
- async updateApproval(approvalId, ops, auth2 = SERVICE36) {
9165
+ async updateApproval(approvalId, ops, auth2 = SERVICE35) {
9023
9166
  await this.ctx.http.request({
9024
9167
  method: "PATCH",
9025
9168
  path: `${this.base()}/approvals/${encodeURIComponent(approvalId)}`,
@@ -9028,7 +9171,7 @@ var ApprovalService = class {
9028
9171
  });
9029
9172
  }
9030
9173
  /** Delete an approval by id. */
9031
- async deleteApproval(approvalId, auth2 = SERVICE36) {
9174
+ async deleteApproval(approvalId, auth2 = SERVICE35) {
9032
9175
  await this.ctx.http.request({
9033
9176
  method: "DELETE",
9034
9177
  path: `${this.base()}/approvals/${encodeURIComponent(approvalId)}`,
@@ -9036,7 +9179,7 @@ var ApprovalService = class {
9036
9179
  });
9037
9180
  }
9038
9181
  /** Check whether an operation on a resource is permitted / needs approval. */
9039
- async checkPermitted(input, auth2 = SERVICE36) {
9182
+ async checkPermitted(input, auth2 = SERVICE35) {
9040
9183
  return this.ctx.http.request({
9041
9184
  method: "POST",
9042
9185
  path: `${this.base()}/approval/permitted`,
@@ -9045,7 +9188,7 @@ var ApprovalService = class {
9045
9188
  });
9046
9189
  }
9047
9190
  /** Search for users eligible to approve a resource. Returns an array. */
9048
- async searchApprovers(input, auth2 = SERVICE36) {
9191
+ async searchApprovers(input, auth2 = SERVICE35) {
9049
9192
  return this.ctx.http.request({
9050
9193
  method: "POST",
9051
9194
  path: `${this.base()}/search/users`,
@@ -9112,7 +9255,6 @@ var EmporixClient = class {
9112
9255
  units;
9113
9256
  catalogs;
9114
9257
  vendors;
9115
- pickPack;
9116
9258
  customerAdmin;
9117
9259
  approvals;
9118
9260
  /** The validated tenant this client is bound to. */
@@ -9187,7 +9329,6 @@ var EmporixClient = class {
9187
9329
  this.units = new UnitHandlingService(mk(UnitHandlingService.channel));
9188
9330
  this.catalogs = new CatalogService(mk(CatalogService.channel));
9189
9331
  this.vendors = new VendorService(mk(VendorService.channel));
9190
- this.pickPack = new PickPackService(mk(PickPackService.channel));
9191
9332
  this.customerAdmin = new CustomerAdminService(mk(CustomerAdminService.channel));
9192
9333
  this.approvals = new ApprovalService(mk(ApprovalService.channel));
9193
9334
  }
@@ -9302,7 +9443,6 @@ exports.LocationsService = LocationsService;
9302
9443
  exports.MediaService = MediaService;
9303
9444
  exports.OrdersService = OrdersService;
9304
9445
  exports.PaymentGatewayService = PaymentGatewayService;
9305
- exports.PickPackService = PickPackService;
9306
9446
  exports.PriceService = PriceService;
9307
9447
  exports.ProductService = ProductService;
9308
9448
  exports.QuoteService = QuoteService;