node-autotask 0.39.0 → 0.39.1

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 (39) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/MCP_TOOL_MANIFEST.md +4 -4
  3. package/N8N_MCP_MANIFEST.json +2 -2
  4. package/N8N_MCP_MANIFEST.md +3 -3
  5. package/capabilities.json +144 -144
  6. package/dist/capabilities.cjs +2 -2
  7. package/dist/capabilities.js +1 -1
  8. package/dist/{chunk-KSNK6UEW.cjs → chunk-73QNAEAF.cjs} +143 -143
  9. package/dist/{chunk-OKFTECIE.js → chunk-CQXB7KAO.js} +2 -2
  10. package/dist/{chunk-2KQS3RHQ.js → chunk-GDSCYY2G.js} +143 -143
  11. package/dist/{chunk-6ROB5KXB.cjs → chunk-GIVYTQ6R.cjs} +285 -285
  12. package/dist/{chunk-45PLS73K.cjs → chunk-LB34VFQY.cjs} +132 -99
  13. package/dist/{chunk-LD5UPSDB.js → chunk-LDTJNLX7.js} +2 -2
  14. package/dist/{chunk-FV5PJLIZ.js → chunk-LN3HQQBR.js} +48 -15
  15. package/dist/{chunk-RAZEXOLC.cjs → chunk-VR6RYXTD.cjs} +143 -143
  16. package/dist/{index-Bmoiwhx2.d.ts → index-C-Oqef4y.d.cts} +7169 -51
  17. package/dist/{index-BVOOHPvr.d.cts → index-C-Oqef4y.d.ts} +7169 -51
  18. package/dist/index.cjs +22 -22
  19. package/dist/index.d.cts +2 -4
  20. package/dist/index.d.ts +2 -4
  21. package/dist/index.js +4 -4
  22. package/dist/operations/index.cjs +179 -177
  23. package/dist/operations/index.d.cts +3 -221
  24. package/dist/operations/index.d.ts +3 -221
  25. package/dist/operations/index.js +4 -2
  26. package/dist/pool.cjs +9 -9
  27. package/dist/pool.d.cts +1 -2
  28. package/dist/pool.d.ts +1 -2
  29. package/dist/pool.js +4 -4
  30. package/dist/resources/index.cjs +4 -4
  31. package/dist/resources/index.d.cts +1 -2
  32. package/dist/resources/index.d.ts +1 -2
  33. package/dist/resources/index.js +3 -3
  34. package/dist/types/index.d.cts +1 -1
  35. package/dist/types/index.d.ts +1 -1
  36. package/docs/API.md +37 -7
  37. package/package.json +1 -1
  38. package/dist/index-BQVStxwi.d.cts +0 -6893
  39. package/dist/index-BQVStxwi.d.ts +0 -6893
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } async function _asyncOptionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = await fn(value); } else if (op === 'call' || op === 'optionalCall') { value = await fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8;
2
2
 
3
- var _chunkRAZEXOLCcjs = require('./chunk-RAZEXOLC.cjs');
3
+ var _chunkVR6RYXTDcjs = require('./chunk-VR6RYXTD.cjs');
4
4
 
5
5
 
6
6
  var _chunkMJTKK3QGcjs = require('./chunk-MJTKK3QG.cjs');
@@ -17853,7 +17853,7 @@ function buildEntityTypeMap() {
17853
17853
  }
17854
17854
  var ENTITY_TYPE_TO_RESOURCE = buildEntityTypeMap();
17855
17855
  var ENUMERABLE_RESOURCES = new Set(
17856
- _chunkRAZEXOLCcjs.CAPABILITIES.filter((rec) => rec.resource !== "operations" && (rec.operation === "query" || rec.operation === "get")).map(
17856
+ _chunkVR6RYXTDcjs.CAPABILITIES.filter((rec) => rec.resource !== "operations" && (rec.operation === "query" || rec.operation === "get")).map(
17857
17857
  (rec) => rec.resource
17858
17858
  )
17859
17859
  );
@@ -17941,7 +17941,7 @@ function capabilitySets() {
17941
17941
  const fieldOps = /* @__PURE__ */ new Map();
17942
17942
  const udfCapable = /* @__PURE__ */ new Set();
17943
17943
  const resources = /* @__PURE__ */ new Set();
17944
- for (const rec of _chunkRAZEXOLCcjs.CAPABILITIES) {
17944
+ for (const rec of _chunkVR6RYXTDcjs.CAPABILITIES) {
17945
17945
  if (rec.resource === "operations") continue;
17946
17946
  resources.add(rec.resource);
17947
17947
  if (rec.operation === "getFieldInfo") fieldOps.set(rec.resource, rec);
@@ -17953,7 +17953,7 @@ var derivedIndex = null;
17953
17953
  function derivedFieldsFor(resource) {
17954
17954
  if (derivedIndex === null) {
17955
17955
  derivedIndex = /* @__PURE__ */ new Map();
17956
- for (const rec of _chunkRAZEXOLCcjs.CAPABILITIES) {
17956
+ for (const rec of _chunkVR6RYXTDcjs.CAPABILITIES) {
17957
17957
  const declared = _optionalChain([rec, 'access', _136 => _136.metadata, 'optionalAccess', _137 => _137.derivedFields]);
17958
17958
  if (!Array.isArray(declared) || derivedIndex.has(rec.resource)) continue;
17959
17959
  const rows = [];
@@ -20530,6 +20530,7 @@ var BaseResource = class extends MutationBase {
20530
20530
 
20531
20531
  // src/operations/compositeNames.ts
20532
20532
  var PICKLIST_VALUE_NOT_SERVED_NOTE = "The picklist is served to this API user, but this record's value is not in it (an inactive or unexposed value) \u2014 the label cannot be resolved and is null; refreshing the field catalog will not surface it. (A picklist the vendor does not expose at all is reported with the field-catalog honesty note instead.)";
20533
+ var PICKLIST_CATALOG_UNAVAILABLE_NOTE = "The field-catalog read that serves picklist labels failed for this call, so this label is unavailable (null), not absent: the value may well have one. Retry the call once the catalog read succeeds (see names.catalogError).";
20533
20534
  var DEFAULT_MAX_NAME_READS = 20;
20534
20535
  var TICKET_LABEL_FIELDS = ["status", "priority", "ticketType", "issueType", "subIssueType", "source", "queueID"];
20535
20536
  function isVendorId(value) {
@@ -20840,7 +20841,7 @@ async function resolveCompositeNames(http, plan, opts = {}) {
20840
20841
  }
20841
20842
  const hit = values.find((v) => String(v.value) === String(value));
20842
20843
  if (hit === void 0) {
20843
- section.reasons[field] = PICKLIST_VALUE_NOT_SERVED_NOTE;
20844
+ if (String(value) !== "0") section.reasons[field] = PICKLIST_VALUE_NOT_SERVED_NOTE;
20844
20845
  return null;
20845
20846
  }
20846
20847
  return typeof hit.label === "string" ? hit.label : null;
@@ -20861,6 +20862,7 @@ function untrustedName(name) {
20861
20862
  const [[capped]] = truncateNoteChars([{ v: name }], LABEL_NAME_MAX_CHARS, ["v"]);
20862
20863
  return _nullishCoalesce(_chunkMJTKK3QGcjs.wrapUntrusted.call(void 0, capped.v), () => ( capped.v));
20863
20864
  }
20865
+ var lastPicklists = /* @__PURE__ */ new WeakMap();
20864
20866
  function readNamesOpt(value, where) {
20865
20867
  if (value === void 0) return true;
20866
20868
  if (typeof value !== "boolean") {
@@ -20873,17 +20875,31 @@ async function labelRows(client, resourceKey, rows) {
20873
20875
  for (const row of rows) for (const k of Object.keys(row)) keys.add(k);
20874
20876
  if (keys.size === 0) return { rows: [...rows] };
20875
20877
  let picklistFields = [];
20878
+ let unavailable = [];
20879
+ let catalogError;
20876
20880
  const modelFields = _nullishCoalesce(MODEL_FIELD_SETS[resourceKey], () => ( []));
20877
20881
  const candidates = [...keys].filter((f) => f !== "id" && modelFields.includes(f) && ROW_FK_TABLES[f] === void 0 && !isResourceFkField(f));
20878
20882
  if (candidates.length > 0) try {
20879
20883
  const catalog = await fieldCatalog(client, { resources: [resourceKey], labels: true });
20880
- const fields = _nullishCoalesce(_optionalChain([catalog, 'access', _204 => _204.rows, 'access', _205 => _205.find, 'call', _206 => _206((r) => r.resource === resourceKey), 'optionalAccess', _207 => _207.fields]), () => ( []));
20881
- picklistFields = fields.filter((f) => f.isPickList && candidates.includes(f.name)).map((f) => f.name);
20884
+ const row = catalog.rows.find((r) => r.resource === resourceKey);
20885
+ const known = _nullishCoalesce(lastPicklists.get(client), () => ( /* @__PURE__ */ new Map()));
20886
+ lastPicklists.set(client, known);
20887
+ if (_optionalChain([row, 'optionalAccess', _204 => _204.fields]) === void 0) {
20888
+ const last = known.get(resourceKey);
20889
+ unavailable = (_nullishCoalesce(last, () => ( []))).filter((f) => candidates.includes(f));
20890
+ if (last === void 0 || unavailable.length > 0) {
20891
+ catalogError = _nullishCoalesce(_optionalChain([row, 'optionalAccess', _205 => _205.error]), () => ( { code: "INVALID_RESPONSE", message: `fieldCatalog: no ${resourceKey} row` }));
20892
+ }
20893
+ } else {
20894
+ const all = row.fields.filter((f) => f.isPickList).map((f) => f.name);
20895
+ known.set(resourceKey, all);
20896
+ picklistFields = all.filter((f) => candidates.includes(f));
20897
+ }
20882
20898
  } catch (err) {
20883
20899
  if (!isAutotaskError(err) || err.code === "ABORTED") throw err;
20884
20900
  }
20885
- const labelled = (field) => picklistFields.includes(field) || ROW_FK_TABLES[field] !== void 0 || isResourceFkField(field);
20886
- if (![...keys].some(labelled)) return { rows: [...rows] };
20901
+ const labelled = (field) => picklistFields.includes(field) || unavailable.includes(field) || ROW_FK_TABLES[field] !== void 0 || isResourceFkField(field);
20902
+ if (catalogError === void 0 && ![...keys].some(labelled)) return { rows: [...rows] };
20887
20903
  const builder = createNamePlan(picklistFields, resourceKey);
20888
20904
  for (const row of rows) {
20889
20905
  for (const [field, value] of Object.entries(row)) {
@@ -20898,8 +20914,10 @@ async function labelRows(client, resourceKey, rows) {
20898
20914
  const out = rows.map((row) => {
20899
20915
  const r = { ...row };
20900
20916
  for (const [field, value] of Object.entries(row)) {
20901
- const set = value !== null && value !== void 0 && value !== 0 && value !== "0" && names !== void 0;
20902
- if (picklistFields.includes(field)) r[`${field}Label`] = set ? names.labelFor(field, value) : null;
20917
+ const has2 = value !== null && value !== void 0 && names !== void 0;
20918
+ if (picklistFields.includes(field)) r[`${field}Label`] = has2 ? names.labelFor(field, value) : null;
20919
+ else if (unavailable.includes(field)) r[`${field}Label`] = null;
20920
+ const set = has2 && value !== 0 && value !== "0";
20903
20921
  const table = ROW_FK_TABLES[field];
20904
20922
  if (table !== void 0) r[`${field}Name`] = set && isVendorId(value) ? untrustedName(names.recordName(table, value)) : null;
20905
20923
  else if (isResourceFkField(field)) r[`${field}Name`] = set && isVendorId(value) ? untrustedName(names.resourceName(value)) : null;
@@ -20907,16 +20925,28 @@ async function labelRows(client, resourceKey, rows) {
20907
20925
  if (r["assignedResourceIDName"] !== void 0) r["assignedResourceName"] = r["assignedResourceIDName"];
20908
20926
  return r;
20909
20927
  });
20910
- if (names === void 0) return { rows: out };
20911
- const capped = Object.values(names.section.rows).filter((row) => row.capped).length;
20912
- const reasons = names.section.reasons;
20913
- if (capped === 0 && Object.keys(reasons).length === 0) return { rows: out };
20928
+ const capped = names === void 0 ? 0 : Object.values(names.section.rows).filter((row) => row.capped).length;
20929
+ const unresolved = Object.keys(_nullishCoalesce(_optionalChain([names, 'optionalAccess', _206 => _206.section, 'access', _207 => _207.reasons]), () => ( {})));
20930
+ const reasons = { ..._optionalChain([names, 'optionalAccess', _208 => _208.section, 'access', _209 => _209.reasons]) };
20931
+ for (const f of unavailable) reasons[f] = PICKLIST_CATALOG_UNAVAILABLE_NOTE;
20932
+ if (capped === 0 && unresolved.length === 0 && catalogError === void 0) return { rows: out };
20914
20933
  const parts = [];
20915
20934
  if (capped > 0) parts.push(`${capped} id(s) left unlabelled (their *Name is null): the per-call cap of ${DEFAULT_MAX_NAME_READS} uncached name reads was hit \u2014 names already read are cached, so repeating or narrowing the call labels more`);
20916
- if (Object.keys(reasons).length > 0) parts.push(`picklist label(s) unavailable for ${Object.keys(reasons).join(", ")} (see reasons)`);
20935
+ if (unresolved.length > 0) parts.push(`picklist label(s) unavailable for ${unresolved.join(", ")} (see reasons)`);
20936
+ if (catalogError !== void 0) {
20937
+ parts.push(
20938
+ `the ${resourceKey} field catalog read failed (${catalogError.code}), so picklist labels are unavailable for this call, not absent: ` + (unavailable.length > 0 ? `the *Label is null for ${unavailable.join(", ")}` : "no *Label sibling was added (the picklist fields are unknown until a catalog read succeeds)") + " \u2014 retry the call to label them"
20939
+ );
20940
+ }
20917
20941
  return {
20918
20942
  rows: out,
20919
- names: { truncated: capped > 0, capped, note: parts.join("; "), ...Object.keys(reasons).length > 0 ? { reasons } : {} }
20943
+ names: {
20944
+ truncated: capped > 0,
20945
+ capped,
20946
+ note: parts.join("; "),
20947
+ ...Object.keys(reasons).length > 0 ? { reasons } : {},
20948
+ ...catalogError !== void 0 ? { catalogError } : {}
20949
+ }
20920
20950
  };
20921
20951
  }
20922
20952
  async function labelFetchResults(client, result) {
@@ -20935,11 +20965,13 @@ async function labelFetchResults(client, result) {
20935
20965
  }
20936
20966
  if (summaries.length === 0) return { ...result, results };
20937
20967
  const reasons = Object.assign({}, ...summaries.map((s) => _nullishCoalesce(s.reasons, () => ( {}))));
20968
+ const catalogError = _optionalChain([summaries, 'access', _210 => _210.find, 'call', _211 => _211((s) => s.catalogError !== void 0), 'optionalAccess', _212 => _212.catalogError]);
20938
20969
  const names = {
20939
20970
  truncated: summaries.some((s) => s.truncated),
20940
20971
  capped: summaries.reduce((n, s) => n + s.capped, 0),
20941
20972
  note: summaries.map((s) => s.note).join("; "),
20942
- ...Object.keys(reasons).length > 0 ? { reasons } : {}
20973
+ ...Object.keys(reasons).length > 0 ? { reasons } : {},
20974
+ ...catalogError !== void 0 ? { catalogError } : {}
20943
20975
  };
20944
20976
  return { ...result, results, names };
20945
20977
  }
@@ -20969,7 +21001,7 @@ var BillingCodesResource = class extends BaseResource {
20969
21001
  }
20970
21002
  /** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
20971
21003
  async get(id, opts = {}) {
20972
- return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _208 => _208.fresh]) === true);
21004
+ return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _213 => _213.fresh]) === true);
20973
21005
  }
20974
21006
  /** Resolve a BillingCode from a numeric id (or, where the vendor indexes a primary text field,
20975
21007
  * from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
@@ -20984,7 +21016,7 @@ var BillingCodesResource = class extends BaseResource {
20984
21016
  /** Search BillingCode records: bounded contains on name (no vendor free-text search exists);
20985
21017
  * limit defaults to 25, max 500. */
20986
21018
  async search(query, opts) {
20987
- return this.searchBase(query, { limit: _optionalChain([opts, 'optionalAccess', _209 => _209.limit]) });
21019
+ return this.searchBase(query, { limit: _optionalChain([opts, 'optionalAccess', _214 => _214.limit]) });
20988
21020
  }
20989
21021
  };
20990
21022
 
@@ -21288,28 +21320,28 @@ async function customRangeQuery(http, path, field, from, to, limit, operation, z
21288
21320
 
21289
21321
  // src/resources/special/billing_items.ts
21290
21322
  async function windowQuery(_resource, kind, http, opts) {
21291
- const now = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _210 => _210.now]), () => ( /* @__PURE__ */ new Date()));
21292
- const tz = _optionalChain([opts, 'optionalAccess', _211 => _211.tz]) === void 0 ? void 0 : validateZone(opts.tz, `billing_items.${kind}`);
21323
+ const now = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _215 => _215.now]), () => ( /* @__PURE__ */ new Date()));
21324
+ const tz = _optionalChain([opts, 'optionalAccess', _216 => _216.tz]) === void 0 ? void 0 : validateZone(opts.tz, `billing_items.${kind}`);
21293
21325
  return dateWindowQuery(
21294
21326
  http,
21295
21327
  "/V1.0/BillingItems/query",
21296
21328
  "itemDate",
21297
21329
  kind,
21298
- clampWindowLimit(_optionalChain([opts, 'optionalAccess', _212 => _212.limit])),
21330
+ clampWindowLimit(_optionalChain([opts, 'optionalAccess', _217 => _217.limit])),
21299
21331
  `billing_items.${kind}`,
21300
21332
  now,
21301
21333
  tz
21302
21334
  );
21303
21335
  }
21304
21336
  async function customRange(_resource, from, to, http, opts) {
21305
- const zone = _optionalChain([opts, 'optionalAccess', _213 => _213.tz]) === void 0 ? void 0 : validateZone(opts.tz, "billing_items.customRange");
21337
+ const zone = _optionalChain([opts, 'optionalAccess', _218 => _218.tz]) === void 0 ? void 0 : validateZone(opts.tz, "billing_items.customRange");
21306
21338
  return customRangeQuery(
21307
21339
  http,
21308
21340
  "/V1.0/BillingItems/query",
21309
21341
  "itemDate",
21310
21342
  from,
21311
21343
  to,
21312
- clampWindowLimit(_optionalChain([opts, 'optionalAccess', _214 => _214.limit])),
21344
+ clampWindowLimit(_optionalChain([opts, 'optionalAccess', _219 => _219.limit])),
21313
21345
  "billing_items.customRange",
21314
21346
  zone
21315
21347
  );
@@ -21341,7 +21373,7 @@ var BillingItemsResource = class extends BaseResource {
21341
21373
  }
21342
21374
  /** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
21343
21375
  async get(id, opts = {}) {
21344
- return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _215 => _215.fresh]) === true);
21376
+ return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _220 => _220.fresh]) === true);
21345
21377
  }
21346
21378
  /** Update a record (PUT on the COLLECTION — the vendored spec's item path is GET-only; the vendor
21347
21379
  * keys the record by the id in the body). The vendor validates the FULL model on this route (V2), so a
@@ -21533,9 +21565,9 @@ async function searchByDomain(_resource, domain, opts = {}, http) {
21533
21565
  return fetchCompanies(http, ids2, limit);
21534
21566
  }
21535
21567
  async function searchByIdentity(_resource, identity, opts = {}, http) {
21536
- const name = _nullishCoalesce(_optionalChain([identity, 'access', _216 => _216.companyName, 'optionalAccess', _217 => _217.trim, 'call', _218 => _218()]), () => ( ""));
21537
- const email = _nullishCoalesce(_optionalChain([identity, 'access', _219 => _219.email, 'optionalAccess', _220 => _220.trim, 'call', _221 => _221()]), () => ( ""));
21538
- const website = _nullishCoalesce(_optionalChain([identity, 'access', _222 => _222.website, 'optionalAccess', _223 => _223.trim, 'call', _224 => _224()]), () => ( ""));
21568
+ const name = _nullishCoalesce(_optionalChain([identity, 'access', _221 => _221.companyName, 'optionalAccess', _222 => _222.trim, 'call', _223 => _223()]), () => ( ""));
21569
+ const email = _nullishCoalesce(_optionalChain([identity, 'access', _224 => _224.email, 'optionalAccess', _225 => _225.trim, 'call', _226 => _226()]), () => ( ""));
21570
+ const website = _nullishCoalesce(_optionalChain([identity, 'access', _227 => _227.website, 'optionalAccess', _228 => _228.trim, 'call', _229 => _229()]), () => ( ""));
21539
21571
  if (name === "" && email === "" && website === "") {
21540
21572
  throw new AutotaskConfigError("searchByIdentity: at least one of companyName / email / website is required");
21541
21573
  }
@@ -21674,7 +21706,7 @@ function validateUpsertInput(companyName, params) {
21674
21706
  if (typeof companyName !== "string" || companyName.trim() === "") {
21675
21707
  throw new AutotaskConfigError("upsertByName: companyName is required (a non-empty string)", { operation: OP_UPSERT_NAME });
21676
21708
  }
21677
- if (typeof _optionalChain([params, 'optionalAccess', _225 => _225.phone]) !== "string" || params.phone.trim() === "") {
21709
+ if (typeof _optionalChain([params, 'optionalAccess', _230 => _230.phone]) !== "string" || params.phone.trim() === "") {
21678
21710
  throw new 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 });
21679
21711
  }
21680
21712
  const companyType = _nullishCoalesce(params.companyType, () => ( DEFAULT_COMPANY_TYPE));
@@ -21899,7 +21931,7 @@ function readIncludeNames(record, includeFields) {
21899
21931
  function resolveAuthority(record, live) {
21900
21932
  if (live !== null) return { known: live, authority: "the tenant's live entity field metadata" };
21901
21933
  const vendored = MODEL_FIELD_SETS[record.resource];
21902
- const liveOnlyExempt = Array.isArray(_optionalChain([record, 'access', _226 => _226.metadata, 'optionalAccess', _227 => _227.liveOnlyFields])) ? record.metadata.liveOnlyFields : [];
21934
+ const liveOnlyExempt = Array.isArray(_optionalChain([record, 'access', _231 => _231.metadata, 'optionalAccess', _232 => _232.liveOnlyFields])) ? record.metadata.liveOnlyFields : [];
21903
21935
  if (vendored === void 0) return void 0;
21904
21936
  return {
21905
21937
  known: [...vendored, ...liveOnlyExempt],
@@ -21955,11 +21987,11 @@ var CLOSED_STATUS_LABELS = ["complete", "completed", "closed", "cancelled", "can
21955
21987
  var OP = "tickets.statusSemantics";
21956
21988
  function picklistOf(fields) {
21957
21989
  if (!Array.isArray(fields)) return [];
21958
- const status = fields.find((f) => typeof _optionalChain([f, 'optionalAccess', _228 => _228.name]) === "string" && f.name.toLowerCase() === "status");
21990
+ const status = fields.find((f) => typeof _optionalChain([f, 'optionalAccess', _233 => _233.name]) === "string" && f.name.toLowerCase() === "status");
21959
21991
  if (status === void 0 || status.isPickList !== true || !Array.isArray(status.picklistValues)) return [];
21960
21992
  const out = [];
21961
21993
  for (const v of status.picklistValues) {
21962
- const id = Number(_optionalChain([v, 'optionalAccess', _229 => _229.value]));
21994
+ const id = Number(_optionalChain([v, 'optionalAccess', _234 => _234.value]));
21963
21995
  if (!Number.isSafeInteger(id)) continue;
21964
21996
  out.push({ id, label: typeof v.label === "string" ? v.label : "" });
21965
21997
  }
@@ -21975,11 +22007,11 @@ async function readFields(http, fresh) {
21975
22007
  if (hit !== void 0) return hit;
21976
22008
  }
21977
22009
  const res = await http.request({ method: "GET", path: "/V1.0/Tickets/entityInformation/fields", operation: OP, maxRetries: 0 });
21978
- const fields = _optionalChain([res, 'optionalAccess', _230 => _230.fields]);
22010
+ const fields = _optionalChain([res, 'optionalAccess', _235 => _235.fields]);
21979
22011
  if (!Array.isArray(fields)) {
21980
22012
  throw new AutotaskError("Expected the FieldInformationResultModel envelope { fields: [] }; got a different shape", { code: "INVALID_RESPONSE", category: "server" });
21981
22013
  }
21982
- _optionalChain([cache, 'optionalAccess', _231 => _231.set, 'call', _232 => _232(key, "fields", fields)]);
22014
+ _optionalChain([cache, 'optionalAccess', _236 => _236.set, 'call', _237 => _237(key, "fields", fields)]);
21983
22015
  return fields;
21984
22016
  }
21985
22017
  function assumed(allowAssumed, operation) {
@@ -22131,7 +22163,7 @@ async function readOpenTickets(http, companyID, ticketLimit, includeFields, stat
22131
22163
  closedStatus
22132
22164
  };
22133
22165
  if (openRows.length === 0) {
22134
- const stamp = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _233 => _233["tickets"], 'optionalAccess', _234 => _234.query]), [{ field: "companyID", op: "eq", value: companyID }, openLeaf]);
22166
+ const stamp = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _238 => _238["tickets"], 'optionalAccess', _239 => _239.query]), [{ field: "companyID", op: "eq", value: companyID }, openLeaf]);
22135
22167
  if (stamp !== void 0) {
22136
22168
  openTickets = {
22137
22169
  items: openRows,
@@ -22301,7 +22333,7 @@ async function prepareCrmWrite(resource, input, http) {
22301
22333
  const rows = await readRows(http, "/V1.0/CompanyLocations/query", [{ field: "companyID", op: "eq", value: companyID }]);
22302
22334
  const items = rows.map((r) => ({ id: r.id, name: str(r.name), isPrimary: bool(r.isPrimary), isActive: bool(r.isActive), city: str(r.city), state: str(r.state), postalCode: str(r.postalCode) }));
22303
22335
  const active = items.filter((l) => l.isActive !== false);
22304
- const m = active.filter((l) => has(ct.city) && _optionalChain([l, 'access', _235 => _235.city, 'optionalAccess', _236 => _236.toLowerCase, 'call', _237 => _237()]) === String(ct.city).toLowerCase() || has(ct.postalCode) && l.postalCode === String(ct.postalCode));
22336
+ const m = active.filter((l) => has(ct.city) && _optionalChain([l, 'access', _240 => _240.city, 'optionalAccess', _241 => _241.toLowerCase, 'call', _242 => _242()]) === String(ct.city).toLowerCase() || has(ct.postalCode) && l.postalCode === String(ct.postalCode));
22305
22337
  const pick = has(ct.companyLocationID) ? { rule: "matched", locationID: ct.companyLocationID } : active.length === 1 ? { rule: "single", locationID: active[0].id } : active.length > 1 && m.length === 1 ? { rule: "matched", locationID: m[0].id } : active.length > 1 ? { rule: "ask", locationID: null } : { rule: "none", locationID: null };
22306
22338
  locations = { items, pick };
22307
22339
  if (input.intent === "add_contact" && pick.locationID === null) {
@@ -22336,7 +22368,7 @@ async function prepareCrmWrite(resource, input, http) {
22336
22368
  }
22337
22369
  }
22338
22370
  if (input.intent === "create_company" && status !== "matched") {
22339
- const eff = effectiveRequiredFields(null, _optionalChain([RELATIONSHIP_MAP, 'access', _238 => _238.companies, 'optionalAccess', _239 => _239.zoneFacts]));
22371
+ const eff = effectiveRequiredFields(null, _optionalChain([RELATIONSHIP_MAP, 'access', _243 => _243.companies, 'optionalAccess', _244 => _244.zoneFacts]));
22340
22372
  const research = (f) => ["companyType", "ownerResourceID", "countryID"].includes(f) ? "lookup" : "web_if_available_else_ask";
22341
22373
  const lookups = {
22342
22374
  companyType: { via: "operations.fieldCatalog", resource: "companies", field: "companyType", labels: true, note: "map the user wording to one returned label; never hardcode ids" },
@@ -22358,16 +22390,16 @@ async function prepareCrmWrite(resource, input, http) {
22358
22390
  }
22359
22391
  let next = null;
22360
22392
  const isInactive = (d) => d.isActive === false || d.isActive === 0;
22361
- const dups = _nullishCoalesce(_optionalChain([contacts, 'optionalAccess', _240 => _240.duplicates]), () => ( []));
22393
+ const dups = _nullishCoalesce(_optionalChain([contacts, 'optionalAccess', _245 => _245.duplicates]), () => ( []));
22362
22394
  const sameCompany = companyID === null ? dups : dups.filter((d) => d.companyID === companyID);
22363
22395
  const elsewhere = companyID === null ? [] : dups.filter((d) => d.companyID !== companyID && !isInactive(d));
22364
22396
  if (input.intent === "add_contact" && sameCompany.length === 0 && elsewhere.length > 0) {
22365
- needsInput.push({ field: "contact", why: `a contact with this ${_nullishCoalesce(_optionalChain([contacts, 'optionalAccess', _241 => _241.matchedBy]), () => ( "identity"))} is active at another company: update it, move it with contacts.moveToCompany, or confirm a second record`, source: "policy", lookup: { duplicates: elsewhere }, research: "ask" });
22397
+ needsInput.push({ field: "contact", why: `a contact with this ${_nullishCoalesce(_optionalChain([contacts, 'optionalAccess', _246 => _246.matchedBy]), () => ( "identity"))} is active at another company: update it, move it with contacts.moveToCompany, or confirm a second record`, source: "policy", lookup: { duplicates: elsewhere }, research: "ask" });
22366
22398
  }
22367
22399
  if (needsInput.length === 0) {
22368
22400
  const dup = sameCompany[0];
22369
22401
  if (input.intent === "create_company") next = status === "matched" ? { operation: "companies.update", note: "the company already exists: update it instead of creating" } : { operation: "companies.create", note: 'then re-run with intent add_contact: the vendor auto-creates a "Primary Address" location (rename it with company_locations.update; locations cannot be deleted via the API)' };
22370
- else if (input.intent === "add_contact") next = dup ? { operation: "contacts.update", note: `a contact already matches by ${_nullishCoalesce(_optionalChain([contacts, 'optionalAccess', _242 => _242.matchedBy]), () => ( "id"))} (id ${String(dup.id)}): update it, or move it with contacts.moveToCompany if it belongs to another company` } : { operation: "contacts.create", note: `set companyID ${String(companyID)} and companyLocationID ${String(_optionalChain([locations, 'optionalAccess', _243 => _243.pick, 'access', _244 => _244.locationID]))}` };
22402
+ else if (input.intent === "add_contact") next = dup ? { operation: "contacts.update", note: `a contact already matches by ${_nullishCoalesce(_optionalChain([contacts, 'optionalAccess', _247 => _247.matchedBy]), () => ( "id"))} (id ${String(dup.id)}): update it, or move it with contacts.moveToCompany if it belongs to another company` } : { operation: "contacts.create", note: `set companyID ${String(companyID)} and companyLocationID ${String(_optionalChain([locations, 'optionalAccess', _248 => _248.pick, 'access', _249 => _249.locationID]))}` };
22371
22403
  else if (input.intent === "update_contact") next = { operation: "contacts.update", note: "send only the changed fields" };
22372
22404
  else next = { operation: "companies.update", note: "send only the changed fields" };
22373
22405
  }
@@ -22487,7 +22519,7 @@ function validateUnbilledWorkOptions(companyId, opts) {
22487
22519
  var OP3 = "companies.unbilledWork";
22488
22520
  function unbilledWorkPartStatus(key, conditions, items) {
22489
22521
  if (items.length !== 0) return { status: "ok" };
22490
- const stamp = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _245 => _245[key], 'optionalAccess', _246 => _246.query]), conditions);
22522
+ const stamp = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _250 => _250[key], 'optionalAccess', _251 => _251.query]), conditions);
22491
22523
  if (stamp !== void 0) return { status: "blind", blindSurface: stamp, note: stamp.note };
22492
22524
  return {
22493
22525
  status: "ok",
@@ -22737,7 +22769,7 @@ var CompaniesResource = class extends BaseResource {
22737
22769
  }
22738
22770
  /** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
22739
22771
  async get(id, opts = {}) {
22740
- return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _247 => _247.fresh]) === true);
22772
+ return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _252 => _252.fresh]) === true);
22741
22773
  }
22742
22774
  /** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
22743
22775
  * pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
@@ -22894,8 +22926,8 @@ function validateFetchManyItems(items, cap, opName = "fetchMany", capRef = `FETC
22894
22926
  problems.push(`${at}.fields: must be an array of exact vendor field names (discover them via operations.fieldCatalog)`);
22895
22927
  continue;
22896
22928
  }
22897
- if (_optionalChain([validation, 'optionalAccess', _248 => _248.fieldCheck]) !== false) {
22898
- const authoritative = _nullishCoalesce(_optionalChain([validation, 'optionalAccess', _249 => _249.fieldSetsByResource, 'optionalAccess', _250 => _250.get, 'call', _251 => _251(resourceKey)]), () => ( fields));
22929
+ if (_optionalChain([validation, 'optionalAccess', _253 => _253.fieldCheck]) !== false) {
22930
+ const authoritative = _nullishCoalesce(_optionalChain([validation, 'optionalAccess', _254 => _254.fieldSetsByResource, 'optionalAccess', _255 => _255.get, 'call', _256 => _256(resourceKey)]), () => ( fields));
22899
22931
  for (const f of item.fields) {
22900
22932
  if (!authoritative.includes(f)) {
22901
22933
  problems.push(
@@ -23001,7 +23033,7 @@ function project3(value, fields) {
23001
23033
  return out;
23002
23034
  }
23003
23035
  function resourcePathOf(key, holder) {
23004
- const path = _optionalChain([holder, 'optionalAccess', _252 => _252.resourcePath]);
23036
+ const path = _optionalChain([holder, 'optionalAccess', _257 => _257.resourcePath]);
23005
23037
  if (typeof path !== "string" || path === "") {
23006
23038
  throw new AutotaskConfigError(`fetchByIds: the client exposes no ${key} resource path (registry drift)`, {
23007
23039
  suggestedAction: "Rebuild the client from the SDK build that ships this registry (the resource set is pinned by the plan)."
@@ -23614,7 +23646,7 @@ var stampPart = (key, raw, conditions, extraNotes) => {
23614
23646
  status: st.status,
23615
23647
  blindSurface: st.blindSurface,
23616
23648
  note: [st.note, ..._nullishCoalesce(extraNotes, () => ( []))].filter(Boolean).join(" | ") || void 0,
23617
- emptyReason: raw.items.length === 0 && st.status === "ok" ? _optionalChain([EMPTY_REASON_STAMPS, 'access', _253 => _253[key], 'optionalAccess', _254 => _254.query]) : void 0
23649
+ emptyReason: raw.items.length === 0 && st.status === "ok" ? _optionalChain([EMPTY_REASON_STAMPS, 'access', _258 => _258[key], 'optionalAccess', _259 => _259.query]) : void 0
23618
23650
  };
23619
23651
  };
23620
23652
  function appendWiresNote(wires, note) {
@@ -23679,7 +23711,7 @@ async function resolveContractType(ctx, contractType) {
23679
23711
  if (contractType > 0) {
23680
23712
  ctx.wires.issued += 1;
23681
23713
  try {
23682
- contractTypeLabel = await _asyncNullishCoalesce(await _asyncOptionalChain([(await readPicklists(ctx.http, "/V1.0/Contracts", ctx.OP)), 'access', async _255 => _255.get, 'call', async _256 => _256("contractType"), 'optionalAccess', async _257 => _257.get, 'call', async _258 => _258(contractType)]), async () => ( null));
23714
+ contractTypeLabel = await _asyncNullishCoalesce(await _asyncOptionalChain([(await readPicklists(ctx.http, "/V1.0/Contracts", ctx.OP)), 'access', async _260 => _260.get, 'call', async _261 => _261("contractType"), 'optionalAccess', async _262 => _262.get, 'call', async _263 => _263(contractType)]), async () => ( null));
23683
23715
  } catch (err) {
23684
23716
  if (!(err instanceof AutotaskError)) throw err;
23685
23717
  }
@@ -23690,7 +23722,7 @@ async function resolveContractType(ctx, contractType) {
23690
23722
  return { contractTypeLabel, contractTypeKnown, isBlockHours, isTimeAndMaterials };
23691
23723
  }
23692
23724
  async function fetchRoot(ctx, resource) {
23693
- const contractCached = _optionalChain([ctx, 'access', _259 => _259.rawHttp, 'access', _260 => _260.readCache, 'optionalAccess', _261 => _261.get, 'call', _262 => _262(`/V1.0/Contracts/${ctx.id}`)]) !== void 0;
23725
+ const contractCached = _optionalChain([ctx, 'access', _264 => _264.rawHttp, 'access', _265 => _265.readCache, 'optionalAccess', _266 => _266.get, 'call', _267 => _267(`/V1.0/Contracts/${ctx.id}`)]) !== void 0;
23694
23726
  const contract = await resource.get(ctx.id);
23695
23727
  ctx.wires.issued += 1;
23696
23728
  if (!contractCached) ctx.wires.requests += 1;
@@ -23905,10 +23937,10 @@ async function fetchSubscriptions(ctx, cis) {
23905
23937
  const labels = await readSubscriptionLabels(ctx, subscriptions);
23906
23938
  for (const x of subscriptions) {
23907
23939
  const sid = num(x["id"]);
23908
- const periodLabel = _optionalChain([labels, 'optionalAccess', _263 => _263.get, 'call', _264 => _264("periodType"), 'optionalAccess', _265 => _265.get, 'call', _266 => _266(num(x["periodType"]))]);
23940
+ const periodLabel = _optionalChain([labels, 'optionalAccess', _268 => _268.get, 'call', _269 => _269("periodType"), 'optionalAccess', _270 => _270.get, 'call', _271 => _271(num(x["periodType"]))]);
23909
23941
  subFactor.set(sid, periodMonthlyFactor(x["periodType"], periodLabel));
23910
23942
  if (isOneTimePeriod(x["periodType"], periodLabel)) oneTimeSubs.add(sid);
23911
- const statusLabel = _optionalChain([labels, 'optionalAccess', _267 => _267.get, 'call', _268 => _268("status"), 'optionalAccess', _269 => _269.get, 'call', _270 => _270(num(x["status"]))]);
23943
+ const statusLabel = _optionalChain([labels, 'optionalAccess', _272 => _272.get, 'call', _273 => _273("status"), 'optionalAccess', _274 => _274.get, 'call', _275 => _275(num(x["status"]))]);
23912
23944
  const notActive = statusLabel !== void 0 ? NOT_ACTIVE_LABEL_RE.test(statusLabel) : labels === null && SUBSCRIPTION_NOT_ACTIVE_STATUS_IDS.has(num(x["status"]));
23913
23945
  if (notActive) cancelledSubs.add(sid);
23914
23946
  }
@@ -24609,7 +24641,7 @@ var ContractsResource = class extends BaseResource {
24609
24641
  }
24610
24642
  /** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
24611
24643
  async get(id, opts = {}) {
24612
- return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _271 => _271.fresh]) === true);
24644
+ return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _276 => _276.fresh]) === true);
24613
24645
  }
24614
24646
  /** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
24615
24647
  * pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
@@ -24645,7 +24677,7 @@ var ContractsResource = class extends BaseResource {
24645
24677
  /** Search Contract records: bounded contains on contractName (no vendor free-text search exists);
24646
24678
  * limit defaults to 25, max 500. */
24647
24679
  async search(query, opts) {
24648
- return this.searchBase(query, { limit: _optionalChain([opts, 'optionalAccess', _272 => _272.limit]) });
24680
+ return this.searchBase(query, { limit: _optionalChain([opts, 'optionalAccess', _277 => _277.limit]) });
24649
24681
  }
24650
24682
  /** Node-parity special op (hand-written in src/resources/special/contracts.ts). */
24651
24683
  profitability(id, opts) {
@@ -24685,28 +24717,28 @@ async function pdf(_resource, id, http) {
24685
24717
  return decodeFileData(res);
24686
24718
  }
24687
24719
  async function windowQuery2(_resource, kind, http, opts) {
24688
- const now = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _273 => _273.now]), () => ( /* @__PURE__ */ new Date()));
24689
- const tz = _optionalChain([opts, 'optionalAccess', _274 => _274.tz]) === void 0 ? void 0 : validateZone(opts.tz, `invoices.${kind}`);
24720
+ const now = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _278 => _278.now]), () => ( /* @__PURE__ */ new Date()));
24721
+ const tz = _optionalChain([opts, 'optionalAccess', _279 => _279.tz]) === void 0 ? void 0 : validateZone(opts.tz, `invoices.${kind}`);
24690
24722
  return dateWindowQuery(
24691
24723
  http,
24692
24724
  "/V1.0/Invoices/query",
24693
24725
  "invoiceDateTime",
24694
24726
  kind,
24695
- clampWindowLimit(_optionalChain([opts, 'optionalAccess', _275 => _275.limit])),
24727
+ clampWindowLimit(_optionalChain([opts, 'optionalAccess', _280 => _280.limit])),
24696
24728
  `invoices.${kind}`,
24697
24729
  now,
24698
24730
  tz
24699
24731
  );
24700
24732
  }
24701
24733
  async function customRange2(_resource, from, to, http, opts) {
24702
- const zone = _optionalChain([opts, 'optionalAccess', _276 => _276.tz]) === void 0 ? void 0 : validateZone(opts.tz, "invoices.customRange");
24734
+ const zone = _optionalChain([opts, 'optionalAccess', _281 => _281.tz]) === void 0 ? void 0 : validateZone(opts.tz, "invoices.customRange");
24703
24735
  return customRangeQuery(
24704
24736
  http,
24705
24737
  "/V1.0/Invoices/query",
24706
24738
  "invoiceDateTime",
24707
24739
  from,
24708
24740
  to,
24709
- clampWindowLimit(_optionalChain([opts, 'optionalAccess', _277 => _277.limit])),
24741
+ clampWindowLimit(_optionalChain([opts, 'optionalAccess', _282 => _282.limit])),
24710
24742
  "invoices.customRange",
24711
24743
  zone
24712
24744
  );
@@ -24738,7 +24770,7 @@ var InvoicesResource = class extends BaseResource {
24738
24770
  }
24739
24771
  /** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
24740
24772
  async get(id, opts = {}) {
24741
- return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _278 => _278.fresh]) === true);
24773
+ return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _283 => _283.fresh]) === true);
24742
24774
  }
24743
24775
  /** Update a record (PUT on the COLLECTION — the vendored spec's item path is GET-only; the vendor
24744
24776
  * keys the record by the id in the body). The vendor validates the FULL model on this route (V2), so a
@@ -24852,7 +24884,7 @@ var OrganizationalLevel1sResource = class extends BaseResource {
24852
24884
  }
24853
24885
  /** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
24854
24886
  async get(id, opts = {}) {
24855
- return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _279 => _279.fresh]) === true);
24887
+ return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _284 => _284.fresh]) === true);
24856
24888
  }
24857
24889
  /** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
24858
24890
  * pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
@@ -24903,7 +24935,7 @@ var OrganizationalLevel2sResource = class extends BaseResource {
24903
24935
  }
24904
24936
  /** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
24905
24937
  async get(id, opts = {}) {
24906
- return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _280 => _280.fresh]) === true);
24938
+ return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _285 => _285.fresh]) === true);
24907
24939
  }
24908
24940
  /** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
24909
24941
  * pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
@@ -24954,7 +24986,7 @@ var OrganizationalLevelAssociationsResource = class extends BaseResource {
24954
24986
  }
24955
24987
  /** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
24956
24988
  async get(id, opts = {}) {
24957
- return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _281 => _281.fresh]) === true);
24989
+ return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _286 => _286.fresh]) === true);
24958
24990
  }
24959
24991
  /** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
24960
24992
  * pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
@@ -25026,7 +25058,7 @@ async function transferOwnership(_resource, companyIds, destinationResourceId, h
25026
25058
  if (typeof destination === "number" && destination < 1) {
25027
25059
  throw new AutotaskConfigError("transferOwnership: destinationResourceId must be a positive integer");
25028
25060
  }
25029
- const dryRun = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _282 => _282.dryRun]), () => ( true));
25061
+ const dryRun = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _287 => _287.dryRun]), () => ( true));
25030
25062
  const changes = [];
25031
25063
  const applied = [];
25032
25064
  for (const id of ids2) {
@@ -25035,7 +25067,7 @@ async function transferOwnership(_resource, companyIds, destinationResourceId, h
25035
25067
  method: "GET",
25036
25068
  path: `/V1.0/Companies/${id}`,
25037
25069
  operation: "resources.transferOwnership",
25038
- maxRetries: _optionalChain([opts, 'optionalAccess', _283 => _283.maxRetries])
25070
+ maxRetries: _optionalChain([opts, 'optionalAccess', _288 => _288.maxRetries])
25039
25071
  });
25040
25072
  const company = unwrapItem(res, id, void 0, "company");
25041
25073
  const current = typeof company.ownerResourceID === "number" ? company.ownerResourceID : null;
@@ -25046,7 +25078,7 @@ async function transferOwnership(_resource, companyIds, destinationResourceId, h
25046
25078
  path: "/V1.0/Companies",
25047
25079
  body: { id, ownerResourceID: destination },
25048
25080
  operation: "resources.transferOwnership",
25049
- maxRetries: _optionalChain([opts, 'optionalAccess', _284 => _284.maxRetries])
25081
+ maxRetries: _optionalChain([opts, 'optionalAccess', _289 => _289.maxRetries])
25050
25082
  });
25051
25083
  unwrapOperation(update);
25052
25084
  applied.push(id);
@@ -25115,7 +25147,7 @@ var ResourcesResource = class extends BaseResource {
25115
25147
  }
25116
25148
  /** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
25117
25149
  async get(id, opts = {}) {
25118
- return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _285 => _285.fresh]) === true);
25150
+ return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _290 => _290.fresh]) === true);
25119
25151
  }
25120
25152
  /** Update a record (PUT on the COLLECTION — the vendored spec's item path is GET-only; the vendor
25121
25153
  * keys the record by the id in the body). The vendor validates the FULL model on this route (V2), so a
@@ -25143,7 +25175,7 @@ var ResourcesResource = class extends BaseResource {
25143
25175
  /** Search Resource records: bounded contains on firstName + lastName (no vendor free-text search exists);
25144
25176
  * limit defaults to 25, max 500. */
25145
25177
  async search(query, opts) {
25146
- return this.searchBase(query, { limit: _optionalChain([opts, 'optionalAccess', _286 => _286.limit]) });
25178
+ return this.searchBase(query, { limit: _optionalChain([opts, 'optionalAccess', _291 => _291.limit]) });
25147
25179
  }
25148
25180
  /** Node-parity special op (hand-written in src/resources/special/resources.ts). */
25149
25181
  transferOwnership(sourceResourceIds, destinationResourceId, opts = {}) {
@@ -25178,7 +25210,7 @@ function uiHostFromBase(baseUrl) {
25178
25210
  } catch (e20) {
25179
25211
  return void 0;
25180
25212
  }
25181
- const n = _optionalChain([REST_HOST, 'access', _287 => _287.exec, 'call', _288 => _288(hostname), 'optionalAccess', _289 => _289[1]]);
25213
+ const n = _optionalChain([REST_HOST, 'access', _292 => _292.exec, 'call', _293 => _293(hostname), 'optionalAccess', _294 => _294[1]]);
25182
25214
  return n === void 0 ? void 0 : `ww${n}.autotask.net`;
25183
25215
  }
25184
25216
  function buildUiLink(input) {
@@ -25231,7 +25263,7 @@ async function postedStateOf(http, entries, op, beforeRequest) {
25231
25263
  let incomplete = false;
25232
25264
  for (let c = 0; c < ids2.length; c += FETCH_BY_IDS_CHUNK_SIZE) {
25233
25265
  const chunk = ids2.slice(c, c + FETCH_BY_IDS_CHUNK_SIZE);
25234
- _optionalChain([beforeRequest, 'optionalCall', _290 => _290()]);
25266
+ _optionalChain([beforeRequest, 'optionalCall', _295 => _295()]);
25235
25267
  const res = await http.request({
25236
25268
  method: "POST",
25237
25269
  idempotent: true,
@@ -25278,11 +25310,11 @@ async function queryTimeEntries(_resource, filter, limit, operation, http, curso
25278
25310
  return { items, hasMore: pageDetails.nextPageUrl != null, nextCursor: _nullishCoalesce(pageDetails.nextPageUrl, () => ( null)) };
25279
25311
  }
25280
25312
  function pagingOpts(opts, OP9) {
25281
- if (_optionalChain([opts, 'optionalAccess', _291 => _291.countOnly]) !== void 0 && typeof opts.countOnly !== "boolean") {
25313
+ if (_optionalChain([opts, 'optionalAccess', _296 => _296.countOnly]) !== void 0 && typeof opts.countOnly !== "boolean") {
25282
25314
  throw new AutotaskConfigError(`${OP9}: countOnly must be a boolean`, { operation: OP9 });
25283
25315
  }
25284
- const countOnly = _optionalChain([opts, 'optionalAccess', _292 => _292.countOnly]) === true;
25285
- const cursor = _optionalChain([opts, 'optionalAccess', _293 => _293.cursor]);
25316
+ const countOnly = _optionalChain([opts, 'optionalAccess', _297 => _297.countOnly]) === true;
25317
+ const cursor = _optionalChain([opts, 'optionalAccess', _298 => _298.cursor]);
25286
25318
  if (cursor !== void 0 && (typeof cursor !== "string" || cursor.trim() === "")) {
25287
25319
  throw new AutotaskConfigError(`${OP9}: cursor must be the non-empty nextCursor of a previous call`, { operation: OP9 });
25288
25320
  }
@@ -25292,9 +25324,9 @@ function pagingOpts(opts, OP9) {
25292
25324
  if (cursor !== void 0 && countOnly) {
25293
25325
  throw new AutotaskConfigError(`${OP9}: cursor does not apply with countOnly (countOnly reads every page itself)`, { operation: OP9 });
25294
25326
  }
25295
- const budget = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _294 => _294.maxVendorCalls]), () => ( COUNT_BUDGET_DEFAULT));
25327
+ const budget = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _299 => _299.maxVendorCalls]), () => ( COUNT_BUDGET_DEFAULT));
25296
25328
  if (!Number.isInteger(budget) || budget < 1 || budget > COUNT_BUDGET_MAX) {
25297
- throw new AutotaskConfigError(`${OP9}: maxVendorCalls must be an integer 1-${COUNT_BUDGET_MAX} (got ${String(_optionalChain([opts, 'optionalAccess', _295 => _295.maxVendorCalls]))})`, { operation: OP9 });
25329
+ throw new AutotaskConfigError(`${OP9}: maxVendorCalls must be an integer 1-${COUNT_BUDGET_MAX} (got ${String(_optionalChain([opts, 'optionalAccess', _300 => _300.maxVendorCalls]))})`, { operation: OP9 });
25298
25330
  }
25299
25331
  return { ...cursor === void 0 ? {} : { cursor }, countOnly, budget };
25300
25332
  }
@@ -25365,18 +25397,18 @@ async function countPostedState(http, filter, OP9, budget, window) {
25365
25397
  return { window, total: states.size, postedCount, unpostedCount: states.size - postedCount, vendorCalls: issued, estimate, budget };
25366
25398
  }
25367
25399
  async function windowQuery3(_resource, kind, http, opts) {
25368
- const now = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _296 => _296.now]), () => ( /* @__PURE__ */ new Date()));
25369
- const tz = _optionalChain([opts, 'optionalAccess', _297 => _297.tz]) === void 0 ? void 0 : validateZone(opts.tz, `time_entries.${kind}`);
25400
+ const now = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _301 => _301.now]), () => ( /* @__PURE__ */ new Date()));
25401
+ const tz = _optionalChain([opts, 'optionalAccess', _302 => _302.tz]) === void 0 ? void 0 : validateZone(opts.tz, `time_entries.${kind}`);
25370
25402
  const { from, to } = dateOnlyWindowBounds(kind, now, tz);
25371
25403
  const filter = [
25372
25404
  { field: "dateWorked", op: "gte", value: from },
25373
25405
  { field: "dateWorked", op: "lte", value: to }
25374
25406
  ];
25375
- const { items } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _298 => _298.limit])), `time_entries.${kind}`, http);
25407
+ const { items } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _303 => _303.limit])), `time_entries.${kind}`, http);
25376
25408
  return items;
25377
25409
  }
25378
25410
  async function customRange3(_resource, from, to, http, opts) {
25379
- if (_optionalChain([opts, 'optionalAccess', _299 => _299.tz]) !== void 0) validateZone(opts.tz, "time_entries.customRange");
25411
+ if (_optionalChain([opts, 'optionalAccess', _304 => _304.tz]) !== void 0) validateZone(opts.tz, "time_entries.customRange");
25380
25412
  const fromB = customRangeDay(from, "from", void 0, "customRange");
25381
25413
  const toB = customRangeDay(to, "to", void 0, "customRange");
25382
25414
  if (fromB.ms > toB.ms) {
@@ -25387,7 +25419,7 @@ async function customRange3(_resource, from, to, http, opts) {
25387
25419
  { field: "dateWorked", op: "gte", value: iso2(fromB.ms) },
25388
25420
  { field: "dateWorked", op: "lte", value: iso2(toEndMs) }
25389
25421
  ];
25390
- const { items } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _300 => _300.limit])), "time_entries.customRange", http);
25422
+ const { items } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _305 => _305.limit])), "time_entries.customRange", http);
25391
25423
  return items;
25392
25424
  }
25393
25425
  async function postedStateQuery(_resource, mode, http, opts) {
@@ -25395,16 +25427,16 @@ async function postedStateQuery(_resource, mode, http, opts) {
25395
25427
  const paging = pagingOpts(opts, operation);
25396
25428
  const window = { from: null, to: null };
25397
25429
  const filter = [];
25398
- const fromB = _optionalChain([opts, 'optionalAccess', _301 => _301.dateFrom]) === void 0 ? void 0 : customRangeDay(opts.dateFrom, "from", void 0, operation);
25399
- const toB = _optionalChain([opts, 'optionalAccess', _302 => _302.dateTo]) === void 0 ? void 0 : customRangeDay(opts.dateTo, "to", void 0, operation);
25430
+ const fromB = _optionalChain([opts, 'optionalAccess', _306 => _306.dateFrom]) === void 0 ? void 0 : customRangeDay(opts.dateFrom, "from", void 0, operation);
25431
+ const toB = _optionalChain([opts, 'optionalAccess', _307 => _307.dateTo]) === void 0 ? void 0 : customRangeDay(opts.dateTo, "to", void 0, operation);
25400
25432
  if (fromB && toB && fromB.ms > toB.ms) {
25401
25433
  throw new AutotaskConfigError(`${operation}: dateFrom (${iso2(fromB.ms)}) must not be after dateTo (${iso2(toB.ms)})`, { operation });
25402
25434
  }
25403
25435
  if (fromB) filter.push({ field: "dateWorked", op: "gte", value: window.from = iso2(fromB.ms) });
25404
25436
  if (toB) filter.push({ field: "dateWorked", op: "lte", value: window.to = iso2(toB.ms + DAY_MS2 - 1) });
25405
- if (_optionalChain([opts, 'optionalAccess', _303 => _303.ticketID]) !== void 0) filter.push({ field: "ticketID", op: "eq", value: opts.ticketID });
25437
+ if (_optionalChain([opts, 'optionalAccess', _308 => _308.ticketID]) !== void 0) filter.push({ field: "ticketID", op: "eq", value: opts.ticketID });
25406
25438
  if (paging.countOnly) return countPostedState(http, filter, operation, paging.budget, window);
25407
- const read = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _304 => _304.limit])), operation, http, paging.cursor);
25439
+ const read = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _309 => _309.limit])), operation, http, paging.cursor);
25408
25440
  const { states, incomplete } = await postedStateOf(http, read.items, operation);
25409
25441
  const items = read.items.filter((e) => states.get(e.id) === mode);
25410
25442
  const approvedCount = items.filter(isApproved).length;
@@ -25414,7 +25446,7 @@ async function postedStateQuery(_resource, mode, http, opts) {
25414
25446
  async function postedWithin(_resource, from, to, http, opts, opLabel = "time_entries.postedWithin") {
25415
25447
  const OP9 = opLabel;
25416
25448
  const paging = pagingOpts(opts, OP9);
25417
- if (_optionalChain([opts, 'optionalAccess', _305 => _305.tz]) !== void 0) validateZone(opts.tz, OP9);
25449
+ if (_optionalChain([opts, 'optionalAccess', _310 => _310.tz]) !== void 0) validateZone(opts.tz, OP9);
25418
25450
  const fromB = customRangeDay(from, "from", void 0, OP9);
25419
25451
  const toB = customRangeDay(to, "to", void 0, OP9);
25420
25452
  if (fromB.ms > toB.ms) {
@@ -25425,11 +25457,11 @@ async function postedWithin(_resource, from, to, http, opts, opLabel = "time_ent
25425
25457
  { field: "dateWorked", op: "gte", value: iso2(fromB.ms) },
25426
25458
  { field: "dateWorked", op: "lte", value: iso2(windowToMs) }
25427
25459
  ];
25428
- if (_optionalChain([opts, 'optionalAccess', _306 => _306.ticketID]) !== void 0) filter.push({ field: "ticketID", op: "eq", value: opts.ticketID });
25429
- if (_optionalChain([opts, 'optionalAccess', _307 => _307.resourceID]) !== void 0) filter.push({ field: "resourceID", op: "eq", value: opts.resourceID });
25460
+ if (_optionalChain([opts, 'optionalAccess', _311 => _311.ticketID]) !== void 0) filter.push({ field: "ticketID", op: "eq", value: opts.ticketID });
25461
+ if (_optionalChain([opts, 'optionalAccess', _312 => _312.resourceID]) !== void 0) filter.push({ field: "resourceID", op: "eq", value: opts.resourceID });
25430
25462
  const window = { from: iso2(fromB.ms), to: iso2(windowToMs) };
25431
25463
  if (paging.countOnly) return countPostedState(http, filter, OP9, paging.budget, window);
25432
- const { items, hasMore, nextCursor } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _308 => _308.limit])), OP9, http, paging.cursor);
25464
+ const { items, hasMore, nextCursor } = await queryTimeEntries(_resource, filter, clampWindowLimit(_optionalChain([opts, 'optionalAccess', _313 => _313.limit])), OP9, http, paging.cursor);
25433
25465
  const { states, incomplete } = await postedStateOf(http, items, OP9);
25434
25466
  let postedCount = 0;
25435
25467
  let unpostedCount = 0;
@@ -25437,7 +25469,7 @@ async function postedWithin(_resource, from, to, http, opts, opLabel = "time_ent
25437
25469
  if (state === "posted") postedCount += 1;
25438
25470
  else unpostedCount += 1;
25439
25471
  }
25440
- const keep = _optionalChain([opts, 'optionalAccess', _309 => _309.posted]) === void 0 ? void 0 : opts.posted ? "posted" : "unposted";
25472
+ const keep = _optionalChain([opts, 'optionalAccess', _314 => _314.posted]) === void 0 ? void 0 : opts.posted ? "posted" : "unposted";
25441
25473
  return {
25442
25474
  items: keep === void 0 ? items : items.filter((e) => states.get(e.id) === keep),
25443
25475
  postedCount,
@@ -25887,7 +25919,7 @@ function sameValue(a, b) {
25887
25919
  async function readTicket(http, id, retries, operation) {
25888
25920
  try {
25889
25921
  const res = await http.request({ method: "GET", path: `/V1.0/Tickets/${id}`, operation, maxRetries: retries });
25890
- const item = _optionalChain([res, 'optionalAccess', _310 => _310.item]);
25922
+ const item = _optionalChain([res, 'optionalAccess', _315 => _315.item]);
25891
25923
  return _nullishCoalesce(item, () => ( null));
25892
25924
  } catch (e) {
25893
25925
  if (isAutotaskError(e) && (e.httpStatus === 404 || e.code === "NOT_FOUND")) return null;
@@ -25932,7 +25964,7 @@ async function preview(http, spec, sourceId, toTicketId, opts) {
25932
25964
  const facts = {
25933
25965
  closedStatus: { closedIds: closedStatus.closedIds, source: closedStatus.source, note: closedStatus.note },
25934
25966
  sourceTicketId,
25935
- sourceCompanyID: _nullishCoalesce(_optionalChain([origin, 'optionalAccess', _311 => _311.companyID]), () => ( null)),
25967
+ sourceCompanyID: _nullishCoalesce(_optionalChain([origin, 'optionalAccess', _316 => _316.companyID]), () => ( null)),
25936
25968
  targetCompanyID: _nullishCoalesce(target.companyID, () => ( null)),
25937
25969
  companyChanged: origin === null ? null : origin.companyID !== target.companyID,
25938
25970
  contractChanged: origin === null ? null : (_nullishCoalesce(origin.contractID, () => ( null))) !== (_nullishCoalesce(target.contractID, () => ( null)))
@@ -26050,7 +26082,7 @@ var CONTRACT_SCOPED = ["contractID", "contractServiceID", "contractServiceBundle
26050
26082
  async function readTimeEntry(http, id, retries) {
26051
26083
  try {
26052
26084
  const res = await http.request({ method: "GET", path: `/V1.0/TimeEntries/${id}`, operation: OP6, maxRetries: retries });
26053
- return _nullishCoalesce(_optionalChain([res, 'optionalAccess', _312 => _312.item]), () => ( null));
26085
+ return _nullishCoalesce(_optionalChain([res, 'optionalAccess', _317 => _317.item]), () => ( null));
26054
26086
  } catch (e) {
26055
26087
  if (isAutotaskError(e) && (e.httpStatus === 404 || e.code === "NOT_FOUND")) return null;
26056
26088
  throw e;
@@ -26269,17 +26301,17 @@ async function recentTickets(_resource, from, to, http, opts) {
26269
26301
  for (const [ticketID, g] of groups) {
26270
26302
  const t = tickets.get(ticketID);
26271
26303
  if (t === void 0) unresolvedTicketIDs.push(ticketID);
26272
- if (companyID !== void 0 && _optionalChain([t, 'optionalAccess', _313 => _313.companyID]) !== companyID) {
26304
+ if (companyID !== void 0 && _optionalChain([t, 'optionalAccess', _318 => _318.companyID]) !== companyID) {
26273
26305
  if (t !== void 0) excludedTickets += 1;
26274
26306
  continue;
26275
26307
  }
26276
26308
  items.push({
26277
26309
  ticketID,
26278
- ..._optionalChain([t, 'optionalAccess', _314 => _314.ticketNumber]) !== void 0 ? { ticketNumber: t.ticketNumber } : {},
26279
- ..._optionalChain([t, 'optionalAccess', _315 => _315.title]) !== void 0 ? { title: t.title } : {},
26280
- ..._optionalChain([t, 'optionalAccess', _316 => _316.status]) !== void 0 ? { status: t.status } : {},
26281
- ..._optionalChain([t, 'optionalAccess', _317 => _317.assignedResourceID]) !== void 0 ? { assignedResourceID: t.assignedResourceID } : {},
26282
- ..._optionalChain([t, 'optionalAccess', _318 => _318.companyID]) !== void 0 ? { companyID: t.companyID } : {},
26310
+ ..._optionalChain([t, 'optionalAccess', _319 => _319.ticketNumber]) !== void 0 ? { ticketNumber: t.ticketNumber } : {},
26311
+ ..._optionalChain([t, 'optionalAccess', _320 => _320.title]) !== void 0 ? { title: t.title } : {},
26312
+ ..._optionalChain([t, 'optionalAccess', _321 => _321.status]) !== void 0 ? { status: t.status } : {},
26313
+ ..._optionalChain([t, 'optionalAccess', _322 => _322.assignedResourceID]) !== void 0 ? { assignedResourceID: t.assignedResourceID } : {},
26314
+ ..._optionalChain([t, 'optionalAccess', _323 => _323.companyID]) !== void 0 ? { companyID: t.companyID } : {},
26283
26315
  entryCount: g.entryCount,
26284
26316
  totalHours: Math.round(g.totalHours * 100) / 100,
26285
26317
  lastWorked: g.lastWorked
@@ -26323,7 +26355,7 @@ var TimeEntriesResource = class extends BaseResource {
26323
26355
  }
26324
26356
  /** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
26325
26357
  async get(id, opts = {}) {
26326
- return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _319 => _319.fresh]) === true);
26358
+ return this.getGlobal(id, _optionalChain([opts, 'optionalAccess', _324 => _324.fresh]) === true);
26327
26359
  }
26328
26360
  /** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
26329
26361
  * pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
@@ -26657,4 +26689,5 @@ var TimeEntriesResource = class extends BaseResource {
26657
26689
 
26658
26690
 
26659
26691
 
26660
- exports.AUTH_HEADERS = AUTH_HEADERS; exports.buildAuthHeaders = buildAuthHeaders; exports.withAuthHeaders = withAuthHeaders; exports.AutotaskError = AutotaskError; exports.AutotaskConfigError = AutotaskConfigError; exports.isAutotaskError = isAutotaskError; exports.AutotaskNetworkError = AutotaskNetworkError; exports.AutotaskTimeoutError = AutotaskTimeoutError; exports.AutotaskAbortError = AutotaskAbortError; exports.ResponseRejectedError = ResponseRejectedError; exports.BadRequestError = BadRequestError; exports.UnauthorizedError = UnauthorizedError; exports.ForbiddenError = ForbiddenError; exports.NotFoundError = NotFoundError; exports.ConflictError = ConflictError; exports.UnprocessableEntityError = UnprocessableEntityError; exports.RateLimitError = RateLimitError; exports.ServerError = ServerError; exports.UnexpectedContentTypeError = UnexpectedContentTypeError; exports.EmptyResponseError = EmptyResponseError; exports.CircuitBreakerError = CircuitBreakerError; exports.HostPolicyDeniedError = HostPolicyDeniedError; exports.ResolutionError = ResolutionError; exports.PaginationLimitError = PaginationLimitError; exports.QueryTooLongError = QueryTooLongError; exports.parseVendorErrors = parseVendorErrors; exports.isDeterministicVendor500 = isDeterministicVendor500; exports.formatVendorDetail = formatVendorDetail; exports.NoopLogger = NoopLogger; exports.REDACTED = REDACTED; exports.CREDENTIAL_HEADER_NAMES = CREDENTIAL_HEADER_NAMES; exports.isCredentialHeaderName = isCredentialHeaderName; exports.redactRecord = redactRecord; exports.SECRET_RESPONSE_FIELDS = SECRET_RESPONSE_FIELDS; exports.PERSONAL_RESPONSE_FIELDS = PERSONAL_RESPONSE_FIELDS; exports.CONFIDENTIAL_RESPONSE_FIELDS = CONFIDENTIAL_RESPONSE_FIELDS; exports.isRedactedFieldName = isRedactedFieldName; exports.redactResponseBody = redactResponseBody; exports.CREDENTIAL_SHAPE_POINTER = CREDENTIAL_SHAPE_POINTER; exports.mergeDetails = mergeDetails; exports.errorFromStatus = errorFromStatus; exports.StaleObjectError = StaleObjectError; exports.ConfirmationRequiredError = ConfirmationRequiredError; exports.DeleteBoundaryError = DeleteBoundaryError; exports.MarkerUnsafeIdError = MarkerUnsafeIdError; exports.RecoveryTruncatedError = RecoveryTruncatedError; exports.MoveRefusedError = MoveRefusedError; exports.READ_CACHE_MAX_ENTRIES = READ_CACHE_MAX_ENTRIES; exports.ReadCache = ReadCache; exports.ZONE_CATALOG = ZONE_CATALOG; exports.ZONES = ZONES; exports.DEFAULT_ZONE = DEFAULT_ZONE; exports.zoneUrl = zoneUrl; exports.resolveBaseUrl = resolveBaseUrl; exports.AGENT_PROFILE = AGENT_PROFILE; exports.DEFAULT_PAGE_SIZE = DEFAULT_PAGE_SIZE; exports.MAX_PAGE_SIZE = MAX_PAGE_SIZE; exports.DEFAULT_TIMEOUT_MS = DEFAULT_TIMEOUT_MS; exports.DEFAULT_MAX_RETRIES = DEFAULT_MAX_RETRIES; exports.DEFAULT_MAINTENANCE_MAX_WAIT_MS = DEFAULT_MAINTENANCE_MAX_WAIT_MS; exports.DEFAULT_MAINTENANCE_POLL_MS = DEFAULT_MAINTENANCE_POLL_MS; exports.MAINTENANCE_WINDOW_MAX_MS = MAINTENANCE_WINDOW_MAX_MS; exports.DEFAULT_MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT; exports.DEFAULT_MAX_RESPONSE_BYTES = DEFAULT_MAX_RESPONSE_BYTES; exports.DEFAULT_MAX_SCAN_RECORDS = DEFAULT_MAX_SCAN_RECORDS; exports.DEFAULT_MAX_SCAN_PAGES = DEFAULT_MAX_SCAN_PAGES; exports.DEFAULT_READ_CACHE_TTL_MS = DEFAULT_READ_CACHE_TTL_MS; exports.DEFAULT_FIELD_CACHE_TTL_MS = DEFAULT_FIELD_CACHE_TTL_MS; exports.DEFAULT_RESOURCE_NAME_CACHE_TTL_MS = DEFAULT_RESOURCE_NAME_CACHE_TTL_MS; exports.hasSurroundingQuotes = hasSurroundingQuotes; exports.credentialShapeProblem = credentialShapeProblem; exports.CREDENTIAL_ENV_LOAD_ACTION = CREDENTIAL_ENV_LOAD_ACTION; exports.MIN_PREFIX_SUMMARY_LENGTH = MIN_PREFIX_SUMMARY_LENGTH; exports.credentialValueSummary = credentialValueSummary; exports.FIELD_CACHE_KINDS = FIELD_CACHE_KINDS; exports.DEFAULT_CIRCUIT_BREAKER_WINDOW_MS = DEFAULT_CIRCUIT_BREAKER_WINDOW_MS; exports.DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD = DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD; exports.DEFAULT_CIRCUIT_BREAKER_OPEN_TIMEOUT_MS = DEFAULT_CIRCUIT_BREAKER_OPEN_TIMEOUT_MS; exports.DEFAULT_CIRCUIT_BREAKER_SUCCESSES_TO_CLOSE = DEFAULT_CIRCUIT_BREAKER_SUCCESSES_TO_CLOSE; exports.DEFAULT_CIRCUIT_BREAKER_MAX_ENTRIES = DEFAULT_CIRCUIT_BREAKER_MAX_ENTRIES; exports.InMemoryCircuitBreakerStore = InMemoryCircuitBreakerStore; exports.defaultCircuitBreakerStore = defaultCircuitBreakerStore; exports.resetDefaultCircuitBreakerStore = resetDefaultCircuitBreakerStore; exports.buildBreakerKey = buildBreakerKey; exports.isBreakerFailure = isBreakerFailure; exports.DEFAULT_COOLDOWN_MAX_MS = DEFAULT_COOLDOWN_MAX_MS; exports.DEFAULT_COOLDOWN_DEFAULT_MS = DEFAULT_COOLDOWN_DEFAULT_MS; exports.DEFAULT_COOLDOWN_MAX_ENTRIES = DEFAULT_COOLDOWN_MAX_ENTRIES; exports.InMemoryCooldownStore = InMemoryCooldownStore; exports.defaultCooldownStore = defaultCooldownStore; exports.resetDefaultCooldownStore = resetDefaultCooldownStore; exports.buildTenantKey = buildTenantKey; exports.cooldownDurationMs = cooldownDurationMs; exports.resolveCredentials = resolveCredentials; exports.buildReadCache = buildReadCache; exports.resolveConfig = resolveConfig; exports.IDEMPOTENT_METHODS = IDEMPOTENT_METHODS; exports.isRecord = isRecord2; exports.assertRecord = assertRecord; exports.deepMergeParams = deepMergeParams; exports.isIdentifierCandidate = isIdentifierCandidate; exports.parseIdentifier = parseIdentifier; exports.flattenUdfs = flattenUdfs; exports.newCorrelationId = newCorrelationId; exports.redactAuditBody = redactAuditBody; exports.camelKey = camelKey; exports.FILTER_OPERATORS = FILTER_OPERATORS; exports.GROUPING_OPERATORS = GROUPING_OPERATORS; exports.MAX_OR_CONDITIONS = MAX_OR_CONDITIONS; exports.MAX_UDF_PER_QUERY = MAX_UDF_PER_QUERY; exports.MAX_QUERY_LENGTH = MAX_QUERY_LENGTH; exports.MAX_GET_LENGTH = MAX_GET_LENGTH; exports.MAX_FIELD_LENGTH = MAX_FIELD_LENGTH; exports.isFilterOperator = isFilterOperator; exports.serializeFilter = serializeFilter; exports.validateFilter = validateFilter; exports.buildFilter = buildFilter; exports.normalizedConditions = normalizedConditions; exports.normalizeInValues = normalizeInValues; exports.assertNoRelationLeaf = assertNoRelationLeaf; exports.buildUrl = buildUrl; exports.cursorToPath = cursorToPath; exports.buildQueryBody = buildQueryBody; exports.buildQueryRequest = buildQueryRequest; exports.runWithSignal = runWithSignal; exports.RELATIONSHIP_ZONE = RELATIONSHIP_ZONE; exports.RELATIONSHIP_MAP = RELATIONSHIP_MAP; exports.DELETE_BOUNDARY_NOTES = DELETE_BOUNDARY_NOTES; exports.MARKER_FIELDS = MARKER_FIELDS; exports.BLIND_SURFACE_INVENTORY = BLIND_SURFACE_INVENTORY; exports.REACHABILITY_PROBE_DEFAULTS = REACHABILITY_PROBE_DEFAULTS; exports.CREATE_GUIDANCE = CREATE_GUIDANCE; exports.unwrapItems = unwrapItems; exports.unwrapItem = unwrapItem; exports.unwrapQueryCount = unwrapQueryCount; exports.unwrapOperation = unwrapOperation; exports.passthrough = passthrough; exports.HttpClient = HttpClient; exports.BOUNDED_QUERY_MAX_LIMIT = BOUNDED_QUERY_MAX_LIMIT; exports.buildDryRunResult = buildDryRunResult; exports.mergePartialBody = mergePartialBody; exports.effectiveRequiredFields = effectiveRequiredFields; exports.MAX_PAGES = MAX_PAGES; exports.clampPageSize = clampPageSize; exports.totalPagesFor = totalPagesFor; exports.paginate = paginate; exports.paginateItems = paginateItems; exports.collectAll = collectAll; exports.toArray = toArray; exports.FIELD_PRESETS = FIELD_PRESETS; exports.FIELD_PRESET_NAMES = FIELD_PRESET_NAMES; exports.resolveFieldsPreset = resolveFieldsPreset; exports.MODEL_DATE_FIELDS = MODEL_DATE_FIELDS; exports.EXPAND_RESOURCE_NAMES_MAX_IDS = EXPAND_RESOURCE_NAMES_MAX_IDS; exports.expandResourceNames = expandResourceNames; exports.ENTITY_TYPE_TO_RESOURCE = ENTITY_TYPE_TO_RESOURCE; exports.resourceForEntityType = resourceForEntityType; exports.isEnumerableResource = isEnumerableResource; exports.WORKFLOW_RESOURCES = WORKFLOW_RESOURCES; exports.MAX_FIELD_CATALOG_WIRE = MAX_FIELD_CATALOG_WIRE; exports.FIELD_CATALOG_HONESTY_NOTE = FIELD_CATALOG_HONESTY_NOTE; exports.MIN_FIELD_CATALOG_MAX_BYTES = MIN_FIELD_CATALOG_MAX_BYTES; exports.fieldCatalog = fieldCatalog; exports.PICKLIST_VALUE_NOT_SERVED_NOTE = PICKLIST_VALUE_NOT_SERVED_NOTE; exports.TICKET_LABEL_FIELDS = TICKET_LABEL_FIELDS; exports.createNamePlan = createNamePlan; exports.addNameSibling = addNameSibling; exports.addLabelSibling = addLabelSibling; exports.vendorId = vendorId; exports.resolveLineOfBusinessChain = resolveLineOfBusinessChain; exports.resolveCompositeNames = resolveCompositeNames; exports.readNamesOpt = readNamesOpt; exports.labelRows = labelRows; exports.BaseResource = BaseResource; exports.BillingCodesResource = BillingCodesResource; exports.BillingItemsResource = BillingItemsResource; exports.isDateYMD = isDateYMD; exports.monthsInWindow = monthsInWindow; exports.dayAfter = dayAfter; exports.num = num; exports.collectFilterFieldNames = collectFilterFieldNames; exports.validateQueryFieldNames = validateQueryFieldNames; exports.findUnknownFieldNames = findUnknownFieldNames; exports.resolveTicketStatusSemantics = resolveTicketStatusSemantics; exports.openStatusFilter = openStatusFilter; exports.isClosedStatus = isClosedStatus; exports.CompaniesResource = CompaniesResource; exports.PROFITABILITY_MAX_WINDOW_MONTHS = PROFITABILITY_MAX_WINDOW_MONTHS; exports.SERVICE_LINE_FKS = SERVICE_LINE_FKS; exports.CHARGE_LINE_FKS = CHARGE_LINE_FKS; exports.billingLineType = billingLineType; exports.internalAmount = internalAmount; exports.FETCH_MANY_MAX_ITEMS = FETCH_MANY_MAX_ITEMS; exports.validateFetchManyItems = validateFetchManyItems; exports.fetchMany = fetchMany; exports.FETCH_BY_IDS_MAX_ITEMS = FETCH_BY_IDS_MAX_ITEMS; exports.FETCH_BY_IDS_CHUNK_SIZE = FETCH_BY_IDS_CHUNK_SIZE; exports.fetchByIds = fetchByIds; exports.readPicklists = readPicklists; exports.ContractsResource = ContractsResource; exports.InvoicesResource = InvoicesResource; exports.OrganizationalLevel1sResource = OrganizationalLevel1sResource; exports.OrganizationalLevel2sResource = OrganizationalLevel2sResource; exports.OrganizationalLevelAssociationsResource = OrganizationalLevelAssociationsResource; exports.ResourcesResource = ResourcesResource; exports.UI_LINK_ENTITIES = UI_LINK_ENTITIES; exports.buildUiLink = buildUiLink; exports.uiLink = uiLink; exports.refuse = refuse; exports.queryRows = queryRows; exports.runMove = runMove; exports.uiLinkFor = uiLinkFor; exports.TimeEntriesResource = TimeEntriesResource;
26692
+
26693
+ exports.AUTH_HEADERS = AUTH_HEADERS; exports.buildAuthHeaders = buildAuthHeaders; exports.withAuthHeaders = withAuthHeaders; exports.AutotaskError = AutotaskError; exports.AutotaskConfigError = AutotaskConfigError; exports.isAutotaskError = isAutotaskError; exports.AutotaskNetworkError = AutotaskNetworkError; exports.AutotaskTimeoutError = AutotaskTimeoutError; exports.AutotaskAbortError = AutotaskAbortError; exports.ResponseRejectedError = ResponseRejectedError; exports.BadRequestError = BadRequestError; exports.UnauthorizedError = UnauthorizedError; exports.ForbiddenError = ForbiddenError; exports.NotFoundError = NotFoundError; exports.ConflictError = ConflictError; exports.UnprocessableEntityError = UnprocessableEntityError; exports.RateLimitError = RateLimitError; exports.ServerError = ServerError; exports.UnexpectedContentTypeError = UnexpectedContentTypeError; exports.EmptyResponseError = EmptyResponseError; exports.CircuitBreakerError = CircuitBreakerError; exports.HostPolicyDeniedError = HostPolicyDeniedError; exports.ResolutionError = ResolutionError; exports.PaginationLimitError = PaginationLimitError; exports.QueryTooLongError = QueryTooLongError; exports.parseVendorErrors = parseVendorErrors; exports.isDeterministicVendor500 = isDeterministicVendor500; exports.formatVendorDetail = formatVendorDetail; exports.NoopLogger = NoopLogger; exports.REDACTED = REDACTED; exports.CREDENTIAL_HEADER_NAMES = CREDENTIAL_HEADER_NAMES; exports.isCredentialHeaderName = isCredentialHeaderName; exports.redactRecord = redactRecord; exports.SECRET_RESPONSE_FIELDS = SECRET_RESPONSE_FIELDS; exports.PERSONAL_RESPONSE_FIELDS = PERSONAL_RESPONSE_FIELDS; exports.CONFIDENTIAL_RESPONSE_FIELDS = CONFIDENTIAL_RESPONSE_FIELDS; exports.isRedactedFieldName = isRedactedFieldName; exports.redactResponseBody = redactResponseBody; exports.CREDENTIAL_SHAPE_POINTER = CREDENTIAL_SHAPE_POINTER; exports.mergeDetails = mergeDetails; exports.errorFromStatus = errorFromStatus; exports.StaleObjectError = StaleObjectError; exports.ConfirmationRequiredError = ConfirmationRequiredError; exports.DeleteBoundaryError = DeleteBoundaryError; exports.MarkerUnsafeIdError = MarkerUnsafeIdError; exports.RecoveryTruncatedError = RecoveryTruncatedError; exports.MoveRefusedError = MoveRefusedError; exports.READ_CACHE_MAX_ENTRIES = READ_CACHE_MAX_ENTRIES; exports.ReadCache = ReadCache; exports.ZONE_CATALOG = ZONE_CATALOG; exports.ZONES = ZONES; exports.DEFAULT_ZONE = DEFAULT_ZONE; exports.zoneUrl = zoneUrl; exports.resolveBaseUrl = resolveBaseUrl; exports.AGENT_PROFILE = AGENT_PROFILE; exports.DEFAULT_PAGE_SIZE = DEFAULT_PAGE_SIZE; exports.MAX_PAGE_SIZE = MAX_PAGE_SIZE; exports.DEFAULT_TIMEOUT_MS = DEFAULT_TIMEOUT_MS; exports.DEFAULT_MAX_RETRIES = DEFAULT_MAX_RETRIES; exports.DEFAULT_MAINTENANCE_MAX_WAIT_MS = DEFAULT_MAINTENANCE_MAX_WAIT_MS; exports.DEFAULT_MAINTENANCE_POLL_MS = DEFAULT_MAINTENANCE_POLL_MS; exports.MAINTENANCE_WINDOW_MAX_MS = MAINTENANCE_WINDOW_MAX_MS; exports.DEFAULT_MAX_CONCURRENT = DEFAULT_MAX_CONCURRENT; exports.DEFAULT_MAX_RESPONSE_BYTES = DEFAULT_MAX_RESPONSE_BYTES; exports.DEFAULT_MAX_SCAN_RECORDS = DEFAULT_MAX_SCAN_RECORDS; exports.DEFAULT_MAX_SCAN_PAGES = DEFAULT_MAX_SCAN_PAGES; exports.DEFAULT_READ_CACHE_TTL_MS = DEFAULT_READ_CACHE_TTL_MS; exports.DEFAULT_FIELD_CACHE_TTL_MS = DEFAULT_FIELD_CACHE_TTL_MS; exports.DEFAULT_RESOURCE_NAME_CACHE_TTL_MS = DEFAULT_RESOURCE_NAME_CACHE_TTL_MS; exports.hasSurroundingQuotes = hasSurroundingQuotes; exports.credentialShapeProblem = credentialShapeProblem; exports.CREDENTIAL_ENV_LOAD_ACTION = CREDENTIAL_ENV_LOAD_ACTION; exports.MIN_PREFIX_SUMMARY_LENGTH = MIN_PREFIX_SUMMARY_LENGTH; exports.credentialValueSummary = credentialValueSummary; exports.FIELD_CACHE_KINDS = FIELD_CACHE_KINDS; exports.DEFAULT_CIRCUIT_BREAKER_WINDOW_MS = DEFAULT_CIRCUIT_BREAKER_WINDOW_MS; exports.DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD = DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD; exports.DEFAULT_CIRCUIT_BREAKER_OPEN_TIMEOUT_MS = DEFAULT_CIRCUIT_BREAKER_OPEN_TIMEOUT_MS; exports.DEFAULT_CIRCUIT_BREAKER_SUCCESSES_TO_CLOSE = DEFAULT_CIRCUIT_BREAKER_SUCCESSES_TO_CLOSE; exports.DEFAULT_CIRCUIT_BREAKER_MAX_ENTRIES = DEFAULT_CIRCUIT_BREAKER_MAX_ENTRIES; exports.InMemoryCircuitBreakerStore = InMemoryCircuitBreakerStore; exports.defaultCircuitBreakerStore = defaultCircuitBreakerStore; exports.resetDefaultCircuitBreakerStore = resetDefaultCircuitBreakerStore; exports.buildBreakerKey = buildBreakerKey; exports.isBreakerFailure = isBreakerFailure; exports.DEFAULT_COOLDOWN_MAX_MS = DEFAULT_COOLDOWN_MAX_MS; exports.DEFAULT_COOLDOWN_DEFAULT_MS = DEFAULT_COOLDOWN_DEFAULT_MS; exports.DEFAULT_COOLDOWN_MAX_ENTRIES = DEFAULT_COOLDOWN_MAX_ENTRIES; exports.InMemoryCooldownStore = InMemoryCooldownStore; exports.defaultCooldownStore = defaultCooldownStore; exports.resetDefaultCooldownStore = resetDefaultCooldownStore; exports.buildTenantKey = buildTenantKey; exports.cooldownDurationMs = cooldownDurationMs; exports.resolveCredentials = resolveCredentials; exports.buildReadCache = buildReadCache; exports.resolveConfig = resolveConfig; exports.IDEMPOTENT_METHODS = IDEMPOTENT_METHODS; exports.isRecord = isRecord2; exports.assertRecord = assertRecord; exports.deepMergeParams = deepMergeParams; exports.isIdentifierCandidate = isIdentifierCandidate; exports.parseIdentifier = parseIdentifier; exports.flattenUdfs = flattenUdfs; exports.newCorrelationId = newCorrelationId; exports.redactAuditBody = redactAuditBody; exports.camelKey = camelKey; exports.FILTER_OPERATORS = FILTER_OPERATORS; exports.GROUPING_OPERATORS = GROUPING_OPERATORS; exports.MAX_OR_CONDITIONS = MAX_OR_CONDITIONS; exports.MAX_UDF_PER_QUERY = MAX_UDF_PER_QUERY; exports.MAX_QUERY_LENGTH = MAX_QUERY_LENGTH; exports.MAX_GET_LENGTH = MAX_GET_LENGTH; exports.MAX_FIELD_LENGTH = MAX_FIELD_LENGTH; exports.isFilterOperator = isFilterOperator; exports.serializeFilter = serializeFilter; exports.validateFilter = validateFilter; exports.buildFilter = buildFilter; exports.normalizedConditions = normalizedConditions; exports.normalizeInValues = normalizeInValues; exports.assertNoRelationLeaf = assertNoRelationLeaf; exports.buildUrl = buildUrl; exports.cursorToPath = cursorToPath; exports.buildQueryBody = buildQueryBody; exports.buildQueryRequest = buildQueryRequest; exports.runWithSignal = runWithSignal; exports.RELATIONSHIP_ZONE = RELATIONSHIP_ZONE; exports.RELATIONSHIP_MAP = RELATIONSHIP_MAP; exports.DELETE_BOUNDARY_NOTES = DELETE_BOUNDARY_NOTES; exports.MARKER_FIELDS = MARKER_FIELDS; exports.BLIND_SURFACE_INVENTORY = BLIND_SURFACE_INVENTORY; exports.REACHABILITY_PROBE_DEFAULTS = REACHABILITY_PROBE_DEFAULTS; exports.CREATE_GUIDANCE = CREATE_GUIDANCE; exports.unwrapItems = unwrapItems; exports.unwrapItem = unwrapItem; exports.unwrapQueryCount = unwrapQueryCount; exports.unwrapOperation = unwrapOperation; exports.passthrough = passthrough; exports.HttpClient = HttpClient; exports.BOUNDED_QUERY_MAX_LIMIT = BOUNDED_QUERY_MAX_LIMIT; exports.buildDryRunResult = buildDryRunResult; exports.mergePartialBody = mergePartialBody; exports.effectiveRequiredFields = effectiveRequiredFields; exports.MAX_PAGES = MAX_PAGES; exports.clampPageSize = clampPageSize; exports.totalPagesFor = totalPagesFor; exports.paginate = paginate; exports.paginateItems = paginateItems; exports.collectAll = collectAll; exports.toArray = toArray; exports.FIELD_PRESETS = FIELD_PRESETS; exports.FIELD_PRESET_NAMES = FIELD_PRESET_NAMES; exports.resolveFieldsPreset = resolveFieldsPreset; exports.MODEL_DATE_FIELDS = MODEL_DATE_FIELDS; exports.EXPAND_RESOURCE_NAMES_MAX_IDS = EXPAND_RESOURCE_NAMES_MAX_IDS; exports.expandResourceNames = expandResourceNames; exports.ENTITY_TYPE_TO_RESOURCE = ENTITY_TYPE_TO_RESOURCE; exports.resourceForEntityType = resourceForEntityType; exports.isEnumerableResource = isEnumerableResource; exports.WORKFLOW_RESOURCES = WORKFLOW_RESOURCES; exports.MAX_FIELD_CATALOG_WIRE = MAX_FIELD_CATALOG_WIRE; exports.FIELD_CATALOG_HONESTY_NOTE = FIELD_CATALOG_HONESTY_NOTE; exports.MIN_FIELD_CATALOG_MAX_BYTES = MIN_FIELD_CATALOG_MAX_BYTES; exports.fieldCatalog = fieldCatalog; exports.PICKLIST_VALUE_NOT_SERVED_NOTE = PICKLIST_VALUE_NOT_SERVED_NOTE; exports.PICKLIST_CATALOG_UNAVAILABLE_NOTE = PICKLIST_CATALOG_UNAVAILABLE_NOTE; exports.TICKET_LABEL_FIELDS = TICKET_LABEL_FIELDS; exports.createNamePlan = createNamePlan; exports.addNameSibling = addNameSibling; exports.addLabelSibling = addLabelSibling; exports.vendorId = vendorId; exports.resolveLineOfBusinessChain = resolveLineOfBusinessChain; exports.resolveCompositeNames = resolveCompositeNames; exports.readNamesOpt = readNamesOpt; exports.labelRows = labelRows; exports.BaseResource = BaseResource; exports.BillingCodesResource = BillingCodesResource; exports.BillingItemsResource = BillingItemsResource; exports.isDateYMD = isDateYMD; exports.monthsInWindow = monthsInWindow; exports.dayAfter = dayAfter; exports.num = num; exports.collectFilterFieldNames = collectFilterFieldNames; exports.validateQueryFieldNames = validateQueryFieldNames; exports.findUnknownFieldNames = findUnknownFieldNames; exports.resolveTicketStatusSemantics = resolveTicketStatusSemantics; exports.openStatusFilter = openStatusFilter; exports.isClosedStatus = isClosedStatus; exports.CompaniesResource = CompaniesResource; exports.PROFITABILITY_MAX_WINDOW_MONTHS = PROFITABILITY_MAX_WINDOW_MONTHS; exports.SERVICE_LINE_FKS = SERVICE_LINE_FKS; exports.CHARGE_LINE_FKS = CHARGE_LINE_FKS; exports.billingLineType = billingLineType; exports.internalAmount = internalAmount; exports.FETCH_MANY_MAX_ITEMS = FETCH_MANY_MAX_ITEMS; exports.validateFetchManyItems = validateFetchManyItems; exports.fetchMany = fetchMany; exports.FETCH_BY_IDS_MAX_ITEMS = FETCH_BY_IDS_MAX_ITEMS; exports.FETCH_BY_IDS_CHUNK_SIZE = FETCH_BY_IDS_CHUNK_SIZE; exports.fetchByIds = fetchByIds; exports.readPicklists = readPicklists; exports.ContractsResource = ContractsResource; exports.InvoicesResource = InvoicesResource; exports.OrganizationalLevel1sResource = OrganizationalLevel1sResource; exports.OrganizationalLevel2sResource = OrganizationalLevel2sResource; exports.OrganizationalLevelAssociationsResource = OrganizationalLevelAssociationsResource; exports.ResourcesResource = ResourcesResource; exports.UI_LINK_ENTITIES = UI_LINK_ENTITIES; exports.buildUiLink = buildUiLink; exports.uiLink = uiLink; exports.refuse = refuse; exports.queryRows = queryRows; exports.runMove = runMove; exports.uiLinkFor = uiLinkFor; exports.TimeEntriesResource = TimeEntriesResource;