node-autotask 0.31.0 → 0.33.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 (38) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/MCP_TOOL_CATALOG.json +31 -12
  3. package/MCP_TOOL_MANIFEST.md +18 -19
  4. package/MCP_TOOL_OVERRIDES.json +0 -12
  5. package/N8N_MCP_MANIFEST.json +44 -18
  6. package/N8N_MCP_MANIFEST.md +15 -14
  7. package/README.md +8 -6
  8. package/capabilities.json +1579 -1414
  9. package/dist/capabilities.cjs +2 -2
  10. package/dist/capabilities.js +1 -1
  11. package/dist/{chunk-3H3RJ4LA.cjs → chunk-3LAZZT7V.cjs} +143 -143
  12. package/dist/{chunk-PCLL536B.cjs → chunk-4QN43TRP.cjs} +75 -50
  13. package/dist/{chunk-6UA544OR.js → chunk-5DS6F6GF.js} +299 -113
  14. package/dist/{chunk-RQZUV74N.js → chunk-7WNE5MPG.js} +2 -2
  15. package/dist/{chunk-INSFDXHP.js → chunk-MFDQHFGJ.js} +28 -3
  16. package/dist/{chunk-DQLEVKZS.cjs → chunk-OO67MRHN.cjs} +814 -628
  17. package/dist/{chunk-QXUN2VCJ.cjs → chunk-SP2SJJZX.cjs} +1578 -1413
  18. package/dist/{chunk-EPOHRNSX.js → chunk-VKE56TTN.js} +1578 -1413
  19. package/dist/{index-Uqj987EE.d.ts → index-BaeMHZPk.d.ts} +149 -12
  20. package/dist/{index--5jrRl4u.d.cts → index-Cq0VsfSz.d.cts} +149 -12
  21. package/dist/index.cjs +22 -22
  22. package/dist/index.d.cts +2 -2
  23. package/dist/index.d.ts +2 -2
  24. package/dist/index.js +4 -4
  25. package/dist/operations/index.cjs +120 -133
  26. package/dist/operations/index.d.cts +2 -2
  27. package/dist/operations/index.d.ts +2 -2
  28. package/dist/operations/index.js +3 -16
  29. package/dist/pool.cjs +9 -9
  30. package/dist/pool.d.cts +1 -1
  31. package/dist/pool.d.ts +1 -1
  32. package/dist/pool.js +4 -4
  33. package/dist/resources/index.cjs +4 -4
  34. package/dist/resources/index.d.cts +1 -1
  35. package/dist/resources/index.d.ts +1 -1
  36. package/dist/resources/index.js +3 -3
  37. package/docs/API.md +62 -37
  38. package/package.json +2 -1
@@ -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(); } } 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; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8;
2
2
 
3
- var _chunkQXUN2VCJcjs = require('./chunk-QXUN2VCJ.cjs');
3
+ var _chunkSP2SJJZXcjs = require('./chunk-SP2SJJZX.cjs');
4
4
 
5
5
  // src/auth.ts
6
6
  var AUTH_HEADERS = {
@@ -10863,8 +10863,8 @@ var EMPTY_REASON_STAMPS = {
10863
10863
  var POINTER_NOTES = {
10864
10864
  "ticket_history.query": `W1 (ww29 (australia-nz) live 2026-10-04; vendor contract change live-verified 2026-10-06): the vendor requires ticket_history.query to be supplied with exactly ONE ticketID-equals filter \u2014 an unfiltered call 500s by contract (10-06 text: "When querying the TicketHistory entity you are required to supply one and only one ticketID equals filter"). WITH the filter the query WORKS (live 2026-10-06: rows returned, hasMore true \u2014 a single {op:'eq', field:'ticketID', value:<id>} condition; the filter vocabulary is eq/noteq/gt/gte/lt/lte/beginsWith/endsWith/contains/exist/notExist/in/notIn/and/or). tickets.timeline / tickets.fullContext remain the convenient composites; raw history rows come from the filtered query.`,
10865
10865
  "time_entries.create": `W-A3 (ww29 (australia-nz) live 2026-10-04; re-walled 2026-10-06; scope re-stamped 2026-10-21): for a time_entries.create whose (resourceID, roleID) pair selects the API-only user's own resource, the vendor refused with "API-only user cannot be selected for this field" (10-04 text: "The specified AssignedResourceID and AssignedRoleID combination is not currently defined"). This is a (resource, role) pair wall, NOT a blanket refusal of time-entry writes: live time_entries.create calls succeeded on 2026-10-21 (pair not recorded; two entries created, read back, 1.0 h total). The authorised pair set has NOT been re-adjudicated by a live probe; if a create fails with the pair-validation text, check the resource's role authorisation (whoAmI / the resource record) and try another pair. createForResource's 10-06 wall is likewise unconfirmed for other pairs. Working reads remain postedWithin / the window helpers (W-D3 pointer note).`,
10866
- "time_entries.getPosted": "W-D3 (ww29 (australia-nz) live 2026-10-04, re-verified live 2026-10-15): this zone's TimeEntry entity exposes NO posted-state filter field \u2014 the vendor rejects postingStatus, postedDate and status with \"Unable to find X in the TimeEntry Entity\" (live field-existence oracle 2026-10-04: only dateWorked / resourceID / ticketID / taskID resolve as filter fields). Re-probed 2026-10-15 (ww29 re-probe campaign): time_entries.getPosted live 500, vendor body verbatim 'Unable to find postedDate in the TimeEntry Entity.' \u2014 a vendor endpoint defect on AU03, not a transient fault: posted cannot be filtered server-side on this zone \u2014 use time_entries.postedWithin (the dateWorked window, live-verified working \u2014 omit the `posted` narrowing on this zone: it sends postedDate, which the zone 500s) or read time_entries.query and derive posted-state from the fields your zone's entity exposes",
10867
- "time_entries.getUnposted": "W-D3 (ww29 (australia-nz) live 2026-10-04, re-verified live 2026-10-15): this zone's TimeEntry entity exposes NO posted-state filter field \u2014 the vendor rejects postingStatus, postedDate and status with \"Unable to find X in the TimeEntry Entity\" (live field-existence oracle 2026-10-04: only dateWorked / resourceID / ticketID / taskID resolve as filter fields). Re-probed 2026-10-15 (ww29 re-probe campaign): time_entries.getUnposted live 500, vendor body verbatim 'Unable to find postedDate in the TimeEntry Entity.' \u2014 a vendor endpoint defect on AU03, not a transient fault: unposted cannot be filtered server-side on this zone \u2014 use time_entries.postedWithin (the dateWorked window, live-verified working \u2014 omit the `posted` narrowing on this zone: it sends postedDate, which the zone 500s) or read time_entries.query and derive posted-state from the fields your zone's entity exposes",
10866
+ "time_entries.getPosted": `W-D3 (ww29 (australia-nz) live 2026-10-04, re-verified live 2026-10-27): this zone's TimeEntry entity exposes NO posted-state field \u2014 reads carry no postedDate/postedOnTime and a postedDate exist/notExist filter fails with SERVER_ERROR "Unable to find postedDate in the TimeEntry Entity". time_entries.getPosted therefore no longer sends any postedDate condition: posted state is derived from billing_items.timeEntryID (an entry is posted when a billing item references it, whether or not billingApprovalDateTime is set \u2014 ww29 never populates it). If a call still fails, the fault is NOT the old postedDate wall: it is a billing_items join/read fault (typed error \u2014 429 RATE_LIMITED included \u2014 propagates, no partial result). The dateWorked window reads time_entries.postedWithin / time_entries.dateWorkedWindow use the same derivation.`,
10867
+ "time_entries.getUnposted": `W-D3 (ww29 (australia-nz) live 2026-10-04, re-verified live 2026-10-27): this zone's TimeEntry entity exposes NO posted-state field \u2014 reads carry no postedDate/postedOnTime and a postedDate exist/notExist filter fails with SERVER_ERROR "Unable to find postedDate in the TimeEntry Entity". time_entries.getUnposted therefore no longer sends any postedDate condition: unposted state is derived from billing_items.timeEntryID (an entry is posted when a billing item references it, whether or not billingApprovalDateTime is set \u2014 ww29 never populates it). If a call still fails, the fault is NOT the old postedDate wall: it is a billing_items join/read fault (typed error \u2014 429 RATE_LIMITED included \u2014 propagates, no partial result). The dateWorked window reads time_entries.postedWithin / time_entries.dateWorkedWindow use the same derivation.`,
10868
10868
  "authenticate.get": "W2: authenticate.get is DESIGNATOR-ONLY \u2014 it returns the designator identity, not a tenant data surface; a miss/empty here is not a data-empty signal (no emptyReason is attached by design \u2014 a false reason would be worse than none)"
10869
10869
  };
10870
10870
  var BLIND_SURFACE_INVENTORY = {
@@ -16791,6 +16791,20 @@ var HttpClient = class {
16791
16791
  }
16792
16792
  };
16793
16793
 
16794
+ // src/operations/requiredFields.ts
16795
+ function effectiveRequiredFields(record, zoneFacts) {
16796
+ const prefix = _optionalChain([zoneFacts, 'optionalAccess', _126 => _126.createGuidance, 'optionalAccess', _127 => _127.liveProvenPrefix]);
16797
+ if (Array.isArray(prefix) && prefix.length > 0) {
16798
+ return { fields: [...prefix], from: "live-proven" };
16799
+ }
16800
+ const zoneSet = _optionalChain([zoneFacts, 'optionalAccess', _128 => _128.createRequiredSet]);
16801
+ if (Array.isArray(zoneSet) && zoneSet.length > 0) {
16802
+ return { fields: [...zoneSet], from: "zone" };
16803
+ }
16804
+ const spec = _optionalChain([record, 'optionalAccess', _129 => _129.requiredFields]);
16805
+ return { fields: Array.isArray(spec) ? [...spec] : [], from: "spec" };
16806
+ }
16807
+
16794
16808
  // src/pagination.ts
16795
16809
  var MAX_PAGES = 1e3;
16796
16810
  function clampPageSize(pageSize) {
@@ -16977,7 +16991,7 @@ async function expandResourceNames(client, ids, opts = {}) {
16977
16991
  continue;
16978
16992
  }
16979
16993
  }
16980
- const epoch = _nullishCoalesce(_optionalChain([cache, 'optionalAccess', _126 => _126.epoch]), () => ( 0));
16994
+ const epoch = _nullishCoalesce(_optionalChain([cache, 'optionalAccess', _130 => _130.epoch]), () => ( 0));
16981
16995
  const work = (async () => {
16982
16996
  try {
16983
16997
  const record = await holder.get(id, { fresh });
@@ -17031,7 +17045,7 @@ function buildEntityTypeMap() {
17031
17045
  }
17032
17046
  var ENTITY_TYPE_TO_RESOURCE = buildEntityTypeMap();
17033
17047
  var ENUMERABLE_RESOURCES = new Set(
17034
- _chunkQXUN2VCJcjs.CAPABILITIES.filter((rec) => rec.resource !== "operations" && (rec.operation === "query" || rec.operation === "get")).map(
17048
+ _chunkSP2SJJZXcjs.CAPABILITIES.filter((rec) => rec.resource !== "operations" && (rec.operation === "query" || rec.operation === "get")).map(
17035
17049
  (rec) => rec.resource
17036
17050
  )
17037
17051
  );
@@ -17108,7 +17122,7 @@ function capabilitySets() {
17108
17122
  const fieldOps = /* @__PURE__ */ new Map();
17109
17123
  const udfOps = /* @__PURE__ */ new Map();
17110
17124
  const resources = /* @__PURE__ */ new Set();
17111
- for (const rec of _chunkQXUN2VCJcjs.CAPABILITIES) {
17125
+ for (const rec of _chunkSP2SJJZXcjs.CAPABILITIES) {
17112
17126
  if (rec.resource === "operations") continue;
17113
17127
  resources.add(rec.resource);
17114
17128
  if (rec.operation === "getFieldInfo") fieldOps.set(rec.resource, rec);
@@ -17120,12 +17134,12 @@ var derivedIndex = null;
17120
17134
  function derivedFieldsFor(resource) {
17121
17135
  if (derivedIndex === null) {
17122
17136
  derivedIndex = /* @__PURE__ */ new Map();
17123
- for (const rec of _chunkQXUN2VCJcjs.CAPABILITIES) {
17124
- const declared = _optionalChain([rec, 'access', _127 => _127.metadata, 'optionalAccess', _128 => _128.derivedFields]);
17137
+ for (const rec of _chunkSP2SJJZXcjs.CAPABILITIES) {
17138
+ const declared = _optionalChain([rec, 'access', _131 => _131.metadata, 'optionalAccess', _132 => _132.derivedFields]);
17125
17139
  if (!Array.isArray(declared) || derivedIndex.has(rec.resource)) continue;
17126
17140
  const rows = [];
17127
17141
  for (const row of declared) {
17128
- if (typeof _optionalChain([row, 'optionalAccess', _129 => _129.field]) !== "string" || typeof row.rule !== "string") continue;
17142
+ if (typeof _optionalChain([row, 'optionalAccess', _133 => _133.field]) !== "string" || typeof row.rule !== "string") continue;
17129
17143
  rows.push({
17130
17144
  field: row.field,
17131
17145
  rule: row.rule,
@@ -17163,7 +17177,7 @@ function validateCatalogOptsShape(opts) {
17163
17177
  }
17164
17178
  }
17165
17179
  function resolveInclude(opts) {
17166
- const includeRaw = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _130 => _130.include]), () => ( ["fields"]));
17180
+ const includeRaw = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _134 => _134.include]), () => ( ["fields"]));
17167
17181
  if (!Array.isArray(includeRaw) || includeRaw.length === 0) {
17168
17182
  throw new AutotaskConfigError("fieldCatalog: opts.include must be a non-empty array of (info|fields|udf)");
17169
17183
  }
@@ -17180,7 +17194,7 @@ function resolveInclude(opts) {
17180
17194
  return include;
17181
17195
  }
17182
17196
  function resolveTargets(opts, fieldOps, allResources) {
17183
- const resourcesRaw = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _131 => _131.resources]), () => ( WORKFLOW_RESOURCES));
17197
+ const resourcesRaw = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _135 => _135.resources]), () => ( WORKFLOW_RESOURCES));
17184
17198
  if (!Array.isArray(resourcesRaw) || resourcesRaw.length === 0) {
17185
17199
  throw new AutotaskConfigError("fieldCatalog: opts.resources must be a non-empty array of plan resource keys");
17186
17200
  }
@@ -17214,7 +17228,7 @@ function resolveTargets(opts, fieldOps, allResources) {
17214
17228
  return targets;
17215
17229
  }
17216
17230
  function resolveFieldsFilter(opts) {
17217
- const fieldsRaw = _optionalChain([opts, 'optionalAccess', _132 => _132.fields]);
17231
+ const fieldsRaw = _optionalChain([opts, 'optionalAccess', _136 => _136.fields]);
17218
17232
  if (fieldsRaw === void 0) return void 0;
17219
17233
  if (!Array.isArray(fieldsRaw) || fieldsRaw.length === 0) {
17220
17234
  throw new AutotaskConfigError("fieldCatalog: opts.fields must be a non-empty array of vendor field name strings");
@@ -17237,7 +17251,7 @@ function resolveLabels(opts) {
17237
17251
  `fieldCatalog: opts.labels must be a boolean (got ${typeof opts.labels})`
17238
17252
  );
17239
17253
  }
17240
- return _optionalChain([opts, 'optionalAccess', _133 => _133.labels]) === true;
17254
+ return _optionalChain([opts, 'optionalAccess', _137 => _137.labels]) === true;
17241
17255
  }
17242
17256
  function assertWithinWireCap(targetCount, kindCount) {
17243
17257
  const cost = targetCount * kindCount;
@@ -17250,9 +17264,9 @@ function assertWithinWireCap(targetCount, kindCount) {
17250
17264
  }
17251
17265
  function kindFetches(holder, resource) {
17252
17266
  return {
17253
- info: () => _nullishCoalesce(_optionalChain([holder, 'optionalAccess', _134 => _134.getEntityInfo, 'optionalCall', _135 => _135()]), () => ( Promise.reject(new AutotaskError(`fieldCatalog: the client exposes no getEntityInfo read for "${resource}"`, { code: "INVALID_RESPONSE", category: "server" })))),
17254
- fields: () => _nullishCoalesce(_optionalChain([holder, 'optionalAccess', _136 => _136.getFieldInfo, 'optionalCall', _137 => _137()]), () => ( Promise.reject(new AutotaskError(`fieldCatalog: the client exposes no getFieldInfo read for "${resource}"`, { code: "INVALID_RESPONSE", category: "server" })))),
17255
- udf: () => _nullishCoalesce(_optionalChain([holder, 'optionalAccess', _138 => _138.getUdfInfo, 'optionalCall', _139 => _139()]), () => ( Promise.reject(new AutotaskError(`fieldCatalog: the client exposes no getUdfInfo read for "${resource}"`, { code: "INVALID_RESPONSE", category: "server" }))))
17267
+ info: () => _nullishCoalesce(_optionalChain([holder, 'optionalAccess', _138 => _138.getEntityInfo, 'optionalCall', _139 => _139()]), () => ( Promise.reject(new AutotaskError(`fieldCatalog: the client exposes no getEntityInfo read for "${resource}"`, { code: "INVALID_RESPONSE", category: "server" })))),
17268
+ fields: () => _nullishCoalesce(_optionalChain([holder, 'optionalAccess', _140 => _140.getFieldInfo, 'optionalCall', _141 => _141()]), () => ( Promise.reject(new AutotaskError(`fieldCatalog: the client exposes no getFieldInfo read for "${resource}"`, { code: "INVALID_RESPONSE", category: "server" })))),
17269
+ udf: () => _nullishCoalesce(_optionalChain([holder, 'optionalAccess', _142 => _142.getUdfInfo, 'optionalCall', _143 => _143()]), () => ( Promise.reject(new AutotaskError(`fieldCatalog: the client exposes no getUdfInfo read for "${resource}"`, { code: "INVALID_RESPONSE", category: "server" }))))
17256
17270
  };
17257
17271
  }
17258
17272
  async function sweepResource(ctx, resource, tally) {
@@ -17278,7 +17292,7 @@ async function sweepResource(ctx, resource, tally) {
17278
17292
  error: null
17279
17293
  };
17280
17294
  const fetches = kindFetches(holder, resource);
17281
- if (fresh) _optionalChain([cache, 'optionalAccess', _140 => _140.invalidate, 'call', _141 => _141(resource)]);
17295
+ if (fresh) _optionalChain([cache, 'optionalAccess', _144 => _144.invalidate, 'call', _145 => _145(resource)]);
17282
17296
  const projectList = (kind, list) => {
17283
17297
  const projected = list.map((f) => projectFieldRow(f, labels, kind === "udf"));
17284
17298
  if (kind === "fields") applyFieldsFilter(projected, fieldsFilter, row);
@@ -17347,7 +17361,7 @@ async function fieldCatalog(client, opts) {
17347
17361
  const zone = _nullishCoalesce(client.config.zone, () => ( "unknown"));
17348
17362
  const rows = [];
17349
17363
  const tally = { wireUsed: 0, anyPicklistValues: false };
17350
- const ctx = { client, include, fieldsFilter, labels, fresh: _optionalChain([opts, 'optionalAccess', _142 => _142.fresh]) === true, fieldOps, udfOps };
17364
+ const ctx = { client, include, fieldsFilter, labels, fresh: _optionalChain([opts, 'optionalAccess', _146 => _146.fresh]) === true, fieldOps, udfOps };
17351
17365
  for (const resource of targets) {
17352
17366
  const row = await sweepResource(ctx, resource, tally);
17353
17367
  if (row !== void 0) rows.push(row);
@@ -17357,7 +17371,7 @@ async function fieldCatalog(client, opts) {
17357
17371
  label: zone,
17358
17372
  cached: cache !== void 0,
17359
17373
  labels,
17360
- ttlMs: _nullishCoalesce(_optionalChain([cache, 'optionalAccess', _143 => _143.ttlMs]), () => ( null)),
17374
+ ttlMs: _nullishCoalesce(_optionalChain([cache, 'optionalAccess', _147 => _147.ttlMs]), () => ( null)),
17361
17375
  fetchedAt: (/* @__PURE__ */ new Date()).toISOString(),
17362
17376
  rows,
17363
17377
  wireUsed: tally.wireUsed,
@@ -17631,7 +17645,7 @@ async function resolveCompositeNames(http, plan, opts = {}) {
17631
17645
  } else {
17632
17646
  for (const f of plan.labelFields) {
17633
17647
  const frow = row.fields.find((x) => x.name === f);
17634
- picklists[f] = _optionalChain([frow, 'optionalAccess', _144 => _144.picklistValues]);
17648
+ picklists[f] = _optionalChain([frow, 'optionalAccess', _148 => _148.picklistValues]);
17635
17649
  }
17636
17650
  }
17637
17651
  } catch (err) {
@@ -17665,8 +17679,8 @@ async function resolveCompositeNames(http, plan, opts = {}) {
17665
17679
  return {
17666
17680
  section,
17667
17681
  lineOfBusiness,
17668
- resourceName: (id) => _nullishCoalesce(_optionalChain([section, 'access', _145 => _145.rows, 'access', _146 => _146[`resource:${id}`], 'optionalAccess', _147 => _147.name]), () => ( null)),
17669
- recordName: (table, id) => _nullishCoalesce(_optionalChain([section, 'access', _148 => _148.rows, 'access', _149 => _149[`${table}:${id}`], 'optionalAccess', _150 => _150.name]), () => ( null)),
17682
+ resourceName: (id) => _nullishCoalesce(_optionalChain([section, 'access', _149 => _149.rows, 'access', _150 => _150[`resource:${id}`], 'optionalAccess', _151 => _151.name]), () => ( null)),
17683
+ recordName: (table, id) => _nullishCoalesce(_optionalChain([section, 'access', _152 => _152.rows, 'access', _153 => _153[`${table}:${id}`], 'optionalAccess', _154 => _154.name]), () => ( null)),
17670
17684
  labelFor: (field, value) => {
17671
17685
  if (value === null || value === void 0) return null;
17672
17686
  const values = picklists[field];
@@ -17948,8 +17962,8 @@ function validateFetchManyItems(items, cap, opName = "fetchMany", capRef = `FETC
17948
17962
  problems.push(`${at}.fields: must be an array of exact vendor field names (discover them via operations.fieldCatalog)`);
17949
17963
  continue;
17950
17964
  }
17951
- if (_optionalChain([validation, 'optionalAccess', _151 => _151.fieldCheck]) !== false) {
17952
- const authoritative = _nullishCoalesce(_optionalChain([validation, 'optionalAccess', _152 => _152.fieldSetsByResource, 'optionalAccess', _153 => _153.get, 'call', _154 => _154(resourceKey)]), () => ( fields));
17965
+ if (_optionalChain([validation, 'optionalAccess', _155 => _155.fieldCheck]) !== false) {
17966
+ const authoritative = _nullishCoalesce(_optionalChain([validation, 'optionalAccess', _156 => _156.fieldSetsByResource, 'optionalAccess', _157 => _157.get, 'call', _158 => _158(resourceKey)]), () => ( fields));
17953
17967
  for (const f of item.fields) {
17954
17968
  if (!authoritative.includes(f)) {
17955
17969
  problems.push(
@@ -18053,7 +18067,7 @@ function project2(value, fields) {
18053
18067
  return out;
18054
18068
  }
18055
18069
  function resourcePathOf(key, holder) {
18056
- const path = _optionalChain([holder, 'optionalAccess', _155 => _155.resourcePath]);
18070
+ const path = _optionalChain([holder, 'optionalAccess', _159 => _159.resourcePath]);
18057
18071
  if (typeof path !== "string" || path === "") {
18058
18072
  throw new AutotaskConfigError(`fetchByIds: the client exposes no ${key} resource path (registry drift)`, {
18059
18073
  suggestedAction: "Rebuild the client from the SDK build that ships this registry (the resource set is pinned by the plan)."
@@ -18189,7 +18203,7 @@ function uiHostFromBase(baseUrl) {
18189
18203
  } catch (e18) {
18190
18204
  return void 0;
18191
18205
  }
18192
- const n = _optionalChain([REST_HOST, 'access', _156 => _156.exec, 'call', _157 => _157(hostname), 'optionalAccess', _158 => _158[1]]);
18206
+ const n = _optionalChain([REST_HOST, 'access', _160 => _160.exec, 'call', _161 => _161(hostname), 'optionalAccess', _162 => _162[1]]);
18193
18207
  return n === void 0 ? void 0 : `ww${n}.autotask.net`;
18194
18208
  }
18195
18209
  function buildUiLink(input) {
@@ -18295,7 +18309,7 @@ function blindEmptyReason(stamp) {
18295
18309
  };
18296
18310
  }
18297
18311
  function attachUpdateTargetMissReason(err, key) {
18298
- const pinned = _optionalChain([EMPTY_REASON_STAMPS, 'access', _159 => _159[key], 'optionalAccess', _160 => _160.update]);
18312
+ const pinned = _optionalChain([EMPTY_REASON_STAMPS, 'access', _163 => _163[key], 'optionalAccess', _164 => _164.update]);
18299
18313
  if (pinned === void 0) return;
18300
18314
  err.details = { ..._nullishCoalesce(err.details, () => ( {})), emptyReason: pinned };
18301
18315
  }
@@ -18480,7 +18494,7 @@ var QueryBase = class {
18480
18494
  }
18481
18495
  /** @internal */
18482
18496
  walkPageSize(params) {
18483
- return clampPageSize(_nullishCoalesce(_optionalChain([params, 'optionalAccess', _161 => _161.maxRecords]), () => ( this.defaultPageSize)));
18497
+ return clampPageSize(_nullishCoalesce(_optionalChain([params, 'optionalAccess', _165 => _165.maxRecords]), () => ( this.defaultPageSize)));
18484
18498
  }
18485
18499
  /** Stream items across pages (the resource `query` surface). */
18486
18500
  queryItems(params) {
@@ -18492,7 +18506,7 @@ var QueryBase = class {
18492
18506
  }
18493
18507
  /** Collect every item across all pages (the resource `queryAll` surface; 1000-page guarded). */
18494
18508
  async queryAllItems(params) {
18495
- return collectAll(this.pageFetcher(params), { pageSize: this.walkPageSize(params), maxRecords: _optionalChain([params, 'optionalAccess', _162 => _162.maxTotalRecords]) });
18509
+ return collectAll(this.pageFetcher(params), { pageSize: this.walkPageSize(params), maxRecords: _optionalChain([params, 'optionalAccess', _166 => _166.maxTotalRecords]) });
18496
18510
  }
18497
18511
  /**
18498
18512
  * `queryBounded` — server-side pagination (the MCP query surface): ONE call
@@ -18529,19 +18543,19 @@ var QueryBase = class {
18529
18543
  "queryBounded: params must be an object { filter?, limit?, latest?, includeFields? } \u2014 a bare conditions array is not accepted (wrap it: { filter: [...] })"
18530
18544
  );
18531
18545
  }
18532
- const limit = _nullishCoalesce(_optionalChain([params, 'optionalAccess', _163 => _163.limit]), () => ( BOUNDED_QUERY_DEFAULT_LIMIT));
18546
+ const limit = _nullishCoalesce(_optionalChain([params, 'optionalAccess', _167 => _167.limit]), () => ( BOUNDED_QUERY_DEFAULT_LIMIT));
18533
18547
  if (!Number.isInteger(limit) || limit < 1 || limit > BOUNDED_QUERY_MAX_LIMIT) {
18534
18548
  throw new AutotaskConfigError(
18535
18549
  `queryBounded: limit must be an integer 1..${BOUNDED_QUERY_MAX_LIMIT} (got ${String(limit)}) \u2014 it is the TOTAL record cap, not a page size`
18536
18550
  );
18537
18551
  }
18538
- const noteChars = _optionalChain([params, 'optionalAccess', _164 => _164.noteChars]);
18552
+ const noteChars = _optionalChain([params, 'optionalAccess', _168 => _168.noteChars]);
18539
18553
  if (noteChars !== void 0 && (!Number.isInteger(noteChars) || noteChars < 1)) {
18540
18554
  throw new AutotaskConfigError(
18541
18555
  `queryBounded: noteChars must be an integer >= 1 (got ${String(noteChars)}) \u2014 it is the per-field char cap on the untrusted-class free-text fields (absent = the raw, untruncated result)`
18542
18556
  );
18543
18557
  }
18544
- const walkParams = _optionalChain([params, 'optionalAccess', _165 => _165.fieldsPreset]) !== void 0 ? { ...params, includeFields: resolveFieldsPreset(params.fieldsPreset, this.config.key, params.includeFields) } : _nullishCoalesce(params, () => ( {}));
18558
+ const walkParams = _optionalChain([params, 'optionalAccess', _169 => _169.fieldsPreset]) !== void 0 ? { ...params, includeFields: resolveFieldsPreset(params.fieldsPreset, this.config.key, params.includeFields) } : _nullishCoalesce(params, () => ( {}));
18545
18559
  const latest = walkParams.latest;
18546
18560
  if (latest !== void 0) {
18547
18561
  if (!Number.isInteger(latest) || latest < 1 || latest > BOUNDED_QUERY_MAX_LIMIT) {
@@ -18549,7 +18563,7 @@ var QueryBase = class {
18549
18563
  `queryBounded: latest must be an integer 1..${BOUNDED_QUERY_MAX_LIMIT} (got ${String(latest)}) \u2014 it is the count of the highest-id rows to return`
18550
18564
  );
18551
18565
  }
18552
- if (_optionalChain([params, 'optionalAccess', _166 => _166.limit]) !== void 0 && limit < latest) {
18566
+ if (_optionalChain([params, 'optionalAccess', _170 => _170.limit]) !== void 0 && limit < latest) {
18553
18567
  throw new AutotaskConfigError(
18554
18568
  `queryBounded: limit (${String(limit)}) must be >= latest (${String(latest)}) \u2014 latest governs the returned count and limit is the walk window`
18555
18569
  );
@@ -18635,8 +18649,8 @@ var QueryBase = class {
18635
18649
  * @internal */
18636
18650
  stampEmptyQueryResult(result, params) {
18637
18651
  if (result.items.length !== 0) return;
18638
- result.blindSurface = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _167 => _167[this.config.key], 'optionalAccess', _168 => _168.query]), _optionalChain([params, 'optionalAccess', _169 => _169.filter]));
18639
- const pinnedReason = normalizedConditions(_optionalChain([params, 'optionalAccess', _170 => _170.filter])) === void 0 ? _optionalChain([EMPTY_REASON_STAMPS, 'access', _171 => _171[this.config.key], 'optionalAccess', _172 => _172.query]) : void 0;
18652
+ result.blindSurface = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _171 => _171[this.config.key], 'optionalAccess', _172 => _172.query]), _optionalChain([params, 'optionalAccess', _173 => _173.filter]));
18653
+ const pinnedReason = normalizedConditions(_optionalChain([params, 'optionalAccess', _174 => _174.filter])) === void 0 ? _optionalChain([EMPTY_REASON_STAMPS, 'access', _175 => _175[this.config.key], 'optionalAccess', _176 => _176.query]) : void 0;
18640
18654
  if (result.blindSurface !== void 0 || pinnedReason !== void 0) {
18641
18655
  result.emptyReason = result.blindSurface !== void 0 ? blindEmptyReason(result.blindSurface) : pinnedReason;
18642
18656
  }
@@ -18865,7 +18879,7 @@ var QueryBase = class {
18865
18879
  if (result.items.length === 0) {
18866
18880
  this.stampEmptyQueryResult(result, params);
18867
18881
  } else {
18868
- result.blindSurface = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _173 => _173[this.config.key], 'optionalAccess', _174 => _174.query]), params.filter);
18882
+ result.blindSurface = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _177 => _177[this.config.key], 'optionalAccess', _178 => _178.query]), params.filter);
18869
18883
  }
18870
18884
  return result;
18871
18885
  }
@@ -18906,7 +18920,7 @@ var QueryBase = class {
18906
18920
  * or, on a plan-pinned blind surface, the `{ count: 0, blindSurface }`
18907
18921
  * typed sentinel (S12-C T10; see `BlindCountResult`). */
18908
18922
  async countGlobal(params) {
18909
- const conditions = normalizedConditions(_optionalChain([params, 'optionalAccess', _175 => _175.filter]));
18923
+ const conditions = normalizedConditions(_optionalChain([params, 'optionalAccess', _179 => _179.filter]));
18910
18924
  const body = {};
18911
18925
  body.filter = conditions === void 0 ? [] : buildFilter(conditions).filter;
18912
18926
  const res = await this.http.request({
@@ -18917,9 +18931,9 @@ var QueryBase = class {
18917
18931
  idempotent: true
18918
18932
  });
18919
18933
  const count = unwrapQueryCount(res, `${this.config.key}.count`);
18920
- const stamp = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _176 => _176[this.config.key], 'optionalAccess', _177 => _177.count]), _optionalChain([params, 'optionalAccess', _178 => _178.filter]));
18934
+ const stamp = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _180 => _180[this.config.key], 'optionalAccess', _181 => _181.count]), _optionalChain([params, 'optionalAccess', _182 => _182.filter]));
18921
18935
  if (count === 0) {
18922
- const pinnedReason = conditions === void 0 ? _optionalChain([EMPTY_REASON_STAMPS, 'access', _179 => _179[this.config.key], 'optionalAccess', _180 => _180.count]) : void 0;
18936
+ const pinnedReason = conditions === void 0 ? _optionalChain([EMPTY_REASON_STAMPS, 'access', _183 => _183[this.config.key], 'optionalAccess', _184 => _184.count]) : void 0;
18923
18937
  if (stamp !== void 0 || pinnedReason !== void 0) {
18924
18938
  return {
18925
18939
  count,
@@ -18955,9 +18969,9 @@ var MetaBase = class extends QueryBase {
18955
18969
  const hit = cache.get(path);
18956
18970
  if (hit !== void 0) return hit;
18957
18971
  }
18958
- const epoch = _optionalChain([cache, 'optionalAccess', _181 => _181.epoch]);
18972
+ const epoch = _optionalChain([cache, 'optionalAccess', _185 => _185.epoch]);
18959
18973
  const res = await this.http.request({ method: "GET", path, operation });
18960
- _optionalChain([cache, 'optionalAccess', _182 => _182.set, 'call', _183 => _183(path, res, resource, epoch)]);
18974
+ _optionalChain([cache, 'optionalAccess', _186 => _186.set, 'call', _187 => _187(path, res, resource, epoch)]);
18961
18975
  return res;
18962
18976
  }
18963
18977
  /**
@@ -18997,7 +19011,7 @@ var MetaBase = class extends QueryBase {
18997
19011
  return value;
18998
19012
  });
18999
19013
  work.catch((err) => {
19000
- if (err instanceof AutotaskError && (err.code === "INVALID_RESPONSE" || _optionalChain([err, 'access', _184 => _184.details, 'optionalAccess', _185 => _185.deterministic]) === true)) {
19014
+ if (err instanceof AutotaskError && (err.code === "INVALID_RESPONSE" || _optionalChain([err, 'access', _188 => _188.details, 'optionalAccess', _189 => _189.deterministic]) === true)) {
19001
19015
  cache.invalidate(key);
19002
19016
  }
19003
19017
  });
@@ -19027,7 +19041,7 @@ var MetaBase = class extends QueryBase {
19027
19041
  path: `${this.resourcePath}/${numeric}`,
19028
19042
  operation: `${this.config.key}.get`,
19029
19043
  skipResponseRedaction: true,
19030
- maxRetries: _optionalChain([readOpts, 'optionalAccess', _186 => _186.maxRetries])
19044
+ maxRetries: _optionalChain([readOpts, 'optionalAccess', _190 => _190.maxRetries])
19031
19045
  });
19032
19046
  return unwrapItem(res, numeric, `${this.config.key}.get`, this.entityName);
19033
19047
  }
@@ -19046,7 +19060,7 @@ var MetaBase = class extends QueryBase {
19046
19060
  path: this.scopedItemPath(parentId, numeric),
19047
19061
  operation: `${this.config.key}.get`,
19048
19062
  skipResponseRedaction: true,
19049
- maxRetries: _optionalChain([readOpts, 'optionalAccess', _187 => _187.maxRetries])
19063
+ maxRetries: _optionalChain([readOpts, 'optionalAccess', _191 => _191.maxRetries])
19050
19064
  });
19051
19065
  return unwrapItem(res, numeric, `${this.config.key}.get`, this.entityName);
19052
19066
  }
@@ -19255,12 +19269,12 @@ var MetaBase = class extends QueryBase {
19255
19269
  return null;
19256
19270
  }
19257
19271
  }
19258
- const epoch = _optionalChain([cache, 'optionalAccess', _188 => _188.epoch]);
19272
+ const epoch = _optionalChain([cache, 'optionalAccess', _192 => _192.epoch]);
19259
19273
  try {
19260
19274
  return await this.fetchRecordRaw(entityPath, referenceId);
19261
19275
  } catch (err) {
19262
19276
  if (err instanceof NotFoundError) {
19263
- _optionalChain([cache, 'optionalAccess', _189 => _189.set, 'call', _190 => _190(absentKey, CONTEXT_ABSENT_MARKER, RESOURCE_KEY_BY_PATH[entityPath], epoch)]);
19277
+ _optionalChain([cache, 'optionalAccess', _193 => _193.set, 'call', _194 => _194(absentKey, CONTEXT_ABSENT_MARKER, RESOURCE_KEY_BY_PATH[entityPath], epoch)]);
19264
19278
  return null;
19265
19279
  }
19266
19280
  throw err;
@@ -19377,7 +19391,7 @@ var MetaBase = class extends QueryBase {
19377
19391
  missDetail(operator, fields) {
19378
19392
  const key = this.config.key;
19379
19393
  const probe = fields.map((field) => ({ field, op: operator, value: "" }));
19380
- const blind = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _191 => _191[key], 'optionalAccess', _192 => _192.query]), probe);
19394
+ const blind = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _195 => _195[key], 'optionalAccess', _196 => _196.query]), probe);
19381
19395
  const next = [];
19382
19396
  if (blind !== void 0) {
19383
19397
  next.push(`This surface is blind to records the API user does not own, so a miss is not proof of absence: ${blind.authority} returns the record when the id is known.`);
@@ -20005,6 +20019,16 @@ var MutationBase = class extends MetaBase {
20005
20019
  warnings.push(`parent ${parentId} not found; the vendor would reject the create`);
20006
20020
  }
20007
20021
  }
20022
+ if (isRecord2(data)) {
20023
+ const eff = effectiveRequiredFields(void 0, _nullishCoalesce(_optionalChain([RELATIONSHIP_MAP, 'access', _197 => _197[this.config.key], 'optionalAccess', _198 => _198.zoneFacts]), () => ( null)));
20024
+ const missing = eff.fields.filter((f) => f !== this.config.parentField && data[f] === void 0);
20025
+ if (missing.length > 0) {
20026
+ warnings.push(`required field(s) not in the data: ${missing.join(", ")} (${eff.from}); the vendor would likely reject the create`);
20027
+ }
20028
+ }
20029
+ if (this.config.key === "companies") {
20030
+ warnings.push('the vendor auto-creates a "Primary Address" location for a new company (rename it with company_locations.update; it cannot be deleted via the API)');
20031
+ }
20008
20032
  return buildDryRunResult({
20009
20033
  operation: `${this.config.key}.create`,
20010
20034
  method: "POST",
@@ -20036,7 +20060,7 @@ var MutationBase = class extends MetaBase {
20036
20060
  current = parentId === void 0 ? await this.getGlobal(id, true) : this.config.attachmentGet ? await this.getScopedModel(parentId, id, true) : await this.getScopedRaw(parentId, id, true);
20037
20061
  } catch (err) {
20038
20062
  if (err instanceof NotFoundError) {
20039
- const updateReason = _optionalChain([EMPTY_REASON_STAMPS, 'access', _193 => _193[this.config.key], 'optionalAccess', _194 => _194.update]);
20063
+ const updateReason = _optionalChain([EMPTY_REASON_STAMPS, 'access', _199 => _199[this.config.key], 'optionalAccess', _200 => _200.update]);
20040
20064
  checks.push({
20041
20065
  name: "current-record-exists",
20042
20066
  ok: false,
@@ -20207,7 +20231,7 @@ function readIncludeNames(record, includeFields) {
20207
20231
  function resolveAuthority(record, live) {
20208
20232
  if (live !== null) return { known: live, authority: "the tenant's live entity field metadata" };
20209
20233
  const vendored = MODEL_FIELD_SETS[record.resource];
20210
- const liveOnlyExempt = Array.isArray(_optionalChain([record, 'access', _195 => _195.metadata, 'optionalAccess', _196 => _196.liveOnlyFields])) ? record.metadata.liveOnlyFields : [];
20234
+ const liveOnlyExempt = Array.isArray(_optionalChain([record, 'access', _201 => _201.metadata, 'optionalAccess', _202 => _202.liveOnlyFields])) ? record.metadata.liveOnlyFields : [];
20211
20235
  if (vendored === void 0) return void 0;
20212
20236
  return {
20213
20237
  known: [...vendored, ...liveOnlyExempt],
@@ -20441,4 +20465,5 @@ async function validateQueryFieldNames(record, holder, args) {
20441
20465
 
20442
20466
 
20443
20467
 
20444
- 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.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.BLIND_SURFACE_STAMPS = BLIND_SURFACE_STAMPS; exports.DELETE_BOUNDARY_NOTES = DELETE_BOUNDARY_NOTES; exports.MARKER_FIELDS = MARKER_FIELDS; exports.EMPTY_REASON_STAMPS = EMPTY_REASON_STAMPS; exports.BLIND_SURFACE_INVENTORY = BLIND_SURFACE_INVENTORY; exports.REACHABILITY_PROBE_DEFAULTS = REACHABILITY_PROBE_DEFAULTS; exports.CREATE_GUIDANCE = CREATE_GUIDANCE; exports.UNTRUSTED_FIELDS_BY_RESOURCE = UNTRUSTED_FIELDS_BY_RESOURCE; 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.truncateNoteChars = truncateNoteChars; exports.buildDryRunResult = buildDryRunResult; exports.mergePartialBody = mergePartialBody; exports.blindStampFor = blindStampFor; exports.decodeFileData = decodeFileData; 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.BaseResource = BaseResource; exports.MODEL_FIELD_SETS = MODEL_FIELD_SETS; exports.MODEL_DATE_FIELDS = MODEL_DATE_FIELDS; exports.formatUnknownNameList = formatUnknownNameList; exports.validateQueryFieldNames = validateQueryFieldNames; 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.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.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.UI_LINK_ENTITIES = UI_LINK_ENTITIES; exports.buildUiLink = buildUiLink; exports.uiLink = uiLink;
20468
+
20469
+ 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.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.BLIND_SURFACE_STAMPS = BLIND_SURFACE_STAMPS; exports.DELETE_BOUNDARY_NOTES = DELETE_BOUNDARY_NOTES; exports.MARKER_FIELDS = MARKER_FIELDS; exports.EMPTY_REASON_STAMPS = EMPTY_REASON_STAMPS; exports.BLIND_SURFACE_INVENTORY = BLIND_SURFACE_INVENTORY; exports.REACHABILITY_PROBE_DEFAULTS = REACHABILITY_PROBE_DEFAULTS; exports.CREATE_GUIDANCE = CREATE_GUIDANCE; exports.UNTRUSTED_FIELDS_BY_RESOURCE = UNTRUSTED_FIELDS_BY_RESOURCE; 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.truncateNoteChars = truncateNoteChars; exports.buildDryRunResult = buildDryRunResult; exports.mergePartialBody = mergePartialBody; exports.blindStampFor = blindStampFor; exports.decodeFileData = decodeFileData; 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.BaseResource = BaseResource; exports.MODEL_FIELD_SETS = MODEL_FIELD_SETS; exports.MODEL_DATE_FIELDS = MODEL_DATE_FIELDS; exports.formatUnknownNameList = formatUnknownNameList; exports.validateQueryFieldNames = validateQueryFieldNames; 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.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.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.UI_LINK_ENTITIES = UI_LINK_ENTITIES; exports.buildUiLink = buildUiLink; exports.uiLink = uiLink;