node-autotask 0.11.0 → 0.12.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.
- package/MCP_TOOL_CATALOG.json +26 -8
- package/MCP_TOOL_MANIFEST.md +12 -11
- package/N8N_MCP_MANIFEST.json +3 -3
- package/N8N_MCP_MANIFEST.md +4 -4
- package/README.md +1 -1
- package/capabilities.json +1352 -1233
- package/dist/capabilities.cjs +2 -2
- package/dist/capabilities.js +1 -1
- package/dist/{chunk-SXHPUQMB.js → chunk-3WIDDEHP.js} +2 -2
- package/dist/{chunk-7L23FDQW.js → chunk-4A6XLQHE.js} +1351 -1232
- package/dist/{chunk-YKEX4SK7.cjs → chunk-5N6DYKXO.cjs} +519 -39
- package/dist/{chunk-LNRN45XS.js → chunk-GD4JRPYF.js} +498 -18
- package/dist/{chunk-T5FLSJOD.cjs → chunk-JKZVCFRY.cjs} +1351 -1232
- package/dist/{chunk-CJONZQ7E.js → chunk-MY7ZSXY3.js} +1075 -6
- package/dist/{chunk-25ZUKHS4.cjs → chunk-SRJI5XUZ.cjs} +135 -135
- package/dist/{chunk-QAX222R6.cjs → chunk-TELBX6HK.cjs} +1462 -393
- package/dist/{index-B_xToSpq.d.ts → index-D8I6taEo.d.cts} +200 -2
- package/dist/{index-Dv_GSZaN.d.cts → index-uAxAcRol.d.ts} +200 -2
- package/dist/index.cjs +19 -19
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/operations/index.cjs +123 -588
- package/dist/operations/index.d.cts +4 -4
- package/dist/operations/index.d.ts +4 -4
- package/dist/operations/index.js +10 -475
- package/dist/pool.cjs +8 -8
- package/dist/pool.d.cts +2 -2
- package/dist/pool.d.ts +2 -2
- package/dist/pool.js +4 -4
- package/dist/resources/index.cjs +4 -4
- package/dist/resources/index.d.cts +2 -2
- package/dist/resources/index.d.ts +2 -2
- package/dist/resources/index.js +3 -3
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/docs/API.md +192 -2
- package/docs/N8N-ADAPTER.md +1 -1
- package/package.json +1 -1
- package/dist/{index-cQ6CRexR.d.cts → index-BXtKN1M5.d.cts} +201 -201
- package/dist/{index-cQ6CRexR.d.ts → index-BXtKN1M5.d.ts} +201 -201
|
@@ -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;
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkJKZVCFRYcjs = require('./chunk-JKZVCFRY.cjs');
|
|
4
4
|
|
|
5
5
|
// src/auth.ts
|
|
6
6
|
var AUTH_HEADERS = {
|
|
@@ -2063,7 +2063,7 @@ var _async_hooks = require('async_hooks');
|
|
|
2063
2063
|
var RELATIONSHIP_ZONE = {
|
|
2064
2064
|
"zone": "ww29",
|
|
2065
2065
|
"label": "australia-nz",
|
|
2066
|
-
"verifiedAt": "2026-10-
|
|
2066
|
+
"verifiedAt": "2026-10-15"
|
|
2067
2067
|
};
|
|
2068
2068
|
var RELATIONSHIP_MAP = {
|
|
2069
2069
|
"appointments": {
|
|
@@ -5103,8 +5103,8 @@ var RELATIONSHIP_MAP = {
|
|
|
5103
5103
|
"unproven": true,
|
|
5104
5104
|
"blocker": {
|
|
5105
5105
|
"kind": "blind-parent",
|
|
5106
|
-
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table
|
|
5107
|
-
"remedy": "provision a parent record in the Autotask UI first \u2014 the expense_reports
|
|
5106
|
+
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table's LIST surface is visibility-scoped for this API user (0 rows; re-probed 2026-10-15), so no parent id can be enumerated through the API list surface; get-by-id is the authority (it sees through the blind list \u2014 PROVEN 2026-10-15 on resources) (W-A6). The exact final vendor response is preserved verbatim in vendorEvidence (campaign receipt artifact, as recorded on disk).",
|
|
5107
|
+
"remedy": "provision a parent record in the Autotask UI first \u2014 the expense_reports LIST surface is visibility-scoped for this API user (0 rows; re-probed 2026-10-15; W-A6), so no parent id can be read back through the list surface (get-by-id is the authority); then retry the create with the real parent id."
|
|
5108
5108
|
},
|
|
5109
5109
|
"vendorEvidence": [
|
|
5110
5110
|
'{"error":true,"code":"SERVER_ERROR","category":"server","retryable":true,"httpStatus":500,"operation":"expense_items.create","suggestedAction":"Retry with backoff; the server error is transient.","correlationId":"178f9509-d97a-4e69-9e4b-f7af67d98e64","message":"Picklist value [1] does not exist for '
|
|
@@ -5168,7 +5168,7 @@ var RELATIONSHIP_MAP = {
|
|
|
5168
5168
|
"unproven": true,
|
|
5169
5169
|
"blocker": {
|
|
5170
5170
|
"kind": "blind-parent",
|
|
5171
|
-
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table
|
|
5171
|
+
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table's LIST surface is visibility-scoped for this API user (0 rows; re-probed 2026-10-15), so no parent id can be enumerated through the API list surface; get-by-id is the authority (it sees through the blind list \u2014 PROVEN 2026-10-15 on resources) (W-A6). The exact final vendor response is preserved verbatim in vendorEvidence (campaign receipt artifact, as recorded on disk).",
|
|
5172
5172
|
"remedy": "provision a parent record in the Autotask UI first; then retry the create with the real parent id."
|
|
5173
5173
|
},
|
|
5174
5174
|
"vendorEvidence": [
|
|
@@ -6657,7 +6657,7 @@ var RELATIONSHIP_MAP = {
|
|
|
6657
6657
|
"blindSurfaces": null,
|
|
6658
6658
|
"zoneFacts": {
|
|
6659
6659
|
"quirks": [
|
|
6660
|
-
"the resources table is
|
|
6660
|
+
"the resources table's LIST surface is visibility-scoped for this API user: count/query return 0; get-by-id sees through the blind list (PROVEN 2026-10-15: resources.get(31131373), resources.get(29869529) and resources.get(31131505) each returned a full record); the API user's own id is visible via resources.whoAmI (the API-only identity, resource 31131505 'Autotask API')",
|
|
6661
6661
|
"POST /V1.0/Resources 405s at the method level \u2014 no resource creation via REST at all (the registry has no resources.create op)"
|
|
6662
6662
|
]
|
|
6663
6663
|
},
|
|
@@ -7051,7 +7051,7 @@ var RELATIONSHIP_MAP = {
|
|
|
7051
7051
|
"unproven": true,
|
|
7052
7052
|
"blocker": {
|
|
7053
7053
|
"kind": "blind-parent",
|
|
7054
|
-
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table
|
|
7054
|
+
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table's LIST surface is visibility-scoped for this API user (0 rows; re-probed 2026-10-15), so no parent id can be enumerated through the API list surface; get-by-id is the authority (it sees through the blind list \u2014 PROVEN 2026-10-15 on resources) (W-A6). The exact final vendor response is preserved verbatim in vendorEvidence (campaign receipt artifact, as recorded on disk).",
|
|
7055
7055
|
"remedy": "provision a parent record in the Autotask UI first; then retry the create with the real parent id."
|
|
7056
7056
|
},
|
|
7057
7057
|
"vendorEvidence": [
|
|
@@ -9876,21 +9876,21 @@ var EMPTY_REASON_STAMPS = {
|
|
|
9876
9876
|
"count": {
|
|
9877
9877
|
"surface": "resources.count",
|
|
9878
9878
|
"kind": "tenant-empty-for-user",
|
|
9879
|
-
"note": "the
|
|
9879
|
+
"note": "the resources table's LIST surface is visibility-scoped for this API user (ww29 (australia-nz) live sweep 2026-10-04, marker FULL100-SEED-1791096521: 0 rows; re-probed 2026-10-15: count/query still 0) \u2014 the tenant HOLDS resources the list cannot see (get-by-id sees through the blind list \u2014 PROVEN 2026-10-15) \u2014 a 0/empty result here is INCONCLUSIVE (visibility-scoped, not tenant-level absence)",
|
|
9880
9880
|
"authority": "resources.get",
|
|
9881
9881
|
"remedy": "address a record by a known id (resources.get) or verify from a tenant user that owns the table \u2014 do not treat the 0 as tenant-level absence"
|
|
9882
9882
|
},
|
|
9883
9883
|
"query": {
|
|
9884
9884
|
"surface": "resources.query",
|
|
9885
9885
|
"kind": "tenant-empty-for-user",
|
|
9886
|
-
"note": "the
|
|
9886
|
+
"note": "the resources table's LIST surface is visibility-scoped for this API user (ww29 (australia-nz) live sweep 2026-10-04, marker FULL100-SEED-1791096521: 0 rows; re-probed 2026-10-15: count/query still 0) \u2014 the tenant HOLDS resources the list cannot see (get-by-id sees through the blind list \u2014 PROVEN 2026-10-15) \u2014 a 0/empty result here is INCONCLUSIVE (visibility-scoped, not tenant-level absence)",
|
|
9887
9887
|
"authority": "resources.get",
|
|
9888
9888
|
"remedy": "address a record by a known id (resources.get) or verify from a tenant user that owns the table \u2014 do not treat the 0 as tenant-level absence"
|
|
9889
9889
|
},
|
|
9890
9890
|
"update": {
|
|
9891
9891
|
"surface": "resources.update",
|
|
9892
9892
|
"kind": "tenant-empty-for-user",
|
|
9893
|
-
"note": "the
|
|
9893
|
+
"note": "the resources table's LIST surface is visibility-scoped for this API user (ww29 (australia-nz) live sweep 2026-10-04, marker FULL100-SEED-1791096521; re-probed 2026-10-15: list 0 rows) \u2014 the tenant HOLDS resources the list cannot see (get-by-id PROVEN 2026-10-15) \u2014 a resources update target miss here is INCONCLUSIVE (visibility-scoped, not a defect)",
|
|
9894
9894
|
"authority": "resources.get",
|
|
9895
9895
|
"remedy": "address a record by a known id (resources.get) or verify from a tenant user that owns the table \u2014 do not treat the 0 as tenant-level absence"
|
|
9896
9896
|
}
|
|
@@ -10238,8 +10238,8 @@ var EMPTY_REASON_STAMPS = {
|
|
|
10238
10238
|
var POINTER_NOTES = {
|
|
10239
10239
|
"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.`,
|
|
10240
10240
|
"time_entries.create": `W-A3 (ww29 (australia-nz) live 2026-10-04; drift re-verified 2026-10-06): the vendor now refuses ALL time-entry writes for this API-only user with "API-only user cannot be selected for this field" (10-04 text: "The specified AssignedResourceID and AssignedRoleID combination is not currently defined"). UNSATISFIABLE for an API-only integration user: the resources table is blind (0 rows) and the only selectable resource is the user's own API-only record, which the vendor refuses. createForResource \u2014 stage-11 PROVEN (8 live creates, 10-04) \u2014 is walled by the SAME drift (confirm-100 receipt 2026-10-06). Tenant evidence that valid pairs exist: postedWithin rows (resourceID 31131373 / 29869529 with roleID 29682834) \u2014 human resources the API user cannot select.`,
|
|
10241
|
-
"time_entries.getPosted": `W-D3 (ww29 (australia-nz) live 2026-10-04, re-verified 2026-10-
|
|
10242
|
-
"time_entries.getUnposted": `W-D3 (ww29 (australia-nz) live 2026-10-04, re-verified 2026-10-
|
|
10241
|
+
"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) or read time_entries.query and derive posted-state from the fields your zone's entity exposes`,
|
|
10242
|
+
"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) or read time_entries.query and derive posted-state from the fields your zone's entity exposes`,
|
|
10243
10243
|
"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)"
|
|
10244
10244
|
};
|
|
10245
10245
|
var BLIND_SURFACE_INVENTORY = {
|
|
@@ -11785,7 +11785,7 @@ var REACHABILITY_PROBE_DEFAULTS = {
|
|
|
11785
11785
|
var CREATE_GUIDANCE = {
|
|
11786
11786
|
"zone": "ww29",
|
|
11787
11787
|
"label": "australia-nz",
|
|
11788
|
-
"verifiedAt": "2026-10-
|
|
11788
|
+
"verifiedAt": "2026-10-15",
|
|
11789
11789
|
"rows": [
|
|
11790
11790
|
{
|
|
11791
11791
|
"resource": "appointments",
|
|
@@ -12835,8 +12835,8 @@ var CREATE_GUIDANCE = {
|
|
|
12835
12835
|
"unproven": true,
|
|
12836
12836
|
"blocker": {
|
|
12837
12837
|
"kind": "blind-parent",
|
|
12838
|
-
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table
|
|
12839
|
-
"remedy": "provision a parent record in the Autotask UI first \u2014 the expense_reports
|
|
12838
|
+
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table's LIST surface is visibility-scoped for this API user (0 rows; re-probed 2026-10-15), so no parent id can be enumerated through the API list surface; get-by-id is the authority (it sees through the blind list \u2014 PROVEN 2026-10-15 on resources) (W-A6). The exact final vendor response is preserved verbatim in vendorEvidence (campaign receipt artifact, as recorded on disk).",
|
|
12839
|
+
"remedy": "provision a parent record in the Autotask UI first \u2014 the expense_reports LIST surface is visibility-scoped for this API user (0 rows; re-probed 2026-10-15; W-A6), so no parent id can be read back through the list surface (get-by-id is the authority); then retry the create with the real parent id."
|
|
12840
12840
|
},
|
|
12841
12841
|
"vendorEvidence": [
|
|
12842
12842
|
'{"error":true,"code":"SERVER_ERROR","category":"server","retryable":true,"httpStatus":500,"operation":"expense_items.create","suggestedAction":"Retry with backoff; the server error is transient.","correlationId":"178f9509-d97a-4e69-9e4b-f7af67d98e64","message":"Picklist value [1] does not exist for '
|
|
@@ -12857,7 +12857,7 @@ var CREATE_GUIDANCE = {
|
|
|
12857
12857
|
"unproven": true,
|
|
12858
12858
|
"blocker": {
|
|
12859
12859
|
"kind": "blind-parent",
|
|
12860
|
-
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table
|
|
12860
|
+
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table's LIST surface is visibility-scoped for this API user (0 rows; re-probed 2026-10-15), so no parent id can be enumerated through the API list surface; get-by-id is the authority (it sees through the blind list \u2014 PROVEN 2026-10-15 on resources) (W-A6). The exact final vendor response is preserved verbatim in vendorEvidence (campaign receipt artifact, as recorded on disk).",
|
|
12861
12861
|
"remedy": "provision a parent record in the Autotask UI first; then retry the create with the real parent id."
|
|
12862
12862
|
},
|
|
12863
12863
|
"vendorEvidence": [
|
|
@@ -13437,7 +13437,7 @@ var CREATE_GUIDANCE = {
|
|
|
13437
13437
|
"unproven": true,
|
|
13438
13438
|
"blocker": {
|
|
13439
13439
|
"kind": "blind-parent",
|
|
13440
|
-
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table
|
|
13440
|
+
"message": "vendor 500 (stage-11 apply-matrix, marker FULL100W-1791110339): the create consumed the vendor field ladder and then failed on the parent reference \u2014 the parent table's LIST surface is visibility-scoped for this API user (0 rows; re-probed 2026-10-15), so no parent id can be enumerated through the API list surface; get-by-id is the authority (it sees through the blind list \u2014 PROVEN 2026-10-15 on resources) (W-A6). The exact final vendor response is preserved verbatim in vendorEvidence (campaign receipt artifact, as recorded on disk).",
|
|
13441
13441
|
"remedy": "provision a parent record in the Autotask UI first; then retry the create with the real parent id."
|
|
13442
13442
|
},
|
|
13443
13443
|
"vendorEvidence": [
|
|
@@ -15929,7 +15929,7 @@ function capabilitySets() {
|
|
|
15929
15929
|
const fieldOps = /* @__PURE__ */ new Map();
|
|
15930
15930
|
const udfOps = /* @__PURE__ */ new Map();
|
|
15931
15931
|
const resources = /* @__PURE__ */ new Set();
|
|
15932
|
-
for (const rec of
|
|
15932
|
+
for (const rec of _chunkJKZVCFRYcjs.CAPABILITIES) {
|
|
15933
15933
|
if (rec.resource === "operations") continue;
|
|
15934
15934
|
resources.add(rec.resource);
|
|
15935
15935
|
if (rec.operation === "getFieldInfo") fieldOps.set(rec.resource, rec);
|
|
@@ -16315,6 +16315,477 @@ async function resolveCompositeNames(http, plan, opts = {}) {
|
|
|
16315
16315
|
};
|
|
16316
16316
|
}
|
|
16317
16317
|
|
|
16318
|
+
// src/field-sets.ts
|
|
16319
|
+
var MODEL_FIELD_SETS = {
|
|
16320
|
+
"appointments": ["id", "createDateTime", "creatorResourceID", "description", "endDateTime", "resourceID", "startDateTime", "title", "updateDateTime"],
|
|
16321
|
+
"billing_codes": ["id", "afterHoursWorkType", "billingCodeType", "department", "description", "externalNumber", "generalLedgerAccount", "isActive", "isExcludedFromNewContracts", "markupRate", "name", "taxCategoryID", "unitCost", "unitPrice", "useType"],
|
|
16322
|
+
"billing_items": ["id", "accountManagerWhenApprovedID", "billingCodeID", "billingItemType", "companyID", "configurationItemID", "contractBlockID", "contractChargeID", "contractID", "contractServiceAdjustmentID", "contractServiceBundleAdjustmentID", "contractServiceBundleID", "contractServiceBundlePeriodID", "contractServiceID", "contractServicePeriodID", "description", "expenseItemID", "extendedPrice", "internalCurrencyExtendedPrice", "internalCurrencyRate", "internalCurrencyTaxDollars", "internalCurrencyTotalAmount", "invoiceID", "itemApproverID", "itemDate", "itemName", "lineItemFullDescription", "lineItemGroupDescription", "milestoneID", "nonBillable", "organizationalLevelAssociationID", "ourCost", "postedDate", "postedOnTime", "projectChargeID", "projectID", "purchaseOrderNumber", "quantity", "rate", "roleID", "serviceBundleID", "serviceID", "sortOrderID", "subType", "taskID", "taxDollars", "ticketChargeID", "ticketID", "timeEntryID", "totalAmount", "vendorID", "webServiceDate"],
|
|
16323
|
+
"change_request_links": ["id", "changeRequestTicketID", "problemOrIncidentTicketID"],
|
|
16324
|
+
"checklist_libraries": ["id", "description", "entityType", "isActive", "name"],
|
|
16325
|
+
"checklist_library_checklist_items": ["id", "checklistLibraryID", "isImportant", "itemName", "knowledgebaseArticleID", "position", "soapParentPropertyId"],
|
|
16326
|
+
"classification_icons": ["id", "description", "isActive", "isSystem", "name", "relativeUrl"],
|
|
16327
|
+
"companies": ["id", "additionalAddressInformation", "address1", "address2", "alternatePhone1", "alternatePhone2", "apiVendorID", "assetValue", "billToCompanyLocationID", "billToAdditionalAddressInformation", "billingAddress1", "billingAddress2", "billToAddressToUse", "billToAttention", "billToCity", "billToCountryID", "billToState", "billToZipCode", "city", "classification", "companyCategoryID", "companyName", "companyNumber", "companyType", "competitorID", "countryID", "createDate", "createdByResourceID", "currencyID", "fax", "impersonatorCreatorResourceID", "invoiceEmailMessageID", "invoiceMethod", "invoiceNonContractItemsToParentCompany", "invoiceTemplateID", "isActive", "isClientPortalActive", "isEnabledForComanaged", "isSample", "isTaskFireActive", "isTaxExempt", "lastActivityDate", "lastTrackedModifiedDateTime", "marketSegmentID", "ownerResourceID", "parentCompanyID", "phone", "postalCode", "purchaseOrderTemplateID", "quoteEmailMessageID", "quoteTemplateID", "sicCode", "state", "stockMarket", "stockSymbol", "surveyCompanyRating", "taxID", "taxRegionID", "territoryID", "webAddress", "userDefinedFields"],
|
|
16328
|
+
"company_alerts": ["id", "alertText", "alertTypeID", "companyID", "soapParentPropertyId"],
|
|
16329
|
+
"company_locations": ["id", "address1", "address2", "alternatePhone1", "alternatePhone2", "city", "companyID", "countryID", "description", "fax", "isActive", "isPrimary", "isTaxExempt", "overrideCompanyTaxSettings", "name", "phone", "postalCode", "roundtripDistance", "state", "taxRegionID", "soapParentPropertyId"],
|
|
16330
|
+
"company_notes": ["id", "actionType", "assignedResourceID", "companyID", "completedDateTime", "contactID", "createDateTime", "endDateTime", "impersonatorCreatorResourceID", "impersonatorUpdaterResourceID", "lastModifiedDate", "name", "note", "opportunityID", "startDateTime", "soapParentPropertyId"],
|
|
16331
|
+
"company_site_configurations": ["id", "companyID", "locationName", "soapParentPropertyId", "userDefinedFields"],
|
|
16332
|
+
"company_webhooks": ["id", "deactivationUrl", "isActive", "isReady", "isSubscribedToCreateEvents", "isSubscribedToDeleteEvents", "isSubscribedToUpdateEvents", "name", "notificationEmailAddress", "ownerResourceID", "secretKey", "sendThresholdExceededNotification", "webhookGUID", "webhookUrl"],
|
|
16333
|
+
"configuration_item_billing_product_associations": ["id", "billingProductID", "configurationItemID", "effectiveDate", "expirationDate", "soapParentPropertyId"],
|
|
16334
|
+
"configuration_item_categories": ["id", "displayColorRGB", "isActive", "isClientPortalDefault", "isGlobalDefault", "name", "nickname"],
|
|
16335
|
+
"configuration_item_category_udf_associations": ["id", "configurationItemCategoryID", "isRequired", "userDefinedFieldDefinitionID", "soapParentPropertyId"],
|
|
16336
|
+
"configuration_item_dns_records": ["id", "createDateTime", "data", "installedProductID", "timeToLiveSeconds", "dnsType", "soapParentPropertyId"],
|
|
16337
|
+
"configuration_item_notes": ["id", "configurationItemID", "createDateTime", "creatorResourceID", "description", "impersonatorCreatorResourceID", "impersonatorUpdaterResourceID", "lastActivityDate", "noteType", "title", "soapParentPropertyId"],
|
|
16338
|
+
"configuration_item_related_items": ["id", "configurationItemID", "relatedConfigurationItemID", "relationship", "soapParentPropertyId"],
|
|
16339
|
+
"configuration_item_ssl_subject_alternative_names": ["id", "configurationItemID", "name", "soapParentPropertyId"],
|
|
16340
|
+
"configuration_item_types": ["id", "isActive", "name"],
|
|
16341
|
+
"configuration_item_webhooks": ["id", "deactivationUrl", "isActive", "isReady", "isSubscribedToCreateEvents", "isSubscribedToDeleteEvents", "isSubscribedToUpdateEvents", "name", "notificationEmailAddress", "ownerResourceID", "secretKey", "sendThresholdExceededNotification", "webhookGUID", "webhookUrl"],
|
|
16342
|
+
"configuration_items": ["id", "apiVendorID", "configurationItemCategoryID", "companyID", "companyLocationID", "configurationItemType", "contactID", "contractID", "contractServiceBundleID", "contractServiceID", "createDate", "createdByPersonID", "dailyCost", "dattoAvailableKilobytes", "dattoDeviceMemoryMegabytes", "dattoDrivesErrors", "dattoHostname", "dattoInternalIP", "dattoKernelVersionID", "dattoLastCheckInDateTime", "dattoNICSpeedKilobitsPerSecond", "dattoNumberOfAgents", "dattoNumberOfDrives", "dattoNumberOfVolumes", "dattoOffsiteUsedBytes", "dattoOSVersionID", "dattoPercentageUsed", "dattoProtectedKilobytes", "dattoRemoteIP", "dattoSerialNumber", "dattoUptimeSeconds", "dattoUsedKilobytes", "dattoZFSVersionID", "deviceNetworkingID", "domain", "domainRegistrarID", "domainRegistrationDateTime", "domainLastUpdatedDateTime", "domainExpirationDateTime", "hourlyCost", "impersonatorCreatorResourceID", "installDate", "installedByContactID", "installedByID", "isActive", "lastActivityPersonID", "lastActivityPersonType", "lastModifiedTime", "location", "monthlyCost", "notes", "numberOfUsers", "parentConfigurationItemID", "perUseCost", "productID", "referenceNumber", "referenceTitle", "rmmDeviceAuditAntivirusStatusID", "rmmDeviceAuditArchitectureID", "rmmDeviceAuditBackupStatusID", "rmmDeviceAuditDescription", "rmmDeviceAuditDeviceTypeID", "rmmDeviceAuditDisplayAdaptorID", "rmmDeviceAuditDomainID", "rmmDeviceAuditExternalIPAddress", "rmmDeviceAuditHostname", "rmmDeviceAuditIPAddress", "rmmDeviceAuditLastUser", "rmmDeviceAuditMacAddress", "rmmDeviceAuditManufacturerID", "rmmDeviceAuditFirmwareID", "rmmDeviceAuditMemoryBytes", "rmmDeviceAuditMissingPatchCount", "rmmDeviceAuditMobileNetworkOperatorID", "rmmDeviceAuditMobileNumber", "rmmDeviceAuditModelID", "rmmDeviceAuditMotherboardID", "rmmDeviceAuditOperatingSystem", "rmmDeviceAuditPatchStatusID", "rmmDeviceAuditProcessorID", "rmmDeviceAuditServicePackID", "rmmDeviceAuditSNMPContact", "rmmDeviceAuditSNMPLocation", "rmmDeviceAuditSNMPName", "rmmDeviceAuditSoftwareStatusID", "rmmDeviceAuditStorageBytes", "rmmDeviceID", "rmmDeviceUID", "rmmVsaxDeviceID", "rmmOpenAlertCount", "serialNumber", "serviceBundleID", "serviceID", "serviceLevelAgreementID", "setupFee", "sourceChargeID", "sourceChargeType", "sslSource", "sslCommonName", "sslValidFromDateTime", "sslValidUntilDateTime", "sslIssuedBy", "sslOrganization", "sslOrganizationUnit", "sslLocation", "sslSerialNumber", "sslSignatureAlgorithm", "vendorID", "warrantyExpirationDate", "rmmIsInMaintenanceMode", "rmmIsMobileDeviceManagementEnrolled", "rmmDeviceUrl", "userDefinedFields"],
|
|
16343
|
+
"contact_group_contacts": ["id", "contactId", "contactGroupId", "soapParentPropertyId"],
|
|
16344
|
+
"contact_groups": ["id", "name", "isActive"],
|
|
16345
|
+
"contact_webhooks": ["id", "deactivationUrl", "isActive", "isReady", "isSubscribedToCreateEvents", "isSubscribedToDeleteEvents", "isSubscribedToUpdateEvents", "name", "notificationEmailAddress", "ownerResourceID", "secretKey", "sendThresholdExceededNotification", "webhookGUID", "webhookUrl"],
|
|
16346
|
+
"contacts": ["id", "additionalAddressInformation", "addressLine", "addressLine1", "alternatePhone", "apiVendorID", "bulkEmailOptOutTime", "city", "companyID", "companyLocationID", "countryID", "createDate", "emailAddress", "emailAddress2", "emailAddress3", "extension", "externalID", "facebookUrl", "faxNumber", "firstName", "impersonatorCreatorResourceID", "isActive", "isOptedOutFromBulkEmail", "lastActivityDate", "lastModifiedDate", "lastName", "linkedInUrl", "middleInitial", "mobilePhone", "namePrefix", "nameSuffix", "note", "receivesEmailNotifications", "phone", "primaryContact", "roomNumber", "solicitationOptOut", "solicitationOptOutTime", "state", "surveyOptOut", "title", "twitterUrl", "zipCode", "soapParentPropertyId", "userDefinedFields"],
|
|
16347
|
+
"contract_billing_rules": ["id", "contractID", "createChargesAsBillable", "dailyProratedCost", "dailyProratedPrice", "determineUnits", "endDate", "executionMethod", "includeItemsInChargeDescription", "invoiceDescription", "isActive", "isDailyProrationEnabled", "maximumUnits", "minimumUnits", "productID", "startDate", "soapParentPropertyId"],
|
|
16348
|
+
"contract_block_hour_factors": ["id", "blockHourMultiplier", "contractHourlyRate", "contractID", "internalCurrencyContractHourlyRate", "roleID", "soapParentPropertyId"],
|
|
16349
|
+
"contract_blocks": ["id", "contractID", "datePurchased", "endDate", "hourlyRate", "hours", "hoursApproved", "invoiceNumber", "isPaid", "paymentNumber", "paymentType", "startDate", "status", "soapParentPropertyId"],
|
|
16350
|
+
"contract_charges": ["id", "billableAmount", "billingCodeID", "chargeType", "contractID", "contractServiceBundleID", "contractServiceID", "createDate", "creatorResourceID", "datePurchased", "description", "extendedCost", "internalCurrencyBillableAmount", "internalCurrencyUnitPrice", "internalPurchaseOrderNumber", "isBillableToCompany", "isBilled", "name", "notes", "organizationalLevelAssociationID", "productID", "purchaseOrderNumber", "status", "statusLastModifiedBy", "statusLastModifiedDate", "unitCost", "unitPrice", "unitQuantity", "soapParentPropertyId"],
|
|
16351
|
+
"contract_exclusion_billing_codes": ["id", "billingCodeID", "contractID", "soapParentPropertyId"],
|
|
16352
|
+
"contract_exclusion_roles": ["id", "contractID", "roleID", "soapParentPropertyId"],
|
|
16353
|
+
"contract_exclusion_set_excluded_roles": ["id", "contractExclusionSetID", "excludedRoleID", "soapParentPropertyId"],
|
|
16354
|
+
"contract_exclusion_set_excluded_work_types": ["id", "contractExclusionSetID", "excludedWorkTypeID", "soapParentPropertyId"],
|
|
16355
|
+
"contract_exclusion_sets": ["id", "description", "isActive", "name"],
|
|
16356
|
+
"contract_milestones": ["id", "amount", "billingCodeID", "contractID", "createDate", "creatorResourceID", "dateDue", "description", "internalCurrencyAmount", "isInitialPayment", "organizationalLevelAssociationID", "status", "title", "soapParentPropertyId"],
|
|
16357
|
+
"contract_notes": ["id", "contractID", "createDateTime", "creatorResourceID", "description", "impersonatorCreatorResourceID", "impersonatorUpdaterResourceID", "lastActivityDate", "title", "soapParentPropertyId"],
|
|
16358
|
+
"contract_rates": ["id", "contractHourlyRate", "contractID", "internalCurrencyContractHourlyRate", "roleID", "soapParentPropertyId"],
|
|
16359
|
+
"contract_retainers": ["id", "amount", "amountApproved", "contractID", "datePurchased", "endDate", "internalCurrencyAmount", "internalCurrencyAmountApproved", "invoiceNumber", "isPaid", "paymentID", "paymentNumber", "startDate", "status", "soapParentPropertyId"],
|
|
16360
|
+
"contract_role_costs": ["id", "contractID", "rate", "resourceID", "roleID", "soapParentPropertyId"],
|
|
16361
|
+
"contract_service_bundle_units": ["id", "approveAndPostDate", "contractID", "contractServiceBundleID", "cost", "endDate", "internalCurrencyPrice", "organizationalLevelAssociationID", "price", "serviceBundleID", "startDate", "units", "soapParentPropertyId"],
|
|
16362
|
+
"contract_service_bundles": ["id", "adjustedPrice", "contractID", "internalCurrencyAdjustedPrice", "internalCurrencyUnitPrice", "internalDescription", "invoiceDescription", "quoteItemID", "serviceBundleID", "unitPrice", "soapParentPropertyId"],
|
|
16363
|
+
"contract_service_units": ["id", "approveAndPostDate", "contractID", "contractServiceID", "cost", "endDate", "internalCurrencyPrice", "organizationalLevelAssociationID", "price", "serviceID", "startDate", "units", "vendorCompanyID", "soapParentPropertyId"],
|
|
16364
|
+
"contract_services": ["id", "contractID", "internalCurrencyAdjustedPrice", "internalCurrencyUnitPrice", "internalDescription", "invoiceDescription", "quoteItemID", "serviceID", "unitCost", "unitPrice", "soapParentPropertyId"],
|
|
16365
|
+
"contract_ticket_purchases": ["id", "contractID", "datePurchased", "endDate", "invoiceNumber", "isPaid", "paymentNumber", "paymentType", "perTicketRate", "startDate", "status", "ticketsPurchased", "ticketsUsed", "soapParentPropertyId"],
|
|
16366
|
+
"contracts": ["id", "billingPreference", "billToCompanyContactID", "billToCompanyID", "companyID", "contactID", "contactName", "contractCategory", "contractExclusionSetID", "contractName", "contractNumber", "contractPeriodType", "contractType", "description", "endDate", "estimatedCost", "estimatedHours", "estimatedRevenue", "exclusionContractID", "internalCurrencyOverageBillingRate", "internalCurrencySetupFee", "isCompliant", "isDefaultContract", "lastModifiedDateTime", "opportunityID", "organizationalLevelAssociationID", "overageBillingRate", "purchaseOrderNumber", "renewedContractID", "serviceLevelAgreementID", "setupFee", "setupFeeBillingCodeID", "startDate", "status", "timeReportingRequiresStartAndStopTimes", "userDefinedFields"],
|
|
16367
|
+
"countries": ["id", "addressFormatID", "countryCode", "displayName", "invoiceTemplateID", "isActive", "isDefaultCountry", "name", "purchaseOrderTemplateID", "quoteTemplateID"],
|
|
16368
|
+
"departments": ["id", "description", "name", "number", "primaryLocationID"],
|
|
16369
|
+
"domain_registrars": ["id", "name", "url"],
|
|
16370
|
+
"expense_item_attachments": ["id", "attachDate", "attachedByContactID", "attachedByResourceID", "attachmentType", "contentType", "creatorType", "expenseItemID", "expenseReportID", "fileSize", "fullPath", "impersonatorCreatorResourceID", "opportunityID", "parentID", "publish", "title", "data", "parentType", "soapParentPropertyId", "isTaskAttachment"],
|
|
16371
|
+
"expense_items": ["id", "companyID", "description", "destination", "entertainmentLocation", "expenseCategory", "expenseCurrencyExpenseAmount", "expenseCurrencyID", "expenseDate", "expenseReportID", "glCode", "haveReceipt", "internalCurrencyExpenseAmount", "internalCurrencyReimbursementAmount", "isBillableToCompany", "isReimbursable", "isRejected", "miles", "odometerEnd", "odometerStart", "origin", "paymentType", "projectID", "purchaseOrderNumber", "reimbursementCurrencyReimbursementAmount", "taskID", "ticketID", "workType", "soapParentPropertyId"],
|
|
16372
|
+
"expense_reports": ["id", "amountDue", "approvedDate", "approverID", "departmentNumber", "internalCurrencyCashAdvanceAmount", "internalCurrencyExpenseTotal", "name", "organizationalLevelAssociationID", "quickBooksReferenceNumber", "reimbursementCurrencyAmountDue", "reimbursementCurrencyCashAdvanceAmount", "reimbursementCurrencyID", "rejectionReason", "status", "submit", "submitDate", "submitterID", "weekEnding"],
|
|
16373
|
+
"holiday_sets": ["id", "holidaySetDescription", "holidaySetName"],
|
|
16374
|
+
"holidays": ["id", "holidayDate", "holidayName", "holidaySetID", "soapParentPropertyId"],
|
|
16375
|
+
"inventory_products": ["id", "availableUnits", "backOrderQuantity", "bin", "createDateTime", "createdByResourceID", "inventoryLocationID", "onHandUnits", "pickedUnits", "productID", "quantityMaximum", "quantityMinimum", "referenceNumber", "reservedUnits", "unitsOnOrder"],
|
|
16376
|
+
"invoices": ["id", "batchID", "comments", "companyID", "createDateTime", "creatorResourceID", "dueDate", "fromDate", "invoiceDateTime", "invoiceEditorTemplateID", "invoiceNumber", "invoiceTotal", "isVoided", "orderNumber", "paidDate", "paymentTerm", "taxGroup", "taxRegionName", "toDate", "totalTaxValue", "voidedByResourceID", "voidedDate", "webServiceDate"],
|
|
16377
|
+
"notification_history": ["id", "companyID", "entityNumber", "entityTitle", "initiatingContactID", "initiatingResourceID", "isActive", "isDeleted", "isTemplateJob", "notificationHistoryTypeID", "notificationSentTime", "opportunityID", "projectID", "quoteID", "recipientDisplayName", "recipientEmailAddress", "taskID", "templateName", "ticketID", "timeEntryID"],
|
|
16378
|
+
"opportunities": ["id", "advancedField1", "advancedField2", "advancedField3", "advancedField4", "advancedField5", "amount", "assessmentScore", "barriers", "closedDate", "companyID", "contactID", "cost", "createDate", "creatorResourceID", "description", "helpNeeded", "impersonatorCreatorResourceID", "lastActivity", "leadSource", "lossReason", "lossReasonDetail", "lostDate", "market", "monthlyCost", "monthlyRevenue", "nextStep", "onetimeCost", "onetimeRevenue", "opportunityCategoryID", "organizationalLevelAssociationID", "ownerResourceID", "primaryCompetitor", "probability", "productID", "projectedCloseDate", "promisedFulfillmentDate", "promotionName", "quarterlyCost", "quarterlyRevenue", "rating", "relationshipAssessmentScore", "revenueSpread", "revenueSpreadUnit", "salesOrderID", "salesProcessPercentComplete", "semiannualCost", "semiannualRevenue", "stage", "startDate", "status", "technicalAssessmentScore", "throughDate", "title", "totalAmountMonths", "useQuoteTotals", "winReason", "winReasonDetail", "yearlyCost", "yearlyRevenue", "userDefinedFields"],
|
|
16379
|
+
"opportunity_attachments": ["id", "attachDate", "attachedByContactID", "attachedByResourceID", "attachmentType", "contentType", "creatorType", "fileSize", "fullPath", "impersonatorCreatorResourceID", "opportunityID", "parentAttachmentID", "parentID", "publish", "title", "data", "parentType", "soapParentPropertyId", "isTaskAttachment"],
|
|
16380
|
+
"opportunity_categories": ["id", "displayColorRGB", "isActive", "isGlobalDefault", "name", "nickname"],
|
|
16381
|
+
"phases": ["id", "createDate", "creatorResourceID", "description", "dueDate", "estimatedHours", "externalID", "isScheduled", "lastActivityDateTime", "parentPhaseID", "phaseNumber", "projectID", "startDate", "title", "soapParentPropertyId"],
|
|
16382
|
+
"product_vendors": ["id", "isActive", "isDefault", "productID", "vendorCost", "vendorID", "vendorPartNumber", "soapParentPropertyId"],
|
|
16383
|
+
"products": ["id", "billingType", "chargeBillingCodeID", "createdByResourceID", "createdTime", "defaultVendorID", "description", "doesNotRequireProcurement", "externalProductID", "impersonatorCreatorResourceID", "internalProductID", "isActive", "isEligibleForRma", "isSerialized", "link", "manufacturerName", "manufacturerProductName", "markupRate", "msrp", "name", "periodType", "priceCostMethod", "productBillingCodeID", "productCategory", "sku", "unitCost", "unitPrice", "vendorProductNumber", "defaultInstalledProductCategoryID", "userDefinedFields"],
|
|
16384
|
+
"project_charges": ["id", "billableAmount", "billingCodeID", "chargeType", "contractServiceBundleID", "contractServiceID", "createDate", "creatorResourceID", "datePurchased", "description", "estimatedCost", "extendedCost", "internalCurrencyBillableAmount", "internalCurrencyUnitPrice", "internalPurchaseOrderNumber", "isBillableToCompany", "isBilled", "name", "notes", "organizationalLevelAssociationID", "productID", "projectID", "purchaseOrderNumber", "status", "statusLastModifiedBy", "statusLastModifiedDate", "unitCost", "unitPrice", "unitQuantity", "soapParentPropertyId"],
|
|
16385
|
+
"project_notes": ["id", "createDateTime", "createdByContactID", "creatorResourceID", "description", "impersonatorCreatorResourceID", "impersonatorUpdaterResourceID", "isAnnouncement", "lastActivityDate", "noteType", "projectID", "publish", "title", "soapParentPropertyId"],
|
|
16386
|
+
"projects": ["id", "actualBilledHours", "actualHours", "changeOrdersBudget", "changeOrdersRevenue", "companyID", "companyOwnerResourceID", "completedDateTime", "completedPercentage", "contractID", "createDateTime", "creatorResourceID", "department", "description", "duration", "endDateTime", "estimatedSalesCost", "estimatedTime", "extProjectNumber", "extProjectType", "impersonatorCreatorResourceID", "laborEstimatedCosts", "laborEstimatedMarginPercentage", "laborEstimatedRevenue", "lastActivityDateTime", "lastActivityPersonType", "lastActivityResourceID", "opportunityID", "organizationalLevelAssociationID", "originalEstimatedRevenue", "projectCostEstimatedMarginPercentage", "projectCostsBudget", "projectCostsRevenue", "projectLeadResourceID", "projectName", "projectNumber", "projectType", "purchaseOrderNumber", "sgda", "startDateTime", "status", "statusDateTime", "statusDetail", "userDefinedFields"],
|
|
16387
|
+
"purchase_approvals": ["id", "costType", "isApproved", "rejectNote"],
|
|
16388
|
+
"purchase_order_item_receiving": ["id", "purchaseOrderItemID", "quantityBackOrdered", "quantityNowReceiving", "quantityPreviouslyReceived", "receiveDate", "receivedByResourceID", "serialNumber", "vendorInvoiceNumber", "soapParentPropertyId"],
|
|
16389
|
+
"purchase_order_items": ["id", "chargeID", "contractID", "estimatedArrivalDate", "internalCurrencyUnitCost", "inventoryLocationID", "memo", "orderID", "productID", "projectID", "quantity", "salesOrderID", "ticketID", "unitCost", "soapParentPropertyId"],
|
|
16390
|
+
"purchase_orders": ["id", "cancelDateTime", "createDateTime", "creatorResourceID", "externalPONumber", "fax", "freight", "generalMemo", "impersonatorCreatorResourceID", "internalCurrencyFreight", "latestEstimatedArrivalDate", "paymentTerm", "phone", "purchaseForCompanyID", "purchaseOrderNumber", "purchaseOrderTemplateID", "shippingDate", "shippingType", "shipToAddress1", "shipToAddress2", "shipToCity", "shipToName", "shipToPostalCode", "shipToState", "showEachTaxInGroup", "showTaxCategory", "status", "submitDateTime", "taxRegionID", "useItemDescriptionsFrom", "vendorID", "vendorInvoiceNumber", "additionalVendorInvoiceNumbers"],
|
|
16391
|
+
"quote_items": ["id", "averageCost", "chargeID", "description", "expenseID", "highestCost", "internalCurrencyLineDiscount", "internalCurrencyUnitDiscount", "internalCurrencyUnitPrice", "isOptional", "isTaxable", "laborID", "lineDiscount", "markupRate", "name", "percentageDiscount", "periodType", "productID", "quantity", "quoteID", "quoteItemType", "serviceBundleID", "serviceID", "shippingID", "sortOrderID", "taxCategoryID", "totalEffectiveTax", "unitCost", "unitDiscount", "unitPrice", "soapParentPropertyId"],
|
|
16392
|
+
"quote_locations": ["id", "address1", "address2", "city", "postalCode", "state"],
|
|
16393
|
+
"quote_templates": ["id", "calculateTaxSeparately", "createDate", "createdBy", "currencyNegativeFormat", "currencyPositiveFormat", "dateFormat", "description", "displayTaxCategorySuperscripts", "isActive", "lastActivityBy", "lastActivityDate", "name", "numberFormat", "pageLayout", "pageNumberFormat", "showEachTaxInGroup", "showGridHeader", "showTaxCategory", "showVerticalGridLines"],
|
|
16394
|
+
"quotes": ["id", "approvalStatus", "approvalStatusChangedByResourceID", "approvalStatusChangedDate", "billToLocationID", "calculateTaxSeparately", "comment", "companyID", "contactID", "createDate", "creatorResourceID", "description", "effectiveDate", "expirationDate", "extApprovalContactResponse", "extApprovalResponseDate", "extApprovalResponseSignature", "externalQuoteNumber", "groupByID", "impersonatorCreatorResourceID", "isActive", "lastActivityDate", "lastModifiedBy", "lastPublishedByResourceID", "lastPublishedDateTime", "name", "opportunityID", "paymentTerm", "paymentType", "primaryQuote", "proposalProjectID", "purchaseOrderNumber", "quoteNumber", "quoteTemplateID", "shippingType", "shipToLocationID", "showEachTaxInGroup", "showTaxCategory", "soldToLocationID", "taxRegionID"],
|
|
16395
|
+
"resource_role_queues": ["id", "queueID", "resourceID", "soapParentPropertyId"],
|
|
16396
|
+
"resource_roles": ["id", "departmentID", "isActive", "queueID", "resourceID", "roleID", "soapParentPropertyId"],
|
|
16397
|
+
"resource_skills": ["id", "resourceID", "skillDescription", "skillID", "skillLevel", "soapParentPropertyId"],
|
|
16398
|
+
"resource_time_off_approvers": ["id", "resourceID", "approverResourceID", "approvalLevel", "soapParentPropertyId"],
|
|
16399
|
+
"resource_time_off_balances": ["id", "resourceID", "floatingHolidayAnnualAllowance", "floatingHolidayBalance", "floatingHolidayPlanned", "floatingHolidayUsed", "floatingHolidayWaitingApproval", "personalTimeAnnualAllowance", "personalTimeBalance", "personalTimePlanned", "personalTimeUsed", "personalTimeWaitingApproval", "sickTimeAnnualAllowance", "sickTimeBalance", "sickTimePlanned", "sickTimeUsed", "sickTimeWaitingApproval", "vacationTimeAnnualAllowance", "vacationTimeBalance", "vacationTimePlanned", "vacationTimeUsed", "vacationTimeWaitingApproval", "year", "soapParentPropertyId"],
|
|
16400
|
+
"resources": ["id", "accountingReferenceID", "dateFormat", "defaultServiceDeskRoleID", "email", "email2", "email3", "emailTypeCode", "emailTypeCode2", "emailTypeCode3", "firstName", "gender", "greeting", "hireDate", "homePhone", "initials", "internalCost", "isActive", "lastName", "licenseType", "locationID", "middleName", "mobilePhone", "numberFormat", "officeExtension", "officePhone", "payrollIdentifier", "payrollType", "resourceType", "suffix", "surveyResourceRating", "timeFormat", "title", "travelAvailabilityPct", "userName", "userType"],
|
|
16401
|
+
"roles": ["id", "description", "hourlyFactor", "hourlyRate", "isActive", "isExcludedFromNewContracts", "isSystemRole", "name", "quoteItemDefaultTaxCategoryId", "roleType"],
|
|
16402
|
+
"service_call_task_resources": ["id", "resourceID", "serviceCallTaskID", "soapParentPropertyId"],
|
|
16403
|
+
"service_call_tasks": ["id", "serviceCallID", "taskID", "soapParentPropertyId"],
|
|
16404
|
+
"service_call_ticket_resources": ["id", "resourceID", "serviceCallTicketID", "soapParentPropertyId"],
|
|
16405
|
+
"service_call_tickets": ["id", "serviceCallID", "ticketID", "soapParentPropertyId"],
|
|
16406
|
+
"service_calls": ["id", "cancelationNoticeHours", "canceledByResourceID", "canceledDateTime", "companyID", "companyLocationID", "createDateTime", "creatorResourceID", "description", "duration", "endDateTime", "impersonatorCreatorResourceID", "isComplete", "lastModifiedDateTime", "startDateTime", "status"],
|
|
16407
|
+
"service_level_agreement_results": ["id", "firstResponseElapsedHours", "firstResponseInitiatingResourceID", "firstResponseResourceID", "isFirstResponseMet", "isResolutionMet", "isResolutionPlanMet", "resolutionElapsedHours", "resolutionPlanElapsedHours", "resolutionPlanResourceID", "resolutionResourceID", "serviceLevelAgreementName", "ticketID", "soapParentPropertyId"],
|
|
16408
|
+
"services": ["id", "billingCodeID", "createDate", "creatorResourceID", "description", "invoiceDescription", "isActive", "lastModifiedDate", "markupRate", "name", "periodType", "serviceLevelAgreementID", "unitCost", "unitPrice", "updateResourceID", "vendorCompanyID", "manufacturerServiceProvider", "manufacturerServiceProviderProductNumber", "catalogNumberPartNumber", "sku", "internalID", "externalID", "url", "userDefinedFields"],
|
|
16409
|
+
"skills": ["id", "categoryID", "description", "isActive", "name"],
|
|
16410
|
+
"subscription_periods": ["id", "periodCost", "periodDate", "periodPrice", "postedDate", "purchaseOrderNumber", "subscriptionID", "soapParentPropertyId"],
|
|
16411
|
+
"subscriptions": ["id", "configurationItemID", "description", "effectiveDate", "expirationDate", "impersonatorCreatorResourceID", "materialCodeID", "organizationalLevelAssociationID", "periodCost", "periodPrice", "periodType", "purchaseOrderNumber", "status", "subscriptionName", "totalCost", "totalPrice", "vendorID", "userDefinedFields"],
|
|
16412
|
+
"survey_results": ["id", "companyID", "companyRating", "completeDate", "contactID", "contactRating", "resourceRating", "sendDate", "surveyID", "surveyRating", "ticketID"],
|
|
16413
|
+
"surveys": ["id", "description", "displayName", "name"],
|
|
16414
|
+
"tag_aliases": ["id", "alias", "tagID", "soapParentPropertyId"],
|
|
16415
|
+
"tag_groups": ["id", "displayColor", "isActive", "isSystem", "label"],
|
|
16416
|
+
"tags": ["id", "createDateTime", "isActive", "isExcludedFromAutomaticTagging", "isSystem", "label", "lastModifiedDateTime", "tagGroupID"],
|
|
16417
|
+
"task_secondary_resources": ["id", "resourceID", "roleID", "taskID", "soapParentPropertyId"],
|
|
16418
|
+
"tasks": ["id", "assignedResourceID", "assignedResourceRoleID", "billingCodeID", "canClientPortalUserCompleteTask", "companyLocationID", "completedByResourceID", "completedByType", "completedDateTime", "createDateTime", "creatorResourceID", "creatorType", "departmentID", "description", "endDateTime", "estimatedHours", "externalID", "hoursToBeScheduled", "isTaskBillable", "isVisibleInClientPortal", "lastActivityDateTime", "lastActivityPersonType", "lastActivityResourceID", "phaseID", "priority", "priorityLabel", "projectID", "purchaseOrderNumber", "remainingHours", "startDateTime", "status", "taskCategoryID", "taskNumber", "taskType", "title", "soapParentPropertyId", "userDefinedFields"],
|
|
16419
|
+
"ticket_additional_configuration_items": ["id", "configurationItemID", "ticketID", "soapParentPropertyId"],
|
|
16420
|
+
"ticket_additional_contacts": ["id", "contactID", "ticketID", "soapParentPropertyId"],
|
|
16421
|
+
"ticket_attachments": ["id", "attachDate", "attachedByContactID", "attachedByResourceID", "attachmentType", "contentType", "creatorType", "fileSize", "fullPath", "impersonatorCreatorResourceID", "opportunityID", "parentAttachmentID", "parentID", "publish", "ticketID", "ticketNoteID", "timeEntryID", "title", "data", "parentType", "soapParentPropertyId", "isTaskAttachment"],
|
|
16422
|
+
"ticket_categories": ["id", "displayColorRGB", "isActive", "isApiOnly", "isGlobalDefault", "name", "nickname"],
|
|
16423
|
+
"ticket_category_field_defaults": ["id", "description", "estimatedHours", "issueTypeID", "organizationalLevelAssociationID", "priority", "purchaseOrderNumber", "queueID", "resolution", "serviceLevelAgreementID", "sourceID", "status", "subIssueTypeID", "ticketCategoryID", "ticketTypeID", "title", "workTypeID", "soapParentPropertyId"],
|
|
16424
|
+
"ticket_change_request_approvals": ["id", "approveRejectDateTime", "approveRejectNote", "contactID", "isApproved", "resourceID", "ticketID", "soapParentPropertyId"],
|
|
16425
|
+
"ticket_charges": ["id", "billableAmount", "billingCodeID", "chargeType", "contractServiceBundleID", "contractServiceID", "createDate", "creatorResourceID", "datePurchased", "description", "extendedCost", "internalCurrencyBillableAmount", "internalCurrencyUnitPrice", "internalPurchaseOrderNumber", "isBillableToCompany", "isBilled", "name", "notes", "organizationalLevelAssociationID", "productID", "purchaseOrderNumber", "status", "statusLastModifiedBy", "statusLastModifiedDate", "ticketID", "unitCost", "unitPrice", "unitQuantity", "soapParentPropertyId"],
|
|
16426
|
+
"ticket_checklist_items": ["id", "completedByResourceID", "completedDateTime", "isCompleted", "isImportant", "itemName", "knowledgebaseArticleID", "position", "ticketID", "soapParentPropertyId"],
|
|
16427
|
+
"ticket_history": ["id", "action", "date", "detail", "resourceID", "ticketID", "soapParentPropertyId"],
|
|
16428
|
+
"ticket_note_attachments": ["id", "attachDate", "attachedByContactID", "attachedByResourceID", "attachmentType", "contentType", "creatorType", "fileSize", "fullPath", "impersonatorCreatorResourceID", "opportunityID", "parentID", "publish", "ticketID", "ticketNoteID", "title", "data", "parentType", "soapParentPropertyId", "isTaskAttachment"],
|
|
16429
|
+
"ticket_note_webhooks": ["id", "deactivationUrl", "isActive", "isReady", "isSubscribedToCreateEvents", "isSubscribedToDeleteEvents", "isSubscribedToUpdateEvents", "name", "notificationEmailAddress", "ownerResourceID", "secretKey", "sendThresholdExceededNotification", "webhookGUID", "webhookUrl"],
|
|
16430
|
+
"ticket_notes": ["id", "createDateTime", "createdByContactID", "creatorResourceID", "description", "impersonatorCreatorResourceID", "impersonatorUpdaterResourceID", "lastActivityDate", "noteType", "publish", "ticketID", "title", "soapParentPropertyId"],
|
|
16431
|
+
"ticket_secondary_resources": ["id", "resourceID", "roleID", "ticketID", "soapParentPropertyId"],
|
|
16432
|
+
"ticket_webhooks": ["id", "deactivationUrl", "isActive", "isReady", "isSubscribedToCreateEvents", "isSubscribedToDeleteEvents", "isSubscribedToUpdateEvents", "name", "notificationEmailAddress", "ownerResourceID", "secretKey", "sendThresholdExceededNotification", "webhookGUID", "webhookUrl"],
|
|
16433
|
+
"tickets": ["id", "apiVendorID", "assignedResourceID", "assignedResourceRoleID", "billingCodeID", "changeApprovalBoard", "changeApprovalStatus", "changeApprovalType", "changeInfoField1", "changeInfoField2", "changeInfoField3", "changeInfoField4", "changeInfoField5", "companyID", "companyLocationID", "completedByResourceID", "completedDate", "configurationItemID", "contactID", "contractID", "contractServiceBundleID", "contractServiceID", "createDate", "createdByContactID", "creatorResourceID", "creatorType", "currentServiceThermometerRating", "description", "dueDateTime", "estimatedHours", "externalID", "firstResponseAssignedResourceID", "firstResponseDateTime", "firstResponseDueDateTime", "firstResponseInitiatingResourceID", "hoursToBeScheduled", "impersonatorCreatorResourceID", "isAssignedToComanaged", "issueType", "isVisibleToComanaged", "lastActivityDate", "lastActivityPersonType", "lastActivityResourceID", "lastCustomerNotificationDateTime", "lastCustomerVisibleActivityDateTime", "lastTrackedModificationDateTime", "monitorID", "monitorTypeID", "opportunityID", "organizationalLevelAssociationID", "previousServiceThermometerRating", "priority", "problemTicketId", "projectID", "purchaseOrderNumber", "queueID", "resolution", "resolutionPlanDateTime", "resolutionPlanDueDateTime", "resolvedDateTime", "resolvedDueDateTime", "rmaStatus", "rmaType", "rmmAlertID", "serviceLevelAgreementHasBeenMet", "serviceLevelAgreementID", "serviceLevelAgreementPausedNextEventHours", "serviceThermometerTemperature", "source", "status", "subIssueType", "ticketCategory", "ticketNumber", "ticketType", "title", "userDefinedFields"],
|
|
16434
|
+
"time_entries": ["id", "billingApprovalDateTime", "billingApprovalLevelMostRecent", "billingApprovalResourceID", "billingCodeID", "contractID", "contractServiceBundleID", "contractServiceID", "createDateTime", "creatorUserID", "dateWorked", "endDateTime", "hoursToBill", "hoursWorked", "impersonatorCreatorResourceID", "impersonatorUpdaterResourceID", "internalBillingCodeID", "internalNotes", "isInternalNotesVisibleToComanaged", "isNonBillable", "lastModifiedDateTime", "lastModifiedUserID", "offsetHours", "resourceID", "roleID", "showOnInvoice", "startDateTime", "summaryNotes", "taskID", "ticketID", "timeEntryType"],
|
|
16435
|
+
"time_entry_attachments": ["id", "attachDate", "attachedByContactID", "attachedByResourceID", "attachmentType", "contentType", "creatorType", "fileSize", "fullPath", "impersonatorCreatorResourceID", "opportunityID", "parentID", "publish", "taskID", "ticketID", "timeEntryID", "title", "data", "parentType", "soapParentPropertyId", "isTaskAttachment"],
|
|
16436
|
+
"time_off_requests": ["id", "approvedDateTime", "approveRejectResourceID", "createdByResourceID", "createDateTime", "endTime", "hours", "impersonatorApproveRejectResourceID", "lastModifiedByResourceID", "lastModifiedDateTime", "lastApprovedLevel", "reason", "rejectReason", "requestDate", "resourceID", "startTime", "status", "timeOffRequestType", "soapParentPropertyId"]
|
|
16437
|
+
};
|
|
16438
|
+
var MODEL_DATE_FIELDS = {
|
|
16439
|
+
"appointments": ["createDateTime", "endDateTime", "startDateTime", "updateDateTime"],
|
|
16440
|
+
"billing_items": ["itemDate", "postedDate", "postedOnTime", "webServiceDate"],
|
|
16441
|
+
"companies": ["createDate", "lastActivityDate", "lastTrackedModifiedDateTime"],
|
|
16442
|
+
"company_notes": ["completedDateTime", "createDateTime", "endDateTime", "lastModifiedDate", "startDateTime"],
|
|
16443
|
+
"configuration_item_billing_product_associations": ["effectiveDate", "expirationDate"],
|
|
16444
|
+
"configuration_item_dns_records": ["createDateTime"],
|
|
16445
|
+
"configuration_item_notes": ["createDateTime", "lastActivityDate"],
|
|
16446
|
+
"configuration_items": ["createDate", "dattoLastCheckInDateTime", "domainRegistrationDateTime", "domainLastUpdatedDateTime", "domainExpirationDateTime", "installDate", "lastModifiedTime", "sslValidFromDateTime", "sslValidUntilDateTime", "warrantyExpirationDate"],
|
|
16447
|
+
"contacts": ["bulkEmailOptOutTime", "createDate", "lastActivityDate", "lastModifiedDate", "solicitationOptOutTime"],
|
|
16448
|
+
"contract_billing_rules": ["endDate", "startDate"],
|
|
16449
|
+
"contract_blocks": ["datePurchased", "endDate", "startDate"],
|
|
16450
|
+
"contract_charges": ["createDate", "datePurchased", "statusLastModifiedDate"],
|
|
16451
|
+
"contract_milestones": ["createDate", "dateDue"],
|
|
16452
|
+
"contract_notes": ["createDateTime", "lastActivityDate"],
|
|
16453
|
+
"contract_retainers": ["datePurchased", "endDate", "startDate"],
|
|
16454
|
+
"contract_service_bundle_units": ["approveAndPostDate", "endDate", "startDate"],
|
|
16455
|
+
"contract_service_units": ["approveAndPostDate", "endDate", "startDate"],
|
|
16456
|
+
"contract_ticket_purchases": ["datePurchased", "endDate", "startDate"],
|
|
16457
|
+
"contracts": ["endDate", "lastModifiedDateTime", "startDate"],
|
|
16458
|
+
"expense_item_attachments": ["attachDate"],
|
|
16459
|
+
"expense_items": ["expenseDate"],
|
|
16460
|
+
"expense_reports": ["approvedDate", "submitDate", "weekEnding"],
|
|
16461
|
+
"holidays": ["holidayDate"],
|
|
16462
|
+
"inventory_products": ["createDateTime"],
|
|
16463
|
+
"invoices": ["createDateTime", "dueDate", "fromDate", "invoiceDateTime", "paidDate", "toDate", "voidedDate", "webServiceDate"],
|
|
16464
|
+
"notification_history": ["notificationSentTime"],
|
|
16465
|
+
"opportunities": ["closedDate", "createDate", "lastActivity", "lostDate", "projectedCloseDate", "promisedFulfillmentDate", "startDate", "throughDate"],
|
|
16466
|
+
"opportunity_attachments": ["attachDate"],
|
|
16467
|
+
"phases": ["createDate", "dueDate", "lastActivityDateTime", "startDate"],
|
|
16468
|
+
"products": ["createdTime"],
|
|
16469
|
+
"project_charges": ["createDate", "datePurchased", "statusLastModifiedDate"],
|
|
16470
|
+
"project_notes": ["createDateTime", "lastActivityDate"],
|
|
16471
|
+
"projects": ["completedDateTime", "createDateTime", "endDateTime", "lastActivityDateTime", "startDateTime", "statusDateTime"],
|
|
16472
|
+
"purchase_order_item_receiving": ["receiveDate"],
|
|
16473
|
+
"purchase_order_items": ["estimatedArrivalDate"],
|
|
16474
|
+
"purchase_orders": ["cancelDateTime", "createDateTime", "latestEstimatedArrivalDate", "shippingDate", "submitDateTime"],
|
|
16475
|
+
"quote_templates": ["createDate", "lastActivityDate"],
|
|
16476
|
+
"quotes": ["approvalStatusChangedDate", "createDate", "effectiveDate", "expirationDate", "extApprovalResponseDate", "lastActivityDate", "lastPublishedDateTime"],
|
|
16477
|
+
"resources": ["hireDate"],
|
|
16478
|
+
"service_calls": ["canceledDateTime", "createDateTime", "endDateTime", "lastModifiedDateTime", "startDateTime"],
|
|
16479
|
+
"services": ["createDate", "lastModifiedDate"],
|
|
16480
|
+
"subscription_periods": ["periodDate", "postedDate"],
|
|
16481
|
+
"subscriptions": ["effectiveDate", "expirationDate"],
|
|
16482
|
+
"survey_results": ["completeDate", "sendDate"],
|
|
16483
|
+
"tags": ["createDateTime", "lastModifiedDateTime"],
|
|
16484
|
+
"tasks": ["completedDateTime", "createDateTime", "endDateTime", "lastActivityDateTime", "startDateTime"],
|
|
16485
|
+
"ticket_attachments": ["attachDate"],
|
|
16486
|
+
"ticket_change_request_approvals": ["approveRejectDateTime"],
|
|
16487
|
+
"ticket_charges": ["createDate", "datePurchased", "statusLastModifiedDate"],
|
|
16488
|
+
"ticket_checklist_items": ["completedDateTime"],
|
|
16489
|
+
"ticket_history": ["date"],
|
|
16490
|
+
"ticket_note_attachments": ["attachDate"],
|
|
16491
|
+
"ticket_notes": ["createDateTime", "lastActivityDate"],
|
|
16492
|
+
"tickets": ["completedDate", "createDate", "dueDateTime", "firstResponseDateTime", "firstResponseDueDateTime", "lastActivityDate", "lastCustomerNotificationDateTime", "lastCustomerVisibleActivityDateTime", "lastTrackedModificationDateTime", "resolutionPlanDateTime", "resolutionPlanDueDateTime", "resolvedDateTime", "resolvedDueDateTime"],
|
|
16493
|
+
"time_entries": ["billingApprovalDateTime", "createDateTime", "dateWorked", "endDateTime", "lastModifiedDateTime", "startDateTime"],
|
|
16494
|
+
"time_entry_attachments": ["attachDate"],
|
|
16495
|
+
"time_off_requests": ["approvedDateTime", "createDateTime", "endTime", "lastModifiedDateTime", "requestDate", "startTime"]
|
|
16496
|
+
};
|
|
16497
|
+
|
|
16498
|
+
// src/operations/fetchMany.ts
|
|
16499
|
+
var FETCH_MANY_MAX_ITEMS = 20;
|
|
16500
|
+
function validateFetchManyItems(items, cap, opName = "fetchMany", capRef = `FETCH_MANY_MAX_ITEMS = ${FETCH_MANY_MAX_ITEMS}`, validation) {
|
|
16501
|
+
if (!Array.isArray(items)) {
|
|
16502
|
+
throw new AutotaskConfigError(
|
|
16503
|
+
`${opName}: items must be the items ARRAY \u2014 one positional arg, [{ resource: string, id: number, fields?: string[] }] (got ${Array.isArray(items) ? "an array" : typeof items})`,
|
|
16504
|
+
{
|
|
16505
|
+
suggestedAction: 'Pass args = [[{ resource: "tickets", id: 123 }, { resource: "projects", id: 456 }]] \u2014 the items array is the single positional argument.'
|
|
16506
|
+
}
|
|
16507
|
+
);
|
|
16508
|
+
}
|
|
16509
|
+
if (items.length === 0) {
|
|
16510
|
+
throw new AutotaskConfigError(`${opName}: items must not be empty (a zero-item batch is a shape error, not a no-op)`, {
|
|
16511
|
+
suggestedAction: "Pass at least one { resource, id } item \u2014 or use the resource's query op for a filtered read."
|
|
16512
|
+
});
|
|
16513
|
+
}
|
|
16514
|
+
if (items.length > cap) {
|
|
16515
|
+
throw new AutotaskConfigError(
|
|
16516
|
+
`${opName}: ${items.length} items over the ${cap}-item cap (${capRef}) \u2014 zero items were fetched (pre-request)`,
|
|
16517
|
+
{
|
|
16518
|
+
suggestedAction: `Split the batch into groups of <= ${cap} items \u2014 or, for more than ${cap} records / a filtered set, use the resource's bounded query op (<resource>.query).`
|
|
16519
|
+
}
|
|
16520
|
+
);
|
|
16521
|
+
}
|
|
16522
|
+
const problems = [];
|
|
16523
|
+
for (let i = 0; i < items.length; i += 1) {
|
|
16524
|
+
const it = items[i];
|
|
16525
|
+
const at = `items[${i}]`;
|
|
16526
|
+
if (typeof it !== "object" || it === null || Array.isArray(it)) {
|
|
16527
|
+
problems.push(`${at}: must be an object { resource: string, id: number, fields?: string[] }`);
|
|
16528
|
+
continue;
|
|
16529
|
+
}
|
|
16530
|
+
const item = it;
|
|
16531
|
+
if (typeof item.resource !== "string" || item.resource.trim() === "") {
|
|
16532
|
+
problems.push(`${at}.resource: required \u2014 the plan resource key (string, e.g. 'tickets'; see autotask_catalog)`);
|
|
16533
|
+
continue;
|
|
16534
|
+
}
|
|
16535
|
+
const resourceKey = item.resource;
|
|
16536
|
+
const fields = MODEL_FIELD_SETS[resourceKey];
|
|
16537
|
+
if (fields === void 0) {
|
|
16538
|
+
problems.push(
|
|
16539
|
+
`${at}.resource: "${resourceKey}" is not a single-record GETtable resource (${Object.keys(MODEL_FIELD_SETS).length} known) \u2014 see autotask_catalog for the exact plan keys`
|
|
16540
|
+
);
|
|
16541
|
+
continue;
|
|
16542
|
+
}
|
|
16543
|
+
const rel = RELATIONSHIP_MAP[resourceKey];
|
|
16544
|
+
if (rel !== void 0 && rel.parentScoped) {
|
|
16545
|
+
problems.push(
|
|
16546
|
+
`${at}.resource: "${resourceKey}" is a parent-scoped child \u2014 its get needs (parentId, id); fetchMany takes single numeric ids of TOP-LEVEL records (scoped reads: client.${camelKey(resourceKey)}.get(parentId, id))`
|
|
16547
|
+
);
|
|
16548
|
+
continue;
|
|
16549
|
+
}
|
|
16550
|
+
try {
|
|
16551
|
+
parseIdentifier(item.id, `${at}.id`);
|
|
16552
|
+
} catch (e17) {
|
|
16553
|
+
if (typeof item.id === "string") {
|
|
16554
|
+
problems.push(
|
|
16555
|
+
`${at}.id: "${item.id}" is not a vendor numeric id \u2014 non-numeric string identifiers are autotask_resolve_any territory (resolveAny / the resource's findBy* helpers)`
|
|
16556
|
+
);
|
|
16557
|
+
} else if (typeof item.id === "number") {
|
|
16558
|
+
problems.push(
|
|
16559
|
+
`${at}.id: ${item.id} is not a non-negative safe integer (a JS number this large is already corrupted \u2014 pass the canonical integer string form)`
|
|
16560
|
+
);
|
|
16561
|
+
} else {
|
|
16562
|
+
problems.push(`${at}.id: required \u2014 the vendor numeric id (safe integer, or the canonical integer string for ids above 2^53)`);
|
|
16563
|
+
}
|
|
16564
|
+
continue;
|
|
16565
|
+
}
|
|
16566
|
+
if (item.fields !== void 0) {
|
|
16567
|
+
if (!Array.isArray(item.fields) || item.fields.some((f) => typeof f !== "string")) {
|
|
16568
|
+
problems.push(`${at}.fields: must be an array of exact vendor field names (discover them via operations.fieldCatalog)`);
|
|
16569
|
+
continue;
|
|
16570
|
+
}
|
|
16571
|
+
if (_optionalChain([validation, 'optionalAccess', _135 => _135.fieldCheck]) !== false) {
|
|
16572
|
+
const authoritative = _nullishCoalesce(_optionalChain([validation, 'optionalAccess', _136 => _136.fieldSetsByResource, 'optionalAccess', _137 => _137.get, 'call', _138 => _138(resourceKey)]), () => ( fields));
|
|
16573
|
+
for (const f of item.fields) {
|
|
16574
|
+
if (!authoritative.includes(f)) {
|
|
16575
|
+
problems.push(
|
|
16576
|
+
`${at}.fields: "${f}" is not a field of ${resourceKey} \u2014 a hallucinated field is a shape error, not a silent projection-miss (exact vendor field names via operations.fieldCatalog)`
|
|
16577
|
+
);
|
|
16578
|
+
}
|
|
16579
|
+
}
|
|
16580
|
+
}
|
|
16581
|
+
}
|
|
16582
|
+
}
|
|
16583
|
+
if (problems.length > 0) {
|
|
16584
|
+
throw new AutotaskConfigError(
|
|
16585
|
+
`${opName}: ${problems.length} problem(s) found pre-request (zero wire was issued)
|
|
16586
|
+
- ` + problems.join("\n- "),
|
|
16587
|
+
{ suggestedAction: "Fix every item above and call again \u2014 validation covers the whole batch up-front (one round, zero wire)." }
|
|
16588
|
+
);
|
|
16589
|
+
}
|
|
16590
|
+
}
|
|
16591
|
+
function project(value, fields) {
|
|
16592
|
+
const out = {};
|
|
16593
|
+
for (const f of fields) {
|
|
16594
|
+
if (f in value) out[f] = value[f];
|
|
16595
|
+
}
|
|
16596
|
+
return out;
|
|
16597
|
+
}
|
|
16598
|
+
async function fetchMany(client, items, opts = {}) {
|
|
16599
|
+
if (opts.maxItems !== void 0) {
|
|
16600
|
+
if (!Number.isInteger(opts.maxItems) || opts.maxItems < 1) {
|
|
16601
|
+
throw new AutotaskConfigError(`fetchMany: maxItems must be an integer >= 1 (got ${String(opts.maxItems)})`);
|
|
16602
|
+
}
|
|
16603
|
+
}
|
|
16604
|
+
if (opts.liveFields !== void 0 && typeof opts.liveFields !== "boolean") {
|
|
16605
|
+
throw new AutotaskConfigError(`fetchMany: liveFields must be a boolean (got ${typeof opts.liveFields})`);
|
|
16606
|
+
}
|
|
16607
|
+
const cap = Math.min(FETCH_MANY_MAX_ITEMS, _nullishCoalesce(opts.maxItems, () => ( FETCH_MANY_MAX_ITEMS)));
|
|
16608
|
+
if (opts.liveFields === true) {
|
|
16609
|
+
validateFetchManyItems(items, cap, void 0, void 0, { fieldCheck: false });
|
|
16610
|
+
const liveFieldSets = /* @__PURE__ */ new Map();
|
|
16611
|
+
for (const item of items) {
|
|
16612
|
+
const key = item.resource;
|
|
16613
|
+
if (liveFieldSets.has(key)) continue;
|
|
16614
|
+
const holder = client[camelKey(key)];
|
|
16615
|
+
if (holder === void 0) {
|
|
16616
|
+
throw new AutotaskConfigError(`fetchMany: the client exposes no accessor for resource "${key}"`, {
|
|
16617
|
+
suggestedAction: "Rebuild the client from the SDK build that ships this registry (the resource set is pinned by the plan)."
|
|
16618
|
+
});
|
|
16619
|
+
}
|
|
16620
|
+
try {
|
|
16621
|
+
const rows = await holder.getFieldInfo();
|
|
16622
|
+
const names = [];
|
|
16623
|
+
for (const row of rows) {
|
|
16624
|
+
if (typeof row.name === "string") names.push(row.name);
|
|
16625
|
+
}
|
|
16626
|
+
liveFieldSets.set(key, names.length > 0 ? names : null);
|
|
16627
|
+
} catch (err) {
|
|
16628
|
+
if (!isAutotaskError(err) || err.code === "ABORTED") throw err;
|
|
16629
|
+
liveFieldSets.set(key, null);
|
|
16630
|
+
}
|
|
16631
|
+
}
|
|
16632
|
+
validateFetchManyItems(items, cap, void 0, void 0, { fieldSetsByResource: liveFieldSets });
|
|
16633
|
+
} else {
|
|
16634
|
+
validateFetchManyItems(items, cap);
|
|
16635
|
+
}
|
|
16636
|
+
const results = [];
|
|
16637
|
+
for (const item of items) {
|
|
16638
|
+
const key = item.resource;
|
|
16639
|
+
const id = parseIdentifier(item.id, `items[${results.length}].id`);
|
|
16640
|
+
const holder = client[camelKey(key)];
|
|
16641
|
+
if (holder === void 0) {
|
|
16642
|
+
throw new AutotaskConfigError(`fetchMany: the client exposes no accessor for resource "${key}"`, {
|
|
16643
|
+
suggestedAction: "Rebuild the client from the SDK build that ships this registry (the resource set is pinned by the plan)."
|
|
16644
|
+
});
|
|
16645
|
+
}
|
|
16646
|
+
try {
|
|
16647
|
+
const value = await holder.get(id);
|
|
16648
|
+
results.push({ resource: key, id, found: true, value: item.fields !== void 0 ? project(value, item.fields) : value });
|
|
16649
|
+
} catch (err) {
|
|
16650
|
+
if (err instanceof NotFoundError) {
|
|
16651
|
+
results.push({ resource: key, id, found: false, value: null, error: { code: "NOT_FOUND", message: err.message } });
|
|
16652
|
+
} else if (isAutotaskError(err) && err.code !== "ABORTED") {
|
|
16653
|
+
const e = { code: err.code, message: err.message };
|
|
16654
|
+
if (err.httpStatus !== void 0) e.httpStatus = err.httpStatus;
|
|
16655
|
+
results.push({ resource: key, id, found: false, value: null, error: e });
|
|
16656
|
+
} else {
|
|
16657
|
+
throw err;
|
|
16658
|
+
}
|
|
16659
|
+
}
|
|
16660
|
+
}
|
|
16661
|
+
const ok = results.filter((r) => r.found).length;
|
|
16662
|
+
return { results, ok, failed: results.length - ok };
|
|
16663
|
+
}
|
|
16664
|
+
|
|
16665
|
+
// src/operations/fetchByIds.ts
|
|
16666
|
+
var FETCH_BY_IDS_MAX_ITEMS = 500;
|
|
16667
|
+
var FETCH_BY_IDS_CHUNK_SIZE = 250;
|
|
16668
|
+
function project2(value, fields) {
|
|
16669
|
+
const out = {};
|
|
16670
|
+
for (const f of fields) {
|
|
16671
|
+
if (f in value) out[f] = value[f];
|
|
16672
|
+
}
|
|
16673
|
+
return out;
|
|
16674
|
+
}
|
|
16675
|
+
function resourcePathOf(key, holder) {
|
|
16676
|
+
const path = _optionalChain([holder, 'optionalAccess', _139 => _139.resourcePath]);
|
|
16677
|
+
if (typeof path !== "string" || path === "") {
|
|
16678
|
+
throw new AutotaskConfigError(`fetchByIds: the client exposes no ${key} resource path (registry drift)`, {
|
|
16679
|
+
suggestedAction: "Rebuild the client from the SDK build that ships this registry (the resource set is pinned by the plan)."
|
|
16680
|
+
});
|
|
16681
|
+
}
|
|
16682
|
+
return path;
|
|
16683
|
+
}
|
|
16684
|
+
async function fetchByIds(client, items, opts = {}) {
|
|
16685
|
+
if (opts.maxItems !== void 0) {
|
|
16686
|
+
if (!Number.isInteger(opts.maxItems) || opts.maxItems < 1) {
|
|
16687
|
+
throw new AutotaskConfigError(`fetchByIds: maxItems must be an integer >= 1 (got ${String(opts.maxItems)})`);
|
|
16688
|
+
}
|
|
16689
|
+
}
|
|
16690
|
+
const cap = Math.min(FETCH_BY_IDS_MAX_ITEMS, _nullishCoalesce(opts.maxItems, () => ( FETCH_BY_IDS_MAX_ITEMS)));
|
|
16691
|
+
validateFetchManyItems(items, cap, "fetchByIds", `FETCH_BY_IDS_MAX_ITEMS = ${FETCH_BY_IDS_MAX_ITEMS}`);
|
|
16692
|
+
const groups = /* @__PURE__ */ new Map();
|
|
16693
|
+
const canonical = [];
|
|
16694
|
+
for (let i = 0; i < items.length; i += 1) {
|
|
16695
|
+
const item = items[i];
|
|
16696
|
+
const id = parseIdentifier(item.id, `items[${i}].id`);
|
|
16697
|
+
canonical[i] = id;
|
|
16698
|
+
const g = _nullishCoalesce(groups.get(item.resource), () => ( { indices: [], fields: /* @__PURE__ */ new Set(), anyFields: false }));
|
|
16699
|
+
g.indices.push(i);
|
|
16700
|
+
if (item.fields !== void 0) {
|
|
16701
|
+
g.anyFields = true;
|
|
16702
|
+
for (const f of item.fields) g.fields.add(f);
|
|
16703
|
+
}
|
|
16704
|
+
groups.set(item.resource, g);
|
|
16705
|
+
}
|
|
16706
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
16707
|
+
for (const [key, group] of groups) {
|
|
16708
|
+
const holder = client[camelKey(key)];
|
|
16709
|
+
if (holder === void 0) {
|
|
16710
|
+
throw new AutotaskConfigError(`fetchByIds: the client exposes no accessor for resource "${key}"`, {
|
|
16711
|
+
suggestedAction: "Rebuild the client from the SDK build that ships this registry (the resource set is pinned by the plan)."
|
|
16712
|
+
});
|
|
16713
|
+
}
|
|
16714
|
+
const resourcePath = resourcePathOf(key, holder);
|
|
16715
|
+
const unique = [];
|
|
16716
|
+
const seen = /* @__PURE__ */ new Set();
|
|
16717
|
+
for (const i of group.indices) {
|
|
16718
|
+
const k = String(canonical[i]);
|
|
16719
|
+
if (!seen.has(k)) {
|
|
16720
|
+
seen.add(k);
|
|
16721
|
+
unique.push(canonical[i]);
|
|
16722
|
+
}
|
|
16723
|
+
}
|
|
16724
|
+
const includeFields = group.anyFields && group.indices.every((i) => items[i].fields !== void 0) ? [...group.fields] : void 0;
|
|
16725
|
+
const kOf = (id) => `${key}:${String(id)}`;
|
|
16726
|
+
for (let c = 0; c < unique.length; c += FETCH_BY_IDS_CHUNK_SIZE) {
|
|
16727
|
+
const chunk = unique.slice(c, c + FETCH_BY_IDS_CHUNK_SIZE);
|
|
16728
|
+
const chunkKeys = new Set(chunk.map((id) => String(id)));
|
|
16729
|
+
try {
|
|
16730
|
+
const req = buildQueryRequest(client.http.baseUrl, resourcePath, {
|
|
16731
|
+
filter: [{ field: "id", op: "in", value: chunk }],
|
|
16732
|
+
maxRecords: FETCH_BY_IDS_CHUNK_SIZE,
|
|
16733
|
+
includeFields
|
|
16734
|
+
});
|
|
16735
|
+
const res = await client.http.request({ ...req, operation: `${key}.fetchByIds` });
|
|
16736
|
+
const { items: rows } = unwrapItems(res, `${key}.fetchByIds`);
|
|
16737
|
+
for (const row of rows) {
|
|
16738
|
+
const k = String(row.id);
|
|
16739
|
+
if (!chunkKeys.has(k)) continue;
|
|
16740
|
+
const q = kOf(k);
|
|
16741
|
+
if (!byKey.has(q)) byKey.set(q, { found: true, value: row });
|
|
16742
|
+
}
|
|
16743
|
+
} catch (err) {
|
|
16744
|
+
if (isAutotaskError(err) && err.code !== "ABORTED") {
|
|
16745
|
+
const e = { code: err.code, message: err.message };
|
|
16746
|
+
if (err.httpStatus !== void 0) e.httpStatus = err.httpStatus;
|
|
16747
|
+
for (const u of chunk) {
|
|
16748
|
+
const q = kOf(u);
|
|
16749
|
+
if (!byKey.has(q)) byKey.set(q, { found: false, value: null, error: e });
|
|
16750
|
+
}
|
|
16751
|
+
continue;
|
|
16752
|
+
}
|
|
16753
|
+
throw err;
|
|
16754
|
+
}
|
|
16755
|
+
}
|
|
16756
|
+
for (const id of unique) {
|
|
16757
|
+
const k = kOf(id);
|
|
16758
|
+
if (byKey.has(k)) continue;
|
|
16759
|
+
try {
|
|
16760
|
+
const value = await holder.get(id);
|
|
16761
|
+
byKey.set(k, { found: true, value });
|
|
16762
|
+
} catch (err) {
|
|
16763
|
+
if (err instanceof NotFoundError) {
|
|
16764
|
+
byKey.set(k, { found: false, value: null, error: { code: "NOT_FOUND", message: err.message } });
|
|
16765
|
+
} else if (isAutotaskError(err) && err.code !== "ABORTED") {
|
|
16766
|
+
const e = { code: err.code, message: err.message };
|
|
16767
|
+
if (err.httpStatus !== void 0) e.httpStatus = err.httpStatus;
|
|
16768
|
+
byKey.set(k, { found: false, value: null, error: e });
|
|
16769
|
+
} else {
|
|
16770
|
+
throw err;
|
|
16771
|
+
}
|
|
16772
|
+
}
|
|
16773
|
+
}
|
|
16774
|
+
}
|
|
16775
|
+
const results = [];
|
|
16776
|
+
for (let i = 0; i < items.length; i += 1) {
|
|
16777
|
+
const item = items[i];
|
|
16778
|
+
const id = canonical[i];
|
|
16779
|
+
const out = byKey.get(`${item.resource}:${String(id)}`);
|
|
16780
|
+
const value = out.found ? item.fields !== void 0 ? project2(out.value, item.fields) : out.value : null;
|
|
16781
|
+
results.push(
|
|
16782
|
+
out.found ? { resource: item.resource, id, found: true, value } : { resource: item.resource, id, found: false, value: null, error: out.error }
|
|
16783
|
+
);
|
|
16784
|
+
}
|
|
16785
|
+
const ok = results.filter((r) => r.found).length;
|
|
16786
|
+
return { results, ok, failed: results.length - ok };
|
|
16787
|
+
}
|
|
16788
|
+
|
|
16318
16789
|
// src/resources/base.ts
|
|
16319
16790
|
var BOUNDED_QUERY_DEFAULT_LIMIT = 500;
|
|
16320
16791
|
var BOUNDED_QUERY_MAX_LIMIT = 2500;
|
|
@@ -16374,7 +16845,7 @@ function blindEmptyReason(stamp) {
|
|
|
16374
16845
|
};
|
|
16375
16846
|
}
|
|
16376
16847
|
function attachUpdateTargetMissReason(err, key) {
|
|
16377
|
-
const pinned = _optionalChain([EMPTY_REASON_STAMPS, 'access',
|
|
16848
|
+
const pinned = _optionalChain([EMPTY_REASON_STAMPS, 'access', _140 => _140[key], 'optionalAccess', _141 => _141.update]);
|
|
16378
16849
|
if (pinned === void 0) return;
|
|
16379
16850
|
err.details = { ..._nullishCoalesce(err.details, () => ( {})), emptyReason: pinned };
|
|
16380
16851
|
}
|
|
@@ -16539,7 +17010,7 @@ var BaseResource = class {
|
|
|
16539
17010
|
return (page, pageSize) => this.fetchPage(p, page, pageSize, state);
|
|
16540
17011
|
}
|
|
16541
17012
|
walkPageSize(params) {
|
|
16542
|
-
return clampPageSize(_nullishCoalesce(_optionalChain([params, 'optionalAccess',
|
|
17013
|
+
return clampPageSize(_nullishCoalesce(_optionalChain([params, 'optionalAccess', _142 => _142.maxRecords]), () => ( this.defaultPageSize)));
|
|
16543
17014
|
}
|
|
16544
17015
|
/** Stream items across pages (the resource `query` surface). */
|
|
16545
17016
|
queryItems(params) {
|
|
@@ -16551,7 +17022,7 @@ var BaseResource = class {
|
|
|
16551
17022
|
}
|
|
16552
17023
|
/** Collect every item across all pages (the resource `queryAll` surface; 1000-page guarded). */
|
|
16553
17024
|
async queryAllItems(params) {
|
|
16554
|
-
return collectAll(this.pageFetcher(params), { pageSize: this.walkPageSize(params), maxRecords: _optionalChain([params, 'optionalAccess',
|
|
17025
|
+
return collectAll(this.pageFetcher(params), { pageSize: this.walkPageSize(params), maxRecords: _optionalChain([params, 'optionalAccess', _143 => _143.maxTotalRecords]) });
|
|
16555
17026
|
}
|
|
16556
17027
|
/**
|
|
16557
17028
|
* `queryBounded` — server-side pagination (the MCP query surface): ONE call
|
|
@@ -16586,19 +17057,19 @@ var BaseResource = class {
|
|
|
16586
17057
|
"queryBounded: params must be an object { filter?, limit?, latest?, includeFields? } \u2014 a bare conditions array is not accepted (wrap it: { filter: [...] })"
|
|
16587
17058
|
);
|
|
16588
17059
|
}
|
|
16589
|
-
const limit = _nullishCoalesce(_optionalChain([params, 'optionalAccess',
|
|
17060
|
+
const limit = _nullishCoalesce(_optionalChain([params, 'optionalAccess', _144 => _144.limit]), () => ( BOUNDED_QUERY_DEFAULT_LIMIT));
|
|
16590
17061
|
if (!Number.isInteger(limit) || limit < 1 || limit > BOUNDED_QUERY_MAX_LIMIT) {
|
|
16591
17062
|
throw new AutotaskConfigError(
|
|
16592
17063
|
`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`
|
|
16593
17064
|
);
|
|
16594
17065
|
}
|
|
16595
|
-
const noteChars = _optionalChain([params, 'optionalAccess',
|
|
17066
|
+
const noteChars = _optionalChain([params, 'optionalAccess', _145 => _145.noteChars]);
|
|
16596
17067
|
if (noteChars !== void 0 && (!Number.isInteger(noteChars) || noteChars < 1)) {
|
|
16597
17068
|
throw new AutotaskConfigError(
|
|
16598
17069
|
`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)`
|
|
16599
17070
|
);
|
|
16600
17071
|
}
|
|
16601
|
-
const walkParams = _optionalChain([params, 'optionalAccess',
|
|
17072
|
+
const walkParams = _optionalChain([params, 'optionalAccess', _146 => _146.fieldsPreset]) !== void 0 ? { ...params, includeFields: resolveFieldsPreset(params.fieldsPreset, this.config.key, params.includeFields) } : _nullishCoalesce(params, () => ( {}));
|
|
16602
17073
|
const latest = walkParams.latest;
|
|
16603
17074
|
if (latest !== void 0) {
|
|
16604
17075
|
if (!Number.isInteger(latest) || latest < 1 || latest > BOUNDED_QUERY_MAX_LIMIT) {
|
|
@@ -16606,7 +17077,7 @@ var BaseResource = class {
|
|
|
16606
17077
|
`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`
|
|
16607
17078
|
);
|
|
16608
17079
|
}
|
|
16609
|
-
if (_optionalChain([params, 'optionalAccess',
|
|
17080
|
+
if (_optionalChain([params, 'optionalAccess', _147 => _147.limit]) !== void 0 && limit < latest) {
|
|
16610
17081
|
throw new AutotaskConfigError(
|
|
16611
17082
|
`queryBounded: limit (${String(limit)}) must be >= latest (${String(latest)}) \u2014 latest governs the returned count and limit is the walk window`
|
|
16612
17083
|
);
|
|
@@ -16688,8 +17159,8 @@ var BaseResource = class {
|
|
|
16688
17159
|
* speculation). */
|
|
16689
17160
|
stampEmptyQueryResult(result, params) {
|
|
16690
17161
|
if (result.items.length !== 0) return;
|
|
16691
|
-
result.blindSurface = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access',
|
|
16692
|
-
const pinnedReason = normalizedConditions(_optionalChain([params, 'optionalAccess',
|
|
17162
|
+
result.blindSurface = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _148 => _148[this.config.key], 'optionalAccess', _149 => _149.query]), _optionalChain([params, 'optionalAccess', _150 => _150.filter]));
|
|
17163
|
+
const pinnedReason = normalizedConditions(_optionalChain([params, 'optionalAccess', _151 => _151.filter])) === void 0 ? _optionalChain([EMPTY_REASON_STAMPS, 'access', _152 => _152[this.config.key], 'optionalAccess', _153 => _153.query]) : void 0;
|
|
16693
17164
|
if (result.blindSurface !== void 0 || pinnedReason !== void 0) {
|
|
16694
17165
|
result.emptyReason = result.blindSurface !== void 0 ? blindEmptyReason(result.blindSurface) : pinnedReason;
|
|
16695
17166
|
}
|
|
@@ -16840,7 +17311,7 @@ var BaseResource = class {
|
|
|
16840
17311
|
if (result.items.length === 0) {
|
|
16841
17312
|
this.stampEmptyQueryResult(result, params);
|
|
16842
17313
|
} else {
|
|
16843
|
-
result.blindSurface = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access',
|
|
17314
|
+
result.blindSurface = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _154 => _154[this.config.key], 'optionalAccess', _155 => _155.query]), params.filter);
|
|
16844
17315
|
}
|
|
16845
17316
|
return result;
|
|
16846
17317
|
}
|
|
@@ -16879,7 +17350,7 @@ var BaseResource = class {
|
|
|
16879
17350
|
* or, on a plan-pinned blind surface, the `{ count: 0, blindSurface }`
|
|
16880
17351
|
* typed sentinel (S12-C T10; see `BlindCountResult`). */
|
|
16881
17352
|
async countGlobal(params) {
|
|
16882
|
-
const conditions = normalizedConditions(_optionalChain([params, 'optionalAccess',
|
|
17353
|
+
const conditions = normalizedConditions(_optionalChain([params, 'optionalAccess', _156 => _156.filter]));
|
|
16883
17354
|
const body = {};
|
|
16884
17355
|
body.filter = conditions === void 0 ? [] : buildFilter(conditions).filter;
|
|
16885
17356
|
const res = await this.http.request({
|
|
@@ -16890,9 +17361,9 @@ var BaseResource = class {
|
|
|
16890
17361
|
idempotent: true
|
|
16891
17362
|
});
|
|
16892
17363
|
const count = unwrapQueryCount(res, `${this.config.key}.count`);
|
|
16893
|
-
const stamp = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access',
|
|
17364
|
+
const stamp = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _157 => _157[this.config.key], 'optionalAccess', _158 => _158.count]), _optionalChain([params, 'optionalAccess', _159 => _159.filter]));
|
|
16894
17365
|
if (count === 0) {
|
|
16895
|
-
const pinnedReason = conditions === void 0 ? _optionalChain([EMPTY_REASON_STAMPS, 'access',
|
|
17366
|
+
const pinnedReason = conditions === void 0 ? _optionalChain([EMPTY_REASON_STAMPS, 'access', _160 => _160[this.config.key], 'optionalAccess', _161 => _161.count]) : void 0;
|
|
16896
17367
|
if (stamp !== void 0 || pinnedReason !== void 0) {
|
|
16897
17368
|
return {
|
|
16898
17369
|
count,
|
|
@@ -16923,9 +17394,9 @@ var BaseResource = class {
|
|
|
16923
17394
|
const hit = cache.get(path);
|
|
16924
17395
|
if (hit !== void 0) return hit;
|
|
16925
17396
|
}
|
|
16926
|
-
const epoch = _optionalChain([cache, 'optionalAccess',
|
|
17397
|
+
const epoch = _optionalChain([cache, 'optionalAccess', _162 => _162.epoch]);
|
|
16927
17398
|
const res = await this.http.request({ method: "GET", path, operation });
|
|
16928
|
-
_optionalChain([cache, 'optionalAccess',
|
|
17399
|
+
_optionalChain([cache, 'optionalAccess', _163 => _163.set, 'call', _164 => _164(path, res, resource, epoch)]);
|
|
16929
17400
|
return res;
|
|
16930
17401
|
}
|
|
16931
17402
|
/**
|
|
@@ -16964,7 +17435,7 @@ var BaseResource = class {
|
|
|
16964
17435
|
return value;
|
|
16965
17436
|
});
|
|
16966
17437
|
work.catch((err) => {
|
|
16967
|
-
if (err instanceof AutotaskError && (err.code === "INVALID_RESPONSE" || _optionalChain([err, 'access',
|
|
17438
|
+
if (err instanceof AutotaskError && (err.code === "INVALID_RESPONSE" || _optionalChain([err, 'access', _165 => _165.details, 'optionalAccess', _166 => _166.deterministic]) === true)) {
|
|
16968
17439
|
cache.invalidate(key);
|
|
16969
17440
|
}
|
|
16970
17441
|
});
|
|
@@ -17661,7 +18132,7 @@ var BaseResource = class {
|
|
|
17661
18132
|
current = parentId === void 0 ? await this.getGlobal(id, true) : this.config.attachmentGet ? await this.getScopedModel(parentId, id, true) : await this.getScopedRaw(parentId, id, true);
|
|
17662
18133
|
} catch (err) {
|
|
17663
18134
|
if (err instanceof NotFoundError) {
|
|
17664
|
-
const updateReason = _optionalChain([EMPTY_REASON_STAMPS, 'access',
|
|
18135
|
+
const updateReason = _optionalChain([EMPTY_REASON_STAMPS, 'access', _167 => _167[this.config.key], 'optionalAccess', _168 => _168.update]);
|
|
17665
18136
|
checks.push({
|
|
17666
18137
|
name: "current-record-exists",
|
|
17667
18138
|
ok: false,
|
|
@@ -17819,12 +18290,12 @@ var BaseResource = class {
|
|
|
17819
18290
|
return null;
|
|
17820
18291
|
}
|
|
17821
18292
|
}
|
|
17822
|
-
const epoch = _optionalChain([cache, 'optionalAccess',
|
|
18293
|
+
const epoch = _optionalChain([cache, 'optionalAccess', _169 => _169.epoch]);
|
|
17823
18294
|
try {
|
|
17824
18295
|
return await this.fetchRecordRaw(entityPath, referenceId);
|
|
17825
18296
|
} catch (err) {
|
|
17826
18297
|
if (err instanceof NotFoundError) {
|
|
17827
|
-
_optionalChain([cache, 'optionalAccess',
|
|
18298
|
+
_optionalChain([cache, 'optionalAccess', _170 => _170.set, 'call', _171 => _171(absentKey, CONTEXT_ABSENT_MARKER, RESOURCE_KEY_BY_PATH[entityPath], epoch)]);
|
|
17828
18299
|
return null;
|
|
17829
18300
|
}
|
|
17830
18301
|
throw err;
|
|
@@ -17940,7 +18411,7 @@ var BaseResource = class {
|
|
|
17940
18411
|
missDetail(operator, fields) {
|
|
17941
18412
|
const key = this.config.key;
|
|
17942
18413
|
const probe = fields.map((field) => ({ field, op: operator, value: "" }));
|
|
17943
|
-
const blind = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access',
|
|
18414
|
+
const blind = blindStampFor(_optionalChain([BLIND_SURFACE_STAMPS, 'access', _172 => _172[key], 'optionalAccess', _173 => _173.query]), probe);
|
|
17944
18415
|
const next = [];
|
|
17945
18416
|
if (blind !== void 0) {
|
|
17946
18417
|
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.`);
|
|
@@ -18204,4 +18675,13 @@ var BaseResource = class {
|
|
|
18204
18675
|
|
|
18205
18676
|
|
|
18206
18677
|
|
|
18207
|
-
|
|
18678
|
+
|
|
18679
|
+
|
|
18680
|
+
|
|
18681
|
+
|
|
18682
|
+
|
|
18683
|
+
|
|
18684
|
+
|
|
18685
|
+
|
|
18686
|
+
|
|
18687
|
+
exports.AUTH_HEADERS = AUTH_HEADERS; exports.buildAuthHeaders = buildAuthHeaders; exports.withAuthHeaders = withAuthHeaders; 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.AutotaskError = AutotaskError; exports.AutotaskConfigError = AutotaskConfigError; 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.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.isAutotaskError = isAutotaskError; 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.ZONE_CATALOG = ZONE_CATALOG; exports.ZONES = ZONES; exports.DEFAULT_ZONE = DEFAULT_ZONE; 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_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.zoneUrl = zoneUrl; exports.resolveBaseUrl = resolveBaseUrl; exports.resolveCredentials = resolveCredentials; exports.resolveConfig = resolveConfig; 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.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.IDEMPOTENT_METHODS = IDEMPOTENT_METHODS; exports.buildUrl = buildUrl; exports.cursorToPath = cursorToPath; exports.buildQueryRequest = buildQueryRequest; exports.runWithSignal = runWithSignal; exports.HttpClient = HttpClient; exports.unwrapItems = unwrapItems; exports.unwrapItem = unwrapItem; exports.unwrapQueryCount = unwrapQueryCount; exports.unwrapOperation = unwrapOperation; exports.passthrough = passthrough; 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.BOUNDED_QUERY_MAX_LIMIT = BOUNDED_QUERY_MAX_LIMIT; exports.truncateNoteChars = truncateNoteChars; exports.buildDryRunResult = buildDryRunResult; exports.mergePartialBody = mergePartialBody; exports.blindStampFor = blindStampFor; exports.decodeFileData = decodeFileData; exports.BaseResource = BaseResource; exports.EXPAND_RESOURCE_NAMES_MAX_IDS = EXPAND_RESOURCE_NAMES_MAX_IDS; exports.expandResourceNames = expandResourceNames; 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.resolveCompositeNames = resolveCompositeNames; exports.MODEL_FIELD_SETS = MODEL_FIELD_SETS; exports.MODEL_DATE_FIELDS = MODEL_DATE_FIELDS; 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;
|