node-autotask 0.13.0 → 0.15.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 (44) hide show
  1. package/ARCHITECTURE.md +43 -7
  2. package/MCP_TOOL_CATALOG.json +1 -1
  3. package/MCP_TOOL_MANIFEST.md +2 -2
  4. package/N8N_MCP_MANIFEST.json +2 -2
  5. package/N8N_MCP_MANIFEST.md +3 -3
  6. package/README.md +9 -8
  7. package/capabilities.json +2132 -2740
  8. package/dist/capabilities.cjs +2 -2
  9. package/dist/capabilities.d.cts +9 -4
  10. package/dist/capabilities.d.ts +9 -4
  11. package/dist/capabilities.js +1 -1
  12. package/dist/{chunk-Y6O5VVQ4.js → chunk-AXVYQPTB.js} +136 -126
  13. package/dist/{chunk-IKJLIDK3.js → chunk-CSA6QSV6.js} +37 -25
  14. package/dist/{chunk-CXXNONRP.cjs → chunk-EWMG3HHU.cjs} +2131 -2739
  15. package/dist/{chunk-OZD5FQM4.js → chunk-JIDR3NPV.js} +2131 -2739
  16. package/dist/{chunk-DDZXN6LN.js → chunk-LH5BXQ7A.js} +2 -2
  17. package/dist/{chunk-CJA6L6NR.cjs → chunk-V7QPZA7L.cjs} +135 -135
  18. package/dist/{chunk-MTDCLVQQ.cjs → chunk-VLIUHEPE.cjs} +558 -548
  19. package/dist/{chunk-KB2ANVVR.cjs → chunk-Z7YT72SS.cjs} +42 -30
  20. package/dist/{index-DbMKWnEX.d.cts → index-BXIwhAN4.d.cts} +67 -13
  21. package/dist/{index-TuqNq3Ro.d.ts → index-M0qJIiRt.d.ts} +67 -13
  22. package/dist/index.cjs +61 -19
  23. package/dist/index.d.cts +83 -3
  24. package/dist/index.d.ts +83 -3
  25. package/dist/index.js +46 -4
  26. package/dist/operations/index.cjs +110 -107
  27. package/dist/operations/index.d.cts +9 -2
  28. package/dist/operations/index.d.ts +9 -2
  29. package/dist/operations/index.js +9 -6
  30. package/dist/pool.cjs +8 -8
  31. package/dist/pool.d.cts +1 -1
  32. package/dist/pool.d.ts +1 -1
  33. package/dist/pool.js +4 -4
  34. package/dist/resources/index.cjs +4 -4
  35. package/dist/resources/index.d.cts +1 -1
  36. package/dist/resources/index.d.ts +1 -1
  37. package/dist/resources/index.js +3 -3
  38. package/dist/untrusted.cjs +3 -1
  39. package/dist/untrusted.d.cts +9 -4
  40. package/dist/untrusted.d.ts +9 -4
  41. package/dist/untrusted.js +3 -1
  42. package/docs/API.md +112 -22
  43. package/docs/LIVE-TESTING.md +1 -1
  44. package/package.json +2 -2
@@ -33,13 +33,13 @@
33
33
 
34
34
 
35
35
 
36
- var _chunkKB2ANVVRcjs = require('./chunk-KB2ANVVR.cjs');
36
+ var _chunkZ7YT72SScjs = require('./chunk-Z7YT72SS.cjs');
37
37
 
38
38
 
39
- var _chunkCXXNONRPcjs = require('./chunk-CXXNONRP.cjs');
39
+ var _chunkEWMG3HHUcjs = require('./chunk-EWMG3HHU.cjs');
40
40
 
41
41
  // src/resources/appointments.ts
42
- var AppointmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
42
+ var AppointmentsResource = class extends _chunkZ7YT72SScjs.BaseResource {
43
43
  constructor(http, pageSize) {
44
44
  super(http, {
45
45
  key: "appointments",
@@ -92,7 +92,7 @@ var AppointmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
92
92
  async delete(id, opts = {}) {
93
93
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
94
94
  await this.guardStaleBeforeMutation(id, opts, "appointments.delete");
95
- return this.deleteGlobal(id);
95
+ return this.deleteGlobal(id, opts);
96
96
  }
97
97
  /** Resolve a Appointment from a numeric id (or, where the vendor indexes a primary text field,
98
98
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -124,7 +124,7 @@ var AuthenticateResource = class {
124
124
  };
125
125
 
126
126
  // src/resources/billing_codes.ts
127
- var BillingCodesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
127
+ var BillingCodesResource = class extends _chunkZ7YT72SScjs.BaseResource {
128
128
  constructor(http, pageSize) {
129
129
  super(http, {
130
130
  key: "billing_codes",
@@ -174,7 +174,7 @@ var MAX_LIMIT = 500;
174
174
  function clampWindowLimit(limit) {
175
175
  const n = limit === void 0 ? DEFAULT_LIMIT : Math.trunc(limit);
176
176
  if (!Number.isInteger(n) || n < 1) {
177
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`limit must be an integer >= 1 (got ${String(limit)})`);
177
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`limit must be an integer >= 1 (got ${String(limit)})`);
178
178
  }
179
179
  return Math.min(n, MAX_LIMIT);
180
180
  }
@@ -220,7 +220,7 @@ function wallParts(tz, ms) {
220
220
  }
221
221
  }
222
222
  if (weekday < 0 || [w.y, w.m, w.d, w.h, w.mi, w.s].some((v) => v === void 0 || Number.isNaN(v))) {
223
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`dateWindow: could not read the wall-clock parts for timezone "${tz}" (the Intl format returned an incomplete or unmapped part)`);
223
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`dateWindow: could not read the wall-clock parts for timezone "${tz}" (the Intl format returned an incomplete or unmapped part)`);
224
224
  }
225
225
  return { y: w.y, m: w.m, d: w.d, h: w.h, mi: w.mi, s: w.s, weekday };
226
226
  }
@@ -247,7 +247,7 @@ function localDayEndMs(y, m, d, tz) {
247
247
  }
248
248
  function validateZone(tz, opName = "dateWindow") {
249
249
  if (typeof tz !== "string" || tz.length === 0) {
250
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
250
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
251
251
  `${opName}: tz must be a non-empty IANA timezone string (got ${JSON.stringify(tz)}; e.g. 'Australia/Sydney' \u2014 omitted tz = UTC)`,
252
252
  { operation: opName }
253
253
  );
@@ -255,7 +255,7 @@ function validateZone(tz, opName = "dateWindow") {
255
255
  try {
256
256
  new Intl.DateTimeFormat("en-US", { timeZone: tz });
257
257
  } catch (e2) {
258
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
258
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
259
259
  `${opName}: tz is not a valid IANA timezone (${JSON.stringify(tz)}; e.g. 'Australia/Sydney' \u2014 omitted tz = UTC)`,
260
260
  { operation: opName }
261
261
  );
@@ -407,13 +407,13 @@ async function dateWindowQuery(http, path, field, kind, limit, operation, now, t
407
407
  body: { MaxRecords: limit, filter },
408
408
  operation
409
409
  });
410
- return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
410
+ return _chunkZ7YT72SScjs.unwrapItems.call(void 0, res).items;
411
411
  }
412
412
  var isoUtc = (ms) => new Date(ms).toISOString().slice(0, 19) + "Z";
413
413
  function customRangeDay(value, label, zone, opName) {
414
414
  const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value.trim());
415
415
  if (!m) {
416
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
416
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
417
417
  zone === void 0 ? `${opName}: ${label} must be a UTC 'YYYY-MM-DD' date (got ${JSON.stringify(value)})` : `${opName}: ${label} must be a 'YYYY-MM-DD' local calendar day in ${zone} (got ${JSON.stringify(value)})`,
418
418
  { operation: opName }
419
419
  );
@@ -425,7 +425,7 @@ function customRangeDay(value, label, zone, opName) {
425
425
  const real = probe.getUTCFullYear() === y && probe.getUTCMonth() === mo - 1 && probe.getUTCDate() === d;
426
426
  const ms = !real ? NaN : zone === void 0 ? Date.UTC(y, mo - 1, d) : localDayStartMs(y, mo, d, zone);
427
427
  if (!Number.isFinite(ms)) {
428
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
428
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
429
429
  zone === void 0 ? `${opName}: ${label} is not a valid UTC date (${JSON.stringify(value)})` : `${opName}: ${label} is not a valid calendar day in ${zone} (${JSON.stringify(value)})`,
430
430
  { operation: opName }
431
431
  );
@@ -436,7 +436,7 @@ async function customRangeQuery(http, path, field, from, to, limit, operation, z
436
436
  const fromB = customRangeDay(from, "from", zone, operation);
437
437
  const toB = customRangeDay(to, "to", zone, operation);
438
438
  if (fromB.ms > toB.ms) {
439
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
439
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
440
440
  `${operation}: from (${isoUtc(fromB.ms)}) must not be after to (${isoUtc(toB.ms)})`,
441
441
  { operation }
442
442
  );
@@ -453,7 +453,7 @@ async function customRangeQuery(http, path, field, from, to, limit, operation, z
453
453
  body: { MaxRecords: limit, filter },
454
454
  operation
455
455
  });
456
- return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
456
+ return _chunkZ7YT72SScjs.unwrapItems.call(void 0, res).items;
457
457
  }
458
458
 
459
459
  // src/resources/special/billing_items.ts
@@ -486,7 +486,7 @@ async function customRange(_resource, from, to, http, opts) {
486
486
  }
487
487
 
488
488
  // src/resources/billing_items.ts
489
- var BillingItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
489
+ var BillingItemsResource = class extends _chunkZ7YT72SScjs.BaseResource {
490
490
  constructor(http, pageSize) {
491
491
  super(http, {
492
492
  key: "billing_items",
@@ -588,7 +588,7 @@ var BillingItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
588
588
  };
589
589
 
590
590
  // src/resources/change_request_links.ts
591
- var ChangeRequestLinksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
591
+ var ChangeRequestLinksResource = class extends _chunkZ7YT72SScjs.BaseResource {
592
592
  constructor(http, pageSize) {
593
593
  super(http, {
594
594
  key: "change_request_links",
@@ -626,7 +626,7 @@ var ChangeRequestLinksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
626
626
  async delete(id, opts = {}) {
627
627
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
628
628
  await this.guardStaleBeforeMutation(id, opts, "change_request_links.delete");
629
- return this.deleteGlobal(id);
629
+ return this.deleteGlobal(id, opts);
630
630
  }
631
631
  /** Resolve a ChangeRequestLink from a numeric id (or, where the vendor indexes a primary text field,
632
632
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -642,7 +642,7 @@ var ChangeRequestLinksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
642
642
  };
643
643
 
644
644
  // src/resources/checklist_libraries.ts
645
- var ChecklistLibrariesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
645
+ var ChecklistLibrariesResource = class extends _chunkZ7YT72SScjs.BaseResource {
646
646
  constructor(http, pageSize) {
647
647
  super(http, {
648
648
  key: "checklist_libraries",
@@ -696,7 +696,7 @@ var ChecklistLibrariesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
696
696
  async delete(id, opts = {}) {
697
697
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
698
698
  await this.guardStaleBeforeMutation(id, opts, "checklist_libraries.delete");
699
- return this.deleteGlobal(id);
699
+ return this.deleteGlobal(id, opts);
700
700
  }
701
701
  /** Resolve a ChecklistLibrary from a numeric id (or, where the vendor indexes a primary text field,
702
702
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -716,7 +716,7 @@ var ChecklistLibrariesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
716
716
  };
717
717
 
718
718
  // src/resources/checklist_library_checklist_items.ts
719
- var ChecklistLibraryChecklistItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
719
+ var ChecklistLibraryChecklistItemsResource = class extends _chunkZ7YT72SScjs.BaseResource {
720
720
  constructor(http, pageSize) {
721
721
  super(http, {
722
722
  key: "checklist_library_checklist_items",
@@ -759,14 +759,14 @@ var ChecklistLibraryChecklistItemsResource = class extends _chunkKB2ANVVRcjs.Bas
759
759
  async update(parentId, id, data, opts = {}) {
760
760
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
761
761
  await this.guardStaleBeforeMutation(id, opts, "checklist_library_checklist_items.update", parentId);
762
- return this.updateScopedRaw(parentId, id, data);
762
+ return this.updateScopedRaw(parentId, id, data, opts);
763
763
  }
764
764
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
765
765
  * envelope and never issues the delete. */
766
766
  async delete(parentId, id, opts = {}) {
767
767
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
768
768
  await this.guardStaleBeforeMutation(id, opts, "checklist_library_checklist_items.delete", parentId);
769
- return this.deleteScopedRaw(parentId, id);
769
+ return this.deleteScopedRaw(parentId, id, opts);
770
770
  }
771
771
  /** Resolve a ChecklistLibraryChecklistItem from a numeric id (or, where the vendor indexes a primary text field,
772
772
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -782,7 +782,7 @@ var ChecklistLibraryChecklistItemsResource = class extends _chunkKB2ANVVRcjs.Bas
782
782
  };
783
783
 
784
784
  // src/resources/classification_icons.ts
785
- var ClassificationIconsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
785
+ var ClassificationIconsResource = class extends _chunkZ7YT72SScjs.BaseResource {
786
786
  constructor(http, pageSize) {
787
787
  super(http, {
788
788
  key: "classification_icons",
@@ -830,7 +830,7 @@ var DEFAULT_LIMIT2 = 25;
830
830
  var MAX_LIMIT2 = 500;
831
831
  function clampLimit(limit) {
832
832
  const n = limit === void 0 ? DEFAULT_LIMIT2 : Math.trunc(limit);
833
- if (!Number.isInteger(n) || n < 1) throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`limit must be an integer >= 1 (got ${String(limit)})`);
833
+ if (!Number.isInteger(n) || n < 1) throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`limit must be an integer >= 1 (got ${String(limit)})`);
834
834
  return Math.min(n, MAX_LIMIT2);
835
835
  }
836
836
  async function queryCompanies(http, filter, limit) {
@@ -841,7 +841,7 @@ async function queryCompanies(http, filter, limit) {
841
841
  body: { MaxRecords: limit, filter },
842
842
  operation: "companies.searchByDomain"
843
843
  });
844
- return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
844
+ return _chunkZ7YT72SScjs.unwrapItems.call(void 0, res).items;
845
845
  }
846
846
  async function queryContacts(http, filter, limit) {
847
847
  const res = await http.request({
@@ -851,7 +851,7 @@ async function queryContacts(http, filter, limit) {
851
851
  body: { MaxRecords: limit, filter },
852
852
  operation: "companies.searchByDomain"
853
853
  });
854
- return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
854
+ return _chunkZ7YT72SScjs.unwrapItems.call(void 0, res).items;
855
855
  }
856
856
  async function fetchCompanies(http, ids, limit) {
857
857
  const out = [];
@@ -866,7 +866,7 @@ async function fetchCompanies(http, ids, limit) {
866
866
  const item = body && "item" in body ? body.item : null;
867
867
  if (item) out.push(item);
868
868
  } catch (err) {
869
- if (err instanceof _chunkKB2ANVVRcjs.NotFoundError) continue;
869
+ if (err instanceof _chunkZ7YT72SScjs.NotFoundError) continue;
870
870
  throw err;
871
871
  }
872
872
  }
@@ -874,7 +874,7 @@ async function fetchCompanies(http, ids, limit) {
874
874
  }
875
875
  async function searchByDomain(_resource, domain, opts = {}, http) {
876
876
  const text = domain.trim();
877
- if (text === "") throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("searchByDomain: empty domain");
877
+ if (text === "") throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("searchByDomain: empty domain");
878
878
  const limit = clampLimit(opts.limit);
879
879
  const filter = [{ field: "webAddress", op: "contains", value: text }];
880
880
  const direct = await queryCompanies(http, filter, limit);
@@ -888,7 +888,7 @@ async function searchByIdentity(_resource, identity, opts = {}, http) {
888
888
  const email = _nullishCoalesce(_optionalChain([identity, 'access', _9 => _9.email, 'optionalAccess', _10 => _10.trim, 'call', _11 => _11()]), () => ( ""));
889
889
  const website = _nullishCoalesce(_optionalChain([identity, 'access', _12 => _12.website, 'optionalAccess', _13 => _13.trim, 'call', _14 => _14()]), () => ( ""));
890
890
  if (name === "" && email === "" && website === "") {
891
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("searchByIdentity: at least one of companyName / email / website is required");
891
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("searchByIdentity: at least one of companyName / email / website is required");
892
892
  }
893
893
  const limit = clampLimit(opts.limit);
894
894
  const found = /* @__PURE__ */ new Map();
@@ -915,23 +915,23 @@ async function familyChildPage(http, parentID) {
915
915
  path: "/V1.0/Companies/query",
916
916
  body: {
917
917
  MaxRecords: COMPANIES_FAMILY_CHILD_CAP,
918
- filter: _chunkKB2ANVVRcjs.buildFilter.call(void 0, [{ field: "parentCompanyID", op: "eq", value: parentID }]).filter
918
+ filter: _chunkZ7YT72SScjs.buildFilter.call(void 0, [{ field: "parentCompanyID", op: "eq", value: parentID }]).filter
919
919
  },
920
920
  operation: "companies.search"
921
921
  });
922
- const { items, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, "companies.search");
922
+ const { items, pageDetails } = _chunkZ7YT72SScjs.unwrapItems.call(void 0, res, "companies.search");
923
923
  return { rows: items, hasNext: pageDetails.nextPageUrl !== null };
924
924
  }
925
925
  function assertSearchWithDetailOpts(opts) {
926
926
  if (opts === void 0) return;
927
927
  if (typeof opts !== "object" || opts === null || Array.isArray(opts)) {
928
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("companies.searchWithDetail: opts must be an object { limit?: number }", {
928
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("companies.searchWithDetail: opts must be an object { limit?: number }", {
929
929
  operation: "companies.searchWithDetail"
930
930
  });
931
931
  }
932
932
  for (const key of Object.keys(opts)) {
933
933
  if (key !== "limit") {
934
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
934
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
935
935
  `companies.searchWithDetail: unknown opts key "${key}" \u2014 the bag is closed: limit (includeFamily is a companies.search option)`,
936
936
  { operation: "companies.searchWithDetail" }
937
937
  );
@@ -940,32 +940,32 @@ function assertSearchWithDetailOpts(opts) {
940
940
  }
941
941
  async function searchWithFamily(_resource, query, opts = {}, http) {
942
942
  if (opts !== void 0 && (typeof opts !== "object" || opts === null || Array.isArray(opts))) {
943
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("companies.search: opts must be an object { limit?: number, includeFamily?: boolean }");
943
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("companies.search: opts must be an object { limit?: number, includeFamily?: boolean }");
944
944
  }
945
945
  for (const key of Object.keys(_nullishCoalesce(opts, () => ( {})))) {
946
946
  if (!COMPANY_SEARCH_OPT_KEYS.includes(key)) {
947
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
947
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
948
948
  `companies.search: unknown opts key "${key}" \u2014 the bag is closed: ${COMPANY_SEARCH_OPT_KEYS.join(", ")}`,
949
949
  { operation: "companies.search" }
950
950
  );
951
951
  }
952
952
  }
953
953
  if (opts.includeFamily !== void 0 && typeof opts.includeFamily !== "boolean") {
954
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`companies.search: opts.includeFamily must be a boolean (got ${String(opts.includeFamily)})`, {
954
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`companies.search: opts.includeFamily must be a boolean (got ${String(opts.includeFamily)})`, {
955
955
  operation: "companies.search"
956
956
  });
957
957
  }
958
958
  const text = query.trim();
959
- if (text === "") throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("search: empty query", { operation: "companies.search" });
960
- const limit = opts.limit === void 0 ? 25 : _chunkKB2ANVVRcjs.clampPageSize.call(void 0, opts.limit);
959
+ if (text === "") throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("search: empty query", { operation: "companies.search" });
960
+ const limit = opts.limit === void 0 ? 25 : _chunkZ7YT72SScjs.clampPageSize.call(void 0, opts.limit);
961
961
  const res = await http.request({
962
962
  method: "POST",
963
963
  idempotent: true,
964
964
  path: "/V1.0/Companies/query",
965
- body: { MaxRecords: limit, filter: _chunkKB2ANVVRcjs.buildFilter.call(void 0, [{ field: "companyName", op: "contains", value: text }]).filter },
965
+ body: { MaxRecords: limit, filter: _chunkZ7YT72SScjs.buildFilter.call(void 0, [{ field: "companyName", op: "contains", value: text }]).filter },
966
966
  operation: "companies.search"
967
967
  });
968
- const hits = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, "companies.search").items;
968
+ const hits = _chunkZ7YT72SScjs.unwrapItems.call(void 0, res, "companies.search").items;
969
969
  if (opts.includeFamily !== true) return hits;
970
970
  const rows = [];
971
971
  for (const hit of hits) {
@@ -989,7 +989,7 @@ var DEFAULT_COMPANY_TYPE = 1;
989
989
  var DEDUP_NAME_LIMIT = 10;
990
990
  var BLIND_SURFACE_CAVEAT = "dedup only covers companies this API user can enumerate (the unowned surface is blind); a same-name company outside that scope is not detected";
991
991
  var SAFE_COMPANY_CREATE_DEFAULTS = {};
992
- var OwnerResourceRequiredError = class extends _chunkKB2ANVVRcjs.AutotaskError {
992
+ var OwnerResourceRequiredError = class extends _chunkZ7YT72SScjs.AutotaskError {
993
993
  constructor(message, options = {}) {
994
994
  super(message, {
995
995
  code: "OWNER_RESOURCE_REQUIRED",
@@ -1000,13 +1000,13 @@ var OwnerResourceRequiredError = class extends _chunkKB2ANVVRcjs.AutotaskError {
1000
1000
  this.name = "OwnerResourceRequiredError";
1001
1001
  }
1002
1002
  };
1003
- var CompanyResourceInvalidError = class extends _chunkKB2ANVVRcjs.AutotaskError {
1003
+ var CompanyResourceInvalidError = class extends _chunkZ7YT72SScjs.AutotaskError {
1004
1004
  constructor(message, options = {}) {
1005
1005
  super(message, { code: "RESOURCE_INVALID", category: "validation", ...options });
1006
1006
  this.name = "CompanyResourceInvalidError";
1007
1007
  }
1008
1008
  };
1009
- var CompanyCreateFailedError = class extends _chunkKB2ANVVRcjs.AutotaskError {
1009
+ var CompanyCreateFailedError = class extends _chunkZ7YT72SScjs.AutotaskError {
1010
1010
  /** The vendor-named fields (empty when the 500 body named nothing parseable). */
1011
1011
 
1012
1012
  constructor(message, vendorFields, options = {}) {
@@ -1017,18 +1017,18 @@ var CompanyCreateFailedError = class extends _chunkKB2ANVVRcjs.AutotaskError {
1017
1017
  };
1018
1018
  async function upsertByName(resource, companyName, params, opts, http) {
1019
1019
  if (typeof companyName !== "string" || companyName.trim() === "") {
1020
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("upsertByName: companyName is required (a non-empty string)", { operation: OP_UPSERT_NAME });
1020
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("upsertByName: companyName is required (a non-empty string)", { operation: OP_UPSERT_NAME });
1021
1021
  }
1022
1022
  if (typeof _optionalChain([params, 'optionalAccess', _15 => _15.phone]) !== "string" || params.phone.trim() === "") {
1023
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("upsertByName: params.phone is required (a non-empty string \u2014 the ww29 live-required set is { companyName, companyType, phone, ownerResourceID })", { operation: OP_UPSERT_NAME });
1023
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("upsertByName: params.phone is required (a non-empty string \u2014 the ww29 live-required set is { companyName, companyType, phone, ownerResourceID })", { operation: OP_UPSERT_NAME });
1024
1024
  }
1025
1025
  const companyType = _nullishCoalesce(params.companyType, () => ( DEFAULT_COMPANY_TYPE));
1026
1026
  if (typeof companyType !== "number" || !Number.isSafeInteger(companyType) || companyType < 1) {
1027
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`upsertByName: params.companyType must be a positive integer picklist value (got ${String(params.companyType)}; default 1 \u2014 the ww29-proven value)`, { operation: OP_UPSERT_NAME });
1027
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`upsertByName: params.companyType must be a positive integer picklist value (got ${String(params.companyType)}; default 1 \u2014 the ww29-proven value)`, { operation: OP_UPSERT_NAME });
1028
1028
  }
1029
1029
  const owner = params.ownerResourceID;
1030
1030
  if (owner !== void 0 && (typeof owner !== "number" || !Number.isSafeInteger(owner) || owner < 1)) {
1031
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`upsertByName: params.ownerResourceID must be a positive integer (got ${String(owner)})`, { operation: OP_UPSERT_NAME });
1031
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`upsertByName: params.ownerResourceID must be a positive integer (got ${String(owner)})`, { operation: OP_UPSERT_NAME });
1032
1032
  }
1033
1033
  const q = await resource.queryBounded({ filter: [{ field: "companyName", op: "eq", value: companyName }], limit: DEDUP_NAME_LIMIT });
1034
1034
  const caveat = {
@@ -1039,7 +1039,7 @@ async function upsertByName(resource, companyName, params, opts, http) {
1039
1039
  const match = q.items[0];
1040
1040
  if (match !== void 0) {
1041
1041
  if (opts.dryRun === true) {
1042
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
1042
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0,
1043
1043
  {
1044
1044
  operation: OP_UPSERT_NAME,
1045
1045
  method: "POST",
@@ -1074,7 +1074,7 @@ async function upsertByName(resource, companyName, params, opts, http) {
1074
1074
  "ownerResourceID is REQUIRED on the apply path (the vendor requires it; the node cannot enumerate candidates \u2014 the resources table is blind to this API user (count/query return 0)): the apply throws the typed OWNER_RESOURCE_REQUIRED if it is still absent"
1075
1075
  );
1076
1076
  }
1077
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
1077
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0,
1078
1078
  {
1079
1079
  operation: OP_UPSERT_NAME,
1080
1080
  method: "POST",
@@ -1114,7 +1114,7 @@ async function upsertByName(resource, companyName, params, opts, http) {
1114
1114
  let merges = 0;
1115
1115
  for (; ; ) {
1116
1116
  try {
1117
- const created = await resource.create(body, {});
1117
+ const created = await resource.create(body, { maxRetries: opts.maxRetries });
1118
1118
  return {
1119
1119
  id: created.id,
1120
1120
  created: true,
@@ -1122,8 +1122,8 @@ async function upsertByName(resource, companyName, params, opts, http) {
1122
1122
  sideEffects: ['vendor auto-creates a "Primary Address" location under the new company (UI-only cleanup \u2014 the delete 405 gap, \xA711.5)']
1123
1123
  };
1124
1124
  } catch (err) {
1125
- if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) throw err;
1126
- const named = (_nullishCoalesce(_chunkKB2ANVVRcjs.parseVendorErrors.call(void 0, err.vendorError), () => ( []))).map((e) => e.field).filter((f) => f !== void 0);
1125
+ if (!_chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) throw err;
1126
+ const named = (_nullishCoalesce(_chunkZ7YT72SScjs.parseVendorErrors.call(void 0, err.vendorError), () => ( []))).map((e) => e.field).filter((f) => f !== void 0);
1127
1127
  const seen = /* @__PURE__ */ new Set();
1128
1128
  const unique = [...named].filter((f) => seen.has(f) ? false : (seen.add(f), true));
1129
1129
  const hasDefault = unique.some((f) => SAFE_COMPANY_CREATE_DEFAULTS[f] !== void 0);
@@ -1137,7 +1137,7 @@ async function upsertByName(resource, companyName, params, opts, http) {
1137
1137
  }
1138
1138
  continue;
1139
1139
  }
1140
- const detail = _chunkKB2ANVVRcjs.formatVendorDetail.call(void 0, err.vendorError);
1140
+ const detail = _chunkZ7YT72SScjs.formatVendorDetail.call(void 0, err.vendorError);
1141
1141
  throw new CompanyCreateFailedError(
1142
1142
  `upsertByName: the vendor rejected the company create${unique.length > 0 ? ` naming field(s) ${unique.join(", ")}` : ""} (no proven-safe default \u2014 the ww29 required set is fully filled by the node)${detail ? ` \u2014 ${detail}` : ""}`,
1143
1143
  unique,
@@ -1156,7 +1156,7 @@ var PROFILE_PART_LIMIT = 50;
1156
1156
  function profilePartLimit(value, name) {
1157
1157
  const n = value === void 0 ? PROFILE_PART_LIMIT : Math.trunc(value);
1158
1158
  if (!Number.isInteger(n) || n < 1) {
1159
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`fullProfile: ${name} must be an integer >= 1 (got ${String(value)})`);
1159
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`fullProfile: ${name} must be an integer >= 1 (got ${String(value)})`);
1160
1160
  }
1161
1161
  return n;
1162
1162
  }
@@ -1168,14 +1168,14 @@ async function scopedCompanyQuery(http, path, companyID, limit) {
1168
1168
  body: { MaxRecords: limit, filter: [{ field: "companyID", op: "eq", value: companyID }] },
1169
1169
  operation: "companies.fullProfile"
1170
1170
  });
1171
- return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
1171
+ return _chunkZ7YT72SScjs.unwrapItems.call(void 0, res).items;
1172
1172
  }
1173
1173
  async function fullProfile(resource, id, opts = {}, http) {
1174
1174
  const contactLimit = profilePartLimit(opts.contactLimit, "contactLimit");
1175
1175
  const noteLimit = profilePartLimit(opts.noteLimit, "noteLimit");
1176
1176
  const ticketLimit = profilePartLimit(opts.ticketLimit, "ticketLimit");
1177
1177
  const projectLimit = profilePartLimit(opts.projectLimit, "projectLimit");
1178
- const companyID = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
1178
+ const companyID = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, id, "id");
1179
1179
  const company = await resource.get(companyID);
1180
1180
  const locations = await scopedCompanyQuery(http, "/V1.0/CompanyLocations/query", companyID, PROFILE_PART_LIMIT);
1181
1181
  const contacts = await scopedCompanyQuery(http, "/V1.0/Contacts/query", companyID, contactLimit);
@@ -1192,7 +1192,7 @@ async function fullProfile(resource, id, opts = {}, http) {
1192
1192
  },
1193
1193
  operation: "companies.fullProfile"
1194
1194
  });
1195
- return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
1195
+ return _chunkZ7YT72SScjs.unwrapItems.call(void 0, res).items;
1196
1196
  })();
1197
1197
  let openTickets = {
1198
1198
  items: openRows,
@@ -1201,7 +1201,7 @@ async function fullProfile(resource, id, opts = {}, http) {
1201
1201
  note: OPEN_TICKETS_NOTE
1202
1202
  };
1203
1203
  if (openRows.length === 0) {
1204
- const stamp = _chunkKB2ANVVRcjs.blindStampFor.call(void 0, _optionalChain([_chunkKB2ANVVRcjs.BLIND_SURFACE_STAMPS, 'access', _16 => _16["tickets"], 'optionalAccess', _17 => _17.query]), [
1204
+ const stamp = _chunkZ7YT72SScjs.blindStampFor.call(void 0, _optionalChain([_chunkZ7YT72SScjs.BLIND_SURFACE_STAMPS, 'access', _16 => _16["tickets"], 'optionalAccess', _17 => _17.query]), [
1205
1205
  { field: "companyID", op: "eq", value: companyID },
1206
1206
  { field: "status", op: "noteq", value: 5 }
1207
1207
  ]);
@@ -1232,7 +1232,7 @@ async function fullProfile(resource, id, opts = {}, http) {
1232
1232
  }
1233
1233
  };
1234
1234
  if (opts.names === true) {
1235
- const builder = _chunkKB2ANVVRcjs.createNamePlan.call(void 0, _chunkKB2ANVVRcjs.TICKET_LABEL_FIELDS);
1235
+ const builder = _chunkZ7YT72SScjs.createNamePlan.call(void 0, _chunkZ7YT72SScjs.TICKET_LABEL_FIELDS);
1236
1236
  const c = company;
1237
1237
  builder.addResource(c["ownerResourceID"]);
1238
1238
  builder.addResource(c["createdByResourceID"]);
@@ -1249,20 +1249,20 @@ async function fullProfile(resource, id, opts = {}, http) {
1249
1249
  builder.addResource(r["creatorResourceID"]);
1250
1250
  builder.addFk("contract", r["contractID"]);
1251
1251
  }
1252
- const names = await _chunkKB2ANVVRcjs.resolveCompositeNames.call(void 0, http, builder.plan(), { maxNameReads: opts.maxNameReads });
1252
+ const names = await _chunkZ7YT72SScjs.resolveCompositeNames.call(void 0, http, builder.plan(), { maxNameReads: opts.maxNameReads });
1253
1253
  const companyRow = { ...company };
1254
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, companyRow, "ownerResourceID", (v) => names.resourceName(v));
1255
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, companyRow, "createdByResourceID", (v) => names.resourceName(v));
1254
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, companyRow, "ownerResourceID", (v) => names.resourceName(v));
1255
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, companyRow, "createdByResourceID", (v) => names.resourceName(v));
1256
1256
  result.company = companyRow;
1257
1257
  result.openTickets = {
1258
1258
  ...openTickets,
1259
1259
  items: openTickets.items.map((row) => {
1260
1260
  const r = { ...row };
1261
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "creatorResourceID", (v) => names.resourceName(v));
1262
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "contractID", (v) => names.recordName("contract", v));
1263
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "billingCodeID", (v) => names.recordName("billingCode", v));
1264
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "assignedResourceRoleID", (v) => names.recordName("role", v));
1265
- for (const f of _chunkKB2ANVVRcjs.TICKET_LABEL_FIELDS) _chunkKB2ANVVRcjs.addLabelSibling.call(void 0, r, f, names);
1261
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, r, "creatorResourceID", (v) => names.resourceName(v));
1262
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, r, "contractID", (v) => names.recordName("contract", v));
1263
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, r, "billingCodeID", (v) => names.recordName("billingCode", v));
1264
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, r, "assignedResourceRoleID", (v) => names.recordName("role", v));
1265
+ for (const f of _chunkZ7YT72SScjs.TICKET_LABEL_FIELDS) _chunkZ7YT72SScjs.addLabelSibling.call(void 0, r, f, names);
1266
1266
  return r;
1267
1267
  })
1268
1268
  };
@@ -1270,9 +1270,9 @@ async function fullProfile(resource, id, opts = {}, http) {
1270
1270
  ...result.projects,
1271
1271
  items: result.projects.items.map((row) => {
1272
1272
  const r = { ...row };
1273
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "projectLeadResourceID", (v) => names.resourceName(v));
1274
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "creatorResourceID", (v) => names.resourceName(v));
1275
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "contractID", (v) => names.recordName("contract", v));
1273
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, r, "projectLeadResourceID", (v) => names.resourceName(v));
1274
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, r, "creatorResourceID", (v) => names.resourceName(v));
1275
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, r, "contractID", (v) => names.recordName("contract", v));
1276
1276
  return r;
1277
1277
  })
1278
1278
  };
@@ -1304,7 +1304,7 @@ function isDateYMD(v) {
1304
1304
  }
1305
1305
  function validateUnbilledWorkOptions(companyId, opts) {
1306
1306
  if (opts !== void 0 && (typeof opts !== "object" || opts === null || Array.isArray(opts))) {
1307
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
1307
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
1308
1308
  `unbilledWork: opts must be the options object (got ${Array.isArray(opts) ? "an array" : typeof opts})`,
1309
1309
  { operation: "companies.unbilledWork" }
1310
1310
  );
@@ -1333,7 +1333,7 @@ function validateUnbilledWorkOptions(companyId, opts) {
1333
1333
  try {
1334
1334
  limit = clampLimit(opts.limit);
1335
1335
  } catch (err) {
1336
- problems.push(err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.message : `limit must be an integer >= 1 (got ${String(opts.limit)})`);
1336
+ problems.push(err instanceof _chunkZ7YT72SScjs.AutotaskError ? err.message : `limit must be an integer >= 1 (got ${String(opts.limit)})`);
1337
1337
  limit = 50;
1338
1338
  }
1339
1339
  if (source === "date_range") {
@@ -1348,9 +1348,9 @@ function validateUnbilledWorkOptions(companyId, opts) {
1348
1348
  problems.push('invoiceId is required (the vendor invoice id) when source is "invoice"');
1349
1349
  } else {
1350
1350
  try {
1351
- _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, opts.invoiceId, "opts.invoiceId");
1351
+ _chunkZ7YT72SScjs.parseIdentifier.call(void 0, opts.invoiceId, "opts.invoiceId");
1352
1352
  } catch (err) {
1353
- problems.push(err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.message : "invoiceId must be a vendor numeric id");
1353
+ problems.push(err instanceof _chunkZ7YT72SScjs.AutotaskError ? err.message : "invoiceId must be a vendor numeric id");
1354
1354
  }
1355
1355
  }
1356
1356
  }
@@ -1360,20 +1360,20 @@ function validateUnbilledWorkOptions(companyId, opts) {
1360
1360
  } else {
1361
1361
  opts.ticketIds.forEach((tid, i) => {
1362
1362
  try {
1363
- _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, tid, `opts.ticketIds[${i}]`);
1363
+ _chunkZ7YT72SScjs.parseIdentifier.call(void 0, tid, `opts.ticketIds[${i}]`);
1364
1364
  } catch (err) {
1365
- problems.push(err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.message : `ticketIds[${i}] must be a vendor numeric id`);
1365
+ problems.push(err instanceof _chunkZ7YT72SScjs.AutotaskError ? err.message : `ticketIds[${i}] must be a vendor numeric id`);
1366
1366
  }
1367
1367
  });
1368
1368
  }
1369
1369
  }
1370
1370
  try {
1371
- _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, companyId, "companyId");
1371
+ _chunkZ7YT72SScjs.parseIdentifier.call(void 0, companyId, "companyId");
1372
1372
  } catch (err) {
1373
- problems.push(err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.message : "companyId must be a vendor numeric id");
1373
+ problems.push(err instanceof _chunkZ7YT72SScjs.AutotaskError ? err.message : "companyId must be a vendor numeric id");
1374
1374
  }
1375
1375
  if (problems.length > 0) {
1376
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
1376
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
1377
1377
  `unbilledWork: ${problems.length} problem(s) found pre-request (zero wire was issued)
1378
1378
  - ` + problems.join("\n- "),
1379
1379
  { operation: "companies.unbilledWork" }
@@ -1402,7 +1402,7 @@ async function boundedPart(http, path, conditions, limit, includeFields) {
1402
1402
  body,
1403
1403
  operation: "companies.unbilledWork"
1404
1404
  });
1405
- const { items, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, "companies.unbilledWork");
1405
+ const { items, pageDetails } = _chunkZ7YT72SScjs.unwrapItems.call(void 0, res, "companies.unbilledWork");
1406
1406
  const capped = items.length >= limit;
1407
1407
  return { items, capped, hasMore: capped && pageDetails.nextPageUrl != null };
1408
1408
  }
@@ -1413,7 +1413,7 @@ function capJoinSet(ids, cap) {
1413
1413
  }
1414
1414
  function unbilledWorkPartStatus(key, conditions, items) {
1415
1415
  if (items.length !== 0) return { status: "ok" };
1416
- const stamp = _chunkKB2ANVVRcjs.blindStampFor.call(void 0, _optionalChain([_chunkKB2ANVVRcjs.BLIND_SURFACE_STAMPS, 'access', _18 => _18[key], 'optionalAccess', _19 => _19.query]), conditions);
1416
+ const stamp = _chunkZ7YT72SScjs.blindStampFor.call(void 0, _optionalChain([_chunkZ7YT72SScjs.BLIND_SURFACE_STAMPS, 'access', _18 => _18[key], 'optionalAccess', _19 => _19.query]), conditions);
1417
1417
  if (stamp !== void 0) return { status: "blind", blindSurface: stamp, note: stamp.note };
1418
1418
  return {
1419
1419
  status: "ok",
@@ -1422,7 +1422,7 @@ function unbilledWorkPartStatus(key, conditions, items) {
1422
1422
  }
1423
1423
  async function unbilledWork(resource, companyId, opts = {}, http) {
1424
1424
  const v = validateUnbilledWorkOptions(companyId, opts);
1425
- const id = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, companyId, "companyId");
1425
+ const id = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, companyId, "companyId");
1426
1426
  const company = await resource.get(id);
1427
1427
  const companyIds = [num(company.id)];
1428
1428
  let parent = null;
@@ -1435,7 +1435,7 @@ async function unbilledWork(resource, companyId, opts = {}, http) {
1435
1435
  parentStatus = "ok";
1436
1436
  companyIds.push(num(parent.id));
1437
1437
  } catch (err) {
1438
- if (err instanceof _chunkKB2ANVVRcjs.NotFoundError) parent = null;
1438
+ if (err instanceof _chunkZ7YT72SScjs.NotFoundError) parent = null;
1439
1439
  else throw err;
1440
1440
  }
1441
1441
  }
@@ -1467,7 +1467,7 @@ async function unbilledWork(resource, companyId, opts = {}, http) {
1467
1467
  if (v.dateFrom !== void 0) billingConditions.push({ field: "itemDate", op: "gte", value: v.dateFrom });
1468
1468
  if (v.dateTo !== void 0) billingConditions.push({ field: "itemDate", op: "lte", value: v.dateTo });
1469
1469
  }
1470
- const billingFields = _chunkKB2ANVVRcjs.resolveFieldsPreset.call(void 0, "billing_join", "billing_items");
1470
+ const billingFields = _chunkZ7YT72SScjs.resolveFieldsPreset.call(void 0, "billing_join", "billing_items");
1471
1471
  const billingIncludeFields = [...billingFields, "id", ...v.includeNotes ? ["description"] : []];
1472
1472
  const billingRaw = await boundedPart(http, "/V1.0/BillingItems/query", billingConditions, v.limit, billingIncludeFields);
1473
1473
  const taskCap = capJoinSet(taskIds, UNBILLED_WORK_JOIN_SET_CAP);
@@ -1499,7 +1499,7 @@ async function unbilledWork(resource, companyId, opts = {}, http) {
1499
1499
  let cappedItems = entries;
1500
1500
  let noteCharsTruncated = 0;
1501
1501
  if (v.includeNotes) {
1502
- [cappedItems, noteCharsTruncated] = _chunkKB2ANVVRcjs.truncateNoteChars.call(void 0, entries, v.noteChars, ["summaryNotes"]);
1502
+ [cappedItems, noteCharsTruncated] = _chunkZ7YT72SScjs.truncateNoteChars.call(void 0, entries, v.noteChars, ["summaryNotes"]);
1503
1503
  }
1504
1504
  const st = unbilledWorkPartStatus("time_entries", timeConditions, entries);
1505
1505
  timePart = {
@@ -1514,8 +1514,8 @@ async function unbilledWork(resource, companyId, opts = {}, http) {
1514
1514
  let billingItems = billingRaw.items;
1515
1515
  let billingNoteCharsTruncated = 0;
1516
1516
  if (v.includeNotes) {
1517
- const noteFields = (_nullishCoalesce(_chunkKB2ANVVRcjs.UNTRUSTED_FIELDS_BY_RESOURCE["billing_items"], () => ( []))).filter((f) => billingIncludeFields.includes(f));
1518
- [billingItems, billingNoteCharsTruncated] = _chunkKB2ANVVRcjs.truncateNoteChars.call(void 0, billingRaw.items, v.noteChars, noteFields);
1517
+ const noteFields = (_nullishCoalesce(_chunkZ7YT72SScjs.UNTRUSTED_FIELDS_BY_RESOURCE["billing_items"], () => ( []))).filter((f) => billingIncludeFields.includes(f));
1518
+ [billingItems, billingNoteCharsTruncated] = _chunkZ7YT72SScjs.truncateNoteChars.call(void 0, billingRaw.items, v.noteChars, noteFields);
1519
1519
  }
1520
1520
  const billingSt = unbilledWorkPartStatus("billing_items", billingConditions, billingRaw.items);
1521
1521
  const billingItemsPart = {
@@ -1612,7 +1612,7 @@ async function unbilledWork(resource, companyId, opts = {}, http) {
1612
1612
  }
1613
1613
 
1614
1614
  // src/resources/companies.ts
1615
- var CompaniesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1615
+ var CompaniesResource = class extends _chunkZ7YT72SScjs.BaseResource {
1616
1616
  constructor(http, pageSize) {
1617
1617
  super(http, {
1618
1618
  key: "companies",
@@ -1719,7 +1719,7 @@ var CompaniesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1719
1719
  };
1720
1720
 
1721
1721
  // src/resources/company_alerts.ts
1722
- var CompanyAlertsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1722
+ var CompanyAlertsResource = class extends _chunkZ7YT72SScjs.BaseResource {
1723
1723
  constructor(http, pageSize) {
1724
1724
  super(http, {
1725
1725
  key: "company_alerts",
@@ -1762,14 +1762,14 @@ var CompanyAlertsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1762
1762
  async update(parentId, id, data, opts = {}) {
1763
1763
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
1764
1764
  await this.guardStaleBeforeMutation(id, opts, "company_alerts.update", parentId);
1765
- return this.updateScopedRaw(parentId, id, data);
1765
+ return this.updateScopedRaw(parentId, id, data, opts);
1766
1766
  }
1767
1767
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
1768
1768
  * envelope and never issues the delete. */
1769
1769
  async delete(parentId, id, opts = {}) {
1770
1770
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
1771
1771
  await this.guardStaleBeforeMutation(id, opts, "company_alerts.delete", parentId);
1772
- return this.deleteScopedRaw(parentId, id);
1772
+ return this.deleteScopedRaw(parentId, id, opts);
1773
1773
  }
1774
1774
  /** Resolve a CompanyAlert from a numeric id (or, where the vendor indexes a primary text field,
1775
1775
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -1785,7 +1785,7 @@ var CompanyAlertsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1785
1785
  };
1786
1786
 
1787
1787
  // src/resources/company_locations.ts
1788
- var CompanyLocationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1788
+ var CompanyLocationsResource = class extends _chunkZ7YT72SScjs.BaseResource {
1789
1789
  constructor(http, pageSize) {
1790
1790
  super(http, {
1791
1791
  key: "company_locations",
@@ -1829,14 +1829,14 @@ var CompanyLocationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1829
1829
  async update(parentId, id, data, opts = {}) {
1830
1830
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
1831
1831
  await this.guardStaleBeforeMutation(id, opts, "company_locations.update", parentId);
1832
- return this.updateScopedRaw(parentId, id, data);
1832
+ return this.updateScopedRaw(parentId, id, data, opts);
1833
1833
  }
1834
1834
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
1835
1835
  * envelope and never issues the delete. */
1836
1836
  async delete(parentId, id, opts = {}) {
1837
1837
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
1838
1838
  await this.guardStaleBeforeMutation(id, opts, "company_locations.delete", parentId);
1839
- return this.deleteScopedRaw(parentId, id);
1839
+ return this.deleteScopedRaw(parentId, id, opts);
1840
1840
  }
1841
1841
  /** Resolve a CompanyLocation from a numeric id (or, where the vendor indexes a primary text field,
1842
1842
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -1856,7 +1856,7 @@ var CompanyLocationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1856
1856
  };
1857
1857
 
1858
1858
  // src/resources/company_notes.ts
1859
- var CompanyNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1859
+ var CompanyNotesResource = class extends _chunkZ7YT72SScjs.BaseResource {
1860
1860
  constructor(http, pageSize) {
1861
1861
  super(http, {
1862
1862
  key: "company_notes",
@@ -1901,7 +1901,7 @@ var CompanyNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1901
1901
  async update(parentId, id, data, opts = {}) {
1902
1902
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
1903
1903
  await this.guardStaleBeforeMutation(id, opts, "company_notes.update", parentId);
1904
- return this.updateScopedRaw(parentId, id, data);
1904
+ return this.updateScopedRaw(parentId, id, data, opts);
1905
1905
  }
1906
1906
  /** Resolve a CompanyNote from a numeric id (or, where the vendor indexes a primary text field,
1907
1907
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -1921,7 +1921,7 @@ var CompanyNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1921
1921
  };
1922
1922
 
1923
1923
  // src/resources/company_site_configurations.ts
1924
- var CompanySiteConfigurationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1924
+ var CompanySiteConfigurationsResource = class extends _chunkZ7YT72SScjs.BaseResource {
1925
1925
  constructor(http, pageSize) {
1926
1926
  super(http, {
1927
1927
  key: "company_site_configurations",
@@ -1956,7 +1956,7 @@ var CompanySiteConfigurationsResource = class extends _chunkKB2ANVVRcjs.BaseReso
1956
1956
  async update(parentId, id, data, opts = {}) {
1957
1957
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
1958
1958
  await this.guardStaleBeforeMutation(id, opts, "company_site_configurations.update", parentId);
1959
- return this.updateScopedRaw(parentId, id, data);
1959
+ return this.updateScopedRaw(parentId, id, data, opts);
1960
1960
  }
1961
1961
  /** Resolve a CompanySiteConfigurations from a numeric id (or, where the vendor indexes a primary text field,
1962
1962
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -1972,7 +1972,7 @@ var CompanySiteConfigurationsResource = class extends _chunkKB2ANVVRcjs.BaseReso
1972
1972
  };
1973
1973
 
1974
1974
  // src/resources/company_webhooks.ts
1975
- var CompanyWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
1975
+ var CompanyWebhooksResource = class extends _chunkZ7YT72SScjs.BaseResource {
1976
1976
  constructor(http, pageSize) {
1977
1977
  super(http, {
1978
1978
  key: "company_webhooks",
@@ -2028,7 +2028,7 @@ var CompanyWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2028
2028
  async delete(id, opts = {}) {
2029
2029
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
2030
2030
  await this.guardStaleBeforeMutation(id, opts, "company_webhooks.delete");
2031
- return this.deleteGlobal(id);
2031
+ return this.deleteGlobal(id, opts);
2032
2032
  }
2033
2033
  /** Resolve a CompanyWebhook from a numeric id (or, where the vendor indexes a primary text field,
2034
2034
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -2048,7 +2048,7 @@ var CompanyWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2048
2048
  };
2049
2049
 
2050
2050
  // src/resources/configuration_item_billing_product_associations.ts
2051
- var ConfigurationItemBillingProductAssociationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2051
+ var ConfigurationItemBillingProductAssociationsResource = class extends _chunkZ7YT72SScjs.BaseResource {
2052
2052
  constructor(http, pageSize) {
2053
2053
  super(http, {
2054
2054
  key: "configuration_item_billing_product_associations",
@@ -2091,14 +2091,14 @@ var ConfigurationItemBillingProductAssociationsResource = class extends _chunkKB
2091
2091
  async update(parentId, id, data, opts = {}) {
2092
2092
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
2093
2093
  await this.guardStaleBeforeMutation(id, opts, "configuration_item_billing_product_associations.update", parentId);
2094
- return this.updateScopedRaw(parentId, id, data);
2094
+ return this.updateScopedRaw(parentId, id, data, opts);
2095
2095
  }
2096
2096
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
2097
2097
  * envelope and never issues the delete. */
2098
2098
  async delete(parentId, id, opts = {}) {
2099
2099
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
2100
2100
  await this.guardStaleBeforeMutation(id, opts, "configuration_item_billing_product_associations.delete", parentId);
2101
- return this.deleteScopedRaw(parentId, id);
2101
+ return this.deleteScopedRaw(parentId, id, opts);
2102
2102
  }
2103
2103
  /** Resolve a ConfigurationItemBillingProductAssociations from a numeric id (or, where the vendor indexes a primary text field,
2104
2104
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -2114,7 +2114,7 @@ var ConfigurationItemBillingProductAssociationsResource = class extends _chunkKB
2114
2114
  };
2115
2115
 
2116
2116
  // src/resources/configuration_item_categories.ts
2117
- var ConfigurationItemCategoriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2117
+ var ConfigurationItemCategoriesResource = class extends _chunkZ7YT72SScjs.BaseResource {
2118
2118
  constructor(http, pageSize) {
2119
2119
  super(http, {
2120
2120
  key: "configuration_item_categories",
@@ -2181,7 +2181,7 @@ var ConfigurationItemCategoriesResource = class extends _chunkKB2ANVVRcjs.BaseRe
2181
2181
  };
2182
2182
 
2183
2183
  // src/resources/configuration_item_category_udf_associations.ts
2184
- var ConfigurationItemCategoryUdfAssociationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2184
+ var ConfigurationItemCategoryUdfAssociationsResource = class extends _chunkZ7YT72SScjs.BaseResource {
2185
2185
  constructor(http, pageSize) {
2186
2186
  super(http, {
2187
2187
  key: "configuration_item_category_udf_associations",
@@ -2224,14 +2224,14 @@ var ConfigurationItemCategoryUdfAssociationsResource = class extends _chunkKB2AN
2224
2224
  async update(parentId, id, data, opts = {}) {
2225
2225
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
2226
2226
  await this.guardStaleBeforeMutation(id, opts, "configuration_item_category_udf_associations.update", parentId);
2227
- return this.updateScopedRaw(parentId, id, data);
2227
+ return this.updateScopedRaw(parentId, id, data, opts);
2228
2228
  }
2229
2229
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
2230
2230
  * envelope and never issues the delete. */
2231
2231
  async delete(parentId, id, opts = {}) {
2232
2232
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
2233
2233
  await this.guardStaleBeforeMutation(id, opts, "configuration_item_category_udf_associations.delete", parentId);
2234
- return this.deleteScopedRaw(parentId, id);
2234
+ return this.deleteScopedRaw(parentId, id, opts);
2235
2235
  }
2236
2236
  /** Resolve a ConfigurationItemCategoryUdfAssociation from a numeric id (or, where the vendor indexes a primary text field,
2237
2237
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -2247,7 +2247,7 @@ var ConfigurationItemCategoryUdfAssociationsResource = class extends _chunkKB2AN
2247
2247
  };
2248
2248
 
2249
2249
  // src/resources/configuration_item_dns_records.ts
2250
- var ConfigurationItemDnsRecordsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2250
+ var ConfigurationItemDnsRecordsResource = class extends _chunkZ7YT72SScjs.BaseResource {
2251
2251
  constructor(http, pageSize) {
2252
2252
  super(http, {
2253
2253
  key: "configuration_item_dns_records",
@@ -2280,7 +2280,7 @@ var ConfigurationItemDnsRecordsResource = class extends _chunkKB2ANVVRcjs.BaseRe
2280
2280
  async delete(parentId, id, opts = {}) {
2281
2281
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
2282
2282
  await this.guardStaleBeforeMutation(id, opts, "configuration_item_dns_records.delete", parentId);
2283
- return this.deleteScopedRaw(parentId, id);
2283
+ return this.deleteScopedRaw(parentId, id, opts);
2284
2284
  }
2285
2285
  /** Resolve a ConfigurationItemDnsRecord from a numeric id (or, where the vendor indexes a primary text field,
2286
2286
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -2296,7 +2296,7 @@ var ConfigurationItemDnsRecordsResource = class extends _chunkKB2ANVVRcjs.BaseRe
2296
2296
  };
2297
2297
 
2298
2298
  // src/resources/configuration_item_notes.ts
2299
- var ConfigurationItemNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2299
+ var ConfigurationItemNotesResource = class extends _chunkZ7YT72SScjs.BaseResource {
2300
2300
  constructor(http, pageSize) {
2301
2301
  super(http, {
2302
2302
  key: "configuration_item_notes",
@@ -2339,7 +2339,7 @@ var ConfigurationItemNotesResource = class extends _chunkKB2ANVVRcjs.BaseResourc
2339
2339
  async update(parentId, id, data, opts = {}) {
2340
2340
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
2341
2341
  await this.guardStaleBeforeMutation(id, opts, "configuration_item_notes.update", parentId);
2342
- return this.updateScopedRaw(parentId, id, data);
2342
+ return this.updateScopedRaw(parentId, id, data, opts);
2343
2343
  }
2344
2344
  /** Resolve a ConfigurationItemNote from a numeric id (or, where the vendor indexes a primary text field,
2345
2345
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -2355,7 +2355,7 @@ var ConfigurationItemNotesResource = class extends _chunkKB2ANVVRcjs.BaseResourc
2355
2355
  };
2356
2356
 
2357
2357
  // src/resources/configuration_item_related_items.ts
2358
- var ConfigurationItemRelatedItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2358
+ var ConfigurationItemRelatedItemsResource = class extends _chunkZ7YT72SScjs.BaseResource {
2359
2359
  constructor(http, pageSize) {
2360
2360
  super(http, {
2361
2361
  key: "configuration_item_related_items",
@@ -2396,7 +2396,7 @@ var ConfigurationItemRelatedItemsResource = class extends _chunkKB2ANVVRcjs.Base
2396
2396
  async delete(parentId, id, opts = {}) {
2397
2397
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
2398
2398
  await this.guardStaleBeforeMutation(id, opts, "configuration_item_related_items.delete", parentId);
2399
- return this.deleteScopedRaw(parentId, id);
2399
+ return this.deleteScopedRaw(parentId, id, opts);
2400
2400
  }
2401
2401
  /** Resolve a ConfigurationItemRelatedItem from a numeric id (or, where the vendor indexes a primary text field,
2402
2402
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -2412,22 +2412,22 @@ var ConfigurationItemRelatedItemsResource = class extends _chunkKB2ANVVRcjs.Base
2412
2412
  };
2413
2413
 
2414
2414
  // src/resources/special/configuration_items.ts
2415
- async function fetchRecord(http, path, label) {
2416
- const res = await http.request({ method: "GET", path, operation: "configuration_items.moveConfigurationItem" });
2415
+ async function fetchRecord(http, path, label, readOpts) {
2416
+ const res = await http.request({ method: "GET", path, operation: "configuration_items.moveConfigurationItem", maxRetries: _optionalChain([readOpts, 'optionalAccess', _20 => _20.maxRetries]) });
2417
2417
  const body = res;
2418
2418
  if (body === null || !("item" in body) || body.item === null || body.item === void 0) {
2419
- throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`${label} not found`, { code: "NOT_FOUND", category: "not_found" });
2419
+ throw new (0, _chunkZ7YT72SScjs.NotFoundError)(`${label} not found`, { code: "NOT_FOUND", category: "not_found" });
2420
2420
  }
2421
2421
  return body.item;
2422
2422
  }
2423
2423
  async function moveConfigurationItem(_resource, sourceId, opts, http) {
2424
- const numericSource = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, sourceId, "sourceId");
2425
- if (_optionalChain([opts, 'optionalAccess', _20 => _20.destinationCompanyId]) === void 0) {
2426
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("moveConfigurationItem: destinationCompanyId is required");
2424
+ const numericSource = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, sourceId, "sourceId");
2425
+ if (_optionalChain([opts, 'optionalAccess', _21 => _21.destinationCompanyId]) === void 0) {
2426
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("moveConfigurationItem: destinationCompanyId is required");
2427
2427
  }
2428
- const destId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, opts.destinationCompanyId, "destinationCompanyId");
2429
- const source = await fetchRecord(http, `/V1.0/ConfigurationItems/${numericSource}`, `Configuration item ${numericSource}`);
2430
- await fetchRecord(http, `/V1.0/Companies/${destId}`, `Company ${destId}`);
2428
+ const destId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, opts.destinationCompanyId, "destinationCompanyId");
2429
+ const source = await fetchRecord(http, `/V1.0/ConfigurationItems/${numericSource}`, `Configuration item ${numericSource}`, { maxRetries: opts.maxRetries });
2430
+ await fetchRecord(http, `/V1.0/Companies/${destId}`, `Company ${destId}`, { maxRetries: opts.maxRetries });
2431
2431
  const body = { ...source };
2432
2432
  delete body.id;
2433
2433
  delete body.soapParentPropertyId;
@@ -2435,20 +2435,20 @@ async function moveConfigurationItem(_resource, sourceId, opts, http) {
2435
2435
  body.companyID = destId;
2436
2436
  body.isActive = true;
2437
2437
  if (opts.newReferenceTitle !== void 0) {
2438
- if (opts.newReferenceTitle.trim() === "") throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("moveConfigurationItem: newReferenceTitle must be non-empty");
2438
+ if (opts.newReferenceTitle.trim() === "") throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("moveConfigurationItem: newReferenceTitle must be non-empty");
2439
2439
  body.referenceTitle = opts.newReferenceTitle.trim();
2440
2440
  }
2441
2441
  if (opts.lastModifiedDate !== void 0) {
2442
2442
  const current = source.lastModifiedDate;
2443
2443
  if (current !== opts.lastModifiedDate) {
2444
- throw new (0, _chunkKB2ANVVRcjs.StaleObjectError)(
2444
+ throw new (0, _chunkZ7YT72SScjs.StaleObjectError)(
2445
2445
  `moveConfigurationItem: source item ${numericSource} was modified since the snapshot (expected lastModifiedDate ${opts.lastModifiedDate}, current ${_nullishCoalesce(current, () => ( "unknown"))})`,
2446
2446
  { operation: "configuration_items.moveConfigurationItem", resourceIds: [numericSource] }
2447
2447
  );
2448
2448
  }
2449
2449
  }
2450
2450
  if (opts.dryRun === true) {
2451
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
2451
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0, {
2452
2452
  operation: "configuration_items.moveConfigurationItem",
2453
2453
  method: "POST",
2454
2454
  path: "/V1.0/ConfigurationItems",
@@ -2467,12 +2467,13 @@ async function moveConfigurationItem(_resource, sourceId, opts, http) {
2467
2467
  method: "POST",
2468
2468
  path: "/V1.0/ConfigurationItems",
2469
2469
  body,
2470
- operation: "configuration_items.moveConfigurationItem"
2470
+ operation: "configuration_items.moveConfigurationItem",
2471
+ maxRetries: opts.maxRetries
2471
2472
  });
2472
2473
  const createdBody = created;
2473
2474
  const newId = createdBody !== null ? _nullishCoalesce(createdBody.itemId, () => ( createdBody.id)) : void 0;
2474
2475
  if (typeof newId !== "number") {
2475
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("moveConfigurationItem: vendor create response has no itemId");
2476
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("moveConfigurationItem: vendor create response has no itemId");
2476
2477
  }
2477
2478
  let sourceDeactivated = false;
2478
2479
  if (opts.deactivateSource !== false) {
@@ -2480,7 +2481,8 @@ async function moveConfigurationItem(_resource, sourceId, opts, http) {
2480
2481
  method: "PUT",
2481
2482
  path: "/V1.0/ConfigurationItems",
2482
2483
  body: { id: numericSource, isActive: false },
2483
- operation: "configuration_items.moveConfigurationItem"
2484
+ operation: "configuration_items.moveConfigurationItem",
2485
+ maxRetries: opts.maxRetries
2484
2486
  });
2485
2487
  sourceDeactivated = true;
2486
2488
  }
@@ -2490,7 +2492,7 @@ var PROFILE_PART_LIMIT2 = 50;
2490
2492
  function profilePartLimit2(value, name) {
2491
2493
  const n = value === void 0 ? PROFILE_PART_LIMIT2 : Math.trunc(value);
2492
2494
  if (!Number.isInteger(n) || n < 1) {
2493
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`profile: ${name} must be an integer >= 1 (got ${String(value)})`);
2495
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`profile: ${name} must be an integer >= 1 (got ${String(value)})`);
2494
2496
  }
2495
2497
  return n;
2496
2498
  }
@@ -2506,14 +2508,14 @@ async function contextFetchPart(http, entityPath, referenceId) {
2506
2508
  });
2507
2509
  const body = res;
2508
2510
  if (body === null || !("item" in body)) {
2509
- throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`context part not found (unexpected envelope shape)`, { resourceIds: [referenceId] });
2511
+ throw new (0, _chunkZ7YT72SScjs.NotFoundError)(`context part not found (unexpected envelope shape)`, { resourceIds: [referenceId] });
2510
2512
  }
2511
2513
  if (body.item === null || body.item === void 0) {
2512
- throw new (0, _chunkKB2ANVVRcjs.NotFoundError)("context part not found", { resourceIds: [referenceId] });
2514
+ throw new (0, _chunkZ7YT72SScjs.NotFoundError)("context part not found", { resourceIds: [referenceId] });
2513
2515
  }
2514
2516
  return body.item;
2515
2517
  } catch (err) {
2516
- if (err instanceof _chunkKB2ANVVRcjs.NotFoundError) return null;
2518
+ if (err instanceof _chunkZ7YT72SScjs.NotFoundError) return null;
2517
2519
  throw err;
2518
2520
  }
2519
2521
  }
@@ -2525,7 +2527,7 @@ async function ciScopedQuery(http, path, itemID, limit) {
2525
2527
  body: { MaxRecords: limit, filter: [{ field: "configurationItemID", op: "eq", value: itemID }] },
2526
2528
  operation: "configuration_items.profile"
2527
2529
  });
2528
- return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
2530
+ return _chunkZ7YT72SScjs.unwrapItems.call(void 0, res).items;
2529
2531
  }
2530
2532
  async function profile(resource, id, opts = {}, http) {
2531
2533
  const noteLimit = profilePartLimit2(opts.noteLimit, "noteLimit");
@@ -2537,7 +2539,7 @@ async function profile(resource, id, opts = {}, http) {
2537
2539
  const notes = await ciScopedQuery(http, "/V1.0/ConfigurationItemNotes/query", id, noteLimit);
2538
2540
  const relatedItems = await ciScopedQuery(http, "/V1.0/ConfigurationItemRelatedItems/query", id, relatedLimit);
2539
2541
  const associations = await ciScopedQuery(http, "/V1.0/ConfigurationItemBillingProductAssociations/query", id, PROFILE_PART_LIMIT2);
2540
- const wallQuirk = _optionalChain([_chunkKB2ANVVRcjs.RELATIONSHIP_MAP, 'access', _21 => _21["configuration_items"], 'optionalAccess', _22 => _22.zoneFacts, 'optionalAccess', _23 => _23.quirks, 'optionalAccess', _24 => _24.find, 'call', _25 => _25((q) => q.startsWith("product wall"))]);
2542
+ const wallQuirk = _optionalChain([_chunkZ7YT72SScjs.RELATIONSHIP_MAP, 'access', _22 => _22["configuration_items"], 'optionalAccess', _23 => _23.zoneFacts, 'optionalAccess', _24 => _24.quirks, 'optionalAccess', _25 => _25.find, 'call', _26 => _26((q) => q.startsWith("product wall"))]);
2541
2543
  const productAssociations = {
2542
2544
  items: associations,
2543
2545
  capped: associations.length >= PROFILE_PART_LIMIT2,
@@ -2561,11 +2563,11 @@ async function profile(resource, id, opts = {}, http) {
2561
2563
  }
2562
2564
  };
2563
2565
  if (opts.names === true) {
2564
- const builder = _chunkKB2ANVVRcjs.createNamePlan.call(void 0, );
2566
+ const builder = _chunkZ7YT72SScjs.createNamePlan.call(void 0, );
2565
2567
  builder.addFk("contract", root["contractID"]);
2566
- const names = await _chunkKB2ANVVRcjs.resolveCompositeNames.call(void 0, http, builder.plan(), { maxNameReads: opts.maxNameReads });
2568
+ const names = await _chunkZ7YT72SScjs.resolveCompositeNames.call(void 0, http, builder.plan(), { maxNameReads: opts.maxNameReads });
2567
2569
  const ciRow = { ...ci };
2568
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, ciRow, "contractID", (v) => names.recordName("contract", v));
2570
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, ciRow, "contractID", (v) => names.recordName("contract", v));
2569
2571
  result.ci = ciRow;
2570
2572
  result.names = names.section;
2571
2573
  }
@@ -2573,7 +2575,7 @@ async function profile(resource, id, opts = {}, http) {
2573
2575
  }
2574
2576
 
2575
2577
  // src/resources/configuration_items.ts
2576
- var ConfigurationItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2578
+ var ConfigurationItemsResource = class extends _chunkZ7YT72SScjs.BaseResource {
2577
2579
  constructor(http, pageSize) {
2578
2580
  super(http, {
2579
2581
  key: "configuration_items",
@@ -2662,7 +2664,7 @@ var ConfigurationItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2662
2664
  };
2663
2665
 
2664
2666
  // src/resources/configuration_item_ssl_subject_alternative_names.ts
2665
- var ConfigurationItemSslSubjectAlternativeNamesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2667
+ var ConfigurationItemSslSubjectAlternativeNamesResource = class extends _chunkZ7YT72SScjs.BaseResource {
2666
2668
  constructor(http, pageSize) {
2667
2669
  super(http, {
2668
2670
  key: "configuration_item_ssl_subject_alternative_names",
@@ -2698,14 +2700,14 @@ var ConfigurationItemSslSubjectAlternativeNamesResource = class extends _chunkKB
2698
2700
  async update(parentId, id, data, opts = {}) {
2699
2701
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
2700
2702
  await this.guardStaleBeforeMutation(id, opts, "configuration_item_ssl_subject_alternative_names.update", parentId);
2701
- return this.updateScopedRaw(parentId, id, data);
2703
+ return this.updateScopedRaw(parentId, id, data, opts);
2702
2704
  }
2703
2705
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
2704
2706
  * envelope and never issues the delete. */
2705
2707
  async delete(parentId, id, opts = {}) {
2706
2708
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
2707
2709
  await this.guardStaleBeforeMutation(id, opts, "configuration_item_ssl_subject_alternative_names.delete", parentId);
2708
- return this.deleteScopedRaw(parentId, id);
2710
+ return this.deleteScopedRaw(parentId, id, opts);
2709
2711
  }
2710
2712
  /** Resolve a ConfigurationItemSslSubjectAlternativeName from a numeric id (or, where the vendor indexes a primary text field,
2711
2713
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -2725,7 +2727,7 @@ var ConfigurationItemSslSubjectAlternativeNamesResource = class extends _chunkKB
2725
2727
  };
2726
2728
 
2727
2729
  // src/resources/configuration_item_types.ts
2728
- var ConfigurationItemTypesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2730
+ var ConfigurationItemTypesResource = class extends _chunkZ7YT72SScjs.BaseResource {
2729
2731
  constructor(http, pageSize) {
2730
2732
  super(http, {
2731
2733
  key: "configuration_item_types",
@@ -2779,7 +2781,7 @@ var ConfigurationItemTypesResource = class extends _chunkKB2ANVVRcjs.BaseResourc
2779
2781
  async delete(id, opts = {}) {
2780
2782
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
2781
2783
  await this.guardStaleBeforeMutation(id, opts, "configuration_item_types.delete");
2782
- return this.deleteGlobal(id);
2784
+ return this.deleteGlobal(id, opts);
2783
2785
  }
2784
2786
  /** Resolve a ConfigurationItemType from a numeric id (or, where the vendor indexes a primary text field,
2785
2787
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -2799,7 +2801,7 @@ var ConfigurationItemTypesResource = class extends _chunkKB2ANVVRcjs.BaseResourc
2799
2801
  };
2800
2802
 
2801
2803
  // src/resources/configuration_item_webhooks.ts
2802
- var ConfigurationItemWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2804
+ var ConfigurationItemWebhooksResource = class extends _chunkZ7YT72SScjs.BaseResource {
2803
2805
  constructor(http, pageSize) {
2804
2806
  super(http, {
2805
2807
  key: "configuration_item_webhooks",
@@ -2855,7 +2857,7 @@ var ConfigurationItemWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseReso
2855
2857
  async delete(id, opts = {}) {
2856
2858
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
2857
2859
  await this.guardStaleBeforeMutation(id, opts, "configuration_item_webhooks.delete");
2858
- return this.deleteGlobal(id);
2860
+ return this.deleteGlobal(id, opts);
2859
2861
  }
2860
2862
  /** Resolve a ConfigurationItemWebhook from a numeric id (or, where the vendor indexes a primary text field,
2861
2863
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -2875,7 +2877,7 @@ var ConfigurationItemWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseReso
2875
2877
  };
2876
2878
 
2877
2879
  // src/resources/contact_group_contacts.ts
2878
- var ContactGroupContactsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2880
+ var ContactGroupContactsResource = class extends _chunkZ7YT72SScjs.BaseResource {
2879
2881
  constructor(http, pageSize) {
2880
2882
  super(http, {
2881
2883
  key: "contact_group_contacts",
@@ -2913,7 +2915,7 @@ var ContactGroupContactsResource = class extends _chunkKB2ANVVRcjs.BaseResource
2913
2915
  async delete(id, opts = {}) {
2914
2916
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
2915
2917
  await this.guardStaleBeforeMutation(id, opts, "contact_group_contacts.delete");
2916
- return this.deleteGlobal(id);
2918
+ return this.deleteGlobal(id, opts);
2917
2919
  }
2918
2920
  /** Resolve a ContactGroupContacts from a numeric id (or, where the vendor indexes a primary text field,
2919
2921
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -2929,7 +2931,7 @@ var ContactGroupContactsResource = class extends _chunkKB2ANVVRcjs.BaseResource
2929
2931
  };
2930
2932
 
2931
2933
  // src/resources/contact_groups.ts
2932
- var ContactGroupsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2934
+ var ContactGroupsResource = class extends _chunkZ7YT72SScjs.BaseResource {
2933
2935
  constructor(http, pageSize) {
2934
2936
  super(http, {
2935
2937
  key: "contact_groups",
@@ -2983,7 +2985,7 @@ var ContactGroupsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
2983
2985
  async delete(id, opts = {}) {
2984
2986
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
2985
2987
  await this.guardStaleBeforeMutation(id, opts, "contact_groups.delete");
2986
- return this.deleteGlobal(id);
2988
+ return this.deleteGlobal(id, opts);
2987
2989
  }
2988
2990
  /** Resolve a ContactGroups from a numeric id (or, where the vendor indexes a primary text field,
2989
2991
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -3003,32 +3005,32 @@ var ContactGroupsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3003
3005
  };
3004
3006
 
3005
3007
  // src/resources/special/contacts.ts
3006
- async function fetchRecord2(http, path, label) {
3007
- const res = await http.request({ method: "GET", path, operation: "contacts.moveToCompany" });
3008
+ async function fetchRecord2(http, path, label, readOpts) {
3009
+ const res = await http.request({ method: "GET", path, operation: "contacts.moveToCompany", maxRetries: _optionalChain([readOpts, 'optionalAccess', _27 => _27.maxRetries]) });
3008
3010
  const body = res;
3009
3011
  if (body === null || !("item" in body) || body.item === null || body.item === void 0) {
3010
- throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`${label} not found`, { code: "NOT_FOUND", category: "not_found" });
3012
+ throw new (0, _chunkZ7YT72SScjs.NotFoundError)(`${label} not found`, { code: "NOT_FOUND", category: "not_found" });
3011
3013
  }
3012
3014
  return body.item;
3013
3015
  }
3014
3016
  async function moveToCompany(_resource, sourceContactId, destinationCompanyId, opts = {}, http) {
3015
- const sourceId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, sourceContactId, "sourceContactId");
3016
- const destId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, destinationCompanyId, "destinationCompanyId");
3017
- const source = await fetchRecord2(http, `/V1.0/Contacts/${sourceId}`, `Contact ${sourceId}`);
3017
+ const sourceId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, sourceContactId, "sourceContactId");
3018
+ const destId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, destinationCompanyId, "destinationCompanyId");
3019
+ const source = await fetchRecord2(http, `/V1.0/Contacts/${sourceId}`, `Contact ${sourceId}`, { maxRetries: opts.maxRetries });
3018
3020
  const companyID = source.companyID;
3019
3021
  if (typeof companyID !== "number" || companyID < 0) {
3020
- throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`Contact ${sourceId} has no companyID (cannot scope the source delete)`);
3022
+ throw new (0, _chunkZ7YT72SScjs.NotFoundError)(`Contact ${sourceId} has no companyID (cannot scope the source delete)`);
3021
3023
  }
3022
3024
  if (opts.lastModifiedDate !== void 0) {
3023
3025
  const current = source.lastModifiedDate;
3024
3026
  if (current !== opts.lastModifiedDate) {
3025
- throw new (0, _chunkKB2ANVVRcjs.StaleObjectError)(
3027
+ throw new (0, _chunkZ7YT72SScjs.StaleObjectError)(
3026
3028
  `moveToCompany: source contact ${sourceId} was modified since the snapshot (expected lastModifiedDate ${opts.lastModifiedDate}, current ${typeof current === "string" ? current : "unknown"})`,
3027
3029
  { operation: "contacts.moveToCompany", resourceIds: [sourceId, destId] }
3028
3030
  );
3029
3031
  }
3030
3032
  }
3031
- await fetchRecord2(http, `/V1.0/Companies/${destId}`, `Company ${destId}`);
3033
+ await fetchRecord2(http, `/V1.0/Companies/${destId}`, `Company ${destId}`, { maxRetries: opts.maxRetries });
3032
3034
  const email = typeof source.emailAddress === "string" ? source.emailAddress : "";
3033
3035
  if (email !== "") {
3034
3036
  const res = await http.request({
@@ -3044,10 +3046,10 @@ async function moveToCompany(_resource, sourceContactId, destinationCompanyId, o
3044
3046
  },
3045
3047
  operation: "contacts.moveToCompany"
3046
3048
  });
3047
- const items = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
3049
+ const items = _chunkZ7YT72SScjs.unwrapItems.call(void 0, res).items;
3048
3050
  const clash = items.find((c) => String(c.id) !== String(sourceId));
3049
3051
  if (clash !== void 0) {
3050
- throw new (0, _chunkKB2ANVVRcjs.ConflictError)(
3052
+ throw new (0, _chunkZ7YT72SScjs.ConflictError)(
3051
3053
  `Contact email "${email}" already exists under company ${destId} (contact ${String(clash.id)}); aborting the move`,
3052
3054
  { resourceIds: [sourceId, destId] }
3053
3055
  );
@@ -3061,7 +3063,7 @@ async function moveToCompany(_resource, sourceContactId, destinationCompanyId, o
3061
3063
  if (opts.dryRun === true) {
3062
3064
  const warnings = [];
3063
3065
  if (opts.deleteSource === true) warnings.push("the source contact will be deleted after the move");
3064
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
3066
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0, {
3065
3067
  operation: "contacts.moveToCompany",
3066
3068
  method: "POST",
3067
3069
  path: `/V1.0/Companies/${destId}/Contacts`,
@@ -3081,19 +3083,21 @@ async function moveToCompany(_resource, sourceContactId, destinationCompanyId, o
3081
3083
  method: "POST",
3082
3084
  path: `/V1.0/Companies/${destId}/Contacts`,
3083
3085
  body,
3084
- operation: "contacts.moveToCompany"
3086
+ operation: "contacts.moveToCompany",
3087
+ maxRetries: opts.maxRetries
3085
3088
  });
3086
3089
  const createdBody = created;
3087
3090
  const newId = createdBody !== null ? _nullishCoalesce(createdBody.itemId, () => ( createdBody.id)) : void 0;
3088
3091
  if (typeof newId !== "number") {
3089
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("contacts.moveToCompany: vendor create response has no itemId");
3092
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("contacts.moveToCompany: vendor create response has no itemId");
3090
3093
  }
3091
3094
  let sourceDeleted = false;
3092
3095
  if (opts.deleteSource === true) {
3093
3096
  await http.request({
3094
3097
  method: "DELETE",
3095
3098
  path: `/V1.0/Companies/${companyID}/Contacts/${sourceId}`,
3096
- operation: "contacts.moveToCompany"
3099
+ operation: "contacts.moveToCompany",
3100
+ maxRetries: opts.maxRetries
3097
3101
  });
3098
3102
  sourceDeleted = true;
3099
3103
  }
@@ -3104,7 +3108,7 @@ var UPSERT_MAX_DISCOVERY_MERGES = 3;
3104
3108
  var EMAIL_SHAPE = /^.+@.+/;
3105
3109
  var SAFE_CONTACT_CREATE_DEFAULTS = {};
3106
3110
  var DEDUP_LIMIT = 10;
3107
- var CompanyNotFoundError = class extends _chunkKB2ANVVRcjs.AutotaskError {
3111
+ var CompanyNotFoundError = class extends _chunkZ7YT72SScjs.AutotaskError {
3108
3112
  constructor(message, options = {}) {
3109
3113
  super(message, {
3110
3114
  code: "COMPANY_NOT_FOUND",
@@ -3115,7 +3119,7 @@ var CompanyNotFoundError = class extends _chunkKB2ANVVRcjs.AutotaskError {
3115
3119
  this.name = "CompanyNotFoundError";
3116
3120
  }
3117
3121
  };
3118
- var ContactCreateFailedError = class extends _chunkKB2ANVVRcjs.AutotaskError {
3122
+ var ContactCreateFailedError = class extends _chunkZ7YT72SScjs.AutotaskError {
3119
3123
  /** The vendor-named fields (empty when the 500 body named nothing parseable). */
3120
3124
 
3121
3125
  constructor(message, vendorFields, options = {}) {
@@ -3125,28 +3129,28 @@ var ContactCreateFailedError = class extends _chunkKB2ANVVRcjs.AutotaskError {
3125
3129
  }
3126
3130
  };
3127
3131
  async function upsertByEmail(resource, companyID, email, extra, opts, http) {
3128
- const cid = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, companyID, "companyID");
3132
+ const cid = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, companyID, "companyID");
3129
3133
  if (typeof email !== "string" || !EMAIL_SHAPE.test(email)) {
3130
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
3134
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
3131
3135
  `upsertByEmail: email must be a non-empty string with the @ shape (a non-empty local part + a non-empty domain; got ${JSON.stringify(email)})`,
3132
3136
  { operation: OP_UPSERT_EMAIL }
3133
3137
  );
3134
3138
  }
3135
3139
  if (extra !== void 0) {
3136
3140
  if (extra.isActive !== void 0 && typeof extra.isActive !== "boolean" && extra.isActive !== 0 && extra.isActive !== 1) {
3137
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
3141
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
3138
3142
  `upsertByEmail: extra.isActive must be a boolean (mapped to the zone-correct number 1/0) or a raw 0/1 number (got ${String(extra.isActive)})`,
3139
3143
  { operation: OP_UPSERT_EMAIL }
3140
3144
  );
3141
3145
  }
3142
3146
  if (extra.firstName !== void 0 && (typeof extra.firstName !== "string" || extra.firstName === "")) {
3143
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("upsertByEmail: extra.firstName must be a non-empty string (or omitted \u2014 the node defaults it to the email local-part)", { operation: OP_UPSERT_EMAIL });
3147
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("upsertByEmail: extra.firstName must be a non-empty string (or omitted \u2014 the node defaults it to the email local-part)", { operation: OP_UPSERT_EMAIL });
3144
3148
  }
3145
3149
  if (extra.lastName !== void 0 && typeof extra.lastName !== "string") {
3146
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("upsertByEmail: extra.lastName must be a string (or omitted \u2014 the node defaults it to the non-empty neutral value Unknown)", { operation: OP_UPSERT_EMAIL });
3150
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("upsertByEmail: extra.lastName must be a string (or omitted \u2014 the node defaults it to the non-empty neutral value Unknown)", { operation: OP_UPSERT_EMAIL });
3147
3151
  }
3148
3152
  }
3149
- const parentRes = await http.request({ method: "GET", path: `/V1.0/Companies/${cid}`, operation: OP_UPSERT_EMAIL });
3153
+ const parentRes = await http.request({ method: "GET", path: `/V1.0/Companies/${cid}`, operation: OP_UPSERT_EMAIL, maxRetries: opts.maxRetries });
3150
3154
  const parentBody = parentRes;
3151
3155
  if (parentBody === null || !("item" in parentBody) || parentBody.item === null || parentBody.item === void 0) {
3152
3156
  throw new CompanyNotFoundError(
@@ -3164,7 +3168,7 @@ async function upsertByEmail(resource, companyID, email, extra, opts, http) {
3164
3168
  const match = q.items[0];
3165
3169
  if (match !== void 0) {
3166
3170
  if (opts.dryRun === true) {
3167
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
3171
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0,
3168
3172
  {
3169
3173
  operation: OP_UPSERT_EMAIL,
3170
3174
  method: "POST",
@@ -3185,16 +3189,16 @@ async function upsertByEmail(resource, companyID, email, extra, opts, http) {
3185
3189
  return { id: Number(match.id), created: false, existing: match };
3186
3190
  }
3187
3191
  const localPart = email.split("@")[0];
3188
- const isActive = _optionalChain([extra, 'optionalAccess', _26 => _26.isActive]) === void 0 ? true : extra.isActive;
3192
+ const isActive = _optionalChain([extra, 'optionalAccess', _28 => _28.isActive]) === void 0 ? true : extra.isActive;
3189
3193
  const body = {
3190
3194
  emailAddress: email,
3191
3195
  companyID: cid,
3192
- firstName: _nullishCoalesce(_optionalChain([extra, 'optionalAccess', _27 => _27.firstName]), () => ( localPart)),
3193
- lastName: _nullishCoalesce(_optionalChain([extra, 'optionalAccess', _28 => _28.lastName]), () => ( "Unknown")),
3196
+ firstName: _nullishCoalesce(_optionalChain([extra, 'optionalAccess', _29 => _29.firstName]), () => ( localPart)),
3197
+ lastName: _nullishCoalesce(_optionalChain([extra, 'optionalAccess', _30 => _30.lastName]), () => ( "Unknown")),
3194
3198
  isActive: typeof isActive === "boolean" ? isActive ? 1 : 0 : isActive
3195
3199
  };
3196
3200
  if (opts.dryRun === true) {
3197
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
3201
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0,
3198
3202
  {
3199
3203
  operation: OP_UPSERT_EMAIL,
3200
3204
  method: "POST",
@@ -3214,11 +3218,11 @@ async function upsertByEmail(resource, companyID, email, extra, opts, http) {
3214
3218
  let merges = 0;
3215
3219
  for (; ; ) {
3216
3220
  try {
3217
- const created = await resource.create(cid, body, {});
3221
+ const created = await resource.create(cid, body, { maxRetries: opts.maxRetries });
3218
3222
  return { id: created.id, created: true };
3219
3223
  } catch (err) {
3220
- if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) throw err;
3221
- const named = (_nullishCoalesce(_chunkKB2ANVVRcjs.parseVendorErrors.call(void 0, err.vendorError), () => ( []))).map((e) => e.field).filter((f) => f !== void 0);
3224
+ if (!_chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) throw err;
3225
+ const named = (_nullishCoalesce(_chunkZ7YT72SScjs.parseVendorErrors.call(void 0, err.vendorError), () => ( []))).map((e) => e.field).filter((f) => f !== void 0);
3222
3226
  const seen = /* @__PURE__ */ new Set();
3223
3227
  const unique = [...named].filter((f) => seen.has(f) ? false : (seen.add(f), true));
3224
3228
  const hasDefault = unique.some((f) => SAFE_CONTACT_CREATE_DEFAULTS[f] !== void 0);
@@ -3232,7 +3236,7 @@ async function upsertByEmail(resource, companyID, email, extra, opts, http) {
3232
3236
  }
3233
3237
  continue;
3234
3238
  }
3235
- const detail = _chunkKB2ANVVRcjs.formatVendorDetail.call(void 0, err.vendorError);
3239
+ const detail = _chunkZ7YT72SScjs.formatVendorDetail.call(void 0, err.vendorError);
3236
3240
  throw new ContactCreateFailedError(
3237
3241
  `upsertByEmail: the vendor rejected the contact create${unique.length > 0 ? ` naming field(s) ${unique.join(", ")}` : ""} (no proven-safe default \u2014 the required set is fully filled by the node)${detail ? ` \u2014 ${detail}` : ""}`,
3238
3242
  unique,
@@ -3248,7 +3252,7 @@ async function upsertByEmail(resource, companyID, email, extra, opts, http) {
3248
3252
  }
3249
3253
 
3250
3254
  // src/resources/contacts.ts
3251
- var ContactsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3255
+ var ContactsResource = class extends _chunkZ7YT72SScjs.BaseResource {
3252
3256
  constructor(http, pageSize) {
3253
3257
  super(http, {
3254
3258
  key: "contacts",
@@ -3293,14 +3297,14 @@ var ContactsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3293
3297
  async update(parentId, id, data, opts = {}) {
3294
3298
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
3295
3299
  await this.guardStaleBeforeMutation(id, opts, "contacts.update", parentId);
3296
- return this.updateScopedRaw(parentId, id, data);
3300
+ return this.updateScopedRaw(parentId, id, data, opts);
3297
3301
  }
3298
3302
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
3299
3303
  * envelope and never issues the delete. */
3300
3304
  async delete(parentId, id, opts = {}) {
3301
3305
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
3302
3306
  await this.guardStaleBeforeMutation(id, opts, "contacts.delete", parentId);
3303
- return this.deleteScopedRaw(parentId, id);
3307
+ return this.deleteScopedRaw(parentId, id, opts);
3304
3308
  }
3305
3309
  /** Resolve a Contact from a numeric id (or, where the vendor indexes a primary text field,
3306
3310
  * from an exact match on firstName / lastName). A numeric id miss throws NOT_FOUND; a complete
@@ -3340,7 +3344,7 @@ var ContactsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3340
3344
  };
3341
3345
 
3342
3346
  // src/resources/contact_webhooks.ts
3343
- var ContactWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3347
+ var ContactWebhooksResource = class extends _chunkZ7YT72SScjs.BaseResource {
3344
3348
  constructor(http, pageSize) {
3345
3349
  super(http, {
3346
3350
  key: "contact_webhooks",
@@ -3396,7 +3400,7 @@ var ContactWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3396
3400
  async delete(id, opts = {}) {
3397
3401
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
3398
3402
  await this.guardStaleBeforeMutation(id, opts, "contact_webhooks.delete");
3399
- return this.deleteGlobal(id);
3403
+ return this.deleteGlobal(id, opts);
3400
3404
  }
3401
3405
  /** Resolve a ContactWebhook from a numeric id (or, where the vendor indexes a primary text field,
3402
3406
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -3416,7 +3420,7 @@ var ContactWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3416
3420
  };
3417
3421
 
3418
3422
  // src/resources/contract_billing_rules.ts
3419
- var ContractBillingRulesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3423
+ var ContractBillingRulesResource = class extends _chunkZ7YT72SScjs.BaseResource {
3420
3424
  constructor(http, pageSize) {
3421
3425
  super(http, {
3422
3426
  key: "contract_billing_rules",
@@ -3459,14 +3463,14 @@ var ContractBillingRulesResource = class extends _chunkKB2ANVVRcjs.BaseResource
3459
3463
  async update(parentId, id, data, opts = {}) {
3460
3464
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
3461
3465
  await this.guardStaleBeforeMutation(id, opts, "contract_billing_rules.update", parentId);
3462
- return this.updateScopedRaw(parentId, id, data);
3466
+ return this.updateScopedRaw(parentId, id, data, opts);
3463
3467
  }
3464
3468
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
3465
3469
  * envelope and never issues the delete. */
3466
3470
  async delete(parentId, id, opts = {}) {
3467
3471
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
3468
3472
  await this.guardStaleBeforeMutation(id, opts, "contract_billing_rules.delete", parentId);
3469
- return this.deleteScopedRaw(parentId, id);
3473
+ return this.deleteScopedRaw(parentId, id, opts);
3470
3474
  }
3471
3475
  /** Resolve a ContractBillingRule from a numeric id (or, where the vendor indexes a primary text field,
3472
3476
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -3482,7 +3486,7 @@ var ContractBillingRulesResource = class extends _chunkKB2ANVVRcjs.BaseResource
3482
3486
  };
3483
3487
 
3484
3488
  // src/resources/contract_block_hour_factors.ts
3485
- var ContractBlockHourFactorsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3489
+ var ContractBlockHourFactorsResource = class extends _chunkZ7YT72SScjs.BaseResource {
3486
3490
  constructor(http, pageSize) {
3487
3491
  super(http, {
3488
3492
  key: "contract_block_hour_factors",
@@ -3525,7 +3529,7 @@ var ContractBlockHourFactorsResource = class extends _chunkKB2ANVVRcjs.BaseResou
3525
3529
  async update(parentId, id, data, opts = {}) {
3526
3530
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
3527
3531
  await this.guardStaleBeforeMutation(id, opts, "contract_block_hour_factors.update", parentId);
3528
- return this.updateScopedRaw(parentId, id, data);
3532
+ return this.updateScopedRaw(parentId, id, data, opts);
3529
3533
  }
3530
3534
  /** Resolve a ContractBlockHourFactor from a numeric id (or, where the vendor indexes a primary text field,
3531
3535
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -3541,7 +3545,7 @@ var ContractBlockHourFactorsResource = class extends _chunkKB2ANVVRcjs.BaseResou
3541
3545
  };
3542
3546
 
3543
3547
  // src/resources/contract_blocks.ts
3544
- var ContractBlocksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3548
+ var ContractBlocksResource = class extends _chunkZ7YT72SScjs.BaseResource {
3545
3549
  constructor(http, pageSize) {
3546
3550
  super(http, {
3547
3551
  key: "contract_blocks",
@@ -3584,7 +3588,7 @@ var ContractBlocksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3584
3588
  async update(parentId, id, data, opts = {}) {
3585
3589
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
3586
3590
  await this.guardStaleBeforeMutation(id, opts, "contract_blocks.update", parentId);
3587
- return this.updateScopedRaw(parentId, id, data);
3591
+ return this.updateScopedRaw(parentId, id, data, opts);
3588
3592
  }
3589
3593
  /** Resolve a ContractBlock from a numeric id (or, where the vendor indexes a primary text field,
3590
3594
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -3600,7 +3604,7 @@ var ContractBlocksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3600
3604
  };
3601
3605
 
3602
3606
  // src/resources/contract_charges.ts
3603
- var ContractChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3607
+ var ContractChargesResource = class extends _chunkZ7YT72SScjs.BaseResource {
3604
3608
  constructor(http, pageSize) {
3605
3609
  super(http, {
3606
3610
  key: "contract_charges",
@@ -3644,14 +3648,14 @@ var ContractChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3644
3648
  async update(parentId, id, data, opts = {}) {
3645
3649
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
3646
3650
  await this.guardStaleBeforeMutation(id, opts, "contract_charges.update", parentId);
3647
- return this.updateScopedRaw(parentId, id, data);
3651
+ return this.updateScopedRaw(parentId, id, data, opts);
3648
3652
  }
3649
3653
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
3650
3654
  * envelope and never issues the delete. */
3651
3655
  async delete(parentId, id, opts = {}) {
3652
3656
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
3653
3657
  await this.guardStaleBeforeMutation(id, opts, "contract_charges.delete", parentId);
3654
- return this.deleteScopedRaw(parentId, id);
3658
+ return this.deleteScopedRaw(parentId, id, opts);
3655
3659
  }
3656
3660
  /** Resolve a ContractCharge from a numeric id (or, where the vendor indexes a primary text field,
3657
3661
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -3671,7 +3675,7 @@ var ContractChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3671
3675
  };
3672
3676
 
3673
3677
  // src/resources/contract_exclusion_billing_codes.ts
3674
- var ContractExclusionBillingCodesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3678
+ var ContractExclusionBillingCodesResource = class extends _chunkZ7YT72SScjs.BaseResource {
3675
3679
  constructor(http, pageSize) {
3676
3680
  super(http, {
3677
3681
  key: "contract_exclusion_billing_codes",
@@ -3712,7 +3716,7 @@ var ContractExclusionBillingCodesResource = class extends _chunkKB2ANVVRcjs.Base
3712
3716
  async delete(parentId, id, opts = {}) {
3713
3717
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
3714
3718
  await this.guardStaleBeforeMutation(id, opts, "contract_exclusion_billing_codes.delete", parentId);
3715
- return this.deleteScopedRaw(parentId, id);
3719
+ return this.deleteScopedRaw(parentId, id, opts);
3716
3720
  }
3717
3721
  /** Resolve a ContractExclusionBillingCode from a numeric id (or, where the vendor indexes a primary text field,
3718
3722
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -3728,7 +3732,7 @@ var ContractExclusionBillingCodesResource = class extends _chunkKB2ANVVRcjs.Base
3728
3732
  };
3729
3733
 
3730
3734
  // src/resources/contract_exclusion_roles.ts
3731
- var ContractExclusionRolesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3735
+ var ContractExclusionRolesResource = class extends _chunkZ7YT72SScjs.BaseResource {
3732
3736
  constructor(http, pageSize) {
3733
3737
  super(http, {
3734
3738
  key: "contract_exclusion_roles",
@@ -3769,7 +3773,7 @@ var ContractExclusionRolesResource = class extends _chunkKB2ANVVRcjs.BaseResourc
3769
3773
  async delete(parentId, id, opts = {}) {
3770
3774
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
3771
3775
  await this.guardStaleBeforeMutation(id, opts, "contract_exclusion_roles.delete", parentId);
3772
- return this.deleteScopedRaw(parentId, id);
3776
+ return this.deleteScopedRaw(parentId, id, opts);
3773
3777
  }
3774
3778
  /** Resolve a ContractExclusionRoles from a numeric id (or, where the vendor indexes a primary text field,
3775
3779
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -3785,7 +3789,7 @@ var ContractExclusionRolesResource = class extends _chunkKB2ANVVRcjs.BaseResourc
3785
3789
  };
3786
3790
 
3787
3791
  // src/resources/contract_exclusion_set_excluded_roles.ts
3788
- var ContractExclusionSetExcludedRolesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3792
+ var ContractExclusionSetExcludedRolesResource = class extends _chunkZ7YT72SScjs.BaseResource {
3789
3793
  constructor(http, pageSize) {
3790
3794
  super(http, {
3791
3795
  key: "contract_exclusion_set_excluded_roles",
@@ -3826,7 +3830,7 @@ var ContractExclusionSetExcludedRolesResource = class extends _chunkKB2ANVVRcjs.
3826
3830
  async delete(parentId, id, opts = {}) {
3827
3831
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
3828
3832
  await this.guardStaleBeforeMutation(id, opts, "contract_exclusion_set_excluded_roles.delete", parentId);
3829
- return this.deleteScopedRaw(parentId, id);
3833
+ return this.deleteScopedRaw(parentId, id, opts);
3830
3834
  }
3831
3835
  /** Resolve a ContractExclusionSetExcludedRoles from a numeric id (or, where the vendor indexes a primary text field,
3832
3836
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -3842,7 +3846,7 @@ var ContractExclusionSetExcludedRolesResource = class extends _chunkKB2ANVVRcjs.
3842
3846
  };
3843
3847
 
3844
3848
  // src/resources/contract_exclusion_set_excluded_work_types.ts
3845
- var ContractExclusionSetExcludedWorkTypesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3849
+ var ContractExclusionSetExcludedWorkTypesResource = class extends _chunkZ7YT72SScjs.BaseResource {
3846
3850
  constructor(http, pageSize) {
3847
3851
  super(http, {
3848
3852
  key: "contract_exclusion_set_excluded_work_types",
@@ -3883,7 +3887,7 @@ var ContractExclusionSetExcludedWorkTypesResource = class extends _chunkKB2ANVVR
3883
3887
  async delete(parentId, id, opts = {}) {
3884
3888
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
3885
3889
  await this.guardStaleBeforeMutation(id, opts, "contract_exclusion_set_excluded_work_types.delete", parentId);
3886
- return this.deleteScopedRaw(parentId, id);
3890
+ return this.deleteScopedRaw(parentId, id, opts);
3887
3891
  }
3888
3892
  /** Resolve a ContractExclusionSetExcludedWorkTypes from a numeric id (or, where the vendor indexes a primary text field,
3889
3893
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -3899,7 +3903,7 @@ var ContractExclusionSetExcludedWorkTypesResource = class extends _chunkKB2ANVVR
3899
3903
  };
3900
3904
 
3901
3905
  // src/resources/contract_exclusion_sets.ts
3902
- var ContractExclusionSetsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3906
+ var ContractExclusionSetsResource = class extends _chunkZ7YT72SScjs.BaseResource {
3903
3907
  constructor(http, pageSize) {
3904
3908
  super(http, {
3905
3909
  key: "contract_exclusion_sets",
@@ -3953,7 +3957,7 @@ var ContractExclusionSetsResource = class extends _chunkKB2ANVVRcjs.BaseResource
3953
3957
  async delete(id, opts = {}) {
3954
3958
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
3955
3959
  await this.guardStaleBeforeMutation(id, opts, "contract_exclusion_sets.delete");
3956
- return this.deleteGlobal(id);
3960
+ return this.deleteGlobal(id, opts);
3957
3961
  }
3958
3962
  /** Resolve a ContractExclusionSets from a numeric id (or, where the vendor indexes a primary text field,
3959
3963
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -3973,7 +3977,7 @@ var ContractExclusionSetsResource = class extends _chunkKB2ANVVRcjs.BaseResource
3973
3977
  };
3974
3978
 
3975
3979
  // src/resources/contract_milestones.ts
3976
- var ContractMilestonesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
3980
+ var ContractMilestonesResource = class extends _chunkZ7YT72SScjs.BaseResource {
3977
3981
  constructor(http, pageSize) {
3978
3982
  super(http, {
3979
3983
  key: "contract_milestones",
@@ -4016,7 +4020,7 @@ var ContractMilestonesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4016
4020
  async update(parentId, id, data, opts = {}) {
4017
4021
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
4018
4022
  await this.guardStaleBeforeMutation(id, opts, "contract_milestones.update", parentId);
4019
- return this.updateScopedRaw(parentId, id, data);
4023
+ return this.updateScopedRaw(parentId, id, data, opts);
4020
4024
  }
4021
4025
  /** Resolve a ContractMilestone from a numeric id (or, where the vendor indexes a primary text field,
4022
4026
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -4032,7 +4036,7 @@ var ContractMilestonesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4032
4036
  };
4033
4037
 
4034
4038
  // src/resources/contract_notes.ts
4035
- var ContractNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4039
+ var ContractNotesResource = class extends _chunkZ7YT72SScjs.BaseResource {
4036
4040
  constructor(http, pageSize) {
4037
4041
  super(http, {
4038
4042
  key: "contract_notes",
@@ -4075,7 +4079,7 @@ var ContractNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4075
4079
  async update(parentId, id, data, opts = {}) {
4076
4080
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
4077
4081
  await this.guardStaleBeforeMutation(id, opts, "contract_notes.update", parentId);
4078
- return this.updateScopedRaw(parentId, id, data);
4082
+ return this.updateScopedRaw(parentId, id, data, opts);
4079
4083
  }
4080
4084
  /** Resolve a ContractNote from a numeric id (or, where the vendor indexes a primary text field,
4081
4085
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -4091,7 +4095,7 @@ var ContractNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4091
4095
  };
4092
4096
 
4093
4097
  // src/resources/contract_rates.ts
4094
- var ContractRatesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4098
+ var ContractRatesResource = class extends _chunkZ7YT72SScjs.BaseResource {
4095
4099
  constructor(http, pageSize) {
4096
4100
  super(http, {
4097
4101
  key: "contract_rates",
@@ -4134,7 +4138,7 @@ var ContractRatesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4134
4138
  async update(parentId, id, data, opts = {}) {
4135
4139
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
4136
4140
  await this.guardStaleBeforeMutation(id, opts, "contract_rates.update", parentId);
4137
- return this.updateScopedRaw(parentId, id, data);
4141
+ return this.updateScopedRaw(parentId, id, data, opts);
4138
4142
  }
4139
4143
  /** Resolve a ContractRate from a numeric id (or, where the vendor indexes a primary text field,
4140
4144
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -4150,7 +4154,7 @@ var ContractRatesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4150
4154
  };
4151
4155
 
4152
4156
  // src/resources/contract_retainers.ts
4153
- var ContractRetainersResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4157
+ var ContractRetainersResource = class extends _chunkZ7YT72SScjs.BaseResource {
4154
4158
  constructor(http, pageSize) {
4155
4159
  super(http, {
4156
4160
  key: "contract_retainers",
@@ -4193,7 +4197,7 @@ var ContractRetainersResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4193
4197
  async update(parentId, id, data, opts = {}) {
4194
4198
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
4195
4199
  await this.guardStaleBeforeMutation(id, opts, "contract_retainers.update", parentId);
4196
- return this.updateScopedRaw(parentId, id, data);
4200
+ return this.updateScopedRaw(parentId, id, data, opts);
4197
4201
  }
4198
4202
  /** Resolve a ContractRetainers from a numeric id (or, where the vendor indexes a primary text field,
4199
4203
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -4209,7 +4213,7 @@ var ContractRetainersResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4209
4213
  };
4210
4214
 
4211
4215
  // src/resources/contract_role_costs.ts
4212
- var ContractRoleCostsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4216
+ var ContractRoleCostsResource = class extends _chunkZ7YT72SScjs.BaseResource {
4213
4217
  constructor(http, pageSize) {
4214
4218
  super(http, {
4215
4219
  key: "contract_role_costs",
@@ -4252,7 +4256,7 @@ var ContractRoleCostsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4252
4256
  async update(parentId, id, data, opts = {}) {
4253
4257
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
4254
4258
  await this.guardStaleBeforeMutation(id, opts, "contract_role_costs.update", parentId);
4255
- return this.updateScopedRaw(parentId, id, data);
4259
+ return this.updateScopedRaw(parentId, id, data, opts);
4256
4260
  }
4257
4261
  /** Resolve a ContractRoleCosts from a numeric id (or, where the vendor indexes a primary text field,
4258
4262
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -4268,7 +4272,7 @@ var ContractRoleCostsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4268
4272
  };
4269
4273
 
4270
4274
  // src/resources/contract_service_adjustments.ts
4271
- var ContractServiceAdjustmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4275
+ var ContractServiceAdjustmentsResource = class extends _chunkZ7YT72SScjs.BaseResource {
4272
4276
  constructor(http, pageSize) {
4273
4277
  super(http, {
4274
4278
  key: "contract_service_adjustments",
@@ -4302,7 +4306,7 @@ var ContractServiceAdjustmentsResource = class extends _chunkKB2ANVVRcjs.BaseRes
4302
4306
  };
4303
4307
 
4304
4308
  // src/resources/contract_service_bundle_adjustments.ts
4305
- var ContractServiceBundleAdjustmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4309
+ var ContractServiceBundleAdjustmentsResource = class extends _chunkZ7YT72SScjs.BaseResource {
4306
4310
  constructor(http, pageSize) {
4307
4311
  super(http, {
4308
4312
  key: "contract_service_bundle_adjustments",
@@ -4336,7 +4340,7 @@ var ContractServiceBundleAdjustmentsResource = class extends _chunkKB2ANVVRcjs.B
4336
4340
  };
4337
4341
 
4338
4342
  // src/resources/contract_service_bundles.ts
4339
- var ContractServiceBundlesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4343
+ var ContractServiceBundlesResource = class extends _chunkZ7YT72SScjs.BaseResource {
4340
4344
  constructor(http, pageSize) {
4341
4345
  super(http, {
4342
4346
  key: "contract_service_bundles",
@@ -4379,7 +4383,7 @@ var ContractServiceBundlesResource = class extends _chunkKB2ANVVRcjs.BaseResourc
4379
4383
  async update(parentId, id, data, opts = {}) {
4380
4384
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
4381
4385
  await this.guardStaleBeforeMutation(id, opts, "contract_service_bundles.update", parentId);
4382
- return this.updateScopedRaw(parentId, id, data);
4386
+ return this.updateScopedRaw(parentId, id, data, opts);
4383
4387
  }
4384
4388
  /** Resolve a ContractServiceBundle from a numeric id (or, where the vendor indexes a primary text field,
4385
4389
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -4395,7 +4399,7 @@ var ContractServiceBundlesResource = class extends _chunkKB2ANVVRcjs.BaseResourc
4395
4399
  };
4396
4400
 
4397
4401
  // src/resources/contract_service_bundle_units.ts
4398
- var ContractServiceBundleUnitsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4402
+ var ContractServiceBundleUnitsResource = class extends _chunkZ7YT72SScjs.BaseResource {
4399
4403
  constructor(http, pageSize) {
4400
4404
  super(http, {
4401
4405
  key: "contract_service_bundle_units",
@@ -4437,7 +4441,7 @@ var ContractServiceBundleUnitsResource = class extends _chunkKB2ANVVRcjs.BaseRes
4437
4441
  };
4438
4442
 
4439
4443
  // src/resources/contract_services.ts
4440
- var ContractServicesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4444
+ var ContractServicesResource = class extends _chunkZ7YT72SScjs.BaseResource {
4441
4445
  constructor(http, pageSize) {
4442
4446
  super(http, {
4443
4447
  key: "contract_services",
@@ -4480,7 +4484,7 @@ var ContractServicesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4480
4484
  async update(parentId, id, data, opts = {}) {
4481
4485
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
4482
4486
  await this.guardStaleBeforeMutation(id, opts, "contract_services.update", parentId);
4483
- return this.updateScopedRaw(parentId, id, data);
4487
+ return this.updateScopedRaw(parentId, id, data, opts);
4484
4488
  }
4485
4489
  /** Resolve a ContractService from a numeric id (or, where the vendor indexes a primary text field,
4486
4490
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -4496,7 +4500,7 @@ var ContractServicesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4496
4500
  };
4497
4501
 
4498
4502
  // src/resources/contract_service_units.ts
4499
- var ContractServiceUnitsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
4503
+ var ContractServiceUnitsResource = class extends _chunkZ7YT72SScjs.BaseResource {
4500
4504
  constructor(http, pageSize) {
4501
4505
  super(http, {
4502
4506
  key: "contract_service_units",
@@ -4688,7 +4692,7 @@ function dateToDay(v) {
4688
4692
  }
4689
4693
  function validateProfitabilityOptions(contractId, opts) {
4690
4694
  if (opts === void 0 || (typeof opts !== "object" || opts === null || Array.isArray(opts))) {
4691
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
4695
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
4692
4696
  `profitability: opts is required \u2014 the options object with dateFrom and dateTo (YYYY-MM-DD) (got ${opts === void 0 ? "undefined" : Array.isArray(opts) ? "an array" : typeof opts})`,
4693
4697
  { operation: "contracts.profitability" }
4694
4698
  );
@@ -4765,12 +4769,12 @@ function validateProfitabilityOptions(contractId, opts) {
4765
4769
  }
4766
4770
  }
4767
4771
  try {
4768
- _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, contractId, "contractId");
4772
+ _chunkZ7YT72SScjs.parseIdentifier.call(void 0, contractId, "contractId");
4769
4773
  } catch (err) {
4770
- problems.push(err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.message : "contractId must be a vendor numeric id");
4774
+ problems.push(err instanceof _chunkZ7YT72SScjs.AutotaskError ? err.message : "contractId must be a vendor numeric id");
4771
4775
  }
4772
4776
  if (problems.length > 0) {
4773
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
4777
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
4774
4778
  `profitability: ${problems.length} problem(s) found pre-request (zero wire was issued)
4775
4779
  - ` + problems.join("\n- "),
4776
4780
  { operation: "contracts.profitability" }
@@ -4801,7 +4805,7 @@ async function boundedPart2(http, path, conditions, limit, operation, includeFie
4801
4805
  body,
4802
4806
  operation
4803
4807
  });
4804
- const { items, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, operation);
4808
+ const { items, pageDetails } = _chunkZ7YT72SScjs.unwrapItems.call(void 0, res, operation);
4805
4809
  const capped = items.length >= limit;
4806
4810
  return { items, capped, hasMore: capped && pageDetails.nextPageUrl != null };
4807
4811
  }
@@ -4815,23 +4819,23 @@ async function fetchByIdsPart(http, entityPath, ids, fields, operation) {
4815
4819
  const byKey = /* @__PURE__ */ new Map();
4816
4820
  const misses = [];
4817
4821
  const notes = [];
4818
- for (let c = 0; c < unique.length; c += _chunkKB2ANVVRcjs.FETCH_BY_IDS_CHUNK_SIZE) {
4819
- const chunk = unique.slice(c, c + _chunkKB2ANVVRcjs.FETCH_BY_IDS_CHUNK_SIZE);
4822
+ for (let c = 0; c < unique.length; c += _chunkZ7YT72SScjs.FETCH_BY_IDS_CHUNK_SIZE) {
4823
+ const chunk = unique.slice(c, c + _chunkZ7YT72SScjs.FETCH_BY_IDS_CHUNK_SIZE);
4820
4824
  const chunkKeys = new Set(chunk);
4821
4825
  try {
4822
4826
  const body = {
4823
- MaxRecords: _chunkKB2ANVVRcjs.FETCH_BY_IDS_CHUNK_SIZE,
4827
+ MaxRecords: _chunkZ7YT72SScjs.FETCH_BY_IDS_CHUNK_SIZE,
4824
4828
  filter: [{ field: "id", op: "in", value: chunk }],
4825
4829
  IncludeFields: fields
4826
4830
  };
4827
4831
  const res = await http.request({ method: "POST", idempotent: true, path: `${entityPath}/query`, body, operation });
4828
- const { items: rows } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, operation);
4832
+ const { items: rows } = _chunkZ7YT72SScjs.unwrapItems.call(void 0, res, operation);
4829
4833
  for (const row of rows) {
4830
4834
  const k = num2(row.id);
4831
4835
  if (k > 0 && chunkKeys.has(k)) byKey.set(k, row);
4832
4836
  }
4833
4837
  } catch (err) {
4834
- const code = err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.code : "SERVER_ERROR";
4838
+ const code = err instanceof _chunkZ7YT72SScjs.AutotaskError ? err.code : "SERVER_ERROR";
4835
4839
  for (const k of chunk) {
4836
4840
  if (!byKey.has(k) && !misses.some((m) => m.id === k)) misses.push({ id: k, code, message: err instanceof Error ? err.message : String(err) });
4837
4841
  }
@@ -4841,11 +4845,11 @@ async function fetchByIdsPart(http, entityPath, ids, fields, operation) {
4841
4845
  for (const k of queryMissed) {
4842
4846
  try {
4843
4847
  const res = await http.request({ method: "GET", path: `${entityPath}/${k}`, operation });
4844
- byKey.set(k, _chunkKB2ANVVRcjs.unwrapItem.call(void 0, res, k, operation));
4848
+ byKey.set(k, _chunkZ7YT72SScjs.unwrapItem.call(void 0, res, k, operation));
4845
4849
  } catch (err) {
4846
- if (err instanceof _chunkKB2ANVVRcjs.NotFoundError) {
4850
+ if (err instanceof _chunkZ7YT72SScjs.NotFoundError) {
4847
4851
  misses.push({ id: k, code: "NOT_FOUND", message: err.message });
4848
- } else if (err instanceof _chunkKB2ANVVRcjs.AutotaskError) {
4852
+ } else if (err instanceof _chunkZ7YT72SScjs.AutotaskError) {
4849
4853
  misses.push({ id: k, code: err.code, message: err.message });
4850
4854
  } else {
4851
4855
  misses.push({ id: k, code: "SERVER_ERROR", message: err instanceof Error ? err.message : String(err) });
@@ -4968,7 +4972,7 @@ async function degradable(read) {
4968
4972
  try {
4969
4973
  return await read();
4970
4974
  } catch (err) {
4971
- if (!(err instanceof _chunkKB2ANVVRcjs.AutotaskError)) throw err;
4975
+ if (!(err instanceof _chunkZ7YT72SScjs.AutotaskError)) throw err;
4972
4976
  return { items: [], capped: false, hasMore: false, absent: err.code, absentMessage: err.message };
4973
4977
  }
4974
4978
  }
@@ -4989,7 +4993,7 @@ function dedupeSortCap(ids, limit) {
4989
4993
  async function profitability(resource, contractId, opts, rawHttp) {
4990
4994
  const v = validateProfitabilityOptions(contractId, opts);
4991
4995
  const OP2 = "contracts.profitability";
4992
- const id = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, contractId, "contractId");
4996
+ const id = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, contractId, "contractId");
4993
4997
  const idNum = typeof id === "number" ? id : Number(id);
4994
4998
  const wires = { issued: 0, requests: 0, budget: PROFITABILITY_WIRE_BUDGET };
4995
4999
  const asOf = (/* @__PURE__ */ new Date()).toISOString();
@@ -5017,7 +5021,7 @@ async function profitability(resource, contractId, opts, rawHttp) {
5017
5021
  status: st.status,
5018
5022
  blindSurface: st.blindSurface,
5019
5023
  note: [st.note, ..._nullishCoalesce(extraNotes, () => ( []))].filter(Boolean).join(" | ") || void 0,
5020
- emptyReason: raw.items.length === 0 && st.status === "ok" ? _optionalChain([_chunkKB2ANVVRcjs.EMPTY_REASON_STAMPS, 'access', _29 => _29[key], 'optionalAccess', _30 => _30.query]) : void 0
5024
+ emptyReason: raw.items.length === 0 && st.status === "ok" ? _optionalChain([_chunkZ7YT72SScjs.EMPTY_REASON_STAMPS, 'access', _31 => _31[key], 'optionalAccess', _32 => _32.query]) : void 0
5021
5025
  };
5022
5026
  };
5023
5027
  const truncatedMonths = {};
@@ -5030,7 +5034,7 @@ async function profitability(resource, contractId, opts, rawHttp) {
5030
5034
  truncatedMonths[name] = tm;
5031
5035
  return { part, rows: wp.items };
5032
5036
  };
5033
- const contractCached = _optionalChain([rawHttp, 'access', _31 => _31.readCache, 'optionalAccess', _32 => _32.get, 'call', _33 => _33(`/V1.0/Contracts/${id}`)]) !== void 0;
5037
+ const contractCached = _optionalChain([rawHttp, 'access', _33 => _33.readCache, 'optionalAccess', _34 => _34.get, 'call', _35 => _35(`/V1.0/Contracts/${id}`)]) !== void 0;
5034
5038
  const contract = await resource.get(id);
5035
5039
  wires.issued += 1;
5036
5040
  if (!contractCached) wires.requests += 1;
@@ -5047,12 +5051,12 @@ async function profitability(resource, contractId, opts, rawHttp) {
5047
5051
  path: `/V1.0/Companies/${companyID}`,
5048
5052
  operation: OP2
5049
5053
  });
5050
- const item = _chunkKB2ANVVRcjs.unwrapItem.call(void 0, res, companyID, OP2);
5054
+ const item = _chunkZ7YT72SScjs.unwrapItem.call(void 0, res, companyID, OP2);
5051
5055
  customer = _nullishCoalesce(item, () => ( null));
5052
5056
  customerStatus = "ok";
5053
5057
  } catch (err) {
5054
- if (!(err instanceof _chunkKB2ANVVRcjs.AutotaskError)) throw err;
5055
- if (!(err instanceof _chunkKB2ANVVRcjs.NotFoundError)) {
5058
+ if (!(err instanceof _chunkZ7YT72SScjs.AutotaskError)) throw err;
5059
+ if (!(err instanceof _chunkZ7YT72SScjs.NotFoundError)) {
5056
5060
  customerStatus = "absent";
5057
5061
  customerAbsent = err.code;
5058
5062
  }
@@ -5063,9 +5067,9 @@ async function profitability(resource, contractId, opts, rawHttp) {
5063
5067
  if (contractType > 0) {
5064
5068
  wires.issued += 1;
5065
5069
  try {
5066
- contractTypeLabel = await _asyncNullishCoalesce(await _asyncOptionalChain([(await readPicklists(http, "/V1.0/Contracts", OP2)), 'access', async _34 => _34.get, 'call', async _35 => _35("contractType"), 'optionalAccess', async _36 => _36.get, 'call', async _37 => _37(contractType)]), async () => ( null));
5070
+ contractTypeLabel = await _asyncNullishCoalesce(await _asyncOptionalChain([(await readPicklists(http, "/V1.0/Contracts", OP2)), 'access', async _36 => _36.get, 'call', async _37 => _37("contractType"), 'optionalAccess', async _38 => _38.get, 'call', async _39 => _39(contractType)]), async () => ( null));
5067
5071
  } catch (err) {
5068
- if (!(err instanceof _chunkKB2ANVVRcjs.AutotaskError)) throw err;
5072
+ if (!(err instanceof _chunkZ7YT72SScjs.AutotaskError)) throw err;
5069
5073
  }
5070
5074
  }
5071
5075
  const contractTypeKnown = contractTypeLabel !== null;
@@ -5112,8 +5116,8 @@ async function profitability(resource, contractId, opts, rawHttp) {
5112
5116
  if (invoiceIds.length === 0) {
5113
5117
  invoicesPart = skipPart("skipped: the billing part has no invoiceIDs (zero wire)");
5114
5118
  } else {
5115
- const capped = capJoinSet2(invoiceIds, _chunkKB2ANVVRcjs.FETCH_BY_IDS_MAX_ITEMS);
5116
- if (capped.truncated) wires.note = (wires.note ? wires.note + " | " : "") + `invoiceJoinTruncated: the join set is capped at ${_chunkKB2ANVVRcjs.FETCH_BY_IDS_MAX_ITEMS} of ${capped.total} invoice ids (the fetch-by-ids cap) \u2014 the figures cover the returned set only`;
5119
+ const capped = capJoinSet2(invoiceIds, _chunkZ7YT72SScjs.FETCH_BY_IDS_MAX_ITEMS);
5120
+ if (capped.truncated) wires.note = (wires.note ? wires.note + " | " : "") + `invoiceJoinTruncated: the join set is capped at ${_chunkZ7YT72SScjs.FETCH_BY_IDS_MAX_ITEMS} of ${capped.total} invoice ids (the fetch-by-ids cap) \u2014 the figures cover the returned set only`;
5117
5121
  const fb = await fetchByIdsPart(http, "/V1.0/Invoices", capped.ids, ["id", "invoiceNumber", "invoiceTotal", "paidDate", "isVoided", "dueDate"], OP2);
5118
5122
  wires.issued += 1;
5119
5123
  invoices = fb.items;
@@ -5145,7 +5149,7 @@ async function profitability(resource, contractId, opts, rawHttp) {
5145
5149
  }
5146
5150
  }
5147
5151
  } catch (err) {
5148
- statusNote = `the tickets.status field catalog read failed (${err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.code : "SERVER_ERROR"}: ${err instanceof Error ? err.message : String(err)}) \u2014 the open-status labels are unavailable`;
5152
+ statusNote = `the tickets.status field catalog read failed (${err instanceof _chunkZ7YT72SScjs.AutotaskError ? err.code : "SERVER_ERROR"}: ${err instanceof Error ? err.message : String(err)}) \u2014 the open-status labels are unavailable`;
5149
5153
  }
5150
5154
  let ticketsOpenPart;
5151
5155
  let openTickets = [];
@@ -5164,8 +5168,8 @@ async function profitability(resource, contractId, opts, rawHttp) {
5164
5168
  if (resourceIds.length === 0) {
5165
5169
  resourcesPart = skipPart("skipped: the time part has no resourceIDs (zero wire)");
5166
5170
  } else {
5167
- const capped = capJoinSet2(resourceIds, _chunkKB2ANVVRcjs.FETCH_BY_IDS_MAX_ITEMS);
5168
- if (capped.truncated) wires.note = (wires.note ? wires.note + " | " : "") + `resourceJoinTruncated: the join set is capped at ${_chunkKB2ANVVRcjs.FETCH_BY_IDS_MAX_ITEMS} of ${capped.total} resource ids (the fetch-by-ids cap) \u2014 the figures cover the returned set only`;
5171
+ const capped = capJoinSet2(resourceIds, _chunkZ7YT72SScjs.FETCH_BY_IDS_MAX_ITEMS);
5172
+ if (capped.truncated) wires.note = (wires.note ? wires.note + " | " : "") + `resourceJoinTruncated: the join set is capped at ${_chunkZ7YT72SScjs.FETCH_BY_IDS_MAX_ITEMS} of ${capped.total} resource ids (the fetch-by-ids cap) \u2014 the figures cover the returned set only`;
5169
5173
  const fb = await fetchByIdsPart(http, "/V1.0/Resources", capped.ids, ["id", "internalCost", "firstName", "lastName", "isActive", "userType"], OP2);
5170
5174
  wires.issued += 1;
5171
5175
  resources = fb.items;
@@ -5222,7 +5226,7 @@ async function profitability(resource, contractId, opts, rawHttp) {
5222
5226
  if (cis.length === 0) {
5223
5227
  subscriptionsPart = skipPart("skipped: the CI join found no configuration items \u2014 the subscriptions part is not evaluable (zero wire)");
5224
5228
  } else {
5225
- const ciIds = capJoinSet2(cis.map((c) => num2(c["id"])).filter((n) => n > 0), _chunkKB2ANVVRcjs.FETCH_BY_IDS_MAX_ITEMS);
5229
+ const ciIds = capJoinSet2(cis.map((c) => num2(c["id"])).filter((n) => n > 0), _chunkZ7YT72SScjs.FETCH_BY_IDS_MAX_ITEMS);
5226
5230
  const subCond = [{ field: "configurationItemID", op: "in", value: ciIds.ids }];
5227
5231
  const raw = await readPart("/V1.0/Subscriptions/query", subCond, ["id", "subscriptionName", "configurationItemID", "periodCost", "periodPrice", "periodType", "effectiveDate", "expirationDate", "status", "totalCost"]);
5228
5232
  subscriptions = raw.items;
@@ -5232,15 +5236,15 @@ async function profitability(resource, contractId, opts, rawHttp) {
5232
5236
  try {
5233
5237
  labels = await readPicklists(http, "/V1.0/Subscriptions", OP2);
5234
5238
  } catch (err) {
5235
- if (!(err instanceof _chunkKB2ANVVRcjs.AutotaskError)) throw err;
5239
+ if (!(err instanceof _chunkZ7YT72SScjs.AutotaskError)) throw err;
5236
5240
  }
5237
5241
  }
5238
5242
  for (const x of subscriptions) {
5239
5243
  const sid = num2(x["id"]);
5240
- const periodLabel = _optionalChain([labels, 'optionalAccess', _38 => _38.get, 'call', _39 => _39("periodType"), 'optionalAccess', _40 => _40.get, 'call', _41 => _41(num2(x["periodType"]))]);
5244
+ const periodLabel = _optionalChain([labels, 'optionalAccess', _40 => _40.get, 'call', _41 => _41("periodType"), 'optionalAccess', _42 => _42.get, 'call', _43 => _43(num2(x["periodType"]))]);
5241
5245
  subFactor.set(sid, periodMonthlyFactor(x["periodType"], periodLabel));
5242
5246
  if (isOneTimePeriod(x["periodType"], periodLabel)) oneTimeSubs.add(sid);
5243
- const statusLabel = _optionalChain([labels, 'optionalAccess', _42 => _42.get, 'call', _43 => _43("status"), 'optionalAccess', _44 => _44.get, 'call', _45 => _45(num2(x["status"]))]);
5247
+ const statusLabel = _optionalChain([labels, 'optionalAccess', _44 => _44.get, 'call', _45 => _45("status"), 'optionalAccess', _46 => _46.get, 'call', _47 => _47(num2(x["status"]))]);
5244
5248
  const notActive = statusLabel !== void 0 ? NOT_ACTIVE_LABEL_RE.test(statusLabel) : labels === null && SUBSCRIPTION_NOT_ACTIVE_STATUS_IDS.has(num2(x["status"]));
5245
5249
  if (notActive) cancelledSubs.add(sid);
5246
5250
  }
@@ -5794,7 +5798,7 @@ async function profitability(resource, contractId, opts, rawHttp) {
5794
5798
  }
5795
5799
 
5796
5800
  // src/resources/contracts.ts
5797
- var ContractsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
5801
+ var ContractsResource = class extends _chunkZ7YT72SScjs.BaseResource {
5798
5802
  constructor(http, pageSize) {
5799
5803
  super(http, {
5800
5804
  key: "contracts",
@@ -5865,7 +5869,7 @@ var ContractsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
5865
5869
  };
5866
5870
 
5867
5871
  // src/resources/contract_ticket_purchases.ts
5868
- var ContractTicketPurchasesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
5872
+ var ContractTicketPurchasesResource = class extends _chunkZ7YT72SScjs.BaseResource {
5869
5873
  constructor(http, pageSize) {
5870
5874
  super(http, {
5871
5875
  key: "contract_ticket_purchases",
@@ -5908,7 +5912,7 @@ var ContractTicketPurchasesResource = class extends _chunkKB2ANVVRcjs.BaseResour
5908
5912
  async update(parentId, id, data, opts = {}) {
5909
5913
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
5910
5914
  await this.guardStaleBeforeMutation(id, opts, "contract_ticket_purchases.update", parentId);
5911
- return this.updateScopedRaw(parentId, id, data);
5915
+ return this.updateScopedRaw(parentId, id, data, opts);
5912
5916
  }
5913
5917
  /** Resolve a ContractTicketPurchases from a numeric id (or, where the vendor indexes a primary text field,
5914
5918
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -5924,7 +5928,7 @@ var ContractTicketPurchasesResource = class extends _chunkKB2ANVVRcjs.BaseResour
5924
5928
  };
5925
5929
 
5926
5930
  // src/resources/countries.ts
5927
- var CountriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
5931
+ var CountriesResource = class extends _chunkZ7YT72SScjs.BaseResource {
5928
5932
  constructor(http, pageSize) {
5929
5933
  super(http, {
5930
5934
  key: "countries",
@@ -5983,7 +5987,7 @@ var CountriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
5983
5987
  };
5984
5988
 
5985
5989
  // src/resources/departments.ts
5986
- var DepartmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
5990
+ var DepartmentsResource = class extends _chunkZ7YT72SScjs.BaseResource {
5987
5991
  constructor(http, pageSize) {
5988
5992
  super(http, {
5989
5993
  key: "departments",
@@ -6050,7 +6054,7 @@ var DepartmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6050
6054
  };
6051
6055
 
6052
6056
  // src/resources/domain_registrars.ts
6053
- var DomainRegistrarsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6057
+ var DomainRegistrarsResource = class extends _chunkZ7YT72SScjs.BaseResource {
6054
6058
  constructor(http, pageSize) {
6055
6059
  super(http, {
6056
6060
  key: "domain_registrars",
@@ -6133,7 +6137,7 @@ var EntityInformationResource = class {
6133
6137
  };
6134
6138
 
6135
6139
  // src/resources/expense_item_attachments.ts
6136
- var ExpenseItemAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6140
+ var ExpenseItemAttachmentsResource = class extends _chunkZ7YT72SScjs.BaseResource {
6137
6141
  constructor(http, pageSize) {
6138
6142
  super(http, {
6139
6143
  key: "expense_item_attachments",
@@ -6175,7 +6179,7 @@ var ExpenseItemAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResourc
6175
6179
  async delete(parentId, id, opts = {}) {
6176
6180
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
6177
6181
  await this.guardStaleBeforeMutation(id, opts, "expense_item_attachments.delete", parentId);
6178
- return this.deleteScopedModel(parentId, id);
6182
+ return this.deleteScopedModel(parentId, id, opts);
6179
6183
  }
6180
6184
  /** Download the attachment bytes (GET .../{id}/data; node-proven path, quirk #9) → Buffer. */
6181
6185
  async download(parentId, id) {
@@ -6195,7 +6199,7 @@ var ExpenseItemAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResourc
6195
6199
  };
6196
6200
 
6197
6201
  // src/resources/expense_items.ts
6198
- var ExpenseItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6202
+ var ExpenseItemsResource = class extends _chunkZ7YT72SScjs.BaseResource {
6199
6203
  constructor(http, pageSize) {
6200
6204
  super(http, {
6201
6205
  key: "expense_items",
@@ -6238,7 +6242,7 @@ var ExpenseItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6238
6242
  async update(parentId, id, data, opts = {}) {
6239
6243
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
6240
6244
  await this.guardStaleBeforeMutation(id, opts, "expense_items.update", parentId);
6241
- return this.updateScopedRaw(parentId, id, data);
6245
+ return this.updateScopedRaw(parentId, id, data, opts);
6242
6246
  }
6243
6247
  /** Resolve a ExpenseItem from a numeric id (or, where the vendor indexes a primary text field,
6244
6248
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -6254,7 +6258,7 @@ var ExpenseItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6254
6258
  };
6255
6259
 
6256
6260
  // src/resources/expense_reports.ts
6257
- var ExpenseReportsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6261
+ var ExpenseReportsResource = class extends _chunkZ7YT72SScjs.BaseResource {
6258
6262
  constructor(http, pageSize) {
6259
6263
  super(http, {
6260
6264
  key: "expense_reports",
@@ -6321,7 +6325,7 @@ var ExpenseReportsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6321
6325
  };
6322
6326
 
6323
6327
  // src/resources/holiday_sets.ts
6324
- var HolidaySetsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6328
+ var HolidaySetsResource = class extends _chunkZ7YT72SScjs.BaseResource {
6325
6329
  constructor(http, pageSize) {
6326
6330
  super(http, {
6327
6331
  key: "holiday_sets",
@@ -6374,7 +6378,7 @@ var HolidaySetsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6374
6378
  async delete(id, opts = {}) {
6375
6379
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
6376
6380
  await this.guardStaleBeforeMutation(id, opts, "holiday_sets.delete");
6377
- return this.deleteGlobal(id);
6381
+ return this.deleteGlobal(id, opts);
6378
6382
  }
6379
6383
  /** Resolve a HolidaySet from a numeric id (or, where the vendor indexes a primary text field,
6380
6384
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -6390,7 +6394,7 @@ var HolidaySetsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6390
6394
  };
6391
6395
 
6392
6396
  // src/resources/holidays.ts
6393
- var HolidaysResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6397
+ var HolidaysResource = class extends _chunkZ7YT72SScjs.BaseResource {
6394
6398
  constructor(http, pageSize) {
6395
6399
  super(http, {
6396
6400
  key: "holidays",
@@ -6433,14 +6437,14 @@ var HolidaysResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6433
6437
  async update(parentId, id, data, opts = {}) {
6434
6438
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
6435
6439
  await this.guardStaleBeforeMutation(id, opts, "holidays.update", parentId);
6436
- return this.updateScopedRaw(parentId, id, data);
6440
+ return this.updateScopedRaw(parentId, id, data, opts);
6437
6441
  }
6438
6442
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
6439
6443
  * envelope and never issues the delete. */
6440
6444
  async delete(parentId, id, opts = {}) {
6441
6445
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
6442
6446
  await this.guardStaleBeforeMutation(id, opts, "holidays.delete", parentId);
6443
- return this.deleteScopedRaw(parentId, id);
6447
+ return this.deleteScopedRaw(parentId, id, opts);
6444
6448
  }
6445
6449
  /** Resolve a Holiday from a numeric id (or, where the vendor indexes a primary text field,
6446
6450
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -6462,10 +6466,10 @@ var PATH_SUFFIX = {
6462
6466
  transfer: "StockedItemsTransfer"
6463
6467
  };
6464
6468
  async function stockedItems(_resource, kind, parentId, data, opts = {}, http) {
6465
- const numericParent = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, parentId, "parentId");
6469
+ const numericParent = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, parentId, "parentId");
6466
6470
  const suffix = PATH_SUFFIX[kind];
6467
6471
  if (opts.dryRun === true) {
6468
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
6472
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0, {
6469
6473
  operation: `inventory_products.stockedItems${suffix.slice("StockedItems".length)}`,
6470
6474
  method: "POST",
6471
6475
  path: `/V1.0/InventoryProducts/${numericParent}/${suffix}`,
@@ -6479,13 +6483,14 @@ async function stockedItems(_resource, kind, parentId, data, opts = {}, http) {
6479
6483
  method: "POST",
6480
6484
  path: `/V1.0/InventoryProducts/${numericParent}/${suffix}`,
6481
6485
  body: data,
6482
- operation: `inventory_products.stockedItems${suffix.slice("StockedItems".length)}`
6486
+ operation: `inventory_products.stockedItems${suffix.slice("StockedItems".length)}`,
6487
+ maxRetries: opts.maxRetries
6483
6488
  });
6484
- return _chunkKB2ANVVRcjs.unwrapOperation.call(void 0, res);
6489
+ return _chunkZ7YT72SScjs.unwrapOperation.call(void 0, res);
6485
6490
  }
6486
6491
 
6487
6492
  // src/resources/inventory_products.ts
6488
- var InventoryProductsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6493
+ var InventoryProductsResource = class extends _chunkZ7YT72SScjs.BaseResource {
6489
6494
  constructor(http, pageSize) {
6490
6495
  super(http, {
6491
6496
  key: "inventory_products",
@@ -6538,7 +6543,7 @@ var InventoryProductsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6538
6543
  async delete(id, opts = {}) {
6539
6544
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
6540
6545
  await this.guardStaleBeforeMutation(id, opts, "inventory_products.delete");
6541
- return this.deleteGlobal(id);
6546
+ return this.deleteGlobal(id, opts);
6542
6547
  }
6543
6548
  /** Resolve a InventoryProduct from a numeric id (or, where the vendor indexes a primary text field,
6544
6549
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -6567,7 +6572,7 @@ var InventoryProductsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6567
6572
 
6568
6573
  // src/resources/special/invoices.ts
6569
6574
  async function markup(_resource, id, format, http) {
6570
- const numericId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
6575
+ const numericId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, id, "id");
6571
6576
  const suffix = format === "html" ? "InvoiceMarkupHtml" : "InvoiceMarkupXml";
6572
6577
  const res = await http.request({
6573
6578
  method: "GET",
@@ -6576,7 +6581,7 @@ async function markup(_resource, id, format, http) {
6576
6581
  });
6577
6582
  const body = res;
6578
6583
  if (body === null || typeof body !== "object" || typeof body.invoiceMarkup !== "string") {
6579
- throw new (0, _chunkKB2ANVVRcjs.AutotaskError)(
6584
+ throw new (0, _chunkZ7YT72SScjs.AutotaskError)(
6580
6585
  `Expected the InvoiceMarkupResultModel envelope { invoiceMarkup: string } for invoice ${numericId}; got a different shape`,
6581
6586
  { code: "INVALID_RESPONSE", category: "server", resourceIds: [numericId] }
6582
6587
  );
@@ -6584,44 +6589,44 @@ async function markup(_resource, id, format, http) {
6584
6589
  return body.invoiceMarkup;
6585
6590
  }
6586
6591
  async function pdf(_resource, id, http) {
6587
- const numericId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
6592
+ const numericId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, id, "id");
6588
6593
  const res = await http.request({
6589
6594
  method: "GET",
6590
6595
  path: `/V1.0/Invoices/${numericId}/InvoicePdf`,
6591
6596
  operation: "invoices.pdf"
6592
6597
  });
6593
- return _chunkKB2ANVVRcjs.decodeFileData.call(void 0, res);
6598
+ return _chunkZ7YT72SScjs.decodeFileData.call(void 0, res);
6594
6599
  }
6595
6600
  async function windowQuery2(_resource, kind, http, opts) {
6596
- const now = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _46 => _46.now]), () => ( /* @__PURE__ */ new Date()));
6597
- const tz = _optionalChain([opts, 'optionalAccess', _47 => _47.tz]) === void 0 ? void 0 : validateZone(opts.tz, `invoices.${kind}`);
6601
+ const now = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _48 => _48.now]), () => ( /* @__PURE__ */ new Date()));
6602
+ const tz = _optionalChain([opts, 'optionalAccess', _49 => _49.tz]) === void 0 ? void 0 : validateZone(opts.tz, `invoices.${kind}`);
6598
6603
  return dateWindowQuery(
6599
6604
  http,
6600
6605
  "/V1.0/Invoices/query",
6601
6606
  "invoiceDateTime",
6602
6607
  kind,
6603
- clampWindowLimit(_optionalChain([opts, 'optionalAccess', _48 => _48.limit])),
6608
+ clampWindowLimit(_optionalChain([opts, 'optionalAccess', _50 => _50.limit])),
6604
6609
  `invoices.${kind}`,
6605
6610
  now,
6606
6611
  tz
6607
6612
  );
6608
6613
  }
6609
6614
  async function customRange2(_resource, from, to, http, opts) {
6610
- const zone = _optionalChain([opts, 'optionalAccess', _49 => _49.tz]) === void 0 ? void 0 : validateZone(opts.tz, "invoices.customRange");
6615
+ const zone = _optionalChain([opts, 'optionalAccess', _51 => _51.tz]) === void 0 ? void 0 : validateZone(opts.tz, "invoices.customRange");
6611
6616
  return customRangeQuery(
6612
6617
  http,
6613
6618
  "/V1.0/Invoices/query",
6614
6619
  "invoiceDateTime",
6615
6620
  from,
6616
6621
  to,
6617
- clampWindowLimit(_optionalChain([opts, 'optionalAccess', _50 => _50.limit])),
6622
+ clampWindowLimit(_optionalChain([opts, 'optionalAccess', _52 => _52.limit])),
6618
6623
  "invoices.customRange",
6619
6624
  zone
6620
6625
  );
6621
6626
  }
6622
6627
 
6623
6628
  // src/resources/invoices.ts
6624
- var InvoicesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6629
+ var InvoicesResource = class extends _chunkZ7YT72SScjs.BaseResource {
6625
6630
  constructor(http, pageSize) {
6626
6631
  super(http, {
6627
6632
  key: "invoices",
@@ -6751,7 +6756,7 @@ var ModulesResource = class {
6751
6756
  };
6752
6757
 
6753
6758
  // src/resources/notification_history.ts
6754
- var NotificationHistoryResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6759
+ var NotificationHistoryResource = class extends _chunkZ7YT72SScjs.BaseResource {
6755
6760
  constructor(http, pageSize) {
6756
6761
  super(http, {
6757
6762
  key: "notification_history",
@@ -6790,7 +6795,7 @@ var NotificationHistoryResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6790
6795
  };
6791
6796
 
6792
6797
  // src/resources/opportunities.ts
6793
- var OpportunitiesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6798
+ var OpportunitiesResource = class extends _chunkZ7YT72SScjs.BaseResource {
6794
6799
  constructor(http, pageSize) {
6795
6800
  super(http, {
6796
6801
  key: "opportunities",
@@ -6852,7 +6857,7 @@ var OpportunitiesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6852
6857
  };
6853
6858
 
6854
6859
  // src/resources/opportunity_attachments.ts
6855
- var OpportunityAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6860
+ var OpportunityAttachmentsResource = class extends _chunkZ7YT72SScjs.BaseResource {
6856
6861
  constructor(http, pageSize) {
6857
6862
  super(http, {
6858
6863
  key: "opportunity_attachments",
@@ -6894,7 +6899,7 @@ var OpportunityAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResourc
6894
6899
  async delete(parentId, id, opts = {}) {
6895
6900
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
6896
6901
  await this.guardStaleBeforeMutation(id, opts, "opportunity_attachments.delete", parentId);
6897
- return this.deleteScopedModel(parentId, id);
6902
+ return this.deleteScopedModel(parentId, id, opts);
6898
6903
  }
6899
6904
  /** Download the attachment bytes (GET .../{id}/data; node-proven path, quirk #9) → Buffer. */
6900
6905
  async download(parentId, id) {
@@ -6914,7 +6919,7 @@ var OpportunityAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResourc
6914
6919
  };
6915
6920
 
6916
6921
  // src/resources/opportunity_categories.ts
6917
- var OpportunityCategoriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6922
+ var OpportunityCategoriesResource = class extends _chunkZ7YT72SScjs.BaseResource {
6918
6923
  constructor(http, pageSize) {
6919
6924
  super(http, {
6920
6925
  key: "opportunity_categories",
@@ -6973,7 +6978,7 @@ var OpportunityCategoriesResource = class extends _chunkKB2ANVVRcjs.BaseResource
6973
6978
  };
6974
6979
 
6975
6980
  // src/resources/phases.ts
6976
- var PhasesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
6981
+ var PhasesResource = class extends _chunkZ7YT72SScjs.BaseResource {
6977
6982
  constructor(http, pageSize) {
6978
6983
  super(http, {
6979
6984
  key: "phases",
@@ -7016,7 +7021,7 @@ var PhasesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7016
7021
  async update(parentId, id, data, opts = {}) {
7017
7022
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
7018
7023
  await this.guardStaleBeforeMutation(id, opts, "phases.update", parentId);
7019
- return this.updateScopedRaw(parentId, id, data);
7024
+ return this.updateScopedRaw(parentId, id, data, opts);
7020
7025
  }
7021
7026
  /** Resolve a Phase from a numeric id (or, where the vendor indexes a primary text field,
7022
7027
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -7032,7 +7037,7 @@ var PhasesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7032
7037
  };
7033
7038
 
7034
7039
  // src/resources/products.ts
7035
- var ProductsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7040
+ var ProductsResource = class extends _chunkZ7YT72SScjs.BaseResource {
7036
7041
  constructor(http, pageSize) {
7037
7042
  super(http, {
7038
7043
  key: "products",
@@ -7099,7 +7104,7 @@ var ProductsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7099
7104
  };
7100
7105
 
7101
7106
  // src/resources/product_vendors.ts
7102
- var ProductVendorsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7107
+ var ProductVendorsResource = class extends _chunkZ7YT72SScjs.BaseResource {
7103
7108
  constructor(http, pageSize) {
7104
7109
  super(http, {
7105
7110
  key: "product_vendors",
@@ -7142,7 +7147,7 @@ var ProductVendorsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7142
7147
  async update(parentId, id, data, opts = {}) {
7143
7148
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
7144
7149
  await this.guardStaleBeforeMutation(id, opts, "product_vendors.update", parentId);
7145
- return this.updateScopedRaw(parentId, id, data);
7150
+ return this.updateScopedRaw(parentId, id, data, opts);
7146
7151
  }
7147
7152
  /** Resolve a ProductVendors from a numeric id (or, where the vendor indexes a primary text field,
7148
7153
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -7158,7 +7163,7 @@ var ProductVendorsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7158
7163
  };
7159
7164
 
7160
7165
  // src/resources/project_charges.ts
7161
- var ProjectChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7166
+ var ProjectChargesResource = class extends _chunkZ7YT72SScjs.BaseResource {
7162
7167
  constructor(http, pageSize) {
7163
7168
  super(http, {
7164
7169
  key: "project_charges",
@@ -7202,14 +7207,14 @@ var ProjectChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7202
7207
  async update(parentId, id, data, opts = {}) {
7203
7208
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
7204
7209
  await this.guardStaleBeforeMutation(id, opts, "project_charges.update", parentId);
7205
- return this.updateScopedRaw(parentId, id, data);
7210
+ return this.updateScopedRaw(parentId, id, data, opts);
7206
7211
  }
7207
7212
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
7208
7213
  * envelope and never issues the delete. */
7209
7214
  async delete(parentId, id, opts = {}) {
7210
7215
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
7211
7216
  await this.guardStaleBeforeMutation(id, opts, "project_charges.delete", parentId);
7212
- return this.deleteScopedRaw(parentId, id);
7217
+ return this.deleteScopedRaw(parentId, id, opts);
7213
7218
  }
7214
7219
  /** Resolve a ProjectCharge from a numeric id (or, where the vendor indexes a primary text field,
7215
7220
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -7229,7 +7234,7 @@ var ProjectChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7229
7234
  };
7230
7235
 
7231
7236
  // src/resources/project_notes.ts
7232
- var ProjectNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7237
+ var ProjectNotesResource = class extends _chunkZ7YT72SScjs.BaseResource {
7233
7238
  constructor(http, pageSize) {
7234
7239
  super(http, {
7235
7240
  key: "project_notes",
@@ -7272,7 +7277,7 @@ var ProjectNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7272
7277
  async update(parentId, id, data, opts = {}) {
7273
7278
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
7274
7279
  await this.guardStaleBeforeMutation(id, opts, "project_notes.update", parentId);
7275
- return this.updateScopedRaw(parentId, id, data);
7280
+ return this.updateScopedRaw(parentId, id, data, opts);
7276
7281
  }
7277
7282
  /** Resolve a ProjectNote from a numeric id (or, where the vendor indexes a primary text field,
7278
7283
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -7288,7 +7293,7 @@ var ProjectNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7288
7293
  };
7289
7294
 
7290
7295
  // src/resources/projects.ts
7291
- var ProjectsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7296
+ var ProjectsResource = class extends _chunkZ7YT72SScjs.BaseResource {
7292
7297
  constructor(http, pageSize) {
7293
7298
  super(http, {
7294
7299
  key: "projects",
@@ -7365,13 +7370,13 @@ var ProjectsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7365
7370
  const leadResource = await this.contextFetch("/V1.0/Resources", root["projectLeadResourceID"]);
7366
7371
  const result = { project, company, opportunity, leadResource };
7367
7372
  if (opts.names === true) {
7368
- const builder = _chunkKB2ANVVRcjs.createNamePlan.call(void 0, );
7373
+ const builder = _chunkZ7YT72SScjs.createNamePlan.call(void 0, );
7369
7374
  builder.addResource(root["creatorResourceID"]);
7370
7375
  builder.addFk("contract", root["contractID"]);
7371
- const names = await _chunkKB2ANVVRcjs.resolveCompositeNames.call(void 0, this.http, builder.plan(), { maxNameReads: opts.maxNameReads });
7376
+ const names = await _chunkZ7YT72SScjs.resolveCompositeNames.call(void 0, this.http, builder.plan(), { maxNameReads: opts.maxNameReads });
7372
7377
  const row = { ...project };
7373
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "creatorResourceID", (v) => names.resourceName(v));
7374
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "contractID", (v) => names.recordName("contract", v));
7378
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, row, "creatorResourceID", (v) => names.resourceName(v));
7379
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, row, "contractID", (v) => names.recordName("contract", v));
7375
7380
  result.project = row;
7376
7381
  result.names = names.section;
7377
7382
  }
@@ -7380,7 +7385,7 @@ var ProjectsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7380
7385
  };
7381
7386
 
7382
7387
  // src/resources/purchase_approvals.ts
7383
- var PurchaseApprovalsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7388
+ var PurchaseApprovalsResource = class extends _chunkZ7YT72SScjs.BaseResource {
7384
7389
  constructor(http, pageSize) {
7385
7390
  super(http, {
7386
7391
  key: "purchase_approvals",
@@ -7434,7 +7439,7 @@ var PurchaseApprovalsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7434
7439
  };
7435
7440
 
7436
7441
  // src/resources/purchase_order_item_receiving.ts
7437
- var PurchaseOrderItemReceivingResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7442
+ var PurchaseOrderItemReceivingResource = class extends _chunkZ7YT72SScjs.BaseResource {
7438
7443
  constructor(http, pageSize) {
7439
7444
  super(http, {
7440
7445
  key: "purchase_order_item_receiving",
@@ -7484,7 +7489,7 @@ var PurchaseOrderItemReceivingResource = class extends _chunkKB2ANVVRcjs.BaseRes
7484
7489
  };
7485
7490
 
7486
7491
  // src/resources/purchase_order_items.ts
7487
- var PurchaseOrderItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7492
+ var PurchaseOrderItemsResource = class extends _chunkZ7YT72SScjs.BaseResource {
7488
7493
  constructor(http, pageSize) {
7489
7494
  super(http, {
7490
7495
  key: "purchase_order_items",
@@ -7527,7 +7532,7 @@ var PurchaseOrderItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7527
7532
  async update(parentId, id, data, opts = {}) {
7528
7533
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
7529
7534
  await this.guardStaleBeforeMutation(id, opts, "purchase_order_items.update", parentId);
7530
- return this.updateScopedRaw(parentId, id, data);
7535
+ return this.updateScopedRaw(parentId, id, data, opts);
7531
7536
  }
7532
7537
  /** Resolve a PurchaseOrderItems from a numeric id (or, where the vendor indexes a primary text field,
7533
7538
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -7543,7 +7548,7 @@ var PurchaseOrderItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7543
7548
  };
7544
7549
 
7545
7550
  // src/resources/purchase_orders.ts
7546
- var PurchaseOrdersResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7551
+ var PurchaseOrdersResource = class extends _chunkZ7YT72SScjs.BaseResource {
7547
7552
  constructor(http, pageSize) {
7548
7553
  super(http, {
7549
7554
  key: "purchase_orders",
@@ -7605,7 +7610,7 @@ var PurchaseOrdersResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7605
7610
  };
7606
7611
 
7607
7612
  // src/resources/quote_items.ts
7608
- var QuoteItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7613
+ var QuoteItemsResource = class extends _chunkZ7YT72SScjs.BaseResource {
7609
7614
  constructor(http, pageSize) {
7610
7615
  super(http, {
7611
7616
  key: "quote_items",
@@ -7649,14 +7654,14 @@ var QuoteItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7649
7654
  async update(parentId, id, data, opts = {}) {
7650
7655
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
7651
7656
  await this.guardStaleBeforeMutation(id, opts, "quote_items.update", parentId);
7652
- return this.updateScopedRaw(parentId, id, data);
7657
+ return this.updateScopedRaw(parentId, id, data, opts);
7653
7658
  }
7654
7659
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
7655
7660
  * envelope and never issues the delete. */
7656
7661
  async delete(parentId, id, opts = {}) {
7657
7662
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
7658
7663
  await this.guardStaleBeforeMutation(id, opts, "quote_items.delete", parentId);
7659
- return this.deleteScopedRaw(parentId, id);
7664
+ return this.deleteScopedRaw(parentId, id, opts);
7660
7665
  }
7661
7666
  /** Resolve a QuoteItem from a numeric id (or, where the vendor indexes a primary text field,
7662
7667
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -7676,7 +7681,7 @@ var QuoteItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7676
7681
  };
7677
7682
 
7678
7683
  // src/resources/quote_locations.ts
7679
- var QuoteLocationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7684
+ var QuoteLocationsResource = class extends _chunkZ7YT72SScjs.BaseResource {
7680
7685
  constructor(http, pageSize) {
7681
7686
  super(http, {
7682
7687
  key: "quote_locations",
@@ -7741,7 +7746,7 @@ var QuoteLocationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7741
7746
  };
7742
7747
 
7743
7748
  // src/resources/quotes.ts
7744
- var QuotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7749
+ var QuotesResource = class extends _chunkZ7YT72SScjs.BaseResource {
7745
7750
  constructor(http, pageSize) {
7746
7751
  super(http, {
7747
7752
  key: "quotes",
@@ -7808,7 +7813,7 @@ var QuotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7808
7813
  };
7809
7814
 
7810
7815
  // src/resources/quote_templates.ts
7811
- var QuoteTemplatesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7816
+ var QuoteTemplatesResource = class extends _chunkZ7YT72SScjs.BaseResource {
7812
7817
  constructor(http, pageSize) {
7813
7818
  super(http, {
7814
7819
  key: "quote_templates",
@@ -7852,7 +7857,7 @@ var QuoteTemplatesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7852
7857
  };
7853
7858
 
7854
7859
  // src/resources/resource_role_queues.ts
7855
- var ResourceRoleQueuesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7860
+ var ResourceRoleQueuesResource = class extends _chunkZ7YT72SScjs.BaseResource {
7856
7861
  constructor(http, pageSize) {
7857
7862
  super(http, {
7858
7863
  key: "resource_role_queues",
@@ -7895,7 +7900,7 @@ var ResourceRoleQueuesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7895
7900
  async update(parentId, id, data, opts = {}) {
7896
7901
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
7897
7902
  await this.guardStaleBeforeMutation(id, opts, "resource_role_queues.update", parentId);
7898
- return this.updateScopedRaw(parentId, id, data);
7903
+ return this.updateScopedRaw(parentId, id, data, opts);
7899
7904
  }
7900
7905
  /** Resolve a ResourceRoleQueue from a numeric id (or, where the vendor indexes a primary text field,
7901
7906
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -7911,7 +7916,7 @@ var ResourceRoleQueuesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7911
7916
  };
7912
7917
 
7913
7918
  // src/resources/resource_roles.ts
7914
- var ResourceRolesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7919
+ var ResourceRolesResource = class extends _chunkZ7YT72SScjs.BaseResource {
7915
7920
  constructor(http, pageSize) {
7916
7921
  super(http, {
7917
7922
  key: "resource_roles",
@@ -7953,7 +7958,7 @@ var ResourceRolesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7953
7958
  };
7954
7959
 
7955
7960
  // src/resources/resource_skills.ts
7956
- var ResourceSkillsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7961
+ var ResourceSkillsResource = class extends _chunkZ7YT72SScjs.BaseResource {
7957
7962
  constructor(http, pageSize) {
7958
7963
  super(http, {
7959
7964
  key: "resource_skills",
@@ -7988,7 +7993,7 @@ var ResourceSkillsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
7988
7993
  async update(parentId, id, data, opts = {}) {
7989
7994
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
7990
7995
  await this.guardStaleBeforeMutation(id, opts, "resource_skills.update", parentId);
7991
- return this.updateScopedRaw(parentId, id, data);
7996
+ return this.updateScopedRaw(parentId, id, data, opts);
7992
7997
  }
7993
7998
  /** Resolve a ResourceSkill from a numeric id (or, where the vendor indexes a primary text field,
7994
7999
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -8007,16 +8012,16 @@ var ResourceSkillsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8007
8012
  var MAX_TRANSFER_IDS = 500;
8008
8013
  function requirePositiveIds(ids, label) {
8009
8014
  if (!Array.isArray(ids) || ids.length === 0) {
8010
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`${label}: at least one positive integer id is required`);
8015
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`${label}: at least one positive integer id is required`);
8011
8016
  }
8012
8017
  if (ids.length > MAX_TRANSFER_IDS) {
8013
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`${label}: at most ${MAX_TRANSFER_IDS} ids are accepted (bounded fan-out)`);
8018
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`${label}: at most ${MAX_TRANSFER_IDS} ids are accepted (bounded fan-out)`);
8014
8019
  }
8015
8020
  const out = [];
8016
8021
  for (const raw of ids) {
8017
- const id = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, raw, `${label} id`);
8022
+ const id = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, raw, `${label} id`);
8018
8023
  if (typeof id === "number" && id < 1) {
8019
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`${label}: every id must be a positive integer (got ${String(raw)})`);
8024
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`${label}: every id must be a positive integer (got ${String(raw)})`);
8020
8025
  }
8021
8026
  out.push(id);
8022
8027
  }
@@ -8024,7 +8029,7 @@ function requirePositiveIds(ids, label) {
8024
8029
  }
8025
8030
  async function whoAmI(_resource, userName, http) {
8026
8031
  const user = userName.trim();
8027
- if (user === "") throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("whoAmI: the configured UserName is empty");
8032
+ if (user === "") throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("whoAmI: the configured UserName is empty");
8028
8033
  const value = user.includes("@") ? _nullishCoalesce(user.split("@")[0], () => ( "")) : user;
8029
8034
  const res = await http.request({
8030
8035
  method: "POST",
@@ -8033,11 +8038,11 @@ async function whoAmI(_resource, userName, http) {
8033
8038
  body: { MaxRecords: 2, filter: [{ field: "userName", op: "eq", value }] },
8034
8039
  operation: "resources.whoAmI"
8035
8040
  });
8036
- const matches = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
8041
+ const matches = _chunkZ7YT72SScjs.unwrapItems.call(void 0, res).items;
8037
8042
  if (matches.length === 0) return null;
8038
8043
  if (matches.length > 1) {
8039
8044
  const ids = matches.map((m) => m.id).filter((id) => typeof id === "number");
8040
- throw new (0, _chunkKB2ANVVRcjs.ResolutionError)(
8045
+ throw new (0, _chunkZ7YT72SScjs.ResolutionError)(
8041
8046
  `whoAmI: "${value}" is ambiguous (matched ${matches.length} resources)`,
8042
8047
  { code: "RESOLUTION_AMBIGUOUS", resourceIds: ids }
8043
8048
  );
@@ -8046,11 +8051,11 @@ async function whoAmI(_resource, userName, http) {
8046
8051
  }
8047
8052
  async function transferOwnership(_resource, companyIds, destinationResourceId, http, opts) {
8048
8053
  const ids = requirePositiveIds(companyIds, "transferOwnership");
8049
- const destination = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, destinationResourceId, "destinationResourceId");
8054
+ const destination = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, destinationResourceId, "destinationResourceId");
8050
8055
  if (typeof destination === "number" && destination < 1) {
8051
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("transferOwnership: destinationResourceId must be a positive integer");
8056
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("transferOwnership: destinationResourceId must be a positive integer");
8052
8057
  }
8053
- const dryRun = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _51 => _51.dryRun]), () => ( true));
8058
+ const dryRun = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _53 => _53.dryRun]), () => ( true));
8054
8059
  const changes = [];
8055
8060
  const applied = [];
8056
8061
  for (const id of ids) {
@@ -8058,9 +8063,10 @@ async function transferOwnership(_resource, companyIds, destinationResourceId, h
8058
8063
  const res = await http.request({
8059
8064
  method: "GET",
8060
8065
  path: `/V1.0/Companies/${id}`,
8061
- operation: "resources.transferOwnership"
8066
+ operation: "resources.transferOwnership",
8067
+ maxRetries: _optionalChain([opts, 'optionalAccess', _54 => _54.maxRetries])
8062
8068
  });
8063
- const company = _chunkKB2ANVVRcjs.unwrapItem.call(void 0, res, id);
8069
+ const company = _chunkZ7YT72SScjs.unwrapItem.call(void 0, res, id);
8064
8070
  const current = typeof company.ownerResourceID === "number" ? company.ownerResourceID : null;
8065
8071
  changes.push({ id, fromOwnerResourceID: current, toOwnerResourceID: destination });
8066
8072
  if (!dryRun) {
@@ -8068,13 +8074,14 @@ async function transferOwnership(_resource, companyIds, destinationResourceId, h
8068
8074
  method: "PUT",
8069
8075
  path: "/V1.0/Companies",
8070
8076
  body: { id, ownerResourceID: destination },
8071
- operation: "resources.transferOwnership"
8077
+ operation: "resources.transferOwnership",
8078
+ maxRetries: _optionalChain([opts, 'optionalAccess', _55 => _55.maxRetries])
8072
8079
  });
8073
- _chunkKB2ANVVRcjs.unwrapOperation.call(void 0, update);
8080
+ _chunkZ7YT72SScjs.unwrapOperation.call(void 0, update);
8074
8081
  applied.push(id);
8075
8082
  }
8076
8083
  } catch (err) {
8077
- if (!dryRun && err instanceof _chunkKB2ANVVRcjs.AutotaskError) {
8084
+ if (!dryRun && err instanceof _chunkZ7YT72SScjs.AutotaskError) {
8078
8085
  err.resourceIds = [id];
8079
8086
  err.suggestedAction = `Partial transfer: ${applied.length} of ${ids.length} companies were re-owned (ids: ${applied.join(", ") || "none"}); id ${id} failed. Re-run transferOwnership for the remaining ids (from ${id} on).`;
8080
8087
  }
@@ -8084,7 +8091,7 @@ async function transferOwnership(_resource, companyIds, destinationResourceId, h
8084
8091
  if (dryRun) {
8085
8092
  const anyChange = changes.some((c) => c.fromOwnerResourceID !== c.toOwnerResourceID);
8086
8093
  return {
8087
- ..._chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
8094
+ ..._chunkZ7YT72SScjs.buildDryRunResult.call(void 0, {
8088
8095
  operation: "resources.transferOwnership",
8089
8096
  method: "PUT",
8090
8097
  path: "/V1.0/Companies",
@@ -8108,7 +8115,7 @@ async function transferOwnership(_resource, companyIds, destinationResourceId, h
8108
8115
  }
8109
8116
 
8110
8117
  // src/resources/resources.ts
8111
- var ResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8118
+ var ResourcesResource = class extends _chunkZ7YT72SScjs.BaseResource {
8112
8119
 
8113
8120
  constructor(http, clientConfig, pageSize) {
8114
8121
  super(http, {
@@ -8181,7 +8188,7 @@ var ResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8181
8188
 
8182
8189
  // src/resources/special/resource_time_off_additional.ts
8183
8190
  async function getByResource(_resource, resourceId, http) {
8184
- const numericResource = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, resourceId, "resourceId");
8191
+ const numericResource = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, resourceId, "resourceId");
8185
8192
  const res = await http.request({
8186
8193
  method: "GET",
8187
8194
  path: `/V1.0/Resources/${numericResource}/TimeOffAdditional`,
@@ -8195,11 +8202,11 @@ async function getByResource(_resource, resourceId, http) {
8195
8202
  if (typeof item === "object" && !Array.isArray(item)) return [item];
8196
8203
  }
8197
8204
  }
8198
- return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, "resource_time_off_additional.getByResource").items;
8205
+ return _chunkZ7YT72SScjs.unwrapItems.call(void 0, res, "resource_time_off_additional.getByResource").items;
8199
8206
  }
8200
8207
 
8201
8208
  // src/resources/resource_time_off_additional.ts
8202
- var ResourceTimeOffAdditionalResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8209
+ var ResourceTimeOffAdditionalResource = class extends _chunkZ7YT72SScjs.BaseResource {
8203
8210
  constructor(http, pageSize) {
8204
8211
  super(http, {
8205
8212
  key: "resource_time_off_additional",
@@ -8218,7 +8225,7 @@ var ResourceTimeOffAdditionalResource = class extends _chunkKB2ANVVRcjs.BaseReso
8218
8225
  async update(parentId, id, data, opts = {}) {
8219
8226
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
8220
8227
  await this.guardStaleBeforeMutation(id, opts, "resource_time_off_additional.update", parentId);
8221
- return this.updateScopedRaw(parentId, id, data);
8228
+ return this.updateScopedRaw(parentId, id, data, opts);
8222
8229
  }
8223
8230
  /** Resolve a ResourceTimeOffAdditional from a numeric id (or, where the vendor indexes a primary text field,
8224
8231
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -8238,7 +8245,7 @@ var ResourceTimeOffAdditionalResource = class extends _chunkKB2ANVVRcjs.BaseReso
8238
8245
  };
8239
8246
 
8240
8247
  // src/resources/resource_time_off_approvers.ts
8241
- var ResourceTimeOffApproversResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8248
+ var ResourceTimeOffApproversResource = class extends _chunkZ7YT72SScjs.BaseResource {
8242
8249
  constructor(http, pageSize) {
8243
8250
  super(http, {
8244
8251
  key: "resource_time_off_approvers",
@@ -8281,29 +8288,29 @@ var ResourceTimeOffApproversResource = class extends _chunkKB2ANVVRcjs.BaseResou
8281
8288
 
8282
8289
  // src/resources/special/resource_time_off_balances.ts
8283
8290
  async function getByResource2(_resource, resourceId, http) {
8284
- const numericResource = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, resourceId, "resourceId");
8291
+ const numericResource = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, resourceId, "resourceId");
8285
8292
  const res = await http.request({
8286
8293
  method: "GET",
8287
8294
  path: `/V1.0/Resources/${numericResource}/TimeOffBalances`,
8288
8295
  operation: "resource_time_off_balances.getByResource"
8289
8296
  });
8290
- return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, "resource_time_off_balances.getByResource").items;
8297
+ return _chunkZ7YT72SScjs.unwrapItems.call(void 0, res, "resource_time_off_balances.getByResource").items;
8291
8298
  }
8292
8299
  async function getByYear(_resource, resourceId, year, http) {
8293
- const numericResource = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, resourceId, "resourceId");
8300
+ const numericResource = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, resourceId, "resourceId");
8294
8301
  if (!Number.isSafeInteger(year) || year < 1) {
8295
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("getByYear: year must be a positive integer");
8302
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("getByYear: year must be a positive integer");
8296
8303
  }
8297
8304
  const res = await http.request({
8298
8305
  method: "GET",
8299
8306
  path: `/V1.0/Resources/${numericResource}/TimeOffBalances/${year}`,
8300
8307
  operation: "resource_time_off_balances.getByYear"
8301
8308
  });
8302
- return _chunkKB2ANVVRcjs.unwrapItem.call(void 0, res, year, "resource_time_off_balances.getByYear");
8309
+ return _chunkZ7YT72SScjs.unwrapItem.call(void 0, res, year, "resource_time_off_balances.getByYear");
8303
8310
  }
8304
8311
 
8305
8312
  // src/resources/resource_time_off_balances.ts
8306
- var ResourceTimeOffBalancesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8313
+ var ResourceTimeOffBalancesResource = class extends _chunkZ7YT72SScjs.BaseResource {
8307
8314
  constructor(http, pageSize) {
8308
8315
  super(http, {
8309
8316
  key: "resource_time_off_balances",
@@ -8341,7 +8348,7 @@ var ResourceTimeOffBalancesResource = class extends _chunkKB2ANVVRcjs.BaseResour
8341
8348
  };
8342
8349
 
8343
8350
  // src/resources/roles.ts
8344
- var RolesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8351
+ var RolesResource = class extends _chunkZ7YT72SScjs.BaseResource {
8345
8352
  constructor(http, pageSize) {
8346
8353
  super(http, {
8347
8354
  key: "roles",
@@ -8408,7 +8415,7 @@ var RolesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8408
8415
  };
8409
8416
 
8410
8417
  // src/resources/service_calls.ts
8411
- var ServiceCallsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8418
+ var ServiceCallsResource = class extends _chunkZ7YT72SScjs.BaseResource {
8412
8419
  constructor(http, pageSize) {
8413
8420
  super(http, {
8414
8421
  key: "service_calls",
@@ -8461,7 +8468,7 @@ var ServiceCallsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8461
8468
  async delete(id, opts = {}) {
8462
8469
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
8463
8470
  await this.guardStaleBeforeMutation(id, opts, "service_calls.delete");
8464
- return this.deleteGlobal(id);
8471
+ return this.deleteGlobal(id, opts);
8465
8472
  }
8466
8473
  /** Resolve a ServiceCall from a numeric id (or, where the vendor indexes a primary text field,
8467
8474
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -8477,7 +8484,7 @@ var ServiceCallsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8477
8484
  };
8478
8485
 
8479
8486
  // src/resources/service_call_task_resources.ts
8480
- var ServiceCallTaskResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8487
+ var ServiceCallTaskResourcesResource = class extends _chunkZ7YT72SScjs.BaseResource {
8481
8488
  constructor(http, pageSize) {
8482
8489
  super(http, {
8483
8490
  key: "service_call_task_resources",
@@ -8518,7 +8525,7 @@ var ServiceCallTaskResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResou
8518
8525
  async delete(parentId, id, opts = {}) {
8519
8526
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
8520
8527
  await this.guardStaleBeforeMutation(id, opts, "service_call_task_resources.delete", parentId);
8521
- return this.deleteScopedRaw(parentId, id);
8528
+ return this.deleteScopedRaw(parentId, id, opts);
8522
8529
  }
8523
8530
  /** Resolve a ServiceCallTaskResource from a numeric id (or, where the vendor indexes a primary text field,
8524
8531
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -8534,7 +8541,7 @@ var ServiceCallTaskResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResou
8534
8541
  };
8535
8542
 
8536
8543
  // src/resources/service_call_tasks.ts
8537
- var ServiceCallTasksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8544
+ var ServiceCallTasksResource = class extends _chunkZ7YT72SScjs.BaseResource {
8538
8545
  constructor(http, pageSize) {
8539
8546
  super(http, {
8540
8547
  key: "service_call_tasks",
@@ -8575,7 +8582,7 @@ var ServiceCallTasksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8575
8582
  async delete(parentId, id, opts = {}) {
8576
8583
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
8577
8584
  await this.guardStaleBeforeMutation(id, opts, "service_call_tasks.delete", parentId);
8578
- return this.deleteScopedRaw(parentId, id);
8585
+ return this.deleteScopedRaw(parentId, id, opts);
8579
8586
  }
8580
8587
  /** Resolve a ServiceCallTask from a numeric id (or, where the vendor indexes a primary text field,
8581
8588
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -8591,7 +8598,7 @@ var ServiceCallTasksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8591
8598
  };
8592
8599
 
8593
8600
  // src/resources/service_call_ticket_resources.ts
8594
- var ServiceCallTicketResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8601
+ var ServiceCallTicketResourcesResource = class extends _chunkZ7YT72SScjs.BaseResource {
8595
8602
  constructor(http, pageSize) {
8596
8603
  super(http, {
8597
8604
  key: "service_call_ticket_resources",
@@ -8632,7 +8639,7 @@ var ServiceCallTicketResourcesResource = class extends _chunkKB2ANVVRcjs.BaseRes
8632
8639
  async delete(parentId, id, opts = {}) {
8633
8640
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
8634
8641
  await this.guardStaleBeforeMutation(id, opts, "service_call_ticket_resources.delete", parentId);
8635
- return this.deleteScopedRaw(parentId, id);
8642
+ return this.deleteScopedRaw(parentId, id, opts);
8636
8643
  }
8637
8644
  /** Resolve a ServiceCallTicketResource from a numeric id (or, where the vendor indexes a primary text field,
8638
8645
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -8648,7 +8655,7 @@ var ServiceCallTicketResourcesResource = class extends _chunkKB2ANVVRcjs.BaseRes
8648
8655
  };
8649
8656
 
8650
8657
  // src/resources/service_call_tickets.ts
8651
- var ServiceCallTicketsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8658
+ var ServiceCallTicketsResource = class extends _chunkZ7YT72SScjs.BaseResource {
8652
8659
  constructor(http, pageSize) {
8653
8660
  super(http, {
8654
8661
  key: "service_call_tickets",
@@ -8689,7 +8696,7 @@ var ServiceCallTicketsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8689
8696
  async delete(parentId, id, opts = {}) {
8690
8697
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
8691
8698
  await this.guardStaleBeforeMutation(id, opts, "service_call_tickets.delete", parentId);
8692
- return this.deleteScopedRaw(parentId, id);
8699
+ return this.deleteScopedRaw(parentId, id, opts);
8693
8700
  }
8694
8701
  /** Resolve a ServiceCallTicket from a numeric id (or, where the vendor indexes a primary text field,
8695
8702
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -8705,7 +8712,7 @@ var ServiceCallTicketsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8705
8712
  };
8706
8713
 
8707
8714
  // src/resources/service_level_agreement_results.ts
8708
- var ServiceLevelAgreementResultsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8715
+ var ServiceLevelAgreementResultsResource = class extends _chunkZ7YT72SScjs.BaseResource {
8709
8716
  constructor(http, pageSize) {
8710
8717
  super(http, {
8711
8718
  key: "service_level_agreement_results",
@@ -8744,7 +8751,7 @@ var ServiceLevelAgreementResultsResource = class extends _chunkKB2ANVVRcjs.BaseR
8744
8751
  };
8745
8752
 
8746
8753
  // src/resources/services.ts
8747
- var ServicesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8754
+ var ServicesResource = class extends _chunkZ7YT72SScjs.BaseResource {
8748
8755
  constructor(http, pageSize) {
8749
8756
  super(http, {
8750
8757
  key: "services",
@@ -8812,7 +8819,7 @@ var ServicesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8812
8819
  };
8813
8820
 
8814
8821
  // src/resources/skills.ts
8815
- var SkillsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8822
+ var SkillsResource = class extends _chunkZ7YT72SScjs.BaseResource {
8816
8823
  constructor(http, pageSize) {
8817
8824
  super(http, {
8818
8825
  key: "skills",
@@ -8856,7 +8863,7 @@ var SkillsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8856
8863
  };
8857
8864
 
8858
8865
  // src/resources/subscription_periods.ts
8859
- var SubscriptionPeriodsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8866
+ var SubscriptionPeriodsResource = class extends _chunkZ7YT72SScjs.BaseResource {
8860
8867
  constructor(http, pageSize) {
8861
8868
  super(http, {
8862
8869
  key: "subscription_periods",
@@ -8895,7 +8902,7 @@ var SubscriptionPeriodsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8895
8902
  };
8896
8903
 
8897
8904
  // src/resources/subscriptions.ts
8898
- var SubscriptionsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8905
+ var SubscriptionsResource = class extends _chunkZ7YT72SScjs.BaseResource {
8899
8906
  constructor(http, pageSize) {
8900
8907
  super(http, {
8901
8908
  key: "subscriptions",
@@ -8948,7 +8955,7 @@ var SubscriptionsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8948
8955
  async delete(id, opts = {}) {
8949
8956
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
8950
8957
  await this.guardStaleBeforeMutation(id, opts, "subscriptions.delete");
8951
- return this.deleteGlobal(id);
8958
+ return this.deleteGlobal(id, opts);
8952
8959
  }
8953
8960
  /** Resolve a Subscription from a numeric id (or, where the vendor indexes a primary text field,
8954
8961
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -8964,7 +8971,7 @@ var SubscriptionsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8964
8971
  };
8965
8972
 
8966
8973
  // src/resources/survey_results.ts
8967
- var SurveyResultsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
8974
+ var SurveyResultsResource = class extends _chunkZ7YT72SScjs.BaseResource {
8968
8975
  constructor(http, pageSize) {
8969
8976
  super(http, {
8970
8977
  key: "survey_results",
@@ -9003,7 +9010,7 @@ var SurveyResultsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9003
9010
  };
9004
9011
 
9005
9012
  // src/resources/surveys.ts
9006
- var SurveysResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9013
+ var SurveysResource = class extends _chunkZ7YT72SScjs.BaseResource {
9007
9014
  constructor(http, pageSize) {
9008
9015
  super(http, {
9009
9016
  key: "surveys",
@@ -9047,7 +9054,7 @@ var SurveysResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9047
9054
  };
9048
9055
 
9049
9056
  // src/resources/tag_aliases.ts
9050
- var TagAliasesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9057
+ var TagAliasesResource = class extends _chunkZ7YT72SScjs.BaseResource {
9051
9058
  constructor(http, pageSize) {
9052
9059
  super(http, {
9053
9060
  key: "tag_aliases",
@@ -9088,7 +9095,7 @@ var TagAliasesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9088
9095
  async delete(parentId, id, opts = {}) {
9089
9096
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
9090
9097
  await this.guardStaleBeforeMutation(id, opts, "tag_aliases.delete", parentId);
9091
- return this.deleteScopedRaw(parentId, id);
9098
+ return this.deleteScopedRaw(parentId, id, opts);
9092
9099
  }
9093
9100
  /** Resolve a TagAlias from a numeric id (or, where the vendor indexes a primary text field,
9094
9101
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -9104,7 +9111,7 @@ var TagAliasesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9104
9111
  };
9105
9112
 
9106
9113
  // src/resources/tag_groups.ts
9107
- var TagGroupsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9114
+ var TagGroupsResource = class extends _chunkZ7YT72SScjs.BaseResource {
9108
9115
  constructor(http, pageSize) {
9109
9116
  super(http, {
9110
9117
  key: "tag_groups",
@@ -9157,7 +9164,7 @@ var TagGroupsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9157
9164
  async delete(id, opts = {}) {
9158
9165
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
9159
9166
  await this.guardStaleBeforeMutation(id, opts, "tag_groups.delete");
9160
- return this.deleteGlobal(id);
9167
+ return this.deleteGlobal(id, opts);
9161
9168
  }
9162
9169
  /** Resolve a TagGroup from a numeric id (or, where the vendor indexes a primary text field,
9163
9170
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -9173,7 +9180,7 @@ var TagGroupsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9173
9180
  };
9174
9181
 
9175
9182
  // src/resources/tags.ts
9176
- var TagsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9183
+ var TagsResource = class extends _chunkZ7YT72SScjs.BaseResource {
9177
9184
  constructor(http, pageSize) {
9178
9185
  super(http, {
9179
9186
  key: "tags",
@@ -9226,7 +9233,7 @@ var TagsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9226
9233
  async delete(id, opts = {}) {
9227
9234
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
9228
9235
  await this.guardStaleBeforeMutation(id, opts, "tags.delete");
9229
- return this.deleteGlobal(id);
9236
+ return this.deleteGlobal(id, opts);
9230
9237
  }
9231
9238
  /** Resolve a Tag from a numeric id (or, where the vendor indexes a primary text field,
9232
9239
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -9242,7 +9249,7 @@ var TagsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9242
9249
  };
9243
9250
 
9244
9251
  // src/resources/task_secondary_resources.ts
9245
- var TaskSecondaryResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9252
+ var TaskSecondaryResourcesResource = class extends _chunkZ7YT72SScjs.BaseResource {
9246
9253
  constructor(http, pageSize) {
9247
9254
  super(http, {
9248
9255
  key: "task_secondary_resources",
@@ -9283,7 +9290,7 @@ var TaskSecondaryResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResourc
9283
9290
  async delete(parentId, id, opts = {}) {
9284
9291
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
9285
9292
  await this.guardStaleBeforeMutation(id, opts, "task_secondary_resources.delete", parentId);
9286
- return this.deleteScopedRaw(parentId, id);
9293
+ return this.deleteScopedRaw(parentId, id, opts);
9287
9294
  }
9288
9295
  /** Resolve a TaskSecondaryResource from a numeric id (or, where the vendor indexes a primary text field,
9289
9296
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -9299,7 +9306,7 @@ var TaskSecondaryResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResourc
9299
9306
  };
9300
9307
 
9301
9308
  // src/resources/tasks.ts
9302
- var TasksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9309
+ var TasksResource = class extends _chunkZ7YT72SScjs.BaseResource {
9303
9310
  constructor(http, pageSize) {
9304
9311
  super(http, {
9305
9312
  key: "tasks",
@@ -9343,7 +9350,7 @@ var TasksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9343
9350
  async update(parentId, id, data, opts = {}) {
9344
9351
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
9345
9352
  await this.guardStaleBeforeMutation(id, opts, "tasks.update", parentId);
9346
- return this.updateScopedRaw(parentId, id, data);
9353
+ return this.updateScopedRaw(parentId, id, data, opts);
9347
9354
  }
9348
9355
  /** Resolve a Task from a numeric id (or, where the vendor indexes a primary text field,
9349
9356
  * from an exact match on title). A numeric id miss throws NOT_FOUND; a complete
@@ -9387,7 +9394,7 @@ var ThresholdInformationResource = class {
9387
9394
  };
9388
9395
 
9389
9396
  // src/resources/ticket_additional_configuration_items.ts
9390
- var TicketAdditionalConfigurationItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9397
+ var TicketAdditionalConfigurationItemsResource = class extends _chunkZ7YT72SScjs.BaseResource {
9391
9398
  constructor(http, pageSize) {
9392
9399
  super(http, {
9393
9400
  key: "ticket_additional_configuration_items",
@@ -9428,7 +9435,7 @@ var TicketAdditionalConfigurationItemsResource = class extends _chunkKB2ANVVRcjs
9428
9435
  async delete(parentId, id, opts = {}) {
9429
9436
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
9430
9437
  await this.guardStaleBeforeMutation(id, opts, "ticket_additional_configuration_items.delete", parentId);
9431
- return this.deleteScopedRaw(parentId, id);
9438
+ return this.deleteScopedRaw(parentId, id, opts);
9432
9439
  }
9433
9440
  /** Resolve a TicketAdditionalConfigurationItem from a numeric id (or, where the vendor indexes a primary text field,
9434
9441
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -9444,7 +9451,7 @@ var TicketAdditionalConfigurationItemsResource = class extends _chunkKB2ANVVRcjs
9444
9451
  };
9445
9452
 
9446
9453
  // src/resources/ticket_additional_contacts.ts
9447
- var TicketAdditionalContactsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9454
+ var TicketAdditionalContactsResource = class extends _chunkZ7YT72SScjs.BaseResource {
9448
9455
  constructor(http, pageSize) {
9449
9456
  super(http, {
9450
9457
  key: "ticket_additional_contacts",
@@ -9485,7 +9492,7 @@ var TicketAdditionalContactsResource = class extends _chunkKB2ANVVRcjs.BaseResou
9485
9492
  async delete(parentId, id, opts = {}) {
9486
9493
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
9487
9494
  await this.guardStaleBeforeMutation(id, opts, "ticket_additional_contacts.delete", parentId);
9488
- return this.deleteScopedRaw(parentId, id);
9495
+ return this.deleteScopedRaw(parentId, id, opts);
9489
9496
  }
9490
9497
  /** Resolve a TicketAdditionalContact from a numeric id (or, where the vendor indexes a primary text field,
9491
9498
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -9501,7 +9508,7 @@ var TicketAdditionalContactsResource = class extends _chunkKB2ANVVRcjs.BaseResou
9501
9508
  };
9502
9509
 
9503
9510
  // src/resources/ticket_attachments.ts
9504
- var TicketAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9511
+ var TicketAttachmentsResource = class extends _chunkZ7YT72SScjs.BaseResource {
9505
9512
  constructor(http, pageSize) {
9506
9513
  super(http, {
9507
9514
  key: "ticket_attachments",
@@ -9543,7 +9550,7 @@ var TicketAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9543
9550
  async delete(parentId, id, opts = {}) {
9544
9551
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
9545
9552
  await this.guardStaleBeforeMutation(id, opts, "ticket_attachments.delete", parentId);
9546
- return this.deleteScopedModel(parentId, id);
9553
+ return this.deleteScopedModel(parentId, id, opts);
9547
9554
  }
9548
9555
  /** Download the attachment bytes (GET .../{id}/data; node-proven path, quirk #9) → Buffer. */
9549
9556
  async download(parentId, id) {
@@ -9563,7 +9570,7 @@ var TicketAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9563
9570
  };
9564
9571
 
9565
9572
  // src/resources/ticket_categories.ts
9566
- var TicketCategoriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9573
+ var TicketCategoriesResource = class extends _chunkZ7YT72SScjs.BaseResource {
9567
9574
  constructor(http, pageSize) {
9568
9575
  super(http, {
9569
9576
  key: "ticket_categories",
@@ -9622,7 +9629,7 @@ var TicketCategoriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9622
9629
  };
9623
9630
 
9624
9631
  // src/resources/ticket_category_field_defaults.ts
9625
- var TicketCategoryFieldDefaultsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9632
+ var TicketCategoryFieldDefaultsResource = class extends _chunkZ7YT72SScjs.BaseResource {
9626
9633
  constructor(http, pageSize) {
9627
9634
  super(http, {
9628
9635
  key: "ticket_category_field_defaults",
@@ -9664,7 +9671,7 @@ var TicketCategoryFieldDefaultsResource = class extends _chunkKB2ANVVRcjs.BaseRe
9664
9671
  };
9665
9672
 
9666
9673
  // src/resources/ticket_change_request_approvals.ts
9667
- var TicketChangeRequestApprovalsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9674
+ var TicketChangeRequestApprovalsResource = class extends _chunkZ7YT72SScjs.BaseResource {
9668
9675
  constructor(http, pageSize) {
9669
9676
  super(http, {
9670
9677
  key: "ticket_change_request_approvals",
@@ -9705,7 +9712,7 @@ var TicketChangeRequestApprovalsResource = class extends _chunkKB2ANVVRcjs.BaseR
9705
9712
  async delete(parentId, id, opts = {}) {
9706
9713
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
9707
9714
  await this.guardStaleBeforeMutation(id, opts, "ticket_change_request_approvals.delete", parentId);
9708
- return this.deleteScopedRaw(parentId, id);
9715
+ return this.deleteScopedRaw(parentId, id, opts);
9709
9716
  }
9710
9717
  /** Resolve a TicketChangeRequestApproval from a numeric id (or, where the vendor indexes a primary text field,
9711
9718
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -9721,7 +9728,7 @@ var TicketChangeRequestApprovalsResource = class extends _chunkKB2ANVVRcjs.BaseR
9721
9728
  };
9722
9729
 
9723
9730
  // src/resources/ticket_charges.ts
9724
- var TicketChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9731
+ var TicketChargesResource = class extends _chunkZ7YT72SScjs.BaseResource {
9725
9732
  constructor(http, pageSize) {
9726
9733
  super(http, {
9727
9734
  key: "ticket_charges",
@@ -9765,14 +9772,14 @@ var TicketChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9765
9772
  async update(parentId, id, data, opts = {}) {
9766
9773
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
9767
9774
  await this.guardStaleBeforeMutation(id, opts, "ticket_charges.update", parentId);
9768
- return this.updateScopedRaw(parentId, id, data);
9775
+ return this.updateScopedRaw(parentId, id, data, opts);
9769
9776
  }
9770
9777
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
9771
9778
  * envelope and never issues the delete. */
9772
9779
  async delete(parentId, id, opts = {}) {
9773
9780
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
9774
9781
  await this.guardStaleBeforeMutation(id, opts, "ticket_charges.delete", parentId);
9775
- return this.deleteScopedRaw(parentId, id);
9782
+ return this.deleteScopedRaw(parentId, id, opts);
9776
9783
  }
9777
9784
  /** Resolve a TicketCharge from a numeric id (or, where the vendor indexes a primary text field,
9778
9785
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -9792,7 +9799,7 @@ var TicketChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9792
9799
  };
9793
9800
 
9794
9801
  // src/resources/ticket_checklist_items.ts
9795
- var TicketChecklistItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9802
+ var TicketChecklistItemsResource = class extends _chunkZ7YT72SScjs.BaseResource {
9796
9803
  constructor(http, pageSize) {
9797
9804
  super(http, {
9798
9805
  key: "ticket_checklist_items",
@@ -9835,14 +9842,14 @@ var TicketChecklistItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource
9835
9842
  async update(parentId, id, data, opts = {}) {
9836
9843
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
9837
9844
  await this.guardStaleBeforeMutation(id, opts, "ticket_checklist_items.update", parentId);
9838
- return this.updateScopedRaw(parentId, id, data);
9845
+ return this.updateScopedRaw(parentId, id, data, opts);
9839
9846
  }
9840
9847
  /** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
9841
9848
  * envelope and never issues the delete. */
9842
9849
  async delete(parentId, id, opts = {}) {
9843
9850
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
9844
9851
  await this.guardStaleBeforeMutation(id, opts, "ticket_checklist_items.delete", parentId);
9845
- return this.deleteScopedRaw(parentId, id);
9852
+ return this.deleteScopedRaw(parentId, id, opts);
9846
9853
  }
9847
9854
  /** Resolve a TicketChecklistItem from a numeric id (or, where the vendor indexes a primary text field,
9848
9855
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -9858,7 +9865,7 @@ var TicketChecklistItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource
9858
9865
  };
9859
9866
 
9860
9867
  // src/resources/ticket_checklist_libraries.ts
9861
- var TicketChecklistLibrariesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9868
+ var TicketChecklistLibrariesResource = class extends _chunkZ7YT72SScjs.BaseResource {
9862
9869
  constructor(http, pageSize) {
9863
9870
  super(http, {
9864
9871
  key: "ticket_checklist_libraries",
@@ -9882,9 +9889,9 @@ var TicketChecklistLibrariesResource = class extends _chunkKB2ANVVRcjs.BaseResou
9882
9889
  * `dryRun: true` returns the pinned envelope (document existence is unverifiable in the MVP
9883
9890
  * surface — no documents read op — and never issues the POST). */
9884
9891
  async attachToDocument(documentID, data, opts = {}) {
9885
- const n = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, documentID, "documentID");
9892
+ const n = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, documentID, "documentID");
9886
9893
  if (opts.dryRun === true) {
9887
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
9894
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0, {
9888
9895
  operation: "ticket_checklist_libraries.attachToDocument",
9889
9896
  method: "POST",
9890
9897
  path: `/V1.0/Documents/${n}/ChecklistLibraries`,
@@ -9899,9 +9906,10 @@ var TicketChecklistLibrariesResource = class extends _chunkKB2ANVVRcjs.BaseResou
9899
9906
  method: "POST",
9900
9907
  path: `/V1.0/Documents/${n}/ChecklistLibraries`,
9901
9908
  body: { ...data },
9902
- operation: "ticket_checklist_libraries.attachToDocument"
9909
+ operation: "ticket_checklist_libraries.attachToDocument",
9910
+ maxRetries: opts.maxRetries
9903
9911
  });
9904
- return _chunkKB2ANVVRcjs.unwrapOperation.call(void 0, res);
9912
+ return _chunkZ7YT72SScjs.unwrapOperation.call(void 0, res);
9905
9913
  }
9906
9914
  /** Resolve a TicketChecklistLibrary from a numeric id (or, where the vendor indexes a primary text field,
9907
9915
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -9917,7 +9925,7 @@ var TicketChecklistLibrariesResource = class extends _chunkKB2ANVVRcjs.BaseResou
9917
9925
  };
9918
9926
 
9919
9927
  // src/resources/ticket_history.ts
9920
- var TicketHistoryResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9928
+ var TicketHistoryResource = class extends _chunkZ7YT72SScjs.BaseResource {
9921
9929
  constructor(http, pageSize) {
9922
9930
  super(http, {
9923
9931
  key: "ticket_history",
@@ -9956,7 +9964,7 @@ var TicketHistoryResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9956
9964
  };
9957
9965
 
9958
9966
  // src/resources/ticket_note_attachments.ts
9959
- var TicketNoteAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
9967
+ var TicketNoteAttachmentsResource = class extends _chunkZ7YT72SScjs.BaseResource {
9960
9968
  constructor(http, pageSize) {
9961
9969
  super(http, {
9962
9970
  key: "ticket_note_attachments",
@@ -9998,7 +10006,7 @@ var TicketNoteAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource
9998
10006
  async delete(parentId, id, opts = {}) {
9999
10007
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
10000
10008
  await this.guardStaleBeforeMutation(id, opts, "ticket_note_attachments.delete", parentId);
10001
- return this.deleteScopedModel(parentId, id);
10009
+ return this.deleteScopedModel(parentId, id, opts);
10002
10010
  }
10003
10011
  /** Download the attachment bytes (GET .../{id}/data; node-proven path, quirk #9) → Buffer. */
10004
10012
  async download(parentId, id) {
@@ -10018,7 +10026,7 @@ var TicketNoteAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource
10018
10026
  };
10019
10027
 
10020
10028
  // src/resources/ticket_notes.ts
10021
- var TicketNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
10029
+ var TicketNotesResource = class extends _chunkZ7YT72SScjs.BaseResource {
10022
10030
  constructor(http, pageSize) {
10023
10031
  super(http, {
10024
10032
  key: "ticket_notes",
@@ -10061,7 +10069,7 @@ var TicketNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
10061
10069
  async update(parentId, id, data, opts = {}) {
10062
10070
  if (opts.dryRun === true) return this.runUpdateDryRun(id, data, opts, parentId);
10063
10071
  await this.guardStaleBeforeMutation(id, opts, "ticket_notes.update", parentId);
10064
- return this.updateScopedRaw(parentId, id, data);
10072
+ return this.updateScopedRaw(parentId, id, data, opts);
10065
10073
  }
10066
10074
  /** Resolve a TicketNote from a numeric id (or, where the vendor indexes a primary text field,
10067
10075
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -10077,7 +10085,7 @@ var TicketNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
10077
10085
  };
10078
10086
 
10079
10087
  // src/resources/ticket_note_webhooks.ts
10080
- var TicketNoteWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
10088
+ var TicketNoteWebhooksResource = class extends _chunkZ7YT72SScjs.BaseResource {
10081
10089
  constructor(http, pageSize) {
10082
10090
  super(http, {
10083
10091
  key: "ticket_note_webhooks",
@@ -10133,7 +10141,7 @@ var TicketNoteWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
10133
10141
  async delete(id, opts = {}) {
10134
10142
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
10135
10143
  await this.guardStaleBeforeMutation(id, opts, "ticket_note_webhooks.delete");
10136
- return this.deleteGlobal(id);
10144
+ return this.deleteGlobal(id, opts);
10137
10145
  }
10138
10146
  /** Resolve a TicketNoteWebhook from a numeric id (or, where the vendor indexes a primary text field,
10139
10147
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -10153,7 +10161,7 @@ var TicketNoteWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
10153
10161
  };
10154
10162
 
10155
10163
  // src/resources/ticket_secondary_resources.ts
10156
- var TicketSecondaryResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
10164
+ var TicketSecondaryResourcesResource = class extends _chunkZ7YT72SScjs.BaseResource {
10157
10165
  constructor(http, pageSize) {
10158
10166
  super(http, {
10159
10167
  key: "ticket_secondary_resources",
@@ -10194,7 +10202,7 @@ var TicketSecondaryResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResou
10194
10202
  async delete(parentId, id, opts = {}) {
10195
10203
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
10196
10204
  await this.guardStaleBeforeMutation(id, opts, "ticket_secondary_resources.delete", parentId);
10197
- return this.deleteScopedRaw(parentId, id);
10205
+ return this.deleteScopedRaw(parentId, id, opts);
10198
10206
  }
10199
10207
  /** Resolve a TicketSecondaryResource from a numeric id (or, where the vendor indexes a primary text field,
10200
10208
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -10220,9 +10228,9 @@ async function fetchTicket(http, id, operation) {
10220
10228
  });
10221
10229
  const body = res;
10222
10230
  if (body === null || !("item" in body)) {
10223
- throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`Ticket ${id} not found (unexpected envelope shape)`, { resourceIds: [id] });
10231
+ throw new (0, _chunkZ7YT72SScjs.NotFoundError)(`Ticket ${id} not found (unexpected envelope shape)`, { resourceIds: [id] });
10224
10232
  }
10225
- if (body.item === null || body.item === void 0) throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`Ticket ${id} not found`, { resourceIds: [id] });
10233
+ if (body.item === null || body.item === void 0) throw new (0, _chunkZ7YT72SScjs.NotFoundError)(`Ticket ${id} not found`, { resourceIds: [id] });
10226
10234
  return body.item;
10227
10235
  }
10228
10236
  async function ticketQueryItems(http, path, filter, maxRecords, operation) {
@@ -10233,29 +10241,29 @@ async function ticketQueryItems(http, path, filter, maxRecords, operation) {
10233
10241
  body: { MaxRecords: maxRecords, filter },
10234
10242
  operation
10235
10243
  });
10236
- return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
10244
+ return _chunkZ7YT72SScjs.unwrapItems.call(void 0, res).items;
10237
10245
  }
10238
10246
  function isRouteUnavailable(err) {
10239
- return _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) && (err.httpStatus === 404 || err.httpStatus === 500);
10247
+ return _chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) && (err.httpStatus === 404 || err.httpStatus === 500);
10240
10248
  }
10241
10249
  function routeFact(route, path, err) {
10242
10250
  return {
10243
10251
  route,
10244
10252
  path,
10245
- httpStatus: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) && typeof err.httpStatus === "number" ? err.httpStatus : null
10253
+ httpStatus: _chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) && typeof err.httpStatus === "number" ? err.httpStatus : null
10246
10254
  };
10247
10255
  }
10248
10256
  function childDeclaresQuery(resourceKey) {
10249
- return _chunkCXXNONRPcjs.CAPABILITIES.some(
10257
+ return _chunkEWMG3HHUcjs.CAPABILITIES.some(
10250
10258
  (c) => c.id === `${resourceKey}.query` && (c.status === "implemented" || c.status === "tested")
10251
10259
  );
10252
10260
  }
10253
10261
  function planScopedPath(resourceKey, ticketId) {
10254
10262
  if (!childDeclaresQuery(resourceKey)) return null;
10255
- const entry = _chunkKB2ANVVRcjs.RELATIONSHIP_MAP[resourceKey];
10263
+ const entry = _chunkZ7YT72SScjs.RELATIONSHIP_MAP[resourceKey];
10256
10264
  const parent = entry === void 0 ? null : entry.parent;
10257
10265
  if (parent === null || parent.resource !== "tickets" || parent.segment === null || parent.field === null) return null;
10258
- const parentPath = _optionalChain([_chunkKB2ANVVRcjs.RELATIONSHIP_MAP, 'access', _52 => _52[parent.resource], 'optionalAccess', _53 => _53.path]);
10266
+ const parentPath = _optionalChain([_chunkZ7YT72SScjs.RELATIONSHIP_MAP, 'access', _56 => _56[parent.resource], 'optionalAccess', _57 => _57.path]);
10259
10267
  if (parentPath === null || parentPath === void 0) return null;
10260
10268
  return `/V1.0/${parentPath}/${ticketId}/${parent.segment}`;
10261
10269
  }
@@ -10294,14 +10302,14 @@ async function scopedCollectionRead(http, startPath, limit, operation, accept) {
10294
10302
  break;
10295
10303
  }
10296
10304
  const body = await http.request({ method: "GET", path: target, operation });
10297
- const { items: pageItems, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, body, operation);
10305
+ const { items: pageItems, pageDetails } = _chunkZ7YT72SScjs.unwrapItems.call(void 0, body, operation);
10298
10306
  nextCursor = pageDetails.nextPageUrl;
10299
10307
  pages += 1;
10300
10308
  const window = pageItems.slice(0, Math.max(0, limit - items.length));
10301
10309
  for (const row of window) if (accept(row)) items.push(row);
10302
10310
  if (items.length >= limit) break;
10303
10311
  if (nextCursor === null || pageItems.length === 0) break;
10304
- target = _chunkKB2ANVVRcjs.cursorToPath.call(void 0, http.baseUrl, nextCursor);
10312
+ target = _chunkZ7YT72SScjs.cursorToPath.call(void 0, http.baseUrl, nextCursor);
10305
10313
  }
10306
10314
  const capped = items.length >= limit || guard && nextCursor !== null;
10307
10315
  return { items, capped };
@@ -10335,7 +10343,7 @@ function truncate(text, limit) {
10335
10343
  }
10336
10344
  async function slaHealthCheck(_resource, id, opts = {}, http) {
10337
10345
  void opts;
10338
- const ticketId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
10346
+ const ticketId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, id, "id");
10339
10347
  await fetchTicket(http, ticketId, "tickets.slaHealthCheck");
10340
10348
  const rows = await ticketQueryItems(
10341
10349
  http,
@@ -10360,9 +10368,9 @@ async function slaHealthCheck(_resource, id, opts = {}, http) {
10360
10368
  async function summary(_resource, id, opts = {}, http) {
10361
10369
  const limit = opts.summaryTextLimit === void 0 ? 500 : Math.trunc(opts.summaryTextLimit);
10362
10370
  if (!Number.isInteger(limit) || limit < 1) {
10363
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`summaryTextLimit must be an integer >= 1 (got ${String(opts.summaryTextLimit)})`);
10371
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`summaryTextLimit must be an integer >= 1 (got ${String(opts.summaryTextLimit)})`);
10364
10372
  }
10365
- const ticketId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
10373
+ const ticketId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, id, "id");
10366
10374
  const ticket = await fetchTicket(http, ticketId, "tickets.summary");
10367
10375
  const desc = truncate(ticket.description, limit);
10368
10376
  const now = _nullishCoalesce(opts.now, () => ( /* @__PURE__ */ new Date()));
@@ -10389,13 +10397,13 @@ async function summary(_resource, id, opts = {}, http) {
10389
10397
  }
10390
10398
  async function timeline(_resource, id, opts = {}, http) {
10391
10399
  const limit = opts.limit === void 0 ? 100 : Math.trunc(opts.limit);
10392
- if (!Number.isInteger(limit) || limit < 1) throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`limit must be an integer >= 1 (got ${String(opts.limit)})`);
10400
+ if (!Number.isInteger(limit) || limit < 1) throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`limit must be an integer >= 1 (got ${String(opts.limit)})`);
10393
10401
  const bounded = Math.min(limit, 500);
10394
10402
  const textLimit = opts.textLimit === void 0 ? 500 : Math.trunc(opts.textLimit);
10395
10403
  if (!Number.isInteger(textLimit) || textLimit < 1) {
10396
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`textLimit must be an integer >= 1 (got ${String(opts.textLimit)})`);
10404
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`textLimit must be an integer >= 1 (got ${String(opts.textLimit)})`);
10397
10405
  }
10398
- const ticketId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
10406
+ const ticketId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, id, "id");
10399
10407
  await fetchTicket(http, ticketId, "tickets.timeline");
10400
10408
  const dateFilters = (field) => {
10401
10409
  const f = [{ field: "ticketID", op: "eq", value: ticketId }];
@@ -10482,21 +10490,21 @@ function isPositiveInt(v) {
10482
10490
  return typeof v === "number" && Number.isInteger(v) && v > 0;
10483
10491
  }
10484
10492
  function namedVendorFields(err) {
10485
- if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) return [];
10486
- const entries = _nullishCoalesce(_chunkKB2ANVVRcjs.parseVendorErrors.call(void 0, err.vendorError), () => ( []));
10493
+ if (!_chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) return [];
10494
+ const entries = _nullishCoalesce(_chunkZ7YT72SScjs.parseVendorErrors.call(void 0, err.vendorError), () => ( []));
10487
10495
  const out = /* @__PURE__ */ new Set();
10488
10496
  for (const e of entries) if (e.field !== void 0) out.add(e.field);
10489
10497
  return [...out];
10490
10498
  }
10491
10499
  function vendorDetailOf(err) {
10492
- return _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? _chunkKB2ANVVRcjs.formatVendorDetail.call(void 0, err.vendorError) : void 0;
10500
+ return _chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) ? _chunkZ7YT72SScjs.formatVendorDetail.call(void 0, err.vendorError) : void 0;
10493
10501
  }
10494
- async function fetchItem(http, path, operation) {
10495
- const res = await http.request({ method: "GET", path, operation });
10502
+ async function fetchItem(http, path, operation, readOpts) {
10503
+ const res = await http.request({ method: "GET", path, operation, maxRetries: _optionalChain([readOpts, 'optionalAccess', _58 => _58.maxRetries]) });
10496
10504
  return unwrapItemOrNull(res);
10497
10505
  }
10498
- async function fetchItemUnredacted(http, path, operation) {
10499
- const res = await http.request({ method: "GET", path, operation, skipResponseRedaction: true });
10506
+ async function fetchItemUnredacted(http, path, operation, readOpts) {
10507
+ const res = await http.request({ method: "GET", path, operation, skipResponseRedaction: true, maxRetries: _optionalChain([readOpts, 'optionalAccess', _59 => _59.maxRetries]) });
10500
10508
  return unwrapItemOrNull(res);
10501
10509
  }
10502
10510
  function unwrapItemOrNull(res) {
@@ -10510,8 +10518,8 @@ function operationId(res) {
10510
10518
  return typeof body.itemId === "number" ? body.itemId : typeof body.id === "number" ? body.id : void 0;
10511
10519
  }
10512
10520
  function discoveryMerge(err, body, defaults) {
10513
- if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) return null;
10514
- const entries = _chunkKB2ANVVRcjs.parseVendorErrors.call(void 0, err.vendorError);
10521
+ if (!_chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) return null;
10522
+ const entries = _chunkZ7YT72SScjs.parseVendorErrors.call(void 0, err.vendorError);
10515
10523
  if (entries === void 0) return null;
10516
10524
  for (const entry of entries) {
10517
10525
  const field = entry.field;
@@ -10523,7 +10531,7 @@ function discoveryMerge(err, body, defaults) {
10523
10531
  }
10524
10532
  function stepErrorText(code, err) {
10525
10533
  const detail = vendorDetailOf(err);
10526
- const base = _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.message : String(err);
10534
+ const base = _chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) ? err.message : String(err);
10527
10535
  return detail ? `${code}: ${detail}` : `${code}: ${base}`;
10528
10536
  }
10529
10537
  var DEFAULT_TICKET_PRIORITY = 3;
@@ -10532,7 +10540,7 @@ var DEFAULT_NOTE_TYPE = 1;
10532
10540
  var DEFAULT_PUBLISH = 1;
10533
10541
  var PUBLISH_VALUES = /* @__PURE__ */ new Set([1, 2, 4]);
10534
10542
  var SAFE_TICKET_CREATE_DEFAULTS = {};
10535
- var QueueRequiredError = class extends _chunkKB2ANVVRcjs.AutotaskError {
10543
+ var QueueRequiredError = class extends _chunkZ7YT72SScjs.AutotaskError {
10536
10544
  constructor(message, options = {}) {
10537
10545
  super(message, {
10538
10546
  code: "QUEUE_REQUIRED",
@@ -10543,13 +10551,13 @@ var QueueRequiredError = class extends _chunkKB2ANVVRcjs.AutotaskError {
10543
10551
  this.name = "QueueRequiredError";
10544
10552
  }
10545
10553
  };
10546
- var TicketResourceInvalidError = class extends _chunkKB2ANVVRcjs.AutotaskError {
10554
+ var TicketResourceInvalidError = class extends _chunkZ7YT72SScjs.AutotaskError {
10547
10555
  constructor(message, options = {}) {
10548
10556
  super(message, { code: "RESOURCE_INVALID", category: "validation", ...options });
10549
10557
  this.name = "TicketResourceInvalidError";
10550
10558
  }
10551
10559
  };
10552
- var TicketCreateValidationFailedError = class extends _chunkKB2ANVVRcjs.AutotaskError {
10560
+ var TicketCreateValidationFailedError = class extends _chunkZ7YT72SScjs.AutotaskError {
10553
10561
  /** The vendor-named fields (empty when the 500 body named nothing parseable). */
10554
10562
 
10555
10563
  constructor(message, vendorFields, options = {}) {
@@ -10559,47 +10567,47 @@ var TicketCreateValidationFailedError = class extends _chunkKB2ANVVRcjs.Autotask
10559
10567
  }
10560
10568
  };
10561
10569
  async function openWithNoteAndAssign(resource, params, note, assign, opts, http) {
10562
- const companyID = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, _optionalChain([params, 'optionalAccess', _54 => _54.companyID]), "params.companyID");
10563
- const title = _optionalChain([params, 'optionalAccess', _55 => _55.title]);
10570
+ const companyID = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, _optionalChain([params, 'optionalAccess', _60 => _60.companyID]), "params.companyID");
10571
+ const title = _optionalChain([params, 'optionalAccess', _61 => _61.title]);
10564
10572
  if (typeof title !== "string" || title.trim() === "") {
10565
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("openWithNoteAndAssign: params.title is required (a non-empty string)", { operation: OP_OPEN });
10573
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("openWithNoteAndAssign: params.title is required (a non-empty string)", { operation: OP_OPEN });
10566
10574
  }
10567
10575
  const priority = _nullishCoalesce(params.priority, () => ( DEFAULT_TICKET_PRIORITY));
10568
10576
  const status = _nullishCoalesce(params.status, () => ( DEFAULT_TICKET_STATUS));
10569
10577
  if (!isPositiveInt(priority)) {
10570
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: params.priority must be a positive integer (got ${String(params.priority)})`, { operation: OP_OPEN });
10578
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`openWithNoteAndAssign: params.priority must be a positive integer (got ${String(params.priority)})`, { operation: OP_OPEN });
10571
10579
  }
10572
10580
  if (!isPositiveInt(status)) {
10573
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: params.status must be a positive integer (got ${String(params.status)})`, { operation: OP_OPEN });
10581
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`openWithNoteAndAssign: params.status must be a positive integer (got ${String(params.status)})`, { operation: OP_OPEN });
10574
10582
  }
10575
10583
  if (params.queueID !== void 0 && !isPositiveInt(params.queueID)) {
10576
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: params.queueID must be a positive integer (got ${String(params.queueID)})`, { operation: OP_OPEN });
10584
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`openWithNoteAndAssign: params.queueID must be a positive integer (got ${String(params.queueID)})`, { operation: OP_OPEN });
10577
10585
  }
10578
10586
  if (note !== void 0) {
10579
10587
  if (typeof note.description !== "string" || note.description.trim() === "") {
10580
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("openWithNoteAndAssign: note.description is required (a non-empty string)", { operation: OP_OPEN });
10588
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("openWithNoteAndAssign: note.description is required (a non-empty string)", { operation: OP_OPEN });
10581
10589
  }
10582
10590
  if (typeof note.title !== "string" || note.title.trim() === "") {
10583
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("openWithNoteAndAssign: note.title is required (a non-empty string) \u2014 the ww29 scoped note create 500s without it (S12-A live-verified: Missing Required Field: title; the S11-B proven note body is { title, description, noteType: 1, publish: 1 })", { operation: OP_OPEN });
10591
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("openWithNoteAndAssign: note.title is required (a non-empty string) \u2014 the ww29 scoped note create 500s without it (S12-A live-verified: Missing Required Field: title; the S11-B proven note body is { title, description, noteType: 1, publish: 1 })", { operation: OP_OPEN });
10584
10592
  }
10585
10593
  if (note.noteType !== void 0 && !isPositiveInt(note.noteType)) {
10586
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: note.noteType must be a positive integer (got ${String(note.noteType)})`, { operation: OP_OPEN });
10594
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`openWithNoteAndAssign: note.noteType must be a positive integer (got ${String(note.noteType)})`, { operation: OP_OPEN });
10587
10595
  }
10588
10596
  if (note.publish !== void 0 && !PUBLISH_VALUES.has(note.publish)) {
10589
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: note.publish must be an integer picklist value 1/2/4 (got ${String(note.publish)} \u2014 NOT a boolean)`, { operation: OP_OPEN });
10597
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`openWithNoteAndAssign: note.publish must be an integer picklist value 1/2/4 (got ${String(note.publish)} \u2014 NOT a boolean)`, { operation: OP_OPEN });
10590
10598
  }
10591
10599
  }
10592
- const assignee = assign === void 0 ? void 0 : _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, assign.resourceID, "assign.resourceID");
10600
+ const assignee = assign === void 0 ? void 0 : _chunkZ7YT72SScjs.parseIdentifier.call(void 0, assign.resourceID, "assign.resourceID");
10593
10601
  if (assign !== void 0 && assignee !== void 0 && (typeof assignee === "number" ? assignee < 1 : false)) {
10594
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: assign.resourceID must be a positive integer (got ${String(assignee)})`, { operation: OP_OPEN });
10602
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`openWithNoteAndAssign: assign.resourceID must be a positive integer (got ${String(assignee)})`, { operation: OP_OPEN });
10595
10603
  }
10596
- const roleID = _optionalChain([assign, 'optionalAccess', _56 => _56.roleID]);
10604
+ const roleID = _optionalChain([assign, 'optionalAccess', _62 => _62.roleID]);
10597
10605
  if (assign !== void 0 && !isPositiveInt(roleID)) {
10598
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("openWithNoteAndAssign: assign.roleID is required (a positive integer) \u2014 the ww29 vendor requires BOTH assignedResourceID and assignedResourceRoleID when assigning a resource (S12-A live-verified: Data violation: When assigning a Resource, you must assign both a assignedResourceID and assignedResourceRoleID)", { operation: OP_OPEN });
10606
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("openWithNoteAndAssign: assign.roleID is required (a positive integer) \u2014 the ww29 vendor requires BOTH assignedResourceID and assignedResourceRoleID when assigning a resource (S12-A live-verified: Data violation: When assigning a Resource, you must assign both a assignedResourceID and assignedResourceRoleID)", { operation: OP_OPEN });
10599
10607
  }
10600
10608
  if (assign !== void 0 && assignee !== void 0) {
10601
10609
  const rid = assignee;
10602
- const rec = await fetchItem(http, `/V1.0/Resources/${rid}`, OP_OPEN);
10610
+ const rec = await fetchItem(http, `/V1.0/Resources/${rid}`, OP_OPEN, { maxRetries: opts.maxRetries });
10603
10611
  if (rec === null) {
10604
10612
  throw new TicketResourceInvalidError(
10605
10613
  `openWithNoteAndAssign: assignee resource ${assignee} was not found (resources.get returned item: null \u2014 the resources table is blind to the API user; get is the authority)`,
@@ -10630,7 +10638,7 @@ async function openWithNoteAndAssign(resource, params, note, assign, opts, http)
10630
10638
  if (assign !== void 0) {
10631
10639
  warnings.push(`the assignment is the v0.6.0 MERGE update (unredacted GET + collection PUT, 2 wire) setting assignedResourceID ${String(assignee)} + assignedResourceRoleID ${String(roleID)} (the vendor requires both \u2014 S12-A live-verified); a failure lands in steps[] as ASSIGN_FAILED (the applied ticketId is still returned).`);
10632
10640
  }
10633
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
10641
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0,
10634
10642
  {
10635
10643
  operation: OP_OPEN,
10636
10644
  method: "POST",
@@ -10672,8 +10680,8 @@ async function openWithNoteAndAssign(resource, params, note, assign, opts, http)
10672
10680
  `openWithNoteAndAssign: the vendor rejected the ticket create naming 'queueID' (the ww29 live-required set is { title, status, priority, companyID, queueID }) and the node never guesses a queue${detail ? ` \u2014 ${detail}` : ""}`,
10673
10681
  {
10674
10682
  operation: OP_OPEN,
10675
- httpStatus: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.httpStatus : void 0,
10676
- vendorError: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.vendorError : void 0
10683
+ httpStatus: _chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) ? err.httpStatus : void 0,
10684
+ vendorError: _chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) ? err.vendorError : void 0
10677
10685
  }
10678
10686
  );
10679
10687
  }
@@ -10688,8 +10696,8 @@ async function openWithNoteAndAssign(resource, params, note, assign, opts, http)
10688
10696
  named,
10689
10697
  {
10690
10698
  operation: OP_OPEN,
10691
- httpStatus: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.httpStatus : void 0,
10692
- vendorError: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.vendorError : void 0,
10699
+ httpStatus: _chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) ? err.httpStatus : void 0,
10700
+ vendorError: _chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) ? err.vendorError : void 0,
10693
10701
  resourceIds: [companyID]
10694
10702
  }
10695
10703
  );
@@ -10698,7 +10706,7 @@ async function openWithNoteAndAssign(resource, params, note, assign, opts, http)
10698
10706
  let noteId = null;
10699
10707
  if (noteBody !== null) {
10700
10708
  try {
10701
- const res = await http.request({ method: "POST", path: `/V1.0/Tickets/${ticketId}/Notes`, body: noteBody, operation: OP_OPEN });
10709
+ const res = await http.request({ method: "POST", path: `/V1.0/Tickets/${ticketId}/Notes`, body: noteBody, operation: OP_OPEN, maxRetries: opts.maxRetries });
10702
10710
  noteId = _nullishCoalesce(operationId(res), () => ( null));
10703
10711
  steps.push({ name: "note", ok: true });
10704
10712
  } catch (err) {
@@ -10709,14 +10717,14 @@ async function openWithNoteAndAssign(resource, params, note, assign, opts, http)
10709
10717
  let ticketNumber = null;
10710
10718
  if (assign !== void 0) {
10711
10719
  try {
10712
- const current = await fetchItemUnredacted(http, `/V1.0/Tickets/${ticketId}`, OP_OPEN);
10720
+ const current = await fetchItemUnredacted(http, `/V1.0/Tickets/${ticketId}`, OP_OPEN, { maxRetries: opts.maxRetries });
10713
10721
  if (current === null) {
10714
- throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`openWithNoteAndAssign: ticket ${ticketId} vanished between the create and the assign merge read`, { operation: OP_OPEN, resourceIds: [ticketId] });
10722
+ throw new (0, _chunkZ7YT72SScjs.NotFoundError)(`openWithNoteAndAssign: ticket ${ticketId} vanished between the create and the assign merge read`, { operation: OP_OPEN, resourceIds: [ticketId] });
10715
10723
  }
10716
10724
  ticketNumber = typeof current.ticketNumber === "string" ? current.ticketNumber : null;
10717
- const merged = _chunkKB2ANVVRcjs.mergePartialBody.call(void 0, current, { id: ticketId, assignedResourceID: assignee, assignedResourceRoleID: roleID });
10725
+ const merged = _chunkZ7YT72SScjs.mergePartialBody.call(void 0, current, { id: ticketId, assignedResourceID: assignee, assignedResourceRoleID: roleID });
10718
10726
  merged.id = ticketId;
10719
- await http.request({ method: "PUT", path: "/V1.0/Tickets", body: merged, operation: OP_OPEN });
10727
+ await http.request({ method: "PUT", path: "/V1.0/Tickets", body: merged, operation: OP_OPEN, maxRetries: opts.maxRetries });
10720
10728
  assigned = true;
10721
10729
  steps.push({ name: "assign", ok: true });
10722
10730
  } catch (err) {
@@ -10735,7 +10743,7 @@ async function openWithNoteAndAssign(resource, params, note, assign, opts, http)
10735
10743
  var STATUS_REQUIRED_FIELDS = {
10736
10744
  // <discovery output lands here — e.g. 8: { requiredFields: ['dueDateTime'], safeDefaults: { dueDateTime: '<now>' } }>
10737
10745
  };
10738
- var StatusUnknownError = class extends _chunkKB2ANVVRcjs.AutotaskError {
10746
+ var StatusUnknownError = class extends _chunkZ7YT72SScjs.AutotaskError {
10739
10747
  /** The live picklist size (the message names it; the values + labels are via operations.fieldCatalog with labels: true). */
10740
10748
 
10741
10749
  constructor(message, options = {}) {
@@ -10749,7 +10757,7 @@ var StatusUnknownError = class extends _chunkKB2ANVVRcjs.AutotaskError {
10749
10757
  this.picklistCount = _nullishCoalesce(options.picklistCount, () => ( 0));
10750
10758
  }
10751
10759
  };
10752
- var StatusFieldsRequiredError = class extends _chunkKB2ANVVRcjs.AutotaskError {
10760
+ var StatusFieldsRequiredError = class extends _chunkZ7YT72SScjs.AutotaskError {
10753
10761
 
10754
10762
 
10755
10763
 
@@ -10778,26 +10786,26 @@ async function readLiveStatusSet(resource) {
10778
10786
  }
10779
10787
  var GUARD_DEGRADED_WARNING = "the tenant's live status picklist metadata was unavailable (the local guard is degraded for this call \u2014 the W-A4 wall or a metadata failure); the vendor's own validation is the final authority on the status value";
10780
10788
  async function changeStatus(resource, id, targetStatus, fields, opts, http) {
10781
- const ticketId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
10789
+ const ticketId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, id, "id");
10782
10790
  if (!isPositiveInt(targetStatus)) {
10783
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`changeStatus: targetStatus must be a positive integer (got ${String(targetStatus)})`, { operation: OP_STATUS });
10791
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`changeStatus: targetStatus must be a positive integer (got ${String(targetStatus)})`, { operation: OP_STATUS });
10784
10792
  }
10785
10793
  let liveStatus = null;
10786
10794
  try {
10787
10795
  const ids = await readLiveStatusSet(resource);
10788
10796
  if (ids.size > 0) liveStatus = ids;
10789
10797
  } catch (err) {
10790
- if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.code === "ABORTED") throw err;
10798
+ if (!_chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) || err.code === "ABORTED") throw err;
10791
10799
  }
10792
10800
  if (liveStatus !== null && !liveStatus.has(targetStatus)) {
10793
- _optionalChain([http, 'access', _57 => _57.fieldCache, 'optionalAccess', _58 => _58.invalidate, 'call', _59 => _59("tickets")]);
10801
+ _optionalChain([http, 'access', _63 => _63.fieldCache, 'optionalAccess', _64 => _64.invalidate, 'call', _65 => _65("tickets")]);
10794
10802
  let freshStatus = null;
10795
10803
  let reReadFailed = false;
10796
10804
  try {
10797
10805
  const freshIds = await readLiveStatusSet(resource);
10798
10806
  if (freshIds.size > 0) freshStatus = freshIds;
10799
10807
  } catch (err) {
10800
- if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.code === "ABORTED") throw err;
10808
+ if (!_chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) || err.code === "ABORTED") throw err;
10801
10809
  freshStatus = null;
10802
10810
  reReadFailed = true;
10803
10811
  }
@@ -10814,16 +10822,16 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
10814
10822
  }
10815
10823
  const guardDegraded = liveStatus === null;
10816
10824
  if (fields !== void 0 && (typeof fields !== "object" || fields === null || Array.isArray(fields))) {
10817
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("changeStatus: fields must be a plain object of ticket fields (or omitted)", { operation: OP_STATUS });
10825
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("changeStatus: fields must be a plain object of ticket fields (or omitted)", { operation: OP_STATUS });
10818
10826
  }
10819
- const current = await fetchItemUnredacted(http, `/V1.0/Tickets/${ticketId}`, OP_STATUS);
10827
+ const current = await fetchItemUnredacted(http, `/V1.0/Tickets/${ticketId}`, OP_STATUS, { maxRetries: opts.maxRetries });
10820
10828
  if (current === null) {
10821
- throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`changeStatus: ticket ${ticketId} was not found (tickets.get returned item: null)`, { operation: OP_STATUS, resourceIds: [ticketId] });
10829
+ throw new (0, _chunkZ7YT72SScjs.NotFoundError)(`changeStatus: ticket ${ticketId} was not found (tickets.get returned item: null)`, { operation: OP_STATUS, resourceIds: [ticketId] });
10822
10830
  }
10823
10831
  const previousStatus = typeof current.status === "number" ? current.status : null;
10824
10832
  if (previousStatus === targetStatus) {
10825
10833
  if (opts.dryRun === true) {
10826
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
10834
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0,
10827
10835
  {
10828
10836
  operation: OP_STATUS,
10829
10837
  method: "PUT",
@@ -10856,7 +10864,7 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
10856
10864
  for (const field of mapEntry.requiredFields) {
10857
10865
  if (mergeData[field] !== void 0) continue;
10858
10866
  if (current[field] !== null && current[field] !== void 0) continue;
10859
- const safe = _optionalChain([mapEntry, 'access', _60 => _60.safeDefaults, 'optionalAccess', _61 => _61[field]]);
10867
+ const safe = _optionalChain([mapEntry, 'access', _66 => _66.safeDefaults, 'optionalAccess', _67 => _67[field]]);
10860
10868
  if (safe === void 0) {
10861
10869
  throw new StatusFieldsRequiredError(
10862
10870
  `changeStatus: status ${targetStatus} requires the field '${field}' and the live-discovered map has no proven-safe default for it \u2014 the op is safe-without-the-map (never a blind full update): supply the value in fields and retry`,
@@ -10877,7 +10885,7 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
10877
10885
  if (mapEntry === void 0) {
10878
10886
  warnings.push(`status ${targetStatus} has no entry in the live-discovered required-field map yet \u2014 if the vendor 500 names a required field without a safe default, the apply throws the typed STATUS_FIELDS_REQUIRED (the caller supplies the value; never a blind retry).`);
10879
10887
  }
10880
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
10888
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0,
10881
10889
  {
10882
10890
  operation: OP_STATUS,
10883
10891
  method: "PUT",
@@ -10895,13 +10903,13 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
10895
10903
  { redactPersonalData: http.redactPersonalData }
10896
10904
  );
10897
10905
  }
10898
- const safeDefaults = _nullishCoalesce(_optionalChain([mapEntry, 'optionalAccess', _62 => _62.safeDefaults]), () => ( {}));
10899
- const body = _chunkKB2ANVVRcjs.mergePartialBody.call(void 0, current, mergeData);
10906
+ const safeDefaults = _nullishCoalesce(_optionalChain([mapEntry, 'optionalAccess', _68 => _68.safeDefaults]), () => ( {}));
10907
+ const body = _chunkZ7YT72SScjs.mergePartialBody.call(void 0, current, mergeData);
10900
10908
  body.id = ticketId;
10901
10909
  let merges = 0;
10902
10910
  for (; ; ) {
10903
10911
  try {
10904
- await http.request({ method: "PUT", path: "/V1.0/Tickets", body, operation: OP_STATUS });
10912
+ await http.request({ method: "PUT", path: "/V1.0/Tickets", body, operation: OP_STATUS, maxRetries: opts.maxRetries });
10905
10913
  break;
10906
10914
  } catch (err) {
10907
10915
  const named = namedVendorFields(err);
@@ -10920,8 +10928,8 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
10920
10928
  { vendorFields: named, currentStatus: previousStatus, targetStatus, currentValues },
10921
10929
  {
10922
10930
  operation: OP_STATUS,
10923
- httpStatus: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.httpStatus : void 0,
10924
- vendorError: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.vendorError : void 0,
10931
+ httpStatus: _chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) ? err.httpStatus : void 0,
10932
+ vendorError: _chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) ? err.vendorError : void 0,
10925
10933
  resourceIds: [ticketId]
10926
10934
  }
10927
10935
  );
@@ -10929,9 +10937,9 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
10929
10937
  throw err;
10930
10938
  }
10931
10939
  }
10932
- const verify = await fetchItem(http, `/V1.0/Tickets/${ticketId}`, OP_STATUS);
10940
+ const verify = await fetchItem(http, `/V1.0/Tickets/${ticketId}`, OP_STATUS, { maxRetries: opts.maxRetries });
10933
10941
  if (verify === null) {
10934
- throw new (0, _chunkKB2ANVVRcjs.AutotaskError)(`changeStatus: the post-PUT read-back found no ticket ${ticketId} (the PUT 200ed but the record is gone)`, {
10942
+ throw new (0, _chunkZ7YT72SScjs.AutotaskError)(`changeStatus: the post-PUT read-back found no ticket ${ticketId} (the PUT 200ed but the record is gone)`, {
10935
10943
  code: "INVALID_RESPONSE",
10936
10944
  category: "server",
10937
10945
  operation: OP_STATUS,
@@ -10940,7 +10948,7 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
10940
10948
  }
10941
10949
  const finalStatus = typeof verify.status === "number" ? verify.status : null;
10942
10950
  if (finalStatus !== targetStatus) {
10943
- throw new (0, _chunkKB2ANVVRcjs.AutotaskError)(
10951
+ throw new (0, _chunkZ7YT72SScjs.AutotaskError)(
10944
10952
  `changeStatus: the post-PUT read-back shows status ${_nullishCoalesce(finalStatus, () => ( "unknown"))} (the vendor 200ed the PUT but did not apply ${targetStatus} \u2014 the F-A1 lesson: the 200 proves nothing)`,
10945
10953
  {
10946
10954
  code: "INVALID_RESPONSE",
@@ -10958,7 +10966,7 @@ var DEFAULT_PART_LIMIT = 50;
10958
10966
  function partLimit(value, name) {
10959
10967
  const n = value === void 0 ? DEFAULT_PART_LIMIT : Math.trunc(value);
10960
10968
  if (!Number.isInteger(n) || n < 1) {
10961
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`fullContext: ${name} must be an integer >= 1 (got ${String(value)})`);
10969
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`fullContext: ${name} must be an integer >= 1 (got ${String(value)})`);
10962
10970
  }
10963
10971
  return n;
10964
10972
  }
@@ -10974,7 +10982,7 @@ async function fullContext(resource, id, opts = {}, http) {
10974
10982
  const noteLimit = partLimit(opts.noteLimit, "noteLimit");
10975
10983
  const timeEntryLimit = partLimit(opts.timeEntryLimit, "timeEntryLimit");
10976
10984
  const textLimit = partLimit(opts.textLimit, "textLimit");
10977
- const ticketId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
10985
+ const ticketId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, id, "id");
10978
10986
  const ctx = await resource.getContext(ticketId);
10979
10987
  const op = "tickets.fullContext";
10980
10988
  const ticketFilter = [{ field: "ticketID", op: "eq", value: ticketId }];
@@ -11028,7 +11036,7 @@ async function fullContext(resource, id, opts = {}, http) {
11028
11036
  result.truncated = result.truncated || part.capped || historyRows.some((h) => h.detailTruncated === true);
11029
11037
  }
11030
11038
  if (opts.names === true) {
11031
- const builder = _chunkKB2ANVVRcjs.createNamePlan.call(void 0, _chunkKB2ANVVRcjs.TICKET_LABEL_FIELDS);
11039
+ const builder = _chunkZ7YT72SScjs.createNamePlan.call(void 0, _chunkZ7YT72SScjs.TICKET_LABEL_FIELDS);
11032
11040
  const t = ctx.ticket;
11033
11041
  builder.addResource(t["creatorResourceID"]);
11034
11042
  builder.addFk("contract", t["contractID"]);
@@ -11040,20 +11048,20 @@ async function fullContext(resource, id, opts = {}, http) {
11040
11048
  builder.addFk("billingCode", e["billingCodeID"]);
11041
11049
  builder.addFk("contract", e["contractID"]);
11042
11050
  }
11043
- const names = await _chunkKB2ANVVRcjs.resolveCompositeNames.call(void 0, http, builder.plan(), { maxNameReads: opts.maxNameReads });
11051
+ const names = await _chunkZ7YT72SScjs.resolveCompositeNames.call(void 0, http, builder.plan(), { maxNameReads: opts.maxNameReads });
11044
11052
  const ticketRow = { ...ctx.ticket };
11045
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, ticketRow, "creatorResourceID", (v) => names.resourceName(v));
11046
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, ticketRow, "contractID", (v) => names.recordName("contract", v));
11047
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, ticketRow, "billingCodeID", (v) => names.recordName("billingCode", v));
11048
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, ticketRow, "assignedResourceRoleID", (v) => names.recordName("role", v));
11049
- for (const f of _chunkKB2ANVVRcjs.TICKET_LABEL_FIELDS) _chunkKB2ANVVRcjs.addLabelSibling.call(void 0, ticketRow, f, names);
11053
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, ticketRow, "creatorResourceID", (v) => names.resourceName(v));
11054
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, ticketRow, "contractID", (v) => names.recordName("contract", v));
11055
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, ticketRow, "billingCodeID", (v) => names.recordName("billingCode", v));
11056
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, ticketRow, "assignedResourceRoleID", (v) => names.recordName("role", v));
11057
+ for (const f of _chunkZ7YT72SScjs.TICKET_LABEL_FIELDS) _chunkZ7YT72SScjs.addLabelSibling.call(void 0, ticketRow, f, names);
11050
11058
  result.ticket = ticketRow;
11051
11059
  result.timeEntries.items = entriesPart.items.map((e) => {
11052
11060
  const row = { ...e };
11053
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "resourceID", (v) => names.resourceName(v));
11054
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "roleID", (v) => names.recordName("role", v));
11055
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "billingCodeID", (v) => names.recordName("billingCode", v));
11056
- _chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "contractID", (v) => names.recordName("contract", v));
11061
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, row, "resourceID", (v) => names.resourceName(v));
11062
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, row, "roleID", (v) => names.recordName("role", v));
11063
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, row, "billingCodeID", (v) => names.recordName("billingCode", v));
11064
+ _chunkZ7YT72SScjs.addNameSibling.call(void 0, row, "contractID", (v) => names.recordName("contract", v));
11057
11065
  return row;
11058
11066
  });
11059
11067
  result.names = names.section;
@@ -11063,7 +11071,7 @@ async function fullContext(resource, id, opts = {}, http) {
11063
11071
  }
11064
11072
 
11065
11073
  // src/resources/tickets.ts
11066
- var TicketsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
11074
+ var TicketsResource = class extends _chunkZ7YT72SScjs.BaseResource {
11067
11075
  constructor(http, pageSize) {
11068
11076
  super(http, {
11069
11077
  key: "tickets",
@@ -11169,7 +11177,7 @@ var TicketsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
11169
11177
  };
11170
11178
 
11171
11179
  // src/resources/ticket_webhooks.ts
11172
- var TicketWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
11180
+ var TicketWebhooksResource = class extends _chunkZ7YT72SScjs.BaseResource {
11173
11181
  constructor(http, pageSize) {
11174
11182
  super(http, {
11175
11183
  key: "ticket_webhooks",
@@ -11225,7 +11233,7 @@ var TicketWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
11225
11233
  async delete(id, opts = {}) {
11226
11234
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
11227
11235
  await this.guardStaleBeforeMutation(id, opts, "ticket_webhooks.delete");
11228
- return this.deleteGlobal(id);
11236
+ return this.deleteGlobal(id, opts);
11229
11237
  }
11230
11238
  /** Resolve a TicketWebhook from a numeric id (or, where the vendor indexes a primary text field,
11231
11239
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -11255,62 +11263,62 @@ async function queryTimeEntries(_resource, filter, limit, operation, http) {
11255
11263
  body: { MaxRecords: limit, filter },
11256
11264
  operation
11257
11265
  });
11258
- const { items, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res);
11266
+ const { items, pageDetails } = _chunkZ7YT72SScjs.unwrapItems.call(void 0, res);
11259
11267
  return { items, hasMore: pageDetails.nextPageUrl != null };
11260
11268
  }
11261
11269
  async function windowQuery3(_resource, kind, http, opts) {
11262
- const now = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _63 => _63.now]), () => ( /* @__PURE__ */ new Date()));
11263
- const tz = _optionalChain([opts, 'optionalAccess', _64 => _64.tz]) === void 0 ? void 0 : validateZone(opts.tz, `time_entries.${kind}`);
11270
+ const now = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _69 => _69.now]), () => ( /* @__PURE__ */ new Date()));
11271
+ const tz = _optionalChain([opts, 'optionalAccess', _70 => _70.tz]) === void 0 ? void 0 : validateZone(opts.tz, `time_entries.${kind}`);
11264
11272
  const { from, to } = dateWindowBounds(kind, now, tz);
11265
11273
  const filter = [
11266
11274
  { field: "dateWorked", op: "gte", value: from },
11267
11275
  { field: "dateWorked", op: "lte", value: to }
11268
11276
  ];
11269
- const { items } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _65 => _65.limit])), `time_entries.${kind}`, http);
11277
+ const { items } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _71 => _71.limit])), `time_entries.${kind}`, http);
11270
11278
  return items;
11271
11279
  }
11272
11280
  async function customRange3(_resource, from, to, http, opts) {
11273
- const zone = _optionalChain([opts, 'optionalAccess', _66 => _66.tz]) === void 0 ? void 0 : validateZone(opts.tz, "time_entries.customRange");
11281
+ const zone = _optionalChain([opts, 'optionalAccess', _72 => _72.tz]) === void 0 ? void 0 : validateZone(opts.tz, "time_entries.customRange");
11274
11282
  const fromB = customRangeDay(from, "from", zone, "customRange");
11275
11283
  const toB = customRangeDay(to, "to", zone, "customRange");
11276
11284
  if (fromB.ms > toB.ms) {
11277
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("customRange: from must not be after to");
11285
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("customRange: from must not be after to");
11278
11286
  }
11279
11287
  const toEndMs = zone === void 0 ? toB.ms + DAY_MS2 - 1 : localDayEndMs(toB.y, toB.mo, toB.d, zone);
11280
11288
  const filter = [
11281
11289
  { field: "dateWorked", op: "gte", value: iso2(fromB.ms) },
11282
11290
  { field: "dateWorked", op: "lte", value: iso2(toEndMs) }
11283
11291
  ];
11284
- const { items } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _67 => _67.limit])), "time_entries.customRange", http);
11292
+ const { items } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _73 => _73.limit])), "time_entries.customRange", http);
11285
11293
  return items;
11286
11294
  }
11287
11295
  async function postedDateStatusQuery(_resource, mode, http, opts) {
11288
11296
  const filter = [
11289
11297
  { field: "postedDate", op: mode === "posted" ? "exist" : "notExist" }
11290
11298
  ];
11291
- if (_optionalChain([opts, 'optionalAccess', _68 => _68.ticketID]) !== void 0) filter.push({ field: "ticketID", op: "eq", value: opts.ticketID });
11299
+ if (_optionalChain([opts, 'optionalAccess', _74 => _74.ticketID]) !== void 0) filter.push({ field: "ticketID", op: "eq", value: opts.ticketID });
11292
11300
  const operation = mode === "posted" ? "time_entries.getPosted" : "time_entries.getUnposted";
11293
- const { items } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _69 => _69.limit])), operation, http);
11301
+ const { items } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _75 => _75.limit])), operation, http);
11294
11302
  return items;
11295
11303
  }
11296
11304
  async function postedWithin(_resource, from, to, http, opts, opLabel = "time_entries.postedWithin") {
11297
11305
  const OP2 = opLabel;
11298
- const zone = _optionalChain([opts, 'optionalAccess', _70 => _70.tz]) === void 0 ? void 0 : validateZone(opts.tz, OP2);
11306
+ const zone = _optionalChain([opts, 'optionalAccess', _76 => _76.tz]) === void 0 ? void 0 : validateZone(opts.tz, OP2);
11299
11307
  const fromB = customRangeDay(from, "from", zone, OP2);
11300
11308
  const toB = customRangeDay(to, "to", zone, OP2);
11301
11309
  if (fromB.ms > toB.ms) {
11302
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`${OP2}: from (${iso2(fromB.ms)}) must not be after to (${iso2(toB.ms)})`, { operation: OP2 });
11310
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(`${OP2}: from (${iso2(fromB.ms)}) must not be after to (${iso2(toB.ms)})`, { operation: OP2 });
11303
11311
  }
11304
11312
  const windowToMs = zone === void 0 ? toB.ms + DAY_MS2 - 1 : localDayEndMs(toB.y, toB.mo, toB.d, zone);
11305
11313
  const filter = [
11306
11314
  { field: "dateWorked", op: "gte", value: iso2(fromB.ms) },
11307
11315
  { field: "dateWorked", op: "lte", value: iso2(windowToMs) }
11308
11316
  ];
11309
- if (_optionalChain([opts, 'optionalAccess', _71 => _71.posted]) === true) filter.push({ field: "postedDate", op: "exist" });
11310
- else if (_optionalChain([opts, 'optionalAccess', _72 => _72.posted]) === false) filter.push({ field: "postedDate", op: "notExist" });
11311
- if (_optionalChain([opts, 'optionalAccess', _73 => _73.ticketID]) !== void 0) filter.push({ field: "ticketID", op: "eq", value: opts.ticketID });
11312
- if (_optionalChain([opts, 'optionalAccess', _74 => _74.resourceID]) !== void 0) filter.push({ field: "resourceID", op: "eq", value: opts.resourceID });
11313
- const { items, hasMore } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _75 => _75.limit])), OP2, http);
11317
+ if (_optionalChain([opts, 'optionalAccess', _77 => _77.posted]) === true) filter.push({ field: "postedDate", op: "exist" });
11318
+ else if (_optionalChain([opts, 'optionalAccess', _78 => _78.posted]) === false) filter.push({ field: "postedDate", op: "notExist" });
11319
+ if (_optionalChain([opts, 'optionalAccess', _79 => _79.ticketID]) !== void 0) filter.push({ field: "ticketID", op: "eq", value: opts.ticketID });
11320
+ if (_optionalChain([opts, 'optionalAccess', _80 => _80.resourceID]) !== void 0) filter.push({ field: "resourceID", op: "eq", value: opts.resourceID });
11321
+ const { items, hasMore } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _81 => _81.limit])), OP2, http);
11314
11322
  let postedCount = 0;
11315
11323
  for (const item of items) {
11316
11324
  const postedDate = item.postedDate;
@@ -11366,13 +11374,13 @@ var LINKAGE_OWNED_FIELDS = /* @__PURE__ */ new Set([
11366
11374
  "roleID"
11367
11375
  ]);
11368
11376
  var TIME_WINDOW_FIELDS = /* @__PURE__ */ new Set(["dateWorked", "startDateTime", "endDateTime", "hoursWorked"]);
11369
- var ResourceInvalidError = class extends _chunkKB2ANVVRcjs.AutotaskError {
11377
+ var ResourceInvalidError = class extends _chunkZ7YT72SScjs.AutotaskError {
11370
11378
  constructor(message, options = {}) {
11371
11379
  super(message, { code: "RESOURCE_INVALID", category: "validation", ...options });
11372
11380
  this.name = "ResourceInvalidError";
11373
11381
  }
11374
11382
  };
11375
- var AllocationCodeError = class extends _chunkKB2ANVVRcjs.AutotaskError {
11383
+ var AllocationCodeError = class extends _chunkZ7YT72SScjs.AutotaskError {
11376
11384
  /** The failure kind (the machine code is `ALLOCATION_CODE_<KIND>`). */
11377
11385
 
11378
11386
  constructor(kind, message, options = {}) {
@@ -11381,7 +11389,7 @@ var AllocationCodeError = class extends _chunkKB2ANVVRcjs.AutotaskError {
11381
11389
  this.kind = kind;
11382
11390
  }
11383
11391
  };
11384
- var NoApplicableAllocationCodeError = class extends _chunkKB2ANVVRcjs.AutotaskError {
11392
+ var NoApplicableAllocationCodeError = class extends _chunkZ7YT72SScjs.AutotaskError {
11385
11393
  /** The structured blocker details (filters tried + department sets). */
11386
11394
 
11387
11395
  constructor(details, options = {}) {
@@ -11407,7 +11415,7 @@ async function boundedQuery(http, path, filter, totalCap, operation) {
11407
11415
  let pages = 0;
11408
11416
  for (; ; ) {
11409
11417
  if (pages >= PAGE_GUARD) {
11410
- throw new (0, _chunkKB2ANVVRcjs.AutotaskError)(`createForResource: the ${path} walk hit the ${PAGE_GUARD}-page guard`, {
11418
+ throw new (0, _chunkZ7YT72SScjs.AutotaskError)(`createForResource: the ${path} walk hit the ${PAGE_GUARD}-page guard`, {
11411
11419
  code: "RESOLUTION_TRUNCATED",
11412
11420
  category: "resolution",
11413
11421
  operation,
@@ -11418,11 +11426,11 @@ async function boundedQuery(http, path, filter, totalCap, operation) {
11418
11426
  const res = await http.request({
11419
11427
  method: "POST",
11420
11428
  idempotent: true,
11421
- path: isFirst ? path : _chunkKB2ANVVRcjs.cursorToPath.call(void 0, http.baseUrl, cursor),
11429
+ path: isFirst ? path : _chunkZ7YT72SScjs.cursorToPath.call(void 0, http.baseUrl, cursor),
11422
11430
  body: { MaxRecords: pageSize, filter },
11423
11431
  operation
11424
11432
  });
11425
- const { items: pageItems, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, operation);
11433
+ const { items: pageItems, pageDetails } = _chunkZ7YT72SScjs.unwrapItems.call(void 0, res, operation);
11426
11434
  items.push(...pageItems);
11427
11435
  pages += 1;
11428
11436
  if (items.length >= totalCap) break;
@@ -11535,8 +11543,8 @@ function windowDefaults(params) {
11535
11543
  };
11536
11544
  }
11537
11545
  async function createForResource(resource, resourceID, params, opts = {}, http) {
11538
- const rid = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, resourceID, "resourceID");
11539
- const pin = (value, label) => typeof value === "number" ? _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, value, label) : void 0;
11546
+ const rid = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, resourceID, "resourceID");
11547
+ const pin = (value, label) => typeof value === "number" ? _chunkZ7YT72SScjs.parseIdentifier.call(void 0, value, label) : void 0;
11540
11548
  const pins = {
11541
11549
  code: pin(params.internallAllocationCodeID, "internallAllocationCodeID"),
11542
11550
  ticket: pin(params.ticketID, "ticketID"),
@@ -11545,19 +11553,19 @@ async function createForResource(resource, resourceID, params, opts = {}, http)
11545
11553
  };
11546
11554
  const pinCount = [pins.code, pins.ticket, pins.task].filter((v) => v !== void 0).length;
11547
11555
  if (pinCount > 1) {
11548
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
11556
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
11549
11557
  "createForResource: exactly one linkage pin is honoured (internallAllocationCodeID | ticketID | taskID) \u2014 the vendor gate requires exactly one; pass one pin (or none for the default internal linkage)",
11550
11558
  { operation: OP }
11551
11559
  );
11552
11560
  }
11553
11561
  if (pins.role !== void 0 && pins.code !== void 0) {
11554
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
11562
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
11555
11563
  "createForResource: a pinned roleID is only meaningful with the task/ticket linkage (internallAllocationCodeID pins the internal linkage and owns the code) \u2014 drop one",
11556
11564
  { operation: OP }
11557
11565
  );
11558
11566
  }
11559
11567
  if (params.hoursWorked !== void 0 && (typeof params.hoursWorked !== "number" || !Number.isFinite(params.hoursWorked) || params.hoursWorked <= 0)) {
11560
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
11568
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)(
11561
11569
  `createForResource: hoursWorked must be a positive finite number (got ${String(params.hoursWorked)})`,
11562
11570
  { operation: OP }
11563
11571
  );
@@ -11634,7 +11642,7 @@ async function createForResource(resource, resourceID, params, opts = {}, http)
11634
11642
  if (usedLinkage === "internal" && linkage === "task") {
11635
11643
  warnings.push("the task had zero applicable general allocation codes \u2014 the linkage fell back to internal (the sanctioned fallback; no taskID/roleID in the body).");
11636
11644
  }
11637
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
11645
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0,
11638
11646
  {
11639
11647
  operation: OP,
11640
11648
  method: "POST",
@@ -11663,7 +11671,7 @@ async function createForResource(resource, resourceID, params, opts = {}, http)
11663
11671
  for (let attempt = 1; attempt <= MAX_CREATE_ATTEMPTS; attempt += 1) {
11664
11672
  if (usedLinkage !== "internal") body.roleID = roleCandidates[Math.min(attempt, roleCandidates.length) - 1];
11665
11673
  try {
11666
- const created = await resource.create(body, {});
11674
+ const created = await resource.create(body, { maxRetries: opts.maxRetries });
11667
11675
  return {
11668
11676
  id: created.id,
11669
11677
  linkage: usedLinkage,
@@ -11673,7 +11681,7 @@ async function createForResource(resource, resourceID, params, opts = {}, http)
11673
11681
  };
11674
11682
  } catch (err) {
11675
11683
  lastError = err;
11676
- const text = _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? `${_nullishCoalesce(_chunkKB2ANVVRcjs.formatVendorDetail.call(void 0, err.vendorError), () => ( ""))} ${err.message}` : "";
11684
+ const text = _chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) ? `${_nullishCoalesce(_chunkZ7YT72SScjs.formatVendorDetail.call(void 0, err.vendorError), () => ( ""))} ${err.message}` : "";
11677
11685
  const gate3 = ROLE_REJECTION_PATTERN.test(text);
11678
11686
  if (usedLinkage !== "internal" && gate3) {
11679
11687
  if (!taskRoleFetched && usedLinkage === "task" && pins.task !== void 0) {
@@ -11693,14 +11701,14 @@ async function createForResource(resource, resourceID, params, opts = {}, http)
11693
11701
  throw err;
11694
11702
  }
11695
11703
  }
11696
- if (_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, lastError)) {
11704
+ if (_chunkZ7YT72SScjs.isAutotaskError.call(void 0, lastError)) {
11697
11705
  lastError.suggestedAction = (lastError.suggestedAction ? `${lastError.suggestedAction} ` : "") + `The createForResource attempt budget (${MAX_CREATE_ATTEMPTS} attempts: the role ladder + ${MAX_DISCOVERY_MERGES2} discovery merges) was exhausted \u2014 the vendor oracle rejected every candidate. Re-read the record/fields (operations.fieldCatalog, billing_codes.query with a filter) and retry with an explicit pin.`;
11698
11706
  }
11699
11707
  throw lastError;
11700
11708
  }
11701
11709
  function discoveryField(err, body, defaults) {
11702
- if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) return null;
11703
- const entries = _chunkKB2ANVVRcjs.parseVendorErrors.call(void 0, err.vendorError);
11710
+ if (!_chunkZ7YT72SScjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) return null;
11711
+ const entries = _chunkZ7YT72SScjs.parseVendorErrors.call(void 0, err.vendorError);
11704
11712
  if (entries === void 0) return null;
11705
11713
  for (const entry of entries) {
11706
11714
  const field = entry.field;
@@ -11713,7 +11721,7 @@ function discoveryField(err, body, defaults) {
11713
11721
  }
11714
11722
 
11715
11723
  // src/resources/time_entries.ts
11716
- var TimeEntriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
11724
+ var TimeEntriesResource = class extends _chunkZ7YT72SScjs.BaseResource {
11717
11725
  constructor(http, pageSize) {
11718
11726
  super(http, {
11719
11727
  key: "time_entries",
@@ -11766,7 +11774,7 @@ var TimeEntriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
11766
11774
  async delete(id, opts = {}) {
11767
11775
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts);
11768
11776
  await this.guardStaleBeforeMutation(id, opts, "time_entries.delete");
11769
- return this.deleteGlobal(id);
11777
+ return this.deleteGlobal(id, opts);
11770
11778
  }
11771
11779
  /** Resolve a TimeEntry from a numeric id (or, where the vendor indexes a primary text field,
11772
11780
  * from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
@@ -11850,7 +11858,7 @@ var TimeEntriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
11850
11858
  };
11851
11859
 
11852
11860
  // src/resources/time_entry_attachments.ts
11853
- var TimeEntryAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
11861
+ var TimeEntryAttachmentsResource = class extends _chunkZ7YT72SScjs.BaseResource {
11854
11862
  constructor(http, pageSize) {
11855
11863
  super(http, {
11856
11864
  key: "time_entry_attachments",
@@ -11892,7 +11900,7 @@ var TimeEntryAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource
11892
11900
  async delete(parentId, id, opts = {}) {
11893
11901
  if (opts.dryRun === true) return this.runDeleteDryRun(id, opts, parentId);
11894
11902
  await this.guardStaleBeforeMutation(id, opts, "time_entry_attachments.delete", parentId);
11895
- return this.deleteScopedModel(parentId, id);
11903
+ return this.deleteScopedModel(parentId, id, opts);
11896
11904
  }
11897
11905
  /** Download the attachment bytes (GET .../{id}/data; node-proven path, quirk #9) → Buffer. */
11898
11906
  async download(parentId, id) {
@@ -11913,9 +11921,9 @@ var TimeEntryAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource
11913
11921
 
11914
11922
  // src/resources/special/time_off_requests.ts
11915
11923
  async function approve(_resource, id, opts = {}, http) {
11916
- const numericId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
11924
+ const numericId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, id, "id");
11917
11925
  if (opts.dryRun === true) {
11918
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
11926
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0, {
11919
11927
  operation: "time_off_requests.approve",
11920
11928
  method: "GET",
11921
11929
  path: `/V1.0/TimeOffRequests/${numericId}/Approve`,
@@ -11928,18 +11936,19 @@ async function approve(_resource, id, opts = {}, http) {
11928
11936
  const res = await http.request({
11929
11937
  method: "GET",
11930
11938
  path: `/V1.0/TimeOffRequests/${numericId}/Approve`,
11931
- operation: "time_off_requests.approve"
11939
+ operation: "time_off_requests.approve",
11940
+ maxRetries: opts.maxRetries
11932
11941
  });
11933
- return _chunkKB2ANVVRcjs.unwrapOperation.call(void 0, res);
11942
+ return _chunkZ7YT72SScjs.unwrapOperation.call(void 0, res);
11934
11943
  }
11935
11944
  async function reject(_resource, id, reason, opts = {}, http) {
11936
- const numericId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
11945
+ const numericId = _chunkZ7YT72SScjs.parseIdentifier.call(void 0, id, "id");
11937
11946
  const text = reason.trim();
11938
11947
  if (text === "") {
11939
- throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("reject: a non-empty reason is required (vendor TimeOffRequestRejectModel)");
11948
+ throw new (0, _chunkZ7YT72SScjs.AutotaskConfigError)("reject: a non-empty reason is required (vendor TimeOffRequestRejectModel)");
11940
11949
  }
11941
11950
  if (opts.dryRun === true) {
11942
- return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
11951
+ return _chunkZ7YT72SScjs.buildDryRunResult.call(void 0, {
11943
11952
  operation: "time_off_requests.reject",
11944
11953
  method: "POST",
11945
11954
  path: `/V1.0/TimeOffRequests/${numericId}/Reject`,
@@ -11954,13 +11963,14 @@ async function reject(_resource, id, reason, opts = {}, http) {
11954
11963
  method: "POST",
11955
11964
  path: `/V1.0/TimeOffRequests/${numericId}/Reject`,
11956
11965
  body: { timeOffRequestID: numericId, reason: text },
11957
- operation: "time_off_requests.reject"
11966
+ operation: "time_off_requests.reject",
11967
+ maxRetries: opts.maxRetries
11958
11968
  });
11959
- return _chunkKB2ANVVRcjs.unwrapOperation.call(void 0, res);
11969
+ return _chunkZ7YT72SScjs.unwrapOperation.call(void 0, res);
11960
11970
  }
11961
11971
 
11962
11972
  // src/resources/time_off_requests.ts
11963
- var TimeOffRequestsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
11973
+ var TimeOffRequestsResource = class extends _chunkZ7YT72SScjs.BaseResource {
11964
11974
  constructor(http, pageSize) {
11965
11975
  super(http, {
11966
11976
  key: "time_off_requests",