node-autotask 0.12.1 → 0.13.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 +4 -3
- package/MCP_TOOL_MANIFEST.md +5 -5
- package/N8N_MCP_MANIFEST.json +2 -2
- package/N8N_MCP_MANIFEST.md +3 -3
- package/capabilities.json +1238 -1237
- package/dist/capabilities.cjs +2 -2
- package/dist/capabilities.js +1 -1
- package/dist/{chunk-PGQIGE63.cjs → chunk-CJA6L6NR.cjs} +135 -135
- package/dist/{chunk-CSRCMBZ2.cjs → chunk-CXXNONRP.cjs} +1237 -1236
- package/dist/{chunk-PPTAMCFA.js → chunk-DDZXN6LN.js} +2 -2
- package/dist/{chunk-ZOA5HUFX.js → chunk-IKJLIDK3.js} +1 -1
- package/dist/{chunk-IHRXVIUU.cjs → chunk-KB2ANVVR.cjs} +2 -2
- package/dist/{chunk-36PG2IU2.cjs → chunk-MTDCLVQQ.cjs} +428 -418
- package/dist/{chunk-NACI2NDF.js → chunk-OZD5FQM4.js} +1237 -1236
- package/dist/{chunk-P35GFG2H.js → chunk-Y6O5VVQ4.js} +38 -28
- package/dist/{index-DZfd9Gt7.d.cts → index-DbMKWnEX.d.cts} +33 -23
- package/dist/{index-UilX3PFL.d.ts → index-TuqNq3Ro.d.ts} +33 -23
- package/dist/index.cjs +20 -20
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +5 -5
- package/dist/operations/index.cjs +103 -103
- package/dist/operations/index.d.cts +2 -2
- package/dist/operations/index.d.ts +2 -2
- package/dist/operations/index.js +2 -2
- package/dist/pool.cjs +8 -8
- package/dist/pool.d.cts +1 -1
- package/dist/pool.d.ts +1 -1
- package/dist/pool.js +4 -4
- package/dist/resources/index.cjs +4 -4
- package/dist/resources/index.d.cts +1 -1
- package/dist/resources/index.d.ts +1 -1
- package/dist/resources/index.js +3 -3
- package/docs/API.md +38 -8
- package/package.json +1 -1
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
|
|
36
|
-
var
|
|
36
|
+
var _chunkKB2ANVVRcjs = require('./chunk-KB2ANVVR.cjs');
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
var
|
|
39
|
+
var _chunkCXXNONRPcjs = require('./chunk-CXXNONRP.cjs');
|
|
40
40
|
|
|
41
41
|
// src/resources/appointments.ts
|
|
42
|
-
var AppointmentsResource = class extends
|
|
42
|
+
var AppointmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
43
43
|
constructor(http, pageSize) {
|
|
44
44
|
super(http, {
|
|
45
45
|
key: "appointments",
|
|
@@ -124,7 +124,7 @@ var AuthenticateResource = class {
|
|
|
124
124
|
};
|
|
125
125
|
|
|
126
126
|
// src/resources/billing_codes.ts
|
|
127
|
-
var BillingCodesResource = class extends
|
|
127
|
+
var BillingCodesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
128
128
|
constructor(http, pageSize) {
|
|
129
129
|
super(http, {
|
|
130
130
|
key: "billing_codes",
|
|
@@ -174,7 +174,7 @@ var MAX_LIMIT = 500;
|
|
|
174
174
|
function clampWindowLimit(limit) {
|
|
175
175
|
const n = limit === void 0 ? DEFAULT_LIMIT : Math.trunc(limit);
|
|
176
176
|
if (!Number.isInteger(n) || n < 1) {
|
|
177
|
-
throw new (0,
|
|
177
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`limit must be an integer >= 1 (got ${String(limit)})`);
|
|
178
178
|
}
|
|
179
179
|
return Math.min(n, MAX_LIMIT);
|
|
180
180
|
}
|
|
@@ -220,7 +220,7 @@ function wallParts(tz, ms) {
|
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
if (weekday < 0 || [w.y, w.m, w.d, w.h, w.mi, w.s].some((v) => v === void 0 || Number.isNaN(v))) {
|
|
223
|
-
throw new (0,
|
|
223
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`dateWindow: could not read the wall-clock parts for timezone "${tz}" (the Intl format returned an incomplete or unmapped part)`);
|
|
224
224
|
}
|
|
225
225
|
return { y: w.y, m: w.m, d: w.d, h: w.h, mi: w.mi, s: w.s, weekday };
|
|
226
226
|
}
|
|
@@ -247,7 +247,7 @@ function localDayEndMs(y, m, d, tz) {
|
|
|
247
247
|
}
|
|
248
248
|
function validateZone(tz, opName = "dateWindow") {
|
|
249
249
|
if (typeof tz !== "string" || tz.length === 0) {
|
|
250
|
-
throw new (0,
|
|
250
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
251
251
|
`${opName}: tz must be a non-empty IANA timezone string (got ${JSON.stringify(tz)}; e.g. 'Australia/Sydney' \u2014 omitted tz = UTC)`,
|
|
252
252
|
{ operation: opName }
|
|
253
253
|
);
|
|
@@ -255,7 +255,7 @@ function validateZone(tz, opName = "dateWindow") {
|
|
|
255
255
|
try {
|
|
256
256
|
new Intl.DateTimeFormat("en-US", { timeZone: tz });
|
|
257
257
|
} catch (e2) {
|
|
258
|
-
throw new (0,
|
|
258
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
259
259
|
`${opName}: tz is not a valid IANA timezone (${JSON.stringify(tz)}; e.g. 'Australia/Sydney' \u2014 omitted tz = UTC)`,
|
|
260
260
|
{ operation: opName }
|
|
261
261
|
);
|
|
@@ -407,13 +407,13 @@ async function dateWindowQuery(http, path, field, kind, limit, operation, now, t
|
|
|
407
407
|
body: { MaxRecords: limit, filter },
|
|
408
408
|
operation
|
|
409
409
|
});
|
|
410
|
-
return
|
|
410
|
+
return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
|
|
411
411
|
}
|
|
412
412
|
var isoUtc = (ms) => new Date(ms).toISOString().slice(0, 19) + "Z";
|
|
413
413
|
function customRangeDay(value, label, zone, opName) {
|
|
414
414
|
const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value.trim());
|
|
415
415
|
if (!m) {
|
|
416
|
-
throw new (0,
|
|
416
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
417
417
|
zone === void 0 ? `${opName}: ${label} must be a UTC 'YYYY-MM-DD' date (got ${JSON.stringify(value)})` : `${opName}: ${label} must be a 'YYYY-MM-DD' local calendar day in ${zone} (got ${JSON.stringify(value)})`,
|
|
418
418
|
{ operation: opName }
|
|
419
419
|
);
|
|
@@ -425,7 +425,7 @@ function customRangeDay(value, label, zone, opName) {
|
|
|
425
425
|
const real = probe.getUTCFullYear() === y && probe.getUTCMonth() === mo - 1 && probe.getUTCDate() === d;
|
|
426
426
|
const ms = !real ? NaN : zone === void 0 ? Date.UTC(y, mo - 1, d) : localDayStartMs(y, mo, d, zone);
|
|
427
427
|
if (!Number.isFinite(ms)) {
|
|
428
|
-
throw new (0,
|
|
428
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
429
429
|
zone === void 0 ? `${opName}: ${label} is not a valid UTC date (${JSON.stringify(value)})` : `${opName}: ${label} is not a valid calendar day in ${zone} (${JSON.stringify(value)})`,
|
|
430
430
|
{ operation: opName }
|
|
431
431
|
);
|
|
@@ -436,7 +436,7 @@ async function customRangeQuery(http, path, field, from, to, limit, operation, z
|
|
|
436
436
|
const fromB = customRangeDay(from, "from", zone, operation);
|
|
437
437
|
const toB = customRangeDay(to, "to", zone, operation);
|
|
438
438
|
if (fromB.ms > toB.ms) {
|
|
439
|
-
throw new (0,
|
|
439
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
440
440
|
`${operation}: from (${isoUtc(fromB.ms)}) must not be after to (${isoUtc(toB.ms)})`,
|
|
441
441
|
{ operation }
|
|
442
442
|
);
|
|
@@ -453,7 +453,7 @@ async function customRangeQuery(http, path, field, from, to, limit, operation, z
|
|
|
453
453
|
body: { MaxRecords: limit, filter },
|
|
454
454
|
operation
|
|
455
455
|
});
|
|
456
|
-
return
|
|
456
|
+
return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
|
|
457
457
|
}
|
|
458
458
|
|
|
459
459
|
// src/resources/special/billing_items.ts
|
|
@@ -486,7 +486,7 @@ async function customRange(_resource, from, to, http, opts) {
|
|
|
486
486
|
}
|
|
487
487
|
|
|
488
488
|
// src/resources/billing_items.ts
|
|
489
|
-
var BillingItemsResource = class extends
|
|
489
|
+
var BillingItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
490
490
|
constructor(http, pageSize) {
|
|
491
491
|
super(http, {
|
|
492
492
|
key: "billing_items",
|
|
@@ -588,7 +588,7 @@ var BillingItemsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
588
588
|
};
|
|
589
589
|
|
|
590
590
|
// src/resources/change_request_links.ts
|
|
591
|
-
var ChangeRequestLinksResource = class extends
|
|
591
|
+
var ChangeRequestLinksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
592
592
|
constructor(http, pageSize) {
|
|
593
593
|
super(http, {
|
|
594
594
|
key: "change_request_links",
|
|
@@ -642,7 +642,7 @@ var ChangeRequestLinksResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
642
642
|
};
|
|
643
643
|
|
|
644
644
|
// src/resources/checklist_libraries.ts
|
|
645
|
-
var ChecklistLibrariesResource = class extends
|
|
645
|
+
var ChecklistLibrariesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
646
646
|
constructor(http, pageSize) {
|
|
647
647
|
super(http, {
|
|
648
648
|
key: "checklist_libraries",
|
|
@@ -716,7 +716,7 @@ var ChecklistLibrariesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
716
716
|
};
|
|
717
717
|
|
|
718
718
|
// src/resources/checklist_library_checklist_items.ts
|
|
719
|
-
var ChecklistLibraryChecklistItemsResource = class extends
|
|
719
|
+
var ChecklistLibraryChecklistItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
720
720
|
constructor(http, pageSize) {
|
|
721
721
|
super(http, {
|
|
722
722
|
key: "checklist_library_checklist_items",
|
|
@@ -782,7 +782,7 @@ var ChecklistLibraryChecklistItemsResource = class extends _chunkIHRXVIUUcjs.Bas
|
|
|
782
782
|
};
|
|
783
783
|
|
|
784
784
|
// src/resources/classification_icons.ts
|
|
785
|
-
var ClassificationIconsResource = class extends
|
|
785
|
+
var ClassificationIconsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
786
786
|
constructor(http, pageSize) {
|
|
787
787
|
super(http, {
|
|
788
788
|
key: "classification_icons",
|
|
@@ -830,7 +830,7 @@ var DEFAULT_LIMIT2 = 25;
|
|
|
830
830
|
var MAX_LIMIT2 = 500;
|
|
831
831
|
function clampLimit(limit) {
|
|
832
832
|
const n = limit === void 0 ? DEFAULT_LIMIT2 : Math.trunc(limit);
|
|
833
|
-
if (!Number.isInteger(n) || n < 1) throw new (0,
|
|
833
|
+
if (!Number.isInteger(n) || n < 1) throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`limit must be an integer >= 1 (got ${String(limit)})`);
|
|
834
834
|
return Math.min(n, MAX_LIMIT2);
|
|
835
835
|
}
|
|
836
836
|
async function queryCompanies(http, filter, limit) {
|
|
@@ -841,7 +841,7 @@ async function queryCompanies(http, filter, limit) {
|
|
|
841
841
|
body: { MaxRecords: limit, filter },
|
|
842
842
|
operation: "companies.searchByDomain"
|
|
843
843
|
});
|
|
844
|
-
return
|
|
844
|
+
return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
|
|
845
845
|
}
|
|
846
846
|
async function queryContacts(http, filter, limit) {
|
|
847
847
|
const res = await http.request({
|
|
@@ -851,7 +851,7 @@ async function queryContacts(http, filter, limit) {
|
|
|
851
851
|
body: { MaxRecords: limit, filter },
|
|
852
852
|
operation: "companies.searchByDomain"
|
|
853
853
|
});
|
|
854
|
-
return
|
|
854
|
+
return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
|
|
855
855
|
}
|
|
856
856
|
async function fetchCompanies(http, ids, limit) {
|
|
857
857
|
const out = [];
|
|
@@ -866,7 +866,7 @@ async function fetchCompanies(http, ids, limit) {
|
|
|
866
866
|
const item = body && "item" in body ? body.item : null;
|
|
867
867
|
if (item) out.push(item);
|
|
868
868
|
} catch (err) {
|
|
869
|
-
if (err instanceof
|
|
869
|
+
if (err instanceof _chunkKB2ANVVRcjs.NotFoundError) continue;
|
|
870
870
|
throw err;
|
|
871
871
|
}
|
|
872
872
|
}
|
|
@@ -874,7 +874,7 @@ async function fetchCompanies(http, ids, limit) {
|
|
|
874
874
|
}
|
|
875
875
|
async function searchByDomain(_resource, domain, opts = {}, http) {
|
|
876
876
|
const text = domain.trim();
|
|
877
|
-
if (text === "") throw new (0,
|
|
877
|
+
if (text === "") throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("searchByDomain: empty domain");
|
|
878
878
|
const limit = clampLimit(opts.limit);
|
|
879
879
|
const filter = [{ field: "webAddress", op: "contains", value: text }];
|
|
880
880
|
const direct = await queryCompanies(http, filter, limit);
|
|
@@ -888,7 +888,7 @@ async function searchByIdentity(_resource, identity, opts = {}, http) {
|
|
|
888
888
|
const email = _nullishCoalesce(_optionalChain([identity, 'access', _9 => _9.email, 'optionalAccess', _10 => _10.trim, 'call', _11 => _11()]), () => ( ""));
|
|
889
889
|
const website = _nullishCoalesce(_optionalChain([identity, 'access', _12 => _12.website, 'optionalAccess', _13 => _13.trim, 'call', _14 => _14()]), () => ( ""));
|
|
890
890
|
if (name === "" && email === "" && website === "") {
|
|
891
|
-
throw new (0,
|
|
891
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("searchByIdentity: at least one of companyName / email / website is required");
|
|
892
892
|
}
|
|
893
893
|
const limit = clampLimit(opts.limit);
|
|
894
894
|
const found = /* @__PURE__ */ new Map();
|
|
@@ -915,23 +915,23 @@ async function familyChildPage(http, parentID) {
|
|
|
915
915
|
path: "/V1.0/Companies/query",
|
|
916
916
|
body: {
|
|
917
917
|
MaxRecords: COMPANIES_FAMILY_CHILD_CAP,
|
|
918
|
-
filter:
|
|
918
|
+
filter: _chunkKB2ANVVRcjs.buildFilter.call(void 0, [{ field: "parentCompanyID", op: "eq", value: parentID }]).filter
|
|
919
919
|
},
|
|
920
920
|
operation: "companies.search"
|
|
921
921
|
});
|
|
922
|
-
const { items, pageDetails } =
|
|
922
|
+
const { items, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, "companies.search");
|
|
923
923
|
return { rows: items, hasNext: pageDetails.nextPageUrl !== null };
|
|
924
924
|
}
|
|
925
925
|
function assertSearchWithDetailOpts(opts) {
|
|
926
926
|
if (opts === void 0) return;
|
|
927
927
|
if (typeof opts !== "object" || opts === null || Array.isArray(opts)) {
|
|
928
|
-
throw new (0,
|
|
928
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("companies.searchWithDetail: opts must be an object { limit?: number }", {
|
|
929
929
|
operation: "companies.searchWithDetail"
|
|
930
930
|
});
|
|
931
931
|
}
|
|
932
932
|
for (const key of Object.keys(opts)) {
|
|
933
933
|
if (key !== "limit") {
|
|
934
|
-
throw new (0,
|
|
934
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
935
935
|
`companies.searchWithDetail: unknown opts key "${key}" \u2014 the bag is closed: limit (includeFamily is a companies.search option)`,
|
|
936
936
|
{ operation: "companies.searchWithDetail" }
|
|
937
937
|
);
|
|
@@ -940,32 +940,32 @@ function assertSearchWithDetailOpts(opts) {
|
|
|
940
940
|
}
|
|
941
941
|
async function searchWithFamily(_resource, query, opts = {}, http) {
|
|
942
942
|
if (opts !== void 0 && (typeof opts !== "object" || opts === null || Array.isArray(opts))) {
|
|
943
|
-
throw new (0,
|
|
943
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("companies.search: opts must be an object { limit?: number, includeFamily?: boolean }");
|
|
944
944
|
}
|
|
945
945
|
for (const key of Object.keys(_nullishCoalesce(opts, () => ( {})))) {
|
|
946
946
|
if (!COMPANY_SEARCH_OPT_KEYS.includes(key)) {
|
|
947
|
-
throw new (0,
|
|
947
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
948
948
|
`companies.search: unknown opts key "${key}" \u2014 the bag is closed: ${COMPANY_SEARCH_OPT_KEYS.join(", ")}`,
|
|
949
949
|
{ operation: "companies.search" }
|
|
950
950
|
);
|
|
951
951
|
}
|
|
952
952
|
}
|
|
953
953
|
if (opts.includeFamily !== void 0 && typeof opts.includeFamily !== "boolean") {
|
|
954
|
-
throw new (0,
|
|
954
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`companies.search: opts.includeFamily must be a boolean (got ${String(opts.includeFamily)})`, {
|
|
955
955
|
operation: "companies.search"
|
|
956
956
|
});
|
|
957
957
|
}
|
|
958
958
|
const text = query.trim();
|
|
959
|
-
if (text === "") throw new (0,
|
|
960
|
-
const limit = opts.limit === void 0 ? 25 :
|
|
959
|
+
if (text === "") throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("search: empty query", { operation: "companies.search" });
|
|
960
|
+
const limit = opts.limit === void 0 ? 25 : _chunkKB2ANVVRcjs.clampPageSize.call(void 0, opts.limit);
|
|
961
961
|
const res = await http.request({
|
|
962
962
|
method: "POST",
|
|
963
963
|
idempotent: true,
|
|
964
964
|
path: "/V1.0/Companies/query",
|
|
965
|
-
body: { MaxRecords: limit, filter:
|
|
965
|
+
body: { MaxRecords: limit, filter: _chunkKB2ANVVRcjs.buildFilter.call(void 0, [{ field: "companyName", op: "contains", value: text }]).filter },
|
|
966
966
|
operation: "companies.search"
|
|
967
967
|
});
|
|
968
|
-
const hits =
|
|
968
|
+
const hits = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, "companies.search").items;
|
|
969
969
|
if (opts.includeFamily !== true) return hits;
|
|
970
970
|
const rows = [];
|
|
971
971
|
for (const hit of hits) {
|
|
@@ -989,7 +989,7 @@ var DEFAULT_COMPANY_TYPE = 1;
|
|
|
989
989
|
var DEDUP_NAME_LIMIT = 10;
|
|
990
990
|
var BLIND_SURFACE_CAVEAT = "dedup only covers companies this API user can enumerate (the unowned surface is blind); a same-name company outside that scope is not detected";
|
|
991
991
|
var SAFE_COMPANY_CREATE_DEFAULTS = {};
|
|
992
|
-
var OwnerResourceRequiredError = class extends
|
|
992
|
+
var OwnerResourceRequiredError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
993
993
|
constructor(message, options = {}) {
|
|
994
994
|
super(message, {
|
|
995
995
|
code: "OWNER_RESOURCE_REQUIRED",
|
|
@@ -1000,13 +1000,13 @@ var OwnerResourceRequiredError = class extends _chunkIHRXVIUUcjs.AutotaskError {
|
|
|
1000
1000
|
this.name = "OwnerResourceRequiredError";
|
|
1001
1001
|
}
|
|
1002
1002
|
};
|
|
1003
|
-
var CompanyResourceInvalidError = class extends
|
|
1003
|
+
var CompanyResourceInvalidError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
1004
1004
|
constructor(message, options = {}) {
|
|
1005
1005
|
super(message, { code: "RESOURCE_INVALID", category: "validation", ...options });
|
|
1006
1006
|
this.name = "CompanyResourceInvalidError";
|
|
1007
1007
|
}
|
|
1008
1008
|
};
|
|
1009
|
-
var CompanyCreateFailedError = class extends
|
|
1009
|
+
var CompanyCreateFailedError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
1010
1010
|
/** The vendor-named fields (empty when the 500 body named nothing parseable). */
|
|
1011
1011
|
|
|
1012
1012
|
constructor(message, vendorFields, options = {}) {
|
|
@@ -1017,18 +1017,18 @@ var CompanyCreateFailedError = class extends _chunkIHRXVIUUcjs.AutotaskError {
|
|
|
1017
1017
|
};
|
|
1018
1018
|
async function upsertByName(resource, companyName, params, opts, http) {
|
|
1019
1019
|
if (typeof companyName !== "string" || companyName.trim() === "") {
|
|
1020
|
-
throw new (0,
|
|
1020
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("upsertByName: companyName is required (a non-empty string)", { operation: OP_UPSERT_NAME });
|
|
1021
1021
|
}
|
|
1022
1022
|
if (typeof _optionalChain([params, 'optionalAccess', _15 => _15.phone]) !== "string" || params.phone.trim() === "") {
|
|
1023
|
-
throw new (0,
|
|
1023
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("upsertByName: params.phone is required (a non-empty string \u2014 the ww29 live-required set is { companyName, companyType, phone, ownerResourceID })", { operation: OP_UPSERT_NAME });
|
|
1024
1024
|
}
|
|
1025
1025
|
const companyType = _nullishCoalesce(params.companyType, () => ( DEFAULT_COMPANY_TYPE));
|
|
1026
1026
|
if (typeof companyType !== "number" || !Number.isSafeInteger(companyType) || companyType < 1) {
|
|
1027
|
-
throw new (0,
|
|
1027
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`upsertByName: params.companyType must be a positive integer picklist value (got ${String(params.companyType)}; default 1 \u2014 the ww29-proven value)`, { operation: OP_UPSERT_NAME });
|
|
1028
1028
|
}
|
|
1029
1029
|
const owner = params.ownerResourceID;
|
|
1030
1030
|
if (owner !== void 0 && (typeof owner !== "number" || !Number.isSafeInteger(owner) || owner < 1)) {
|
|
1031
|
-
throw new (0,
|
|
1031
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`upsertByName: params.ownerResourceID must be a positive integer (got ${String(owner)})`, { operation: OP_UPSERT_NAME });
|
|
1032
1032
|
}
|
|
1033
1033
|
const q = await resource.queryBounded({ filter: [{ field: "companyName", op: "eq", value: companyName }], limit: DEDUP_NAME_LIMIT });
|
|
1034
1034
|
const caveat = {
|
|
@@ -1039,7 +1039,7 @@ async function upsertByName(resource, companyName, params, opts, http) {
|
|
|
1039
1039
|
const match = q.items[0];
|
|
1040
1040
|
if (match !== void 0) {
|
|
1041
1041
|
if (opts.dryRun === true) {
|
|
1042
|
-
return
|
|
1042
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
|
|
1043
1043
|
{
|
|
1044
1044
|
operation: OP_UPSERT_NAME,
|
|
1045
1045
|
method: "POST",
|
|
@@ -1074,7 +1074,7 @@ async function upsertByName(resource, companyName, params, opts, http) {
|
|
|
1074
1074
|
"ownerResourceID is REQUIRED on the apply path (the vendor requires it; the node cannot enumerate candidates \u2014 the resources table is blind to this API user (count/query return 0)): the apply throws the typed OWNER_RESOURCE_REQUIRED if it is still absent"
|
|
1075
1075
|
);
|
|
1076
1076
|
}
|
|
1077
|
-
return
|
|
1077
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
|
|
1078
1078
|
{
|
|
1079
1079
|
operation: OP_UPSERT_NAME,
|
|
1080
1080
|
method: "POST",
|
|
@@ -1122,8 +1122,8 @@ async function upsertByName(resource, companyName, params, opts, http) {
|
|
|
1122
1122
|
sideEffects: ['vendor auto-creates a "Primary Address" location under the new company (UI-only cleanup \u2014 the delete 405 gap, \xA711.5)']
|
|
1123
1123
|
};
|
|
1124
1124
|
} catch (err) {
|
|
1125
|
-
if (!
|
|
1126
|
-
const named = (_nullishCoalesce(
|
|
1125
|
+
if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) throw err;
|
|
1126
|
+
const named = (_nullishCoalesce(_chunkKB2ANVVRcjs.parseVendorErrors.call(void 0, err.vendorError), () => ( []))).map((e) => e.field).filter((f) => f !== void 0);
|
|
1127
1127
|
const seen = /* @__PURE__ */ new Set();
|
|
1128
1128
|
const unique = [...named].filter((f) => seen.has(f) ? false : (seen.add(f), true));
|
|
1129
1129
|
const hasDefault = unique.some((f) => SAFE_COMPANY_CREATE_DEFAULTS[f] !== void 0);
|
|
@@ -1137,7 +1137,7 @@ async function upsertByName(resource, companyName, params, opts, http) {
|
|
|
1137
1137
|
}
|
|
1138
1138
|
continue;
|
|
1139
1139
|
}
|
|
1140
|
-
const detail =
|
|
1140
|
+
const detail = _chunkKB2ANVVRcjs.formatVendorDetail.call(void 0, err.vendorError);
|
|
1141
1141
|
throw new CompanyCreateFailedError(
|
|
1142
1142
|
`upsertByName: the vendor rejected the company create${unique.length > 0 ? ` naming field(s) ${unique.join(", ")}` : ""} (no proven-safe default \u2014 the ww29 required set is fully filled by the node)${detail ? ` \u2014 ${detail}` : ""}`,
|
|
1143
1143
|
unique,
|
|
@@ -1156,7 +1156,7 @@ var PROFILE_PART_LIMIT = 50;
|
|
|
1156
1156
|
function profilePartLimit(value, name) {
|
|
1157
1157
|
const n = value === void 0 ? PROFILE_PART_LIMIT : Math.trunc(value);
|
|
1158
1158
|
if (!Number.isInteger(n) || n < 1) {
|
|
1159
|
-
throw new (0,
|
|
1159
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`fullProfile: ${name} must be an integer >= 1 (got ${String(value)})`);
|
|
1160
1160
|
}
|
|
1161
1161
|
return n;
|
|
1162
1162
|
}
|
|
@@ -1168,14 +1168,14 @@ async function scopedCompanyQuery(http, path, companyID, limit) {
|
|
|
1168
1168
|
body: { MaxRecords: limit, filter: [{ field: "companyID", op: "eq", value: companyID }] },
|
|
1169
1169
|
operation: "companies.fullProfile"
|
|
1170
1170
|
});
|
|
1171
|
-
return
|
|
1171
|
+
return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
|
|
1172
1172
|
}
|
|
1173
1173
|
async function fullProfile(resource, id, opts = {}, http) {
|
|
1174
1174
|
const contactLimit = profilePartLimit(opts.contactLimit, "contactLimit");
|
|
1175
1175
|
const noteLimit = profilePartLimit(opts.noteLimit, "noteLimit");
|
|
1176
1176
|
const ticketLimit = profilePartLimit(opts.ticketLimit, "ticketLimit");
|
|
1177
1177
|
const projectLimit = profilePartLimit(opts.projectLimit, "projectLimit");
|
|
1178
|
-
const companyID =
|
|
1178
|
+
const companyID = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
|
|
1179
1179
|
const company = await resource.get(companyID);
|
|
1180
1180
|
const locations = await scopedCompanyQuery(http, "/V1.0/CompanyLocations/query", companyID, PROFILE_PART_LIMIT);
|
|
1181
1181
|
const contacts = await scopedCompanyQuery(http, "/V1.0/Contacts/query", companyID, contactLimit);
|
|
@@ -1192,7 +1192,7 @@ async function fullProfile(resource, id, opts = {}, http) {
|
|
|
1192
1192
|
},
|
|
1193
1193
|
operation: "companies.fullProfile"
|
|
1194
1194
|
});
|
|
1195
|
-
return
|
|
1195
|
+
return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
|
|
1196
1196
|
})();
|
|
1197
1197
|
let openTickets = {
|
|
1198
1198
|
items: openRows,
|
|
@@ -1201,7 +1201,7 @@ async function fullProfile(resource, id, opts = {}, http) {
|
|
|
1201
1201
|
note: OPEN_TICKETS_NOTE
|
|
1202
1202
|
};
|
|
1203
1203
|
if (openRows.length === 0) {
|
|
1204
|
-
const stamp =
|
|
1204
|
+
const stamp = _chunkKB2ANVVRcjs.blindStampFor.call(void 0, _optionalChain([_chunkKB2ANVVRcjs.BLIND_SURFACE_STAMPS, 'access', _16 => _16["tickets"], 'optionalAccess', _17 => _17.query]), [
|
|
1205
1205
|
{ field: "companyID", op: "eq", value: companyID },
|
|
1206
1206
|
{ field: "status", op: "noteq", value: 5 }
|
|
1207
1207
|
]);
|
|
@@ -1232,7 +1232,7 @@ async function fullProfile(resource, id, opts = {}, http) {
|
|
|
1232
1232
|
}
|
|
1233
1233
|
};
|
|
1234
1234
|
if (opts.names === true) {
|
|
1235
|
-
const builder =
|
|
1235
|
+
const builder = _chunkKB2ANVVRcjs.createNamePlan.call(void 0, _chunkKB2ANVVRcjs.TICKET_LABEL_FIELDS);
|
|
1236
1236
|
const c = company;
|
|
1237
1237
|
builder.addResource(c["ownerResourceID"]);
|
|
1238
1238
|
builder.addResource(c["createdByResourceID"]);
|
|
@@ -1249,20 +1249,20 @@ async function fullProfile(resource, id, opts = {}, http) {
|
|
|
1249
1249
|
builder.addResource(r["creatorResourceID"]);
|
|
1250
1250
|
builder.addFk("contract", r["contractID"]);
|
|
1251
1251
|
}
|
|
1252
|
-
const names = await
|
|
1252
|
+
const names = await _chunkKB2ANVVRcjs.resolveCompositeNames.call(void 0, http, builder.plan(), { maxNameReads: opts.maxNameReads });
|
|
1253
1253
|
const companyRow = { ...company };
|
|
1254
|
-
|
|
1255
|
-
|
|
1254
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, companyRow, "ownerResourceID", (v) => names.resourceName(v));
|
|
1255
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, companyRow, "createdByResourceID", (v) => names.resourceName(v));
|
|
1256
1256
|
result.company = companyRow;
|
|
1257
1257
|
result.openTickets = {
|
|
1258
1258
|
...openTickets,
|
|
1259
1259
|
items: openTickets.items.map((row) => {
|
|
1260
1260
|
const r = { ...row };
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
for (const f of
|
|
1261
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "creatorResourceID", (v) => names.resourceName(v));
|
|
1262
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "contractID", (v) => names.recordName("contract", v));
|
|
1263
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "billingCodeID", (v) => names.recordName("billingCode", v));
|
|
1264
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "assignedResourceRoleID", (v) => names.recordName("role", v));
|
|
1265
|
+
for (const f of _chunkKB2ANVVRcjs.TICKET_LABEL_FIELDS) _chunkKB2ANVVRcjs.addLabelSibling.call(void 0, r, f, names);
|
|
1266
1266
|
return r;
|
|
1267
1267
|
})
|
|
1268
1268
|
};
|
|
@@ -1270,9 +1270,9 @@ async function fullProfile(resource, id, opts = {}, http) {
|
|
|
1270
1270
|
...result.projects,
|
|
1271
1271
|
items: result.projects.items.map((row) => {
|
|
1272
1272
|
const r = { ...row };
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1273
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "projectLeadResourceID", (v) => names.resourceName(v));
|
|
1274
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "creatorResourceID", (v) => names.resourceName(v));
|
|
1275
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, r, "contractID", (v) => names.recordName("contract", v));
|
|
1276
1276
|
return r;
|
|
1277
1277
|
})
|
|
1278
1278
|
};
|
|
@@ -1304,7 +1304,7 @@ function isDateYMD(v) {
|
|
|
1304
1304
|
}
|
|
1305
1305
|
function validateUnbilledWorkOptions(companyId, opts) {
|
|
1306
1306
|
if (opts !== void 0 && (typeof opts !== "object" || opts === null || Array.isArray(opts))) {
|
|
1307
|
-
throw new (0,
|
|
1307
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
1308
1308
|
`unbilledWork: opts must be the options object (got ${Array.isArray(opts) ? "an array" : typeof opts})`,
|
|
1309
1309
|
{ operation: "companies.unbilledWork" }
|
|
1310
1310
|
);
|
|
@@ -1333,7 +1333,7 @@ function validateUnbilledWorkOptions(companyId, opts) {
|
|
|
1333
1333
|
try {
|
|
1334
1334
|
limit = clampLimit(opts.limit);
|
|
1335
1335
|
} catch (err) {
|
|
1336
|
-
problems.push(err instanceof
|
|
1336
|
+
problems.push(err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.message : `limit must be an integer >= 1 (got ${String(opts.limit)})`);
|
|
1337
1337
|
limit = 50;
|
|
1338
1338
|
}
|
|
1339
1339
|
if (source === "date_range") {
|
|
@@ -1348,9 +1348,9 @@ function validateUnbilledWorkOptions(companyId, opts) {
|
|
|
1348
1348
|
problems.push('invoiceId is required (the vendor invoice id) when source is "invoice"');
|
|
1349
1349
|
} else {
|
|
1350
1350
|
try {
|
|
1351
|
-
|
|
1351
|
+
_chunkKB2ANVVRcjs.parseIdentifier.call(void 0, opts.invoiceId, "opts.invoiceId");
|
|
1352
1352
|
} catch (err) {
|
|
1353
|
-
problems.push(err instanceof
|
|
1353
|
+
problems.push(err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.message : "invoiceId must be a vendor numeric id");
|
|
1354
1354
|
}
|
|
1355
1355
|
}
|
|
1356
1356
|
}
|
|
@@ -1360,20 +1360,20 @@ function validateUnbilledWorkOptions(companyId, opts) {
|
|
|
1360
1360
|
} else {
|
|
1361
1361
|
opts.ticketIds.forEach((tid, i) => {
|
|
1362
1362
|
try {
|
|
1363
|
-
|
|
1363
|
+
_chunkKB2ANVVRcjs.parseIdentifier.call(void 0, tid, `opts.ticketIds[${i}]`);
|
|
1364
1364
|
} catch (err) {
|
|
1365
|
-
problems.push(err instanceof
|
|
1365
|
+
problems.push(err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.message : `ticketIds[${i}] must be a vendor numeric id`);
|
|
1366
1366
|
}
|
|
1367
1367
|
});
|
|
1368
1368
|
}
|
|
1369
1369
|
}
|
|
1370
1370
|
try {
|
|
1371
|
-
|
|
1371
|
+
_chunkKB2ANVVRcjs.parseIdentifier.call(void 0, companyId, "companyId");
|
|
1372
1372
|
} catch (err) {
|
|
1373
|
-
problems.push(err instanceof
|
|
1373
|
+
problems.push(err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.message : "companyId must be a vendor numeric id");
|
|
1374
1374
|
}
|
|
1375
1375
|
if (problems.length > 0) {
|
|
1376
|
-
throw new (0,
|
|
1376
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
1377
1377
|
`unbilledWork: ${problems.length} problem(s) found pre-request (zero wire was issued)
|
|
1378
1378
|
- ` + problems.join("\n- "),
|
|
1379
1379
|
{ operation: "companies.unbilledWork" }
|
|
@@ -1402,7 +1402,7 @@ async function boundedPart(http, path, conditions, limit, includeFields) {
|
|
|
1402
1402
|
body,
|
|
1403
1403
|
operation: "companies.unbilledWork"
|
|
1404
1404
|
});
|
|
1405
|
-
const { items, pageDetails } =
|
|
1405
|
+
const { items, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, "companies.unbilledWork");
|
|
1406
1406
|
const capped = items.length >= limit;
|
|
1407
1407
|
return { items, capped, hasMore: capped && pageDetails.nextPageUrl != null };
|
|
1408
1408
|
}
|
|
@@ -1413,7 +1413,7 @@ function capJoinSet(ids, cap) {
|
|
|
1413
1413
|
}
|
|
1414
1414
|
function unbilledWorkPartStatus(key, conditions, items) {
|
|
1415
1415
|
if (items.length !== 0) return { status: "ok" };
|
|
1416
|
-
const stamp =
|
|
1416
|
+
const stamp = _chunkKB2ANVVRcjs.blindStampFor.call(void 0, _optionalChain([_chunkKB2ANVVRcjs.BLIND_SURFACE_STAMPS, 'access', _18 => _18[key], 'optionalAccess', _19 => _19.query]), conditions);
|
|
1417
1417
|
if (stamp !== void 0) return { status: "blind", blindSurface: stamp, note: stamp.note };
|
|
1418
1418
|
return {
|
|
1419
1419
|
status: "ok",
|
|
@@ -1422,7 +1422,7 @@ function unbilledWorkPartStatus(key, conditions, items) {
|
|
|
1422
1422
|
}
|
|
1423
1423
|
async function unbilledWork(resource, companyId, opts = {}, http) {
|
|
1424
1424
|
const v = validateUnbilledWorkOptions(companyId, opts);
|
|
1425
|
-
const id =
|
|
1425
|
+
const id = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, companyId, "companyId");
|
|
1426
1426
|
const company = await resource.get(id);
|
|
1427
1427
|
const companyIds = [num(company.id)];
|
|
1428
1428
|
let parent = null;
|
|
@@ -1435,7 +1435,7 @@ async function unbilledWork(resource, companyId, opts = {}, http) {
|
|
|
1435
1435
|
parentStatus = "ok";
|
|
1436
1436
|
companyIds.push(num(parent.id));
|
|
1437
1437
|
} catch (err) {
|
|
1438
|
-
if (err instanceof
|
|
1438
|
+
if (err instanceof _chunkKB2ANVVRcjs.NotFoundError) parent = null;
|
|
1439
1439
|
else throw err;
|
|
1440
1440
|
}
|
|
1441
1441
|
}
|
|
@@ -1467,7 +1467,7 @@ async function unbilledWork(resource, companyId, opts = {}, http) {
|
|
|
1467
1467
|
if (v.dateFrom !== void 0) billingConditions.push({ field: "itemDate", op: "gte", value: v.dateFrom });
|
|
1468
1468
|
if (v.dateTo !== void 0) billingConditions.push({ field: "itemDate", op: "lte", value: v.dateTo });
|
|
1469
1469
|
}
|
|
1470
|
-
const billingFields =
|
|
1470
|
+
const billingFields = _chunkKB2ANVVRcjs.resolveFieldsPreset.call(void 0, "billing_join", "billing_items");
|
|
1471
1471
|
const billingIncludeFields = [...billingFields, "id", ...v.includeNotes ? ["description"] : []];
|
|
1472
1472
|
const billingRaw = await boundedPart(http, "/V1.0/BillingItems/query", billingConditions, v.limit, billingIncludeFields);
|
|
1473
1473
|
const taskCap = capJoinSet(taskIds, UNBILLED_WORK_JOIN_SET_CAP);
|
|
@@ -1499,7 +1499,7 @@ async function unbilledWork(resource, companyId, opts = {}, http) {
|
|
|
1499
1499
|
let cappedItems = entries;
|
|
1500
1500
|
let noteCharsTruncated = 0;
|
|
1501
1501
|
if (v.includeNotes) {
|
|
1502
|
-
[cappedItems, noteCharsTruncated] =
|
|
1502
|
+
[cappedItems, noteCharsTruncated] = _chunkKB2ANVVRcjs.truncateNoteChars.call(void 0, entries, v.noteChars, ["summaryNotes"]);
|
|
1503
1503
|
}
|
|
1504
1504
|
const st = unbilledWorkPartStatus("time_entries", timeConditions, entries);
|
|
1505
1505
|
timePart = {
|
|
@@ -1514,8 +1514,8 @@ async function unbilledWork(resource, companyId, opts = {}, http) {
|
|
|
1514
1514
|
let billingItems = billingRaw.items;
|
|
1515
1515
|
let billingNoteCharsTruncated = 0;
|
|
1516
1516
|
if (v.includeNotes) {
|
|
1517
|
-
const noteFields = (_nullishCoalesce(
|
|
1518
|
-
[billingItems, billingNoteCharsTruncated] =
|
|
1517
|
+
const noteFields = (_nullishCoalesce(_chunkKB2ANVVRcjs.UNTRUSTED_FIELDS_BY_RESOURCE["billing_items"], () => ( []))).filter((f) => billingIncludeFields.includes(f));
|
|
1518
|
+
[billingItems, billingNoteCharsTruncated] = _chunkKB2ANVVRcjs.truncateNoteChars.call(void 0, billingRaw.items, v.noteChars, noteFields);
|
|
1519
1519
|
}
|
|
1520
1520
|
const billingSt = unbilledWorkPartStatus("billing_items", billingConditions, billingRaw.items);
|
|
1521
1521
|
const billingItemsPart = {
|
|
@@ -1612,7 +1612,7 @@ async function unbilledWork(resource, companyId, opts = {}, http) {
|
|
|
1612
1612
|
}
|
|
1613
1613
|
|
|
1614
1614
|
// src/resources/companies.ts
|
|
1615
|
-
var CompaniesResource = class extends
|
|
1615
|
+
var CompaniesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
1616
1616
|
constructor(http, pageSize) {
|
|
1617
1617
|
super(http, {
|
|
1618
1618
|
key: "companies",
|
|
@@ -1719,7 +1719,7 @@ var CompaniesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
1719
1719
|
};
|
|
1720
1720
|
|
|
1721
1721
|
// src/resources/company_alerts.ts
|
|
1722
|
-
var CompanyAlertsResource = class extends
|
|
1722
|
+
var CompanyAlertsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
1723
1723
|
constructor(http, pageSize) {
|
|
1724
1724
|
super(http, {
|
|
1725
1725
|
key: "company_alerts",
|
|
@@ -1785,7 +1785,7 @@ var CompanyAlertsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
1785
1785
|
};
|
|
1786
1786
|
|
|
1787
1787
|
// src/resources/company_locations.ts
|
|
1788
|
-
var CompanyLocationsResource = class extends
|
|
1788
|
+
var CompanyLocationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
1789
1789
|
constructor(http, pageSize) {
|
|
1790
1790
|
super(http, {
|
|
1791
1791
|
key: "company_locations",
|
|
@@ -1856,7 +1856,7 @@ var CompanyLocationsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
1856
1856
|
};
|
|
1857
1857
|
|
|
1858
1858
|
// src/resources/company_notes.ts
|
|
1859
|
-
var CompanyNotesResource = class extends
|
|
1859
|
+
var CompanyNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
1860
1860
|
constructor(http, pageSize) {
|
|
1861
1861
|
super(http, {
|
|
1862
1862
|
key: "company_notes",
|
|
@@ -1921,7 +1921,7 @@ var CompanyNotesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
1921
1921
|
};
|
|
1922
1922
|
|
|
1923
1923
|
// src/resources/company_site_configurations.ts
|
|
1924
|
-
var CompanySiteConfigurationsResource = class extends
|
|
1924
|
+
var CompanySiteConfigurationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
1925
1925
|
constructor(http, pageSize) {
|
|
1926
1926
|
super(http, {
|
|
1927
1927
|
key: "company_site_configurations",
|
|
@@ -1972,7 +1972,7 @@ var CompanySiteConfigurationsResource = class extends _chunkIHRXVIUUcjs.BaseReso
|
|
|
1972
1972
|
};
|
|
1973
1973
|
|
|
1974
1974
|
// src/resources/company_webhooks.ts
|
|
1975
|
-
var CompanyWebhooksResource = class extends
|
|
1975
|
+
var CompanyWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
1976
1976
|
constructor(http, pageSize) {
|
|
1977
1977
|
super(http, {
|
|
1978
1978
|
key: "company_webhooks",
|
|
@@ -2048,7 +2048,7 @@ var CompanyWebhooksResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
2048
2048
|
};
|
|
2049
2049
|
|
|
2050
2050
|
// src/resources/configuration_item_billing_product_associations.ts
|
|
2051
|
-
var ConfigurationItemBillingProductAssociationsResource = class extends
|
|
2051
|
+
var ConfigurationItemBillingProductAssociationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2052
2052
|
constructor(http, pageSize) {
|
|
2053
2053
|
super(http, {
|
|
2054
2054
|
key: "configuration_item_billing_product_associations",
|
|
@@ -2114,7 +2114,7 @@ var ConfigurationItemBillingProductAssociationsResource = class extends _chunkIH
|
|
|
2114
2114
|
};
|
|
2115
2115
|
|
|
2116
2116
|
// src/resources/configuration_item_categories.ts
|
|
2117
|
-
var ConfigurationItemCategoriesResource = class extends
|
|
2117
|
+
var ConfigurationItemCategoriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2118
2118
|
constructor(http, pageSize) {
|
|
2119
2119
|
super(http, {
|
|
2120
2120
|
key: "configuration_item_categories",
|
|
@@ -2181,7 +2181,7 @@ var ConfigurationItemCategoriesResource = class extends _chunkIHRXVIUUcjs.BaseRe
|
|
|
2181
2181
|
};
|
|
2182
2182
|
|
|
2183
2183
|
// src/resources/configuration_item_category_udf_associations.ts
|
|
2184
|
-
var ConfigurationItemCategoryUdfAssociationsResource = class extends
|
|
2184
|
+
var ConfigurationItemCategoryUdfAssociationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2185
2185
|
constructor(http, pageSize) {
|
|
2186
2186
|
super(http, {
|
|
2187
2187
|
key: "configuration_item_category_udf_associations",
|
|
@@ -2247,7 +2247,7 @@ var ConfigurationItemCategoryUdfAssociationsResource = class extends _chunkIHRXV
|
|
|
2247
2247
|
};
|
|
2248
2248
|
|
|
2249
2249
|
// src/resources/configuration_item_dns_records.ts
|
|
2250
|
-
var ConfigurationItemDnsRecordsResource = class extends
|
|
2250
|
+
var ConfigurationItemDnsRecordsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2251
2251
|
constructor(http, pageSize) {
|
|
2252
2252
|
super(http, {
|
|
2253
2253
|
key: "configuration_item_dns_records",
|
|
@@ -2296,7 +2296,7 @@ var ConfigurationItemDnsRecordsResource = class extends _chunkIHRXVIUUcjs.BaseRe
|
|
|
2296
2296
|
};
|
|
2297
2297
|
|
|
2298
2298
|
// src/resources/configuration_item_notes.ts
|
|
2299
|
-
var ConfigurationItemNotesResource = class extends
|
|
2299
|
+
var ConfigurationItemNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2300
2300
|
constructor(http, pageSize) {
|
|
2301
2301
|
super(http, {
|
|
2302
2302
|
key: "configuration_item_notes",
|
|
@@ -2355,7 +2355,7 @@ var ConfigurationItemNotesResource = class extends _chunkIHRXVIUUcjs.BaseResourc
|
|
|
2355
2355
|
};
|
|
2356
2356
|
|
|
2357
2357
|
// src/resources/configuration_item_related_items.ts
|
|
2358
|
-
var ConfigurationItemRelatedItemsResource = class extends
|
|
2358
|
+
var ConfigurationItemRelatedItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2359
2359
|
constructor(http, pageSize) {
|
|
2360
2360
|
super(http, {
|
|
2361
2361
|
key: "configuration_item_related_items",
|
|
@@ -2416,16 +2416,16 @@ async function fetchRecord(http, path, label) {
|
|
|
2416
2416
|
const res = await http.request({ method: "GET", path, operation: "configuration_items.moveConfigurationItem" });
|
|
2417
2417
|
const body = res;
|
|
2418
2418
|
if (body === null || !("item" in body) || body.item === null || body.item === void 0) {
|
|
2419
|
-
throw new (0,
|
|
2419
|
+
throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`${label} not found`, { code: "NOT_FOUND", category: "not_found" });
|
|
2420
2420
|
}
|
|
2421
2421
|
return body.item;
|
|
2422
2422
|
}
|
|
2423
2423
|
async function moveConfigurationItem(_resource, sourceId, opts, http) {
|
|
2424
|
-
const numericSource =
|
|
2424
|
+
const numericSource = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, sourceId, "sourceId");
|
|
2425
2425
|
if (_optionalChain([opts, 'optionalAccess', _20 => _20.destinationCompanyId]) === void 0) {
|
|
2426
|
-
throw new (0,
|
|
2426
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("moveConfigurationItem: destinationCompanyId is required");
|
|
2427
2427
|
}
|
|
2428
|
-
const destId =
|
|
2428
|
+
const destId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, opts.destinationCompanyId, "destinationCompanyId");
|
|
2429
2429
|
const source = await fetchRecord(http, `/V1.0/ConfigurationItems/${numericSource}`, `Configuration item ${numericSource}`);
|
|
2430
2430
|
await fetchRecord(http, `/V1.0/Companies/${destId}`, `Company ${destId}`);
|
|
2431
2431
|
const body = { ...source };
|
|
@@ -2435,20 +2435,20 @@ async function moveConfigurationItem(_resource, sourceId, opts, http) {
|
|
|
2435
2435
|
body.companyID = destId;
|
|
2436
2436
|
body.isActive = true;
|
|
2437
2437
|
if (opts.newReferenceTitle !== void 0) {
|
|
2438
|
-
if (opts.newReferenceTitle.trim() === "") throw new (0,
|
|
2438
|
+
if (opts.newReferenceTitle.trim() === "") throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("moveConfigurationItem: newReferenceTitle must be non-empty");
|
|
2439
2439
|
body.referenceTitle = opts.newReferenceTitle.trim();
|
|
2440
2440
|
}
|
|
2441
2441
|
if (opts.lastModifiedDate !== void 0) {
|
|
2442
2442
|
const current = source.lastModifiedDate;
|
|
2443
2443
|
if (current !== opts.lastModifiedDate) {
|
|
2444
|
-
throw new (0,
|
|
2444
|
+
throw new (0, _chunkKB2ANVVRcjs.StaleObjectError)(
|
|
2445
2445
|
`moveConfigurationItem: source item ${numericSource} was modified since the snapshot (expected lastModifiedDate ${opts.lastModifiedDate}, current ${_nullishCoalesce(current, () => ( "unknown"))})`,
|
|
2446
2446
|
{ operation: "configuration_items.moveConfigurationItem", resourceIds: [numericSource] }
|
|
2447
2447
|
);
|
|
2448
2448
|
}
|
|
2449
2449
|
}
|
|
2450
2450
|
if (opts.dryRun === true) {
|
|
2451
|
-
return
|
|
2451
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
|
|
2452
2452
|
operation: "configuration_items.moveConfigurationItem",
|
|
2453
2453
|
method: "POST",
|
|
2454
2454
|
path: "/V1.0/ConfigurationItems",
|
|
@@ -2472,7 +2472,7 @@ async function moveConfigurationItem(_resource, sourceId, opts, http) {
|
|
|
2472
2472
|
const createdBody = created;
|
|
2473
2473
|
const newId = createdBody !== null ? _nullishCoalesce(createdBody.itemId, () => ( createdBody.id)) : void 0;
|
|
2474
2474
|
if (typeof newId !== "number") {
|
|
2475
|
-
throw new (0,
|
|
2475
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("moveConfigurationItem: vendor create response has no itemId");
|
|
2476
2476
|
}
|
|
2477
2477
|
let sourceDeactivated = false;
|
|
2478
2478
|
if (opts.deactivateSource !== false) {
|
|
@@ -2490,7 +2490,7 @@ var PROFILE_PART_LIMIT2 = 50;
|
|
|
2490
2490
|
function profilePartLimit2(value, name) {
|
|
2491
2491
|
const n = value === void 0 ? PROFILE_PART_LIMIT2 : Math.trunc(value);
|
|
2492
2492
|
if (!Number.isInteger(n) || n < 1) {
|
|
2493
|
-
throw new (0,
|
|
2493
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`profile: ${name} must be an integer >= 1 (got ${String(value)})`);
|
|
2494
2494
|
}
|
|
2495
2495
|
return n;
|
|
2496
2496
|
}
|
|
@@ -2506,14 +2506,14 @@ async function contextFetchPart(http, entityPath, referenceId) {
|
|
|
2506
2506
|
});
|
|
2507
2507
|
const body = res;
|
|
2508
2508
|
if (body === null || !("item" in body)) {
|
|
2509
|
-
throw new (0,
|
|
2509
|
+
throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`context part not found (unexpected envelope shape)`, { resourceIds: [referenceId] });
|
|
2510
2510
|
}
|
|
2511
2511
|
if (body.item === null || body.item === void 0) {
|
|
2512
|
-
throw new (0,
|
|
2512
|
+
throw new (0, _chunkKB2ANVVRcjs.NotFoundError)("context part not found", { resourceIds: [referenceId] });
|
|
2513
2513
|
}
|
|
2514
2514
|
return body.item;
|
|
2515
2515
|
} catch (err) {
|
|
2516
|
-
if (err instanceof
|
|
2516
|
+
if (err instanceof _chunkKB2ANVVRcjs.NotFoundError) return null;
|
|
2517
2517
|
throw err;
|
|
2518
2518
|
}
|
|
2519
2519
|
}
|
|
@@ -2525,7 +2525,7 @@ async function ciScopedQuery(http, path, itemID, limit) {
|
|
|
2525
2525
|
body: { MaxRecords: limit, filter: [{ field: "configurationItemID", op: "eq", value: itemID }] },
|
|
2526
2526
|
operation: "configuration_items.profile"
|
|
2527
2527
|
});
|
|
2528
|
-
return
|
|
2528
|
+
return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
|
|
2529
2529
|
}
|
|
2530
2530
|
async function profile(resource, id, opts = {}, http) {
|
|
2531
2531
|
const noteLimit = profilePartLimit2(opts.noteLimit, "noteLimit");
|
|
@@ -2537,7 +2537,7 @@ async function profile(resource, id, opts = {}, http) {
|
|
|
2537
2537
|
const notes = await ciScopedQuery(http, "/V1.0/ConfigurationItemNotes/query", id, noteLimit);
|
|
2538
2538
|
const relatedItems = await ciScopedQuery(http, "/V1.0/ConfigurationItemRelatedItems/query", id, relatedLimit);
|
|
2539
2539
|
const associations = await ciScopedQuery(http, "/V1.0/ConfigurationItemBillingProductAssociations/query", id, PROFILE_PART_LIMIT2);
|
|
2540
|
-
const wallQuirk = _optionalChain([
|
|
2540
|
+
const wallQuirk = _optionalChain([_chunkKB2ANVVRcjs.RELATIONSHIP_MAP, 'access', _21 => _21["configuration_items"], 'optionalAccess', _22 => _22.zoneFacts, 'optionalAccess', _23 => _23.quirks, 'optionalAccess', _24 => _24.find, 'call', _25 => _25((q) => q.startsWith("product wall"))]);
|
|
2541
2541
|
const productAssociations = {
|
|
2542
2542
|
items: associations,
|
|
2543
2543
|
capped: associations.length >= PROFILE_PART_LIMIT2,
|
|
@@ -2561,11 +2561,11 @@ async function profile(resource, id, opts = {}, http) {
|
|
|
2561
2561
|
}
|
|
2562
2562
|
};
|
|
2563
2563
|
if (opts.names === true) {
|
|
2564
|
-
const builder =
|
|
2564
|
+
const builder = _chunkKB2ANVVRcjs.createNamePlan.call(void 0, );
|
|
2565
2565
|
builder.addFk("contract", root["contractID"]);
|
|
2566
|
-
const names = await
|
|
2566
|
+
const names = await _chunkKB2ANVVRcjs.resolveCompositeNames.call(void 0, http, builder.plan(), { maxNameReads: opts.maxNameReads });
|
|
2567
2567
|
const ciRow = { ...ci };
|
|
2568
|
-
|
|
2568
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, ciRow, "contractID", (v) => names.recordName("contract", v));
|
|
2569
2569
|
result.ci = ciRow;
|
|
2570
2570
|
result.names = names.section;
|
|
2571
2571
|
}
|
|
@@ -2573,7 +2573,7 @@ async function profile(resource, id, opts = {}, http) {
|
|
|
2573
2573
|
}
|
|
2574
2574
|
|
|
2575
2575
|
// src/resources/configuration_items.ts
|
|
2576
|
-
var ConfigurationItemsResource = class extends
|
|
2576
|
+
var ConfigurationItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2577
2577
|
constructor(http, pageSize) {
|
|
2578
2578
|
super(http, {
|
|
2579
2579
|
key: "configuration_items",
|
|
@@ -2662,7 +2662,7 @@ var ConfigurationItemsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
2662
2662
|
};
|
|
2663
2663
|
|
|
2664
2664
|
// src/resources/configuration_item_ssl_subject_alternative_names.ts
|
|
2665
|
-
var ConfigurationItemSslSubjectAlternativeNamesResource = class extends
|
|
2665
|
+
var ConfigurationItemSslSubjectAlternativeNamesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2666
2666
|
constructor(http, pageSize) {
|
|
2667
2667
|
super(http, {
|
|
2668
2668
|
key: "configuration_item_ssl_subject_alternative_names",
|
|
@@ -2725,7 +2725,7 @@ var ConfigurationItemSslSubjectAlternativeNamesResource = class extends _chunkIH
|
|
|
2725
2725
|
};
|
|
2726
2726
|
|
|
2727
2727
|
// src/resources/configuration_item_types.ts
|
|
2728
|
-
var ConfigurationItemTypesResource = class extends
|
|
2728
|
+
var ConfigurationItemTypesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2729
2729
|
constructor(http, pageSize) {
|
|
2730
2730
|
super(http, {
|
|
2731
2731
|
key: "configuration_item_types",
|
|
@@ -2799,7 +2799,7 @@ var ConfigurationItemTypesResource = class extends _chunkIHRXVIUUcjs.BaseResourc
|
|
|
2799
2799
|
};
|
|
2800
2800
|
|
|
2801
2801
|
// src/resources/configuration_item_webhooks.ts
|
|
2802
|
-
var ConfigurationItemWebhooksResource = class extends
|
|
2802
|
+
var ConfigurationItemWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2803
2803
|
constructor(http, pageSize) {
|
|
2804
2804
|
super(http, {
|
|
2805
2805
|
key: "configuration_item_webhooks",
|
|
@@ -2875,7 +2875,7 @@ var ConfigurationItemWebhooksResource = class extends _chunkIHRXVIUUcjs.BaseReso
|
|
|
2875
2875
|
};
|
|
2876
2876
|
|
|
2877
2877
|
// src/resources/contact_group_contacts.ts
|
|
2878
|
-
var ContactGroupContactsResource = class extends
|
|
2878
|
+
var ContactGroupContactsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2879
2879
|
constructor(http, pageSize) {
|
|
2880
2880
|
super(http, {
|
|
2881
2881
|
key: "contact_group_contacts",
|
|
@@ -2929,7 +2929,7 @@ var ContactGroupContactsResource = class extends _chunkIHRXVIUUcjs.BaseResource
|
|
|
2929
2929
|
};
|
|
2930
2930
|
|
|
2931
2931
|
// src/resources/contact_groups.ts
|
|
2932
|
-
var ContactGroupsResource = class extends
|
|
2932
|
+
var ContactGroupsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
2933
2933
|
constructor(http, pageSize) {
|
|
2934
2934
|
super(http, {
|
|
2935
2935
|
key: "contact_groups",
|
|
@@ -3007,22 +3007,22 @@ async function fetchRecord2(http, path, label) {
|
|
|
3007
3007
|
const res = await http.request({ method: "GET", path, operation: "contacts.moveToCompany" });
|
|
3008
3008
|
const body = res;
|
|
3009
3009
|
if (body === null || !("item" in body) || body.item === null || body.item === void 0) {
|
|
3010
|
-
throw new (0,
|
|
3010
|
+
throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`${label} not found`, { code: "NOT_FOUND", category: "not_found" });
|
|
3011
3011
|
}
|
|
3012
3012
|
return body.item;
|
|
3013
3013
|
}
|
|
3014
3014
|
async function moveToCompany(_resource, sourceContactId, destinationCompanyId, opts = {}, http) {
|
|
3015
|
-
const sourceId =
|
|
3016
|
-
const destId =
|
|
3015
|
+
const sourceId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, sourceContactId, "sourceContactId");
|
|
3016
|
+
const destId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, destinationCompanyId, "destinationCompanyId");
|
|
3017
3017
|
const source = await fetchRecord2(http, `/V1.0/Contacts/${sourceId}`, `Contact ${sourceId}`);
|
|
3018
3018
|
const companyID = source.companyID;
|
|
3019
3019
|
if (typeof companyID !== "number" || companyID < 0) {
|
|
3020
|
-
throw new (0,
|
|
3020
|
+
throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`Contact ${sourceId} has no companyID (cannot scope the source delete)`);
|
|
3021
3021
|
}
|
|
3022
3022
|
if (opts.lastModifiedDate !== void 0) {
|
|
3023
3023
|
const current = source.lastModifiedDate;
|
|
3024
3024
|
if (current !== opts.lastModifiedDate) {
|
|
3025
|
-
throw new (0,
|
|
3025
|
+
throw new (0, _chunkKB2ANVVRcjs.StaleObjectError)(
|
|
3026
3026
|
`moveToCompany: source contact ${sourceId} was modified since the snapshot (expected lastModifiedDate ${opts.lastModifiedDate}, current ${typeof current === "string" ? current : "unknown"})`,
|
|
3027
3027
|
{ operation: "contacts.moveToCompany", resourceIds: [sourceId, destId] }
|
|
3028
3028
|
);
|
|
@@ -3044,10 +3044,10 @@ async function moveToCompany(_resource, sourceContactId, destinationCompanyId, o
|
|
|
3044
3044
|
},
|
|
3045
3045
|
operation: "contacts.moveToCompany"
|
|
3046
3046
|
});
|
|
3047
|
-
const items =
|
|
3047
|
+
const items = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
|
|
3048
3048
|
const clash = items.find((c) => String(c.id) !== String(sourceId));
|
|
3049
3049
|
if (clash !== void 0) {
|
|
3050
|
-
throw new (0,
|
|
3050
|
+
throw new (0, _chunkKB2ANVVRcjs.ConflictError)(
|
|
3051
3051
|
`Contact email "${email}" already exists under company ${destId} (contact ${String(clash.id)}); aborting the move`,
|
|
3052
3052
|
{ resourceIds: [sourceId, destId] }
|
|
3053
3053
|
);
|
|
@@ -3061,7 +3061,7 @@ async function moveToCompany(_resource, sourceContactId, destinationCompanyId, o
|
|
|
3061
3061
|
if (opts.dryRun === true) {
|
|
3062
3062
|
const warnings = [];
|
|
3063
3063
|
if (opts.deleteSource === true) warnings.push("the source contact will be deleted after the move");
|
|
3064
|
-
return
|
|
3064
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
|
|
3065
3065
|
operation: "contacts.moveToCompany",
|
|
3066
3066
|
method: "POST",
|
|
3067
3067
|
path: `/V1.0/Companies/${destId}/Contacts`,
|
|
@@ -3086,7 +3086,7 @@ async function moveToCompany(_resource, sourceContactId, destinationCompanyId, o
|
|
|
3086
3086
|
const createdBody = created;
|
|
3087
3087
|
const newId = createdBody !== null ? _nullishCoalesce(createdBody.itemId, () => ( createdBody.id)) : void 0;
|
|
3088
3088
|
if (typeof newId !== "number") {
|
|
3089
|
-
throw new (0,
|
|
3089
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("contacts.moveToCompany: vendor create response has no itemId");
|
|
3090
3090
|
}
|
|
3091
3091
|
let sourceDeleted = false;
|
|
3092
3092
|
if (opts.deleteSource === true) {
|
|
@@ -3104,7 +3104,7 @@ var UPSERT_MAX_DISCOVERY_MERGES = 3;
|
|
|
3104
3104
|
var EMAIL_SHAPE = /^.+@.+/;
|
|
3105
3105
|
var SAFE_CONTACT_CREATE_DEFAULTS = {};
|
|
3106
3106
|
var DEDUP_LIMIT = 10;
|
|
3107
|
-
var CompanyNotFoundError = class extends
|
|
3107
|
+
var CompanyNotFoundError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
3108
3108
|
constructor(message, options = {}) {
|
|
3109
3109
|
super(message, {
|
|
3110
3110
|
code: "COMPANY_NOT_FOUND",
|
|
@@ -3115,7 +3115,7 @@ var CompanyNotFoundError = class extends _chunkIHRXVIUUcjs.AutotaskError {
|
|
|
3115
3115
|
this.name = "CompanyNotFoundError";
|
|
3116
3116
|
}
|
|
3117
3117
|
};
|
|
3118
|
-
var ContactCreateFailedError = class extends
|
|
3118
|
+
var ContactCreateFailedError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
3119
3119
|
/** The vendor-named fields (empty when the 500 body named nothing parseable). */
|
|
3120
3120
|
|
|
3121
3121
|
constructor(message, vendorFields, options = {}) {
|
|
@@ -3125,25 +3125,25 @@ var ContactCreateFailedError = class extends _chunkIHRXVIUUcjs.AutotaskError {
|
|
|
3125
3125
|
}
|
|
3126
3126
|
};
|
|
3127
3127
|
async function upsertByEmail(resource, companyID, email, extra, opts, http) {
|
|
3128
|
-
const cid =
|
|
3128
|
+
const cid = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, companyID, "companyID");
|
|
3129
3129
|
if (typeof email !== "string" || !EMAIL_SHAPE.test(email)) {
|
|
3130
|
-
throw new (0,
|
|
3130
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
3131
3131
|
`upsertByEmail: email must be a non-empty string with the @ shape (a non-empty local part + a non-empty domain; got ${JSON.stringify(email)})`,
|
|
3132
3132
|
{ operation: OP_UPSERT_EMAIL }
|
|
3133
3133
|
);
|
|
3134
3134
|
}
|
|
3135
3135
|
if (extra !== void 0) {
|
|
3136
3136
|
if (extra.isActive !== void 0 && typeof extra.isActive !== "boolean" && extra.isActive !== 0 && extra.isActive !== 1) {
|
|
3137
|
-
throw new (0,
|
|
3137
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
3138
3138
|
`upsertByEmail: extra.isActive must be a boolean (mapped to the zone-correct number 1/0) or a raw 0/1 number (got ${String(extra.isActive)})`,
|
|
3139
3139
|
{ operation: OP_UPSERT_EMAIL }
|
|
3140
3140
|
);
|
|
3141
3141
|
}
|
|
3142
3142
|
if (extra.firstName !== void 0 && (typeof extra.firstName !== "string" || extra.firstName === "")) {
|
|
3143
|
-
throw new (0,
|
|
3143
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("upsertByEmail: extra.firstName must be a non-empty string (or omitted \u2014 the node defaults it to the email local-part)", { operation: OP_UPSERT_EMAIL });
|
|
3144
3144
|
}
|
|
3145
3145
|
if (extra.lastName !== void 0 && typeof extra.lastName !== "string") {
|
|
3146
|
-
throw new (0,
|
|
3146
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("upsertByEmail: extra.lastName must be a string (or omitted \u2014 the node defaults it to the non-empty neutral value Unknown)", { operation: OP_UPSERT_EMAIL });
|
|
3147
3147
|
}
|
|
3148
3148
|
}
|
|
3149
3149
|
const parentRes = await http.request({ method: "GET", path: `/V1.0/Companies/${cid}`, operation: OP_UPSERT_EMAIL });
|
|
@@ -3164,7 +3164,7 @@ async function upsertByEmail(resource, companyID, email, extra, opts, http) {
|
|
|
3164
3164
|
const match = q.items[0];
|
|
3165
3165
|
if (match !== void 0) {
|
|
3166
3166
|
if (opts.dryRun === true) {
|
|
3167
|
-
return
|
|
3167
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
|
|
3168
3168
|
{
|
|
3169
3169
|
operation: OP_UPSERT_EMAIL,
|
|
3170
3170
|
method: "POST",
|
|
@@ -3194,7 +3194,7 @@ async function upsertByEmail(resource, companyID, email, extra, opts, http) {
|
|
|
3194
3194
|
isActive: typeof isActive === "boolean" ? isActive ? 1 : 0 : isActive
|
|
3195
3195
|
};
|
|
3196
3196
|
if (opts.dryRun === true) {
|
|
3197
|
-
return
|
|
3197
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
|
|
3198
3198
|
{
|
|
3199
3199
|
operation: OP_UPSERT_EMAIL,
|
|
3200
3200
|
method: "POST",
|
|
@@ -3217,8 +3217,8 @@ async function upsertByEmail(resource, companyID, email, extra, opts, http) {
|
|
|
3217
3217
|
const created = await resource.create(cid, body, {});
|
|
3218
3218
|
return { id: created.id, created: true };
|
|
3219
3219
|
} catch (err) {
|
|
3220
|
-
if (!
|
|
3221
|
-
const named = (_nullishCoalesce(
|
|
3220
|
+
if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) throw err;
|
|
3221
|
+
const named = (_nullishCoalesce(_chunkKB2ANVVRcjs.parseVendorErrors.call(void 0, err.vendorError), () => ( []))).map((e) => e.field).filter((f) => f !== void 0);
|
|
3222
3222
|
const seen = /* @__PURE__ */ new Set();
|
|
3223
3223
|
const unique = [...named].filter((f) => seen.has(f) ? false : (seen.add(f), true));
|
|
3224
3224
|
const hasDefault = unique.some((f) => SAFE_CONTACT_CREATE_DEFAULTS[f] !== void 0);
|
|
@@ -3232,7 +3232,7 @@ async function upsertByEmail(resource, companyID, email, extra, opts, http) {
|
|
|
3232
3232
|
}
|
|
3233
3233
|
continue;
|
|
3234
3234
|
}
|
|
3235
|
-
const detail =
|
|
3235
|
+
const detail = _chunkKB2ANVVRcjs.formatVendorDetail.call(void 0, err.vendorError);
|
|
3236
3236
|
throw new ContactCreateFailedError(
|
|
3237
3237
|
`upsertByEmail: the vendor rejected the contact create${unique.length > 0 ? ` naming field(s) ${unique.join(", ")}` : ""} (no proven-safe default \u2014 the required set is fully filled by the node)${detail ? ` \u2014 ${detail}` : ""}`,
|
|
3238
3238
|
unique,
|
|
@@ -3248,7 +3248,7 @@ async function upsertByEmail(resource, companyID, email, extra, opts, http) {
|
|
|
3248
3248
|
}
|
|
3249
3249
|
|
|
3250
3250
|
// src/resources/contacts.ts
|
|
3251
|
-
var ContactsResource = class extends
|
|
3251
|
+
var ContactsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3252
3252
|
constructor(http, pageSize) {
|
|
3253
3253
|
super(http, {
|
|
3254
3254
|
key: "contacts",
|
|
@@ -3340,7 +3340,7 @@ var ContactsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
3340
3340
|
};
|
|
3341
3341
|
|
|
3342
3342
|
// src/resources/contact_webhooks.ts
|
|
3343
|
-
var ContactWebhooksResource = class extends
|
|
3343
|
+
var ContactWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3344
3344
|
constructor(http, pageSize) {
|
|
3345
3345
|
super(http, {
|
|
3346
3346
|
key: "contact_webhooks",
|
|
@@ -3416,7 +3416,7 @@ var ContactWebhooksResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
3416
3416
|
};
|
|
3417
3417
|
|
|
3418
3418
|
// src/resources/contract_billing_rules.ts
|
|
3419
|
-
var ContractBillingRulesResource = class extends
|
|
3419
|
+
var ContractBillingRulesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3420
3420
|
constructor(http, pageSize) {
|
|
3421
3421
|
super(http, {
|
|
3422
3422
|
key: "contract_billing_rules",
|
|
@@ -3482,7 +3482,7 @@ var ContractBillingRulesResource = class extends _chunkIHRXVIUUcjs.BaseResource
|
|
|
3482
3482
|
};
|
|
3483
3483
|
|
|
3484
3484
|
// src/resources/contract_block_hour_factors.ts
|
|
3485
|
-
var ContractBlockHourFactorsResource = class extends
|
|
3485
|
+
var ContractBlockHourFactorsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3486
3486
|
constructor(http, pageSize) {
|
|
3487
3487
|
super(http, {
|
|
3488
3488
|
key: "contract_block_hour_factors",
|
|
@@ -3541,7 +3541,7 @@ var ContractBlockHourFactorsResource = class extends _chunkIHRXVIUUcjs.BaseResou
|
|
|
3541
3541
|
};
|
|
3542
3542
|
|
|
3543
3543
|
// src/resources/contract_blocks.ts
|
|
3544
|
-
var ContractBlocksResource = class extends
|
|
3544
|
+
var ContractBlocksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3545
3545
|
constructor(http, pageSize) {
|
|
3546
3546
|
super(http, {
|
|
3547
3547
|
key: "contract_blocks",
|
|
@@ -3600,7 +3600,7 @@ var ContractBlocksResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
3600
3600
|
};
|
|
3601
3601
|
|
|
3602
3602
|
// src/resources/contract_charges.ts
|
|
3603
|
-
var ContractChargesResource = class extends
|
|
3603
|
+
var ContractChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3604
3604
|
constructor(http, pageSize) {
|
|
3605
3605
|
super(http, {
|
|
3606
3606
|
key: "contract_charges",
|
|
@@ -3671,7 +3671,7 @@ var ContractChargesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
3671
3671
|
};
|
|
3672
3672
|
|
|
3673
3673
|
// src/resources/contract_exclusion_billing_codes.ts
|
|
3674
|
-
var ContractExclusionBillingCodesResource = class extends
|
|
3674
|
+
var ContractExclusionBillingCodesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3675
3675
|
constructor(http, pageSize) {
|
|
3676
3676
|
super(http, {
|
|
3677
3677
|
key: "contract_exclusion_billing_codes",
|
|
@@ -3728,7 +3728,7 @@ var ContractExclusionBillingCodesResource = class extends _chunkIHRXVIUUcjs.Base
|
|
|
3728
3728
|
};
|
|
3729
3729
|
|
|
3730
3730
|
// src/resources/contract_exclusion_roles.ts
|
|
3731
|
-
var ContractExclusionRolesResource = class extends
|
|
3731
|
+
var ContractExclusionRolesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3732
3732
|
constructor(http, pageSize) {
|
|
3733
3733
|
super(http, {
|
|
3734
3734
|
key: "contract_exclusion_roles",
|
|
@@ -3785,7 +3785,7 @@ var ContractExclusionRolesResource = class extends _chunkIHRXVIUUcjs.BaseResourc
|
|
|
3785
3785
|
};
|
|
3786
3786
|
|
|
3787
3787
|
// src/resources/contract_exclusion_set_excluded_roles.ts
|
|
3788
|
-
var ContractExclusionSetExcludedRolesResource = class extends
|
|
3788
|
+
var ContractExclusionSetExcludedRolesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3789
3789
|
constructor(http, pageSize) {
|
|
3790
3790
|
super(http, {
|
|
3791
3791
|
key: "contract_exclusion_set_excluded_roles",
|
|
@@ -3842,7 +3842,7 @@ var ContractExclusionSetExcludedRolesResource = class extends _chunkIHRXVIUUcjs.
|
|
|
3842
3842
|
};
|
|
3843
3843
|
|
|
3844
3844
|
// src/resources/contract_exclusion_set_excluded_work_types.ts
|
|
3845
|
-
var ContractExclusionSetExcludedWorkTypesResource = class extends
|
|
3845
|
+
var ContractExclusionSetExcludedWorkTypesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3846
3846
|
constructor(http, pageSize) {
|
|
3847
3847
|
super(http, {
|
|
3848
3848
|
key: "contract_exclusion_set_excluded_work_types",
|
|
@@ -3899,7 +3899,7 @@ var ContractExclusionSetExcludedWorkTypesResource = class extends _chunkIHRXVIUU
|
|
|
3899
3899
|
};
|
|
3900
3900
|
|
|
3901
3901
|
// src/resources/contract_exclusion_sets.ts
|
|
3902
|
-
var ContractExclusionSetsResource = class extends
|
|
3902
|
+
var ContractExclusionSetsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3903
3903
|
constructor(http, pageSize) {
|
|
3904
3904
|
super(http, {
|
|
3905
3905
|
key: "contract_exclusion_sets",
|
|
@@ -3973,7 +3973,7 @@ var ContractExclusionSetsResource = class extends _chunkIHRXVIUUcjs.BaseResource
|
|
|
3973
3973
|
};
|
|
3974
3974
|
|
|
3975
3975
|
// src/resources/contract_milestones.ts
|
|
3976
|
-
var ContractMilestonesResource = class extends
|
|
3976
|
+
var ContractMilestonesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
3977
3977
|
constructor(http, pageSize) {
|
|
3978
3978
|
super(http, {
|
|
3979
3979
|
key: "contract_milestones",
|
|
@@ -4032,7 +4032,7 @@ var ContractMilestonesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
4032
4032
|
};
|
|
4033
4033
|
|
|
4034
4034
|
// src/resources/contract_notes.ts
|
|
4035
|
-
var ContractNotesResource = class extends
|
|
4035
|
+
var ContractNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
4036
4036
|
constructor(http, pageSize) {
|
|
4037
4037
|
super(http, {
|
|
4038
4038
|
key: "contract_notes",
|
|
@@ -4091,7 +4091,7 @@ var ContractNotesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
4091
4091
|
};
|
|
4092
4092
|
|
|
4093
4093
|
// src/resources/contract_rates.ts
|
|
4094
|
-
var ContractRatesResource = class extends
|
|
4094
|
+
var ContractRatesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
4095
4095
|
constructor(http, pageSize) {
|
|
4096
4096
|
super(http, {
|
|
4097
4097
|
key: "contract_rates",
|
|
@@ -4150,7 +4150,7 @@ var ContractRatesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
4150
4150
|
};
|
|
4151
4151
|
|
|
4152
4152
|
// src/resources/contract_retainers.ts
|
|
4153
|
-
var ContractRetainersResource = class extends
|
|
4153
|
+
var ContractRetainersResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
4154
4154
|
constructor(http, pageSize) {
|
|
4155
4155
|
super(http, {
|
|
4156
4156
|
key: "contract_retainers",
|
|
@@ -4209,7 +4209,7 @@ var ContractRetainersResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
4209
4209
|
};
|
|
4210
4210
|
|
|
4211
4211
|
// src/resources/contract_role_costs.ts
|
|
4212
|
-
var ContractRoleCostsResource = class extends
|
|
4212
|
+
var ContractRoleCostsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
4213
4213
|
constructor(http, pageSize) {
|
|
4214
4214
|
super(http, {
|
|
4215
4215
|
key: "contract_role_costs",
|
|
@@ -4268,7 +4268,7 @@ var ContractRoleCostsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
4268
4268
|
};
|
|
4269
4269
|
|
|
4270
4270
|
// src/resources/contract_service_adjustments.ts
|
|
4271
|
-
var ContractServiceAdjustmentsResource = class extends
|
|
4271
|
+
var ContractServiceAdjustmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
4272
4272
|
constructor(http, pageSize) {
|
|
4273
4273
|
super(http, {
|
|
4274
4274
|
key: "contract_service_adjustments",
|
|
@@ -4302,7 +4302,7 @@ var ContractServiceAdjustmentsResource = class extends _chunkIHRXVIUUcjs.BaseRes
|
|
|
4302
4302
|
};
|
|
4303
4303
|
|
|
4304
4304
|
// src/resources/contract_service_bundle_adjustments.ts
|
|
4305
|
-
var ContractServiceBundleAdjustmentsResource = class extends
|
|
4305
|
+
var ContractServiceBundleAdjustmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
4306
4306
|
constructor(http, pageSize) {
|
|
4307
4307
|
super(http, {
|
|
4308
4308
|
key: "contract_service_bundle_adjustments",
|
|
@@ -4336,7 +4336,7 @@ var ContractServiceBundleAdjustmentsResource = class extends _chunkIHRXVIUUcjs.B
|
|
|
4336
4336
|
};
|
|
4337
4337
|
|
|
4338
4338
|
// src/resources/contract_service_bundles.ts
|
|
4339
|
-
var ContractServiceBundlesResource = class extends
|
|
4339
|
+
var ContractServiceBundlesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
4340
4340
|
constructor(http, pageSize) {
|
|
4341
4341
|
super(http, {
|
|
4342
4342
|
key: "contract_service_bundles",
|
|
@@ -4395,7 +4395,7 @@ var ContractServiceBundlesResource = class extends _chunkIHRXVIUUcjs.BaseResourc
|
|
|
4395
4395
|
};
|
|
4396
4396
|
|
|
4397
4397
|
// src/resources/contract_service_bundle_units.ts
|
|
4398
|
-
var ContractServiceBundleUnitsResource = class extends
|
|
4398
|
+
var ContractServiceBundleUnitsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
4399
4399
|
constructor(http, pageSize) {
|
|
4400
4400
|
super(http, {
|
|
4401
4401
|
key: "contract_service_bundle_units",
|
|
@@ -4437,7 +4437,7 @@ var ContractServiceBundleUnitsResource = class extends _chunkIHRXVIUUcjs.BaseRes
|
|
|
4437
4437
|
};
|
|
4438
4438
|
|
|
4439
4439
|
// src/resources/contract_services.ts
|
|
4440
|
-
var ContractServicesResource = class extends
|
|
4440
|
+
var ContractServicesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
4441
4441
|
constructor(http, pageSize) {
|
|
4442
4442
|
super(http, {
|
|
4443
4443
|
key: "contract_services",
|
|
@@ -4496,7 +4496,7 @@ var ContractServicesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
4496
4496
|
};
|
|
4497
4497
|
|
|
4498
4498
|
// src/resources/contract_service_units.ts
|
|
4499
|
-
var ContractServiceUnitsResource = class extends
|
|
4499
|
+
var ContractServiceUnitsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
4500
4500
|
constructor(http, pageSize) {
|
|
4501
4501
|
super(http, {
|
|
4502
4502
|
key: "contract_service_units",
|
|
@@ -4549,7 +4549,8 @@ var PROFITABILITY_OPT_KEYS = [
|
|
|
4549
4549
|
"groupByActivity",
|
|
4550
4550
|
"staleAfterDays",
|
|
4551
4551
|
"maxTicketsForJoin",
|
|
4552
|
-
"limit"
|
|
4552
|
+
"limit",
|
|
4553
|
+
"includeRows"
|
|
4553
4554
|
];
|
|
4554
4555
|
var LABOUR_METHOD_SET = [
|
|
4555
4556
|
"billing_item_our_cost",
|
|
@@ -4687,8 +4688,8 @@ function dateToDay(v) {
|
|
|
4687
4688
|
}
|
|
4688
4689
|
function validateProfitabilityOptions(contractId, opts) {
|
|
4689
4690
|
if (opts === void 0 || (typeof opts !== "object" || opts === null || Array.isArray(opts))) {
|
|
4690
|
-
throw new (0,
|
|
4691
|
-
`profitability: opts
|
|
4691
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
4692
|
+
`profitability: opts is required \u2014 the options object with dateFrom and dateTo (YYYY-MM-DD) (got ${opts === void 0 ? "undefined" : Array.isArray(opts) ? "an array" : typeof opts})`,
|
|
4692
4693
|
{ operation: "contracts.profitability" }
|
|
4693
4694
|
);
|
|
4694
4695
|
}
|
|
@@ -4728,7 +4729,7 @@ function validateProfitabilityOptions(contractId, opts) {
|
|
|
4728
4729
|
if (method === "provided" && rate === null) {
|
|
4729
4730
|
problems.push(`labourRatePerHour is required (finite number >= 0) when labourCostMethod is "provided" (got ${String(opts.labourRatePerHour)})`);
|
|
4730
4731
|
}
|
|
4731
|
-
for (const key of ["includeRecurringCosts", "includeUnbilledRevenue", "groupByActivity"]) {
|
|
4732
|
+
for (const key of ["includeRecurringCosts", "includeUnbilledRevenue", "groupByActivity", "includeRows"]) {
|
|
4732
4733
|
const v = opts[key];
|
|
4733
4734
|
if (v !== void 0 && typeof v !== "boolean") problems.push(`${key} must be a boolean (got ${String(v)})`);
|
|
4734
4735
|
}
|
|
@@ -4764,12 +4765,12 @@ function validateProfitabilityOptions(contractId, opts) {
|
|
|
4764
4765
|
}
|
|
4765
4766
|
}
|
|
4766
4767
|
try {
|
|
4767
|
-
|
|
4768
|
+
_chunkKB2ANVVRcjs.parseIdentifier.call(void 0, contractId, "contractId");
|
|
4768
4769
|
} catch (err) {
|
|
4769
|
-
problems.push(err instanceof
|
|
4770
|
+
problems.push(err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.message : "contractId must be a vendor numeric id");
|
|
4770
4771
|
}
|
|
4771
4772
|
if (problems.length > 0) {
|
|
4772
|
-
throw new (0,
|
|
4773
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
4773
4774
|
`profitability: ${problems.length} problem(s) found pre-request (zero wire was issued)
|
|
4774
4775
|
- ` + problems.join("\n- "),
|
|
4775
4776
|
{ operation: "contracts.profitability" }
|
|
@@ -4786,7 +4787,8 @@ function validateProfitabilityOptions(contractId, opts) {
|
|
|
4786
4787
|
groupByActivity: _nullishCoalesce(opts.groupByActivity, () => ( true)),
|
|
4787
4788
|
staleAfterDays: stale,
|
|
4788
4789
|
maxTicketsForJoin: mtj,
|
|
4789
|
-
limit
|
|
4790
|
+
limit,
|
|
4791
|
+
includeRows: _nullishCoalesce(opts.includeRows, () => ( false))
|
|
4790
4792
|
};
|
|
4791
4793
|
}
|
|
4792
4794
|
async function boundedPart2(http, path, conditions, limit, operation, includeFields) {
|
|
@@ -4799,7 +4801,7 @@ async function boundedPart2(http, path, conditions, limit, operation, includeFie
|
|
|
4799
4801
|
body,
|
|
4800
4802
|
operation
|
|
4801
4803
|
});
|
|
4802
|
-
const { items, pageDetails } =
|
|
4804
|
+
const { items, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, operation);
|
|
4803
4805
|
const capped = items.length >= limit;
|
|
4804
4806
|
return { items, capped, hasMore: capped && pageDetails.nextPageUrl != null };
|
|
4805
4807
|
}
|
|
@@ -4813,23 +4815,23 @@ async function fetchByIdsPart(http, entityPath, ids, fields, operation) {
|
|
|
4813
4815
|
const byKey = /* @__PURE__ */ new Map();
|
|
4814
4816
|
const misses = [];
|
|
4815
4817
|
const notes = [];
|
|
4816
|
-
for (let c = 0; c < unique.length; c +=
|
|
4817
|
-
const chunk = unique.slice(c, c +
|
|
4818
|
+
for (let c = 0; c < unique.length; c += _chunkKB2ANVVRcjs.FETCH_BY_IDS_CHUNK_SIZE) {
|
|
4819
|
+
const chunk = unique.slice(c, c + _chunkKB2ANVVRcjs.FETCH_BY_IDS_CHUNK_SIZE);
|
|
4818
4820
|
const chunkKeys = new Set(chunk);
|
|
4819
4821
|
try {
|
|
4820
4822
|
const body = {
|
|
4821
|
-
MaxRecords:
|
|
4823
|
+
MaxRecords: _chunkKB2ANVVRcjs.FETCH_BY_IDS_CHUNK_SIZE,
|
|
4822
4824
|
filter: [{ field: "id", op: "in", value: chunk }],
|
|
4823
4825
|
IncludeFields: fields
|
|
4824
4826
|
};
|
|
4825
4827
|
const res = await http.request({ method: "POST", idempotent: true, path: `${entityPath}/query`, body, operation });
|
|
4826
|
-
const { items: rows } =
|
|
4828
|
+
const { items: rows } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, operation);
|
|
4827
4829
|
for (const row of rows) {
|
|
4828
4830
|
const k = num2(row.id);
|
|
4829
4831
|
if (k > 0 && chunkKeys.has(k)) byKey.set(k, row);
|
|
4830
4832
|
}
|
|
4831
4833
|
} catch (err) {
|
|
4832
|
-
const code = err instanceof
|
|
4834
|
+
const code = err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.code : "SERVER_ERROR";
|
|
4833
4835
|
for (const k of chunk) {
|
|
4834
4836
|
if (!byKey.has(k) && !misses.some((m) => m.id === k)) misses.push({ id: k, code, message: err instanceof Error ? err.message : String(err) });
|
|
4835
4837
|
}
|
|
@@ -4839,11 +4841,11 @@ async function fetchByIdsPart(http, entityPath, ids, fields, operation) {
|
|
|
4839
4841
|
for (const k of queryMissed) {
|
|
4840
4842
|
try {
|
|
4841
4843
|
const res = await http.request({ method: "GET", path: `${entityPath}/${k}`, operation });
|
|
4842
|
-
byKey.set(k,
|
|
4844
|
+
byKey.set(k, _chunkKB2ANVVRcjs.unwrapItem.call(void 0, res, k, operation));
|
|
4843
4845
|
} catch (err) {
|
|
4844
|
-
if (err instanceof
|
|
4846
|
+
if (err instanceof _chunkKB2ANVVRcjs.NotFoundError) {
|
|
4845
4847
|
misses.push({ id: k, code: "NOT_FOUND", message: err.message });
|
|
4846
|
-
} else if (err instanceof
|
|
4848
|
+
} else if (err instanceof _chunkKB2ANVVRcjs.AutotaskError) {
|
|
4847
4849
|
misses.push({ id: k, code: err.code, message: err.message });
|
|
4848
4850
|
} else {
|
|
4849
4851
|
misses.push({ id: k, code: "SERVER_ERROR", message: err instanceof Error ? err.message : String(err) });
|
|
@@ -4966,7 +4968,7 @@ async function degradable(read) {
|
|
|
4966
4968
|
try {
|
|
4967
4969
|
return await read();
|
|
4968
4970
|
} catch (err) {
|
|
4969
|
-
if (!(err instanceof
|
|
4971
|
+
if (!(err instanceof _chunkKB2ANVVRcjs.AutotaskError)) throw err;
|
|
4970
4972
|
return { items: [], capped: false, hasMore: false, absent: err.code, absentMessage: err.message };
|
|
4971
4973
|
}
|
|
4972
4974
|
}
|
|
@@ -4985,9 +4987,9 @@ function dedupeSortCap(ids, limit) {
|
|
|
4985
4987
|
return [...new Set(ids)].sort((a, b) => Number(a) - Number(b)).slice(0, limit);
|
|
4986
4988
|
}
|
|
4987
4989
|
async function profitability(resource, contractId, opts, rawHttp) {
|
|
4988
|
-
const v = validateProfitabilityOptions(contractId,
|
|
4990
|
+
const v = validateProfitabilityOptions(contractId, opts);
|
|
4989
4991
|
const OP2 = "contracts.profitability";
|
|
4990
|
-
const id =
|
|
4992
|
+
const id = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, contractId, "contractId");
|
|
4991
4993
|
const idNum = typeof id === "number" ? id : Number(id);
|
|
4992
4994
|
const wires = { issued: 0, requests: 0, budget: PROFITABILITY_WIRE_BUDGET };
|
|
4993
4995
|
const asOf = (/* @__PURE__ */ new Date()).toISOString();
|
|
@@ -5015,7 +5017,7 @@ async function profitability(resource, contractId, opts, rawHttp) {
|
|
|
5015
5017
|
status: st.status,
|
|
5016
5018
|
blindSurface: st.blindSurface,
|
|
5017
5019
|
note: [st.note, ..._nullishCoalesce(extraNotes, () => ( []))].filter(Boolean).join(" | ") || void 0,
|
|
5018
|
-
emptyReason: raw.items.length === 0 && st.status === "ok" ? _optionalChain([
|
|
5020
|
+
emptyReason: raw.items.length === 0 && st.status === "ok" ? _optionalChain([_chunkKB2ANVVRcjs.EMPTY_REASON_STAMPS, 'access', _29 => _29[key], 'optionalAccess', _30 => _30.query]) : void 0
|
|
5019
5021
|
};
|
|
5020
5022
|
};
|
|
5021
5023
|
const truncatedMonths = {};
|
|
@@ -5045,12 +5047,12 @@ async function profitability(resource, contractId, opts, rawHttp) {
|
|
|
5045
5047
|
path: `/V1.0/Companies/${companyID}`,
|
|
5046
5048
|
operation: OP2
|
|
5047
5049
|
});
|
|
5048
|
-
const item =
|
|
5050
|
+
const item = _chunkKB2ANVVRcjs.unwrapItem.call(void 0, res, companyID, OP2);
|
|
5049
5051
|
customer = _nullishCoalesce(item, () => ( null));
|
|
5050
5052
|
customerStatus = "ok";
|
|
5051
5053
|
} catch (err) {
|
|
5052
|
-
if (!(err instanceof
|
|
5053
|
-
if (!(err instanceof
|
|
5054
|
+
if (!(err instanceof _chunkKB2ANVVRcjs.AutotaskError)) throw err;
|
|
5055
|
+
if (!(err instanceof _chunkKB2ANVVRcjs.NotFoundError)) {
|
|
5054
5056
|
customerStatus = "absent";
|
|
5055
5057
|
customerAbsent = err.code;
|
|
5056
5058
|
}
|
|
@@ -5063,7 +5065,7 @@ async function profitability(resource, contractId, opts, rawHttp) {
|
|
|
5063
5065
|
try {
|
|
5064
5066
|
contractTypeLabel = await _asyncNullishCoalesce(await _asyncOptionalChain([(await readPicklists(http, "/V1.0/Contracts", OP2)), 'access', async _34 => _34.get, 'call', async _35 => _35("contractType"), 'optionalAccess', async _36 => _36.get, 'call', async _37 => _37(contractType)]), async () => ( null));
|
|
5065
5067
|
} catch (err) {
|
|
5066
|
-
if (!(err instanceof
|
|
5068
|
+
if (!(err instanceof _chunkKB2ANVVRcjs.AutotaskError)) throw err;
|
|
5067
5069
|
}
|
|
5068
5070
|
}
|
|
5069
5071
|
const contractTypeKnown = contractTypeLabel !== null;
|
|
@@ -5110,8 +5112,8 @@ async function profitability(resource, contractId, opts, rawHttp) {
|
|
|
5110
5112
|
if (invoiceIds.length === 0) {
|
|
5111
5113
|
invoicesPart = skipPart("skipped: the billing part has no invoiceIDs (zero wire)");
|
|
5112
5114
|
} else {
|
|
5113
|
-
const capped = capJoinSet2(invoiceIds,
|
|
5114
|
-
if (capped.truncated) wires.note = (wires.note ? wires.note + " | " : "") + `invoiceJoinTruncated: the join set is capped at ${
|
|
5115
|
+
const capped = capJoinSet2(invoiceIds, _chunkKB2ANVVRcjs.FETCH_BY_IDS_MAX_ITEMS);
|
|
5116
|
+
if (capped.truncated) wires.note = (wires.note ? wires.note + " | " : "") + `invoiceJoinTruncated: the join set is capped at ${_chunkKB2ANVVRcjs.FETCH_BY_IDS_MAX_ITEMS} of ${capped.total} invoice ids (the fetch-by-ids cap) \u2014 the figures cover the returned set only`;
|
|
5115
5117
|
const fb = await fetchByIdsPart(http, "/V1.0/Invoices", capped.ids, ["id", "invoiceNumber", "invoiceTotal", "paidDate", "isVoided", "dueDate"], OP2);
|
|
5116
5118
|
wires.issued += 1;
|
|
5117
5119
|
invoices = fb.items;
|
|
@@ -5143,7 +5145,7 @@ async function profitability(resource, contractId, opts, rawHttp) {
|
|
|
5143
5145
|
}
|
|
5144
5146
|
}
|
|
5145
5147
|
} catch (err) {
|
|
5146
|
-
statusNote = `the tickets.status field catalog read failed (${err instanceof
|
|
5148
|
+
statusNote = `the tickets.status field catalog read failed (${err instanceof _chunkKB2ANVVRcjs.AutotaskError ? err.code : "SERVER_ERROR"}: ${err instanceof Error ? err.message : String(err)}) \u2014 the open-status labels are unavailable`;
|
|
5147
5149
|
}
|
|
5148
5150
|
let ticketsOpenPart;
|
|
5149
5151
|
let openTickets = [];
|
|
@@ -5162,8 +5164,8 @@ async function profitability(resource, contractId, opts, rawHttp) {
|
|
|
5162
5164
|
if (resourceIds.length === 0) {
|
|
5163
5165
|
resourcesPart = skipPart("skipped: the time part has no resourceIDs (zero wire)");
|
|
5164
5166
|
} else {
|
|
5165
|
-
const capped = capJoinSet2(resourceIds,
|
|
5166
|
-
if (capped.truncated) wires.note = (wires.note ? wires.note + " | " : "") + `resourceJoinTruncated: the join set is capped at ${
|
|
5167
|
+
const capped = capJoinSet2(resourceIds, _chunkKB2ANVVRcjs.FETCH_BY_IDS_MAX_ITEMS);
|
|
5168
|
+
if (capped.truncated) wires.note = (wires.note ? wires.note + " | " : "") + `resourceJoinTruncated: the join set is capped at ${_chunkKB2ANVVRcjs.FETCH_BY_IDS_MAX_ITEMS} of ${capped.total} resource ids (the fetch-by-ids cap) \u2014 the figures cover the returned set only`;
|
|
5167
5169
|
const fb = await fetchByIdsPart(http, "/V1.0/Resources", capped.ids, ["id", "internalCost", "firstName", "lastName", "isActive", "userType"], OP2);
|
|
5168
5170
|
wires.issued += 1;
|
|
5169
5171
|
resources = fb.items;
|
|
@@ -5220,7 +5222,7 @@ async function profitability(resource, contractId, opts, rawHttp) {
|
|
|
5220
5222
|
if (cis.length === 0) {
|
|
5221
5223
|
subscriptionsPart = skipPart("skipped: the CI join found no configuration items \u2014 the subscriptions part is not evaluable (zero wire)");
|
|
5222
5224
|
} else {
|
|
5223
|
-
const ciIds = capJoinSet2(cis.map((c) => num2(c["id"])).filter((n) => n > 0),
|
|
5225
|
+
const ciIds = capJoinSet2(cis.map((c) => num2(c["id"])).filter((n) => n > 0), _chunkKB2ANVVRcjs.FETCH_BY_IDS_MAX_ITEMS);
|
|
5224
5226
|
const subCond = [{ field: "configurationItemID", op: "in", value: ciIds.ids }];
|
|
5225
5227
|
const raw = await readPart("/V1.0/Subscriptions/query", subCond, ["id", "subscriptionName", "configurationItemID", "periodCost", "periodPrice", "periodType", "effectiveDate", "expirationDate", "status", "totalCost"]);
|
|
5226
5228
|
subscriptions = raw.items;
|
|
@@ -5230,7 +5232,7 @@ async function profitability(resource, contractId, opts, rawHttp) {
|
|
|
5230
5232
|
try {
|
|
5231
5233
|
labels = await readPicklists(http, "/V1.0/Subscriptions", OP2);
|
|
5232
5234
|
} catch (err) {
|
|
5233
|
-
if (!(err instanceof
|
|
5235
|
+
if (!(err instanceof _chunkKB2ANVVRcjs.AutotaskError)) throw err;
|
|
5234
5236
|
}
|
|
5235
5237
|
}
|
|
5236
5238
|
for (const x of subscriptions) {
|
|
@@ -5403,17 +5405,20 @@ async function profitability(resource, contractId, opts, rawHttp) {
|
|
|
5403
5405
|
else labourTotal += _nullishCoalesce(r.cost, () => ( 0));
|
|
5404
5406
|
}
|
|
5405
5407
|
const unposted = mEntries.filter((e) => e["isNonBillable"] !== true && !billedByEntryId.has(num2(e["id"])));
|
|
5406
|
-
const
|
|
5408
|
+
const hoursMissing = unposted.some((e) => typeof e["hoursToBill"] !== "number" || !Number.isFinite(e["hoursToBill"]));
|
|
5409
|
+
const hoursPart = hoursMissing ? { entries: unposted.length, hours: null, hoursAbsent: "HOURS_TO_BILL_MISSING" } : { entries: unposted.length, hours: unposted.reduce((a, e) => a + Math.max(0, num2(e["hoursToBill"])), 0) };
|
|
5407
5410
|
let unpostedTime;
|
|
5408
5411
|
if (!contractTypeKnown) {
|
|
5409
|
-
unpostedTime = {
|
|
5412
|
+
unpostedTime = { ...hoursPart, value: null, absent: "CONTRACT_TYPE_UNKNOWN" };
|
|
5410
5413
|
} else if (!isTimeAndMaterials) {
|
|
5411
|
-
unpostedTime = {
|
|
5414
|
+
unpostedTime = { ...hoursPart, value: null, absent: "NOT_TIME_AND_MATERIALS_CONTRACT" };
|
|
5412
5415
|
} else if (unposted.some((e) => !contractRateByRole.has(num2(e["roleID"])))) {
|
|
5413
|
-
unpostedTime = {
|
|
5416
|
+
unpostedTime = { ...hoursPart, value: null, absent: "NO_CONTRACT_RATE" };
|
|
5417
|
+
} else if (hoursMissing) {
|
|
5418
|
+
unpostedTime = { ...hoursPart, value: null, absent: "HOURS_TO_BILL_MISSING" };
|
|
5414
5419
|
} else {
|
|
5415
5420
|
const value = unposted.reduce((a, e) => a + Math.max(0, num2(e["hoursToBill"])) * contractRateByRole.get(num2(e["roleID"])), 0);
|
|
5416
|
-
unpostedTime = {
|
|
5421
|
+
unpostedTime = { ...hoursPart, value };
|
|
5417
5422
|
}
|
|
5418
5423
|
let toolingVendor = subscriptionsPart.status === "skipped" || subscriptionsPart.status === "absent" ? null : 0;
|
|
5419
5424
|
if (toolingVendor !== null) {
|
|
@@ -5725,6 +5730,11 @@ async function profitability(resource, contractId, opts, rawHttp) {
|
|
|
5725
5730
|
const purchasedHours = blocks.reduce((a, b) => a + num2(b["hours"]), 0);
|
|
5726
5731
|
const approvedHours = blocks.reduce((a, b) => a + num2(b["hoursApproved"]), 0);
|
|
5727
5732
|
const includedHours = !contractTypeKnown ? { value: null, absent: "CONTRACT_TYPE_UNKNOWN" } : !isBlockHours ? { value: null, absent: "NOT_BLOCK_HOURS_CONTRACT" } : blocksPart.status === "absent" ? { value: null, absent: blocksPart.absent } : { value: { purchased: purchasedHours, approved: approvedHours, remaining: purchasedHours - approvedHours } };
|
|
5733
|
+
const rows = (part) => {
|
|
5734
|
+
if (v.includeRows) return part;
|
|
5735
|
+
const { items, ...stamps } = part;
|
|
5736
|
+
return { ...stamps, rows_fetched: items.length };
|
|
5737
|
+
};
|
|
5728
5738
|
return {
|
|
5729
5739
|
contract,
|
|
5730
5740
|
customer,
|
|
@@ -5763,28 +5773,28 @@ async function profitability(resource, contractId, opts, rawHttp) {
|
|
|
5763
5773
|
configurationItems: configurationItemsPart.status,
|
|
5764
5774
|
subscriptions: subscriptionsPart.status
|
|
5765
5775
|
},
|
|
5766
|
-
contractServices: servicesPart,
|
|
5767
|
-
contractServiceUnits: unitsPart,
|
|
5768
|
-
contractCharges: chargesPart,
|
|
5769
|
-
contractRoleCosts: roleCostsPart,
|
|
5770
|
-
contractRates: ratesPart,
|
|
5771
|
-
contractBlocks: blocksPart,
|
|
5772
|
-
billingItems,
|
|
5773
|
-
invoices: invoicesPart,
|
|
5774
|
-
timeEntries,
|
|
5775
|
-
ticketsActivity: ticketsActivityPart,
|
|
5776
|
-
ticketsOpen: ticketsOpenPart,
|
|
5777
|
-
resources: resourcesPart,
|
|
5778
|
-
expenses: expensesPart,
|
|
5779
|
-
miscodingProbe: probePart,
|
|
5780
|
-
configurationItems: configurationItemsPart,
|
|
5781
|
-
subscriptions: subscriptionsPart,
|
|
5776
|
+
contractServices: rows(servicesPart),
|
|
5777
|
+
contractServiceUnits: rows(unitsPart),
|
|
5778
|
+
contractCharges: rows(chargesPart),
|
|
5779
|
+
contractRoleCosts: rows(roleCostsPart),
|
|
5780
|
+
contractRates: rows(ratesPart),
|
|
5781
|
+
contractBlocks: rows(blocksPart),
|
|
5782
|
+
billingItems: rows(billingItems),
|
|
5783
|
+
invoices: rows(invoicesPart),
|
|
5784
|
+
timeEntries: rows(timeEntries),
|
|
5785
|
+
ticketsActivity: rows(ticketsActivityPart),
|
|
5786
|
+
ticketsOpen: rows(ticketsOpenPart),
|
|
5787
|
+
resources: rows(resourcesPart),
|
|
5788
|
+
expenses: rows(expensesPart),
|
|
5789
|
+
miscodingProbe: rows(probePart),
|
|
5790
|
+
configurationItems: rows(configurationItemsPart),
|
|
5791
|
+
subscriptions: rows(subscriptionsPart),
|
|
5782
5792
|
wires: { issued: wires.issued, requests: wires.requests, budget: wires.budget, note: wires.note }
|
|
5783
5793
|
};
|
|
5784
5794
|
}
|
|
5785
5795
|
|
|
5786
5796
|
// src/resources/contracts.ts
|
|
5787
|
-
var ContractsResource = class extends
|
|
5797
|
+
var ContractsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
5788
5798
|
constructor(http, pageSize) {
|
|
5789
5799
|
super(http, {
|
|
5790
5800
|
key: "contracts",
|
|
@@ -5855,7 +5865,7 @@ var ContractsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
5855
5865
|
};
|
|
5856
5866
|
|
|
5857
5867
|
// src/resources/contract_ticket_purchases.ts
|
|
5858
|
-
var ContractTicketPurchasesResource = class extends
|
|
5868
|
+
var ContractTicketPurchasesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
5859
5869
|
constructor(http, pageSize) {
|
|
5860
5870
|
super(http, {
|
|
5861
5871
|
key: "contract_ticket_purchases",
|
|
@@ -5914,7 +5924,7 @@ var ContractTicketPurchasesResource = class extends _chunkIHRXVIUUcjs.BaseResour
|
|
|
5914
5924
|
};
|
|
5915
5925
|
|
|
5916
5926
|
// src/resources/countries.ts
|
|
5917
|
-
var CountriesResource = class extends
|
|
5927
|
+
var CountriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
5918
5928
|
constructor(http, pageSize) {
|
|
5919
5929
|
super(http, {
|
|
5920
5930
|
key: "countries",
|
|
@@ -5973,7 +5983,7 @@ var CountriesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
5973
5983
|
};
|
|
5974
5984
|
|
|
5975
5985
|
// src/resources/departments.ts
|
|
5976
|
-
var DepartmentsResource = class extends
|
|
5986
|
+
var DepartmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
5977
5987
|
constructor(http, pageSize) {
|
|
5978
5988
|
super(http, {
|
|
5979
5989
|
key: "departments",
|
|
@@ -6040,7 +6050,7 @@ var DepartmentsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
6040
6050
|
};
|
|
6041
6051
|
|
|
6042
6052
|
// src/resources/domain_registrars.ts
|
|
6043
|
-
var DomainRegistrarsResource = class extends
|
|
6053
|
+
var DomainRegistrarsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6044
6054
|
constructor(http, pageSize) {
|
|
6045
6055
|
super(http, {
|
|
6046
6056
|
key: "domain_registrars",
|
|
@@ -6123,7 +6133,7 @@ var EntityInformationResource = class {
|
|
|
6123
6133
|
};
|
|
6124
6134
|
|
|
6125
6135
|
// src/resources/expense_item_attachments.ts
|
|
6126
|
-
var ExpenseItemAttachmentsResource = class extends
|
|
6136
|
+
var ExpenseItemAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6127
6137
|
constructor(http, pageSize) {
|
|
6128
6138
|
super(http, {
|
|
6129
6139
|
key: "expense_item_attachments",
|
|
@@ -6185,7 +6195,7 @@ var ExpenseItemAttachmentsResource = class extends _chunkIHRXVIUUcjs.BaseResourc
|
|
|
6185
6195
|
};
|
|
6186
6196
|
|
|
6187
6197
|
// src/resources/expense_items.ts
|
|
6188
|
-
var ExpenseItemsResource = class extends
|
|
6198
|
+
var ExpenseItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6189
6199
|
constructor(http, pageSize) {
|
|
6190
6200
|
super(http, {
|
|
6191
6201
|
key: "expense_items",
|
|
@@ -6244,7 +6254,7 @@ var ExpenseItemsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
6244
6254
|
};
|
|
6245
6255
|
|
|
6246
6256
|
// src/resources/expense_reports.ts
|
|
6247
|
-
var ExpenseReportsResource = class extends
|
|
6257
|
+
var ExpenseReportsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6248
6258
|
constructor(http, pageSize) {
|
|
6249
6259
|
super(http, {
|
|
6250
6260
|
key: "expense_reports",
|
|
@@ -6311,7 +6321,7 @@ var ExpenseReportsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
6311
6321
|
};
|
|
6312
6322
|
|
|
6313
6323
|
// src/resources/holiday_sets.ts
|
|
6314
|
-
var HolidaySetsResource = class extends
|
|
6324
|
+
var HolidaySetsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6315
6325
|
constructor(http, pageSize) {
|
|
6316
6326
|
super(http, {
|
|
6317
6327
|
key: "holiday_sets",
|
|
@@ -6380,7 +6390,7 @@ var HolidaySetsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
6380
6390
|
};
|
|
6381
6391
|
|
|
6382
6392
|
// src/resources/holidays.ts
|
|
6383
|
-
var HolidaysResource = class extends
|
|
6393
|
+
var HolidaysResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6384
6394
|
constructor(http, pageSize) {
|
|
6385
6395
|
super(http, {
|
|
6386
6396
|
key: "holidays",
|
|
@@ -6452,10 +6462,10 @@ var PATH_SUFFIX = {
|
|
|
6452
6462
|
transfer: "StockedItemsTransfer"
|
|
6453
6463
|
};
|
|
6454
6464
|
async function stockedItems(_resource, kind, parentId, data, opts = {}, http) {
|
|
6455
|
-
const numericParent =
|
|
6465
|
+
const numericParent = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, parentId, "parentId");
|
|
6456
6466
|
const suffix = PATH_SUFFIX[kind];
|
|
6457
6467
|
if (opts.dryRun === true) {
|
|
6458
|
-
return
|
|
6468
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
|
|
6459
6469
|
operation: `inventory_products.stockedItems${suffix.slice("StockedItems".length)}`,
|
|
6460
6470
|
method: "POST",
|
|
6461
6471
|
path: `/V1.0/InventoryProducts/${numericParent}/${suffix}`,
|
|
@@ -6471,11 +6481,11 @@ async function stockedItems(_resource, kind, parentId, data, opts = {}, http) {
|
|
|
6471
6481
|
body: data,
|
|
6472
6482
|
operation: `inventory_products.stockedItems${suffix.slice("StockedItems".length)}`
|
|
6473
6483
|
});
|
|
6474
|
-
return
|
|
6484
|
+
return _chunkKB2ANVVRcjs.unwrapOperation.call(void 0, res);
|
|
6475
6485
|
}
|
|
6476
6486
|
|
|
6477
6487
|
// src/resources/inventory_products.ts
|
|
6478
|
-
var InventoryProductsResource = class extends
|
|
6488
|
+
var InventoryProductsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6479
6489
|
constructor(http, pageSize) {
|
|
6480
6490
|
super(http, {
|
|
6481
6491
|
key: "inventory_products",
|
|
@@ -6557,7 +6567,7 @@ var InventoryProductsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
6557
6567
|
|
|
6558
6568
|
// src/resources/special/invoices.ts
|
|
6559
6569
|
async function markup(_resource, id, format, http) {
|
|
6560
|
-
const numericId =
|
|
6570
|
+
const numericId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
|
|
6561
6571
|
const suffix = format === "html" ? "InvoiceMarkupHtml" : "InvoiceMarkupXml";
|
|
6562
6572
|
const res = await http.request({
|
|
6563
6573
|
method: "GET",
|
|
@@ -6566,7 +6576,7 @@ async function markup(_resource, id, format, http) {
|
|
|
6566
6576
|
});
|
|
6567
6577
|
const body = res;
|
|
6568
6578
|
if (body === null || typeof body !== "object" || typeof body.invoiceMarkup !== "string") {
|
|
6569
|
-
throw new (0,
|
|
6579
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskError)(
|
|
6570
6580
|
`Expected the InvoiceMarkupResultModel envelope { invoiceMarkup: string } for invoice ${numericId}; got a different shape`,
|
|
6571
6581
|
{ code: "INVALID_RESPONSE", category: "server", resourceIds: [numericId] }
|
|
6572
6582
|
);
|
|
@@ -6574,13 +6584,13 @@ async function markup(_resource, id, format, http) {
|
|
|
6574
6584
|
return body.invoiceMarkup;
|
|
6575
6585
|
}
|
|
6576
6586
|
async function pdf(_resource, id, http) {
|
|
6577
|
-
const numericId =
|
|
6587
|
+
const numericId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
|
|
6578
6588
|
const res = await http.request({
|
|
6579
6589
|
method: "GET",
|
|
6580
6590
|
path: `/V1.0/Invoices/${numericId}/InvoicePdf`,
|
|
6581
6591
|
operation: "invoices.pdf"
|
|
6582
6592
|
});
|
|
6583
|
-
return
|
|
6593
|
+
return _chunkKB2ANVVRcjs.decodeFileData.call(void 0, res);
|
|
6584
6594
|
}
|
|
6585
6595
|
async function windowQuery2(_resource, kind, http, opts) {
|
|
6586
6596
|
const now = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _46 => _46.now]), () => ( /* @__PURE__ */ new Date()));
|
|
@@ -6611,7 +6621,7 @@ async function customRange2(_resource, from, to, http, opts) {
|
|
|
6611
6621
|
}
|
|
6612
6622
|
|
|
6613
6623
|
// src/resources/invoices.ts
|
|
6614
|
-
var InvoicesResource = class extends
|
|
6624
|
+
var InvoicesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6615
6625
|
constructor(http, pageSize) {
|
|
6616
6626
|
super(http, {
|
|
6617
6627
|
key: "invoices",
|
|
@@ -6741,7 +6751,7 @@ var ModulesResource = class {
|
|
|
6741
6751
|
};
|
|
6742
6752
|
|
|
6743
6753
|
// src/resources/notification_history.ts
|
|
6744
|
-
var NotificationHistoryResource = class extends
|
|
6754
|
+
var NotificationHistoryResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6745
6755
|
constructor(http, pageSize) {
|
|
6746
6756
|
super(http, {
|
|
6747
6757
|
key: "notification_history",
|
|
@@ -6780,7 +6790,7 @@ var NotificationHistoryResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
6780
6790
|
};
|
|
6781
6791
|
|
|
6782
6792
|
// src/resources/opportunities.ts
|
|
6783
|
-
var OpportunitiesResource = class extends
|
|
6793
|
+
var OpportunitiesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6784
6794
|
constructor(http, pageSize) {
|
|
6785
6795
|
super(http, {
|
|
6786
6796
|
key: "opportunities",
|
|
@@ -6842,7 +6852,7 @@ var OpportunitiesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
6842
6852
|
};
|
|
6843
6853
|
|
|
6844
6854
|
// src/resources/opportunity_attachments.ts
|
|
6845
|
-
var OpportunityAttachmentsResource = class extends
|
|
6855
|
+
var OpportunityAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6846
6856
|
constructor(http, pageSize) {
|
|
6847
6857
|
super(http, {
|
|
6848
6858
|
key: "opportunity_attachments",
|
|
@@ -6904,7 +6914,7 @@ var OpportunityAttachmentsResource = class extends _chunkIHRXVIUUcjs.BaseResourc
|
|
|
6904
6914
|
};
|
|
6905
6915
|
|
|
6906
6916
|
// src/resources/opportunity_categories.ts
|
|
6907
|
-
var OpportunityCategoriesResource = class extends
|
|
6917
|
+
var OpportunityCategoriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6908
6918
|
constructor(http, pageSize) {
|
|
6909
6919
|
super(http, {
|
|
6910
6920
|
key: "opportunity_categories",
|
|
@@ -6963,7 +6973,7 @@ var OpportunityCategoriesResource = class extends _chunkIHRXVIUUcjs.BaseResource
|
|
|
6963
6973
|
};
|
|
6964
6974
|
|
|
6965
6975
|
// src/resources/phases.ts
|
|
6966
|
-
var PhasesResource = class extends
|
|
6976
|
+
var PhasesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
6967
6977
|
constructor(http, pageSize) {
|
|
6968
6978
|
super(http, {
|
|
6969
6979
|
key: "phases",
|
|
@@ -7022,7 +7032,7 @@ var PhasesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7022
7032
|
};
|
|
7023
7033
|
|
|
7024
7034
|
// src/resources/products.ts
|
|
7025
|
-
var ProductsResource = class extends
|
|
7035
|
+
var ProductsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7026
7036
|
constructor(http, pageSize) {
|
|
7027
7037
|
super(http, {
|
|
7028
7038
|
key: "products",
|
|
@@ -7089,7 +7099,7 @@ var ProductsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7089
7099
|
};
|
|
7090
7100
|
|
|
7091
7101
|
// src/resources/product_vendors.ts
|
|
7092
|
-
var ProductVendorsResource = class extends
|
|
7102
|
+
var ProductVendorsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7093
7103
|
constructor(http, pageSize) {
|
|
7094
7104
|
super(http, {
|
|
7095
7105
|
key: "product_vendors",
|
|
@@ -7148,7 +7158,7 @@ var ProductVendorsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7148
7158
|
};
|
|
7149
7159
|
|
|
7150
7160
|
// src/resources/project_charges.ts
|
|
7151
|
-
var ProjectChargesResource = class extends
|
|
7161
|
+
var ProjectChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7152
7162
|
constructor(http, pageSize) {
|
|
7153
7163
|
super(http, {
|
|
7154
7164
|
key: "project_charges",
|
|
@@ -7219,7 +7229,7 @@ var ProjectChargesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7219
7229
|
};
|
|
7220
7230
|
|
|
7221
7231
|
// src/resources/project_notes.ts
|
|
7222
|
-
var ProjectNotesResource = class extends
|
|
7232
|
+
var ProjectNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7223
7233
|
constructor(http, pageSize) {
|
|
7224
7234
|
super(http, {
|
|
7225
7235
|
key: "project_notes",
|
|
@@ -7278,7 +7288,7 @@ var ProjectNotesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7278
7288
|
};
|
|
7279
7289
|
|
|
7280
7290
|
// src/resources/projects.ts
|
|
7281
|
-
var ProjectsResource = class extends
|
|
7291
|
+
var ProjectsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7282
7292
|
constructor(http, pageSize) {
|
|
7283
7293
|
super(http, {
|
|
7284
7294
|
key: "projects",
|
|
@@ -7355,13 +7365,13 @@ var ProjectsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7355
7365
|
const leadResource = await this.contextFetch("/V1.0/Resources", root["projectLeadResourceID"]);
|
|
7356
7366
|
const result = { project, company, opportunity, leadResource };
|
|
7357
7367
|
if (opts.names === true) {
|
|
7358
|
-
const builder =
|
|
7368
|
+
const builder = _chunkKB2ANVVRcjs.createNamePlan.call(void 0, );
|
|
7359
7369
|
builder.addResource(root["creatorResourceID"]);
|
|
7360
7370
|
builder.addFk("contract", root["contractID"]);
|
|
7361
|
-
const names = await
|
|
7371
|
+
const names = await _chunkKB2ANVVRcjs.resolveCompositeNames.call(void 0, this.http, builder.plan(), { maxNameReads: opts.maxNameReads });
|
|
7362
7372
|
const row = { ...project };
|
|
7363
|
-
|
|
7364
|
-
|
|
7373
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "creatorResourceID", (v) => names.resourceName(v));
|
|
7374
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "contractID", (v) => names.recordName("contract", v));
|
|
7365
7375
|
result.project = row;
|
|
7366
7376
|
result.names = names.section;
|
|
7367
7377
|
}
|
|
@@ -7370,7 +7380,7 @@ var ProjectsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7370
7380
|
};
|
|
7371
7381
|
|
|
7372
7382
|
// src/resources/purchase_approvals.ts
|
|
7373
|
-
var PurchaseApprovalsResource = class extends
|
|
7383
|
+
var PurchaseApprovalsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7374
7384
|
constructor(http, pageSize) {
|
|
7375
7385
|
super(http, {
|
|
7376
7386
|
key: "purchase_approvals",
|
|
@@ -7424,7 +7434,7 @@ var PurchaseApprovalsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7424
7434
|
};
|
|
7425
7435
|
|
|
7426
7436
|
// src/resources/purchase_order_item_receiving.ts
|
|
7427
|
-
var PurchaseOrderItemReceivingResource = class extends
|
|
7437
|
+
var PurchaseOrderItemReceivingResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7428
7438
|
constructor(http, pageSize) {
|
|
7429
7439
|
super(http, {
|
|
7430
7440
|
key: "purchase_order_item_receiving",
|
|
@@ -7474,7 +7484,7 @@ var PurchaseOrderItemReceivingResource = class extends _chunkIHRXVIUUcjs.BaseRes
|
|
|
7474
7484
|
};
|
|
7475
7485
|
|
|
7476
7486
|
// src/resources/purchase_order_items.ts
|
|
7477
|
-
var PurchaseOrderItemsResource = class extends
|
|
7487
|
+
var PurchaseOrderItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7478
7488
|
constructor(http, pageSize) {
|
|
7479
7489
|
super(http, {
|
|
7480
7490
|
key: "purchase_order_items",
|
|
@@ -7533,7 +7543,7 @@ var PurchaseOrderItemsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7533
7543
|
};
|
|
7534
7544
|
|
|
7535
7545
|
// src/resources/purchase_orders.ts
|
|
7536
|
-
var PurchaseOrdersResource = class extends
|
|
7546
|
+
var PurchaseOrdersResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7537
7547
|
constructor(http, pageSize) {
|
|
7538
7548
|
super(http, {
|
|
7539
7549
|
key: "purchase_orders",
|
|
@@ -7595,7 +7605,7 @@ var PurchaseOrdersResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7595
7605
|
};
|
|
7596
7606
|
|
|
7597
7607
|
// src/resources/quote_items.ts
|
|
7598
|
-
var QuoteItemsResource = class extends
|
|
7608
|
+
var QuoteItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7599
7609
|
constructor(http, pageSize) {
|
|
7600
7610
|
super(http, {
|
|
7601
7611
|
key: "quote_items",
|
|
@@ -7666,7 +7676,7 @@ var QuoteItemsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7666
7676
|
};
|
|
7667
7677
|
|
|
7668
7678
|
// src/resources/quote_locations.ts
|
|
7669
|
-
var QuoteLocationsResource = class extends
|
|
7679
|
+
var QuoteLocationsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7670
7680
|
constructor(http, pageSize) {
|
|
7671
7681
|
super(http, {
|
|
7672
7682
|
key: "quote_locations",
|
|
@@ -7731,7 +7741,7 @@ var QuoteLocationsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7731
7741
|
};
|
|
7732
7742
|
|
|
7733
7743
|
// src/resources/quotes.ts
|
|
7734
|
-
var QuotesResource = class extends
|
|
7744
|
+
var QuotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7735
7745
|
constructor(http, pageSize) {
|
|
7736
7746
|
super(http, {
|
|
7737
7747
|
key: "quotes",
|
|
@@ -7798,7 +7808,7 @@ var QuotesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7798
7808
|
};
|
|
7799
7809
|
|
|
7800
7810
|
// src/resources/quote_templates.ts
|
|
7801
|
-
var QuoteTemplatesResource = class extends
|
|
7811
|
+
var QuoteTemplatesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7802
7812
|
constructor(http, pageSize) {
|
|
7803
7813
|
super(http, {
|
|
7804
7814
|
key: "quote_templates",
|
|
@@ -7842,7 +7852,7 @@ var QuoteTemplatesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7842
7852
|
};
|
|
7843
7853
|
|
|
7844
7854
|
// src/resources/resource_role_queues.ts
|
|
7845
|
-
var ResourceRoleQueuesResource = class extends
|
|
7855
|
+
var ResourceRoleQueuesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7846
7856
|
constructor(http, pageSize) {
|
|
7847
7857
|
super(http, {
|
|
7848
7858
|
key: "resource_role_queues",
|
|
@@ -7901,7 +7911,7 @@ var ResourceRoleQueuesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7901
7911
|
};
|
|
7902
7912
|
|
|
7903
7913
|
// src/resources/resource_roles.ts
|
|
7904
|
-
var ResourceRolesResource = class extends
|
|
7914
|
+
var ResourceRolesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7905
7915
|
constructor(http, pageSize) {
|
|
7906
7916
|
super(http, {
|
|
7907
7917
|
key: "resource_roles",
|
|
@@ -7943,7 +7953,7 @@ var ResourceRolesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7943
7953
|
};
|
|
7944
7954
|
|
|
7945
7955
|
// src/resources/resource_skills.ts
|
|
7946
|
-
var ResourceSkillsResource = class extends
|
|
7956
|
+
var ResourceSkillsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
7947
7957
|
constructor(http, pageSize) {
|
|
7948
7958
|
super(http, {
|
|
7949
7959
|
key: "resource_skills",
|
|
@@ -7997,16 +8007,16 @@ var ResourceSkillsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
7997
8007
|
var MAX_TRANSFER_IDS = 500;
|
|
7998
8008
|
function requirePositiveIds(ids, label) {
|
|
7999
8009
|
if (!Array.isArray(ids) || ids.length === 0) {
|
|
8000
|
-
throw new (0,
|
|
8010
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`${label}: at least one positive integer id is required`);
|
|
8001
8011
|
}
|
|
8002
8012
|
if (ids.length > MAX_TRANSFER_IDS) {
|
|
8003
|
-
throw new (0,
|
|
8013
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`${label}: at most ${MAX_TRANSFER_IDS} ids are accepted (bounded fan-out)`);
|
|
8004
8014
|
}
|
|
8005
8015
|
const out = [];
|
|
8006
8016
|
for (const raw of ids) {
|
|
8007
|
-
const id =
|
|
8017
|
+
const id = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, raw, `${label} id`);
|
|
8008
8018
|
if (typeof id === "number" && id < 1) {
|
|
8009
|
-
throw new (0,
|
|
8019
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`${label}: every id must be a positive integer (got ${String(raw)})`);
|
|
8010
8020
|
}
|
|
8011
8021
|
out.push(id);
|
|
8012
8022
|
}
|
|
@@ -8014,7 +8024,7 @@ function requirePositiveIds(ids, label) {
|
|
|
8014
8024
|
}
|
|
8015
8025
|
async function whoAmI(_resource, userName, http) {
|
|
8016
8026
|
const user = userName.trim();
|
|
8017
|
-
if (user === "") throw new (0,
|
|
8027
|
+
if (user === "") throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("whoAmI: the configured UserName is empty");
|
|
8018
8028
|
const value = user.includes("@") ? _nullishCoalesce(user.split("@")[0], () => ( "")) : user;
|
|
8019
8029
|
const res = await http.request({
|
|
8020
8030
|
method: "POST",
|
|
@@ -8023,11 +8033,11 @@ async function whoAmI(_resource, userName, http) {
|
|
|
8023
8033
|
body: { MaxRecords: 2, filter: [{ field: "userName", op: "eq", value }] },
|
|
8024
8034
|
operation: "resources.whoAmI"
|
|
8025
8035
|
});
|
|
8026
|
-
const matches =
|
|
8036
|
+
const matches = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
|
|
8027
8037
|
if (matches.length === 0) return null;
|
|
8028
8038
|
if (matches.length > 1) {
|
|
8029
8039
|
const ids = matches.map((m) => m.id).filter((id) => typeof id === "number");
|
|
8030
|
-
throw new (0,
|
|
8040
|
+
throw new (0, _chunkKB2ANVVRcjs.ResolutionError)(
|
|
8031
8041
|
`whoAmI: "${value}" is ambiguous (matched ${matches.length} resources)`,
|
|
8032
8042
|
{ code: "RESOLUTION_AMBIGUOUS", resourceIds: ids }
|
|
8033
8043
|
);
|
|
@@ -8036,9 +8046,9 @@ async function whoAmI(_resource, userName, http) {
|
|
|
8036
8046
|
}
|
|
8037
8047
|
async function transferOwnership(_resource, companyIds, destinationResourceId, http, opts) {
|
|
8038
8048
|
const ids = requirePositiveIds(companyIds, "transferOwnership");
|
|
8039
|
-
const destination =
|
|
8049
|
+
const destination = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, destinationResourceId, "destinationResourceId");
|
|
8040
8050
|
if (typeof destination === "number" && destination < 1) {
|
|
8041
|
-
throw new (0,
|
|
8051
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("transferOwnership: destinationResourceId must be a positive integer");
|
|
8042
8052
|
}
|
|
8043
8053
|
const dryRun = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _51 => _51.dryRun]), () => ( true));
|
|
8044
8054
|
const changes = [];
|
|
@@ -8050,7 +8060,7 @@ async function transferOwnership(_resource, companyIds, destinationResourceId, h
|
|
|
8050
8060
|
path: `/V1.0/Companies/${id}`,
|
|
8051
8061
|
operation: "resources.transferOwnership"
|
|
8052
8062
|
});
|
|
8053
|
-
const company =
|
|
8063
|
+
const company = _chunkKB2ANVVRcjs.unwrapItem.call(void 0, res, id);
|
|
8054
8064
|
const current = typeof company.ownerResourceID === "number" ? company.ownerResourceID : null;
|
|
8055
8065
|
changes.push({ id, fromOwnerResourceID: current, toOwnerResourceID: destination });
|
|
8056
8066
|
if (!dryRun) {
|
|
@@ -8060,11 +8070,11 @@ async function transferOwnership(_resource, companyIds, destinationResourceId, h
|
|
|
8060
8070
|
body: { id, ownerResourceID: destination },
|
|
8061
8071
|
operation: "resources.transferOwnership"
|
|
8062
8072
|
});
|
|
8063
|
-
|
|
8073
|
+
_chunkKB2ANVVRcjs.unwrapOperation.call(void 0, update);
|
|
8064
8074
|
applied.push(id);
|
|
8065
8075
|
}
|
|
8066
8076
|
} catch (err) {
|
|
8067
|
-
if (!dryRun && err instanceof
|
|
8077
|
+
if (!dryRun && err instanceof _chunkKB2ANVVRcjs.AutotaskError) {
|
|
8068
8078
|
err.resourceIds = [id];
|
|
8069
8079
|
err.suggestedAction = `Partial transfer: ${applied.length} of ${ids.length} companies were re-owned (ids: ${applied.join(", ") || "none"}); id ${id} failed. Re-run transferOwnership for the remaining ids (from ${id} on).`;
|
|
8070
8080
|
}
|
|
@@ -8074,7 +8084,7 @@ async function transferOwnership(_resource, companyIds, destinationResourceId, h
|
|
|
8074
8084
|
if (dryRun) {
|
|
8075
8085
|
const anyChange = changes.some((c) => c.fromOwnerResourceID !== c.toOwnerResourceID);
|
|
8076
8086
|
return {
|
|
8077
|
-
...
|
|
8087
|
+
..._chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
|
|
8078
8088
|
operation: "resources.transferOwnership",
|
|
8079
8089
|
method: "PUT",
|
|
8080
8090
|
path: "/V1.0/Companies",
|
|
@@ -8098,7 +8108,7 @@ async function transferOwnership(_resource, companyIds, destinationResourceId, h
|
|
|
8098
8108
|
}
|
|
8099
8109
|
|
|
8100
8110
|
// src/resources/resources.ts
|
|
8101
|
-
var ResourcesResource = class extends
|
|
8111
|
+
var ResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8102
8112
|
|
|
8103
8113
|
constructor(http, clientConfig, pageSize) {
|
|
8104
8114
|
super(http, {
|
|
@@ -8171,7 +8181,7 @@ var ResourcesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
8171
8181
|
|
|
8172
8182
|
// src/resources/special/resource_time_off_additional.ts
|
|
8173
8183
|
async function getByResource(_resource, resourceId, http) {
|
|
8174
|
-
const numericResource =
|
|
8184
|
+
const numericResource = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, resourceId, "resourceId");
|
|
8175
8185
|
const res = await http.request({
|
|
8176
8186
|
method: "GET",
|
|
8177
8187
|
path: `/V1.0/Resources/${numericResource}/TimeOffAdditional`,
|
|
@@ -8185,11 +8195,11 @@ async function getByResource(_resource, resourceId, http) {
|
|
|
8185
8195
|
if (typeof item === "object" && !Array.isArray(item)) return [item];
|
|
8186
8196
|
}
|
|
8187
8197
|
}
|
|
8188
|
-
return
|
|
8198
|
+
return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, "resource_time_off_additional.getByResource").items;
|
|
8189
8199
|
}
|
|
8190
8200
|
|
|
8191
8201
|
// src/resources/resource_time_off_additional.ts
|
|
8192
|
-
var ResourceTimeOffAdditionalResource = class extends
|
|
8202
|
+
var ResourceTimeOffAdditionalResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8193
8203
|
constructor(http, pageSize) {
|
|
8194
8204
|
super(http, {
|
|
8195
8205
|
key: "resource_time_off_additional",
|
|
@@ -8228,7 +8238,7 @@ var ResourceTimeOffAdditionalResource = class extends _chunkIHRXVIUUcjs.BaseReso
|
|
|
8228
8238
|
};
|
|
8229
8239
|
|
|
8230
8240
|
// src/resources/resource_time_off_approvers.ts
|
|
8231
|
-
var ResourceTimeOffApproversResource = class extends
|
|
8241
|
+
var ResourceTimeOffApproversResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8232
8242
|
constructor(http, pageSize) {
|
|
8233
8243
|
super(http, {
|
|
8234
8244
|
key: "resource_time_off_approvers",
|
|
@@ -8271,29 +8281,29 @@ var ResourceTimeOffApproversResource = class extends _chunkIHRXVIUUcjs.BaseResou
|
|
|
8271
8281
|
|
|
8272
8282
|
// src/resources/special/resource_time_off_balances.ts
|
|
8273
8283
|
async function getByResource2(_resource, resourceId, http) {
|
|
8274
|
-
const numericResource =
|
|
8284
|
+
const numericResource = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, resourceId, "resourceId");
|
|
8275
8285
|
const res = await http.request({
|
|
8276
8286
|
method: "GET",
|
|
8277
8287
|
path: `/V1.0/Resources/${numericResource}/TimeOffBalances`,
|
|
8278
8288
|
operation: "resource_time_off_balances.getByResource"
|
|
8279
8289
|
});
|
|
8280
|
-
return
|
|
8290
|
+
return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, "resource_time_off_balances.getByResource").items;
|
|
8281
8291
|
}
|
|
8282
8292
|
async function getByYear(_resource, resourceId, year, http) {
|
|
8283
|
-
const numericResource =
|
|
8293
|
+
const numericResource = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, resourceId, "resourceId");
|
|
8284
8294
|
if (!Number.isSafeInteger(year) || year < 1) {
|
|
8285
|
-
throw new (0,
|
|
8295
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("getByYear: year must be a positive integer");
|
|
8286
8296
|
}
|
|
8287
8297
|
const res = await http.request({
|
|
8288
8298
|
method: "GET",
|
|
8289
8299
|
path: `/V1.0/Resources/${numericResource}/TimeOffBalances/${year}`,
|
|
8290
8300
|
operation: "resource_time_off_balances.getByYear"
|
|
8291
8301
|
});
|
|
8292
|
-
return
|
|
8302
|
+
return _chunkKB2ANVVRcjs.unwrapItem.call(void 0, res, year, "resource_time_off_balances.getByYear");
|
|
8293
8303
|
}
|
|
8294
8304
|
|
|
8295
8305
|
// src/resources/resource_time_off_balances.ts
|
|
8296
|
-
var ResourceTimeOffBalancesResource = class extends
|
|
8306
|
+
var ResourceTimeOffBalancesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8297
8307
|
constructor(http, pageSize) {
|
|
8298
8308
|
super(http, {
|
|
8299
8309
|
key: "resource_time_off_balances",
|
|
@@ -8331,7 +8341,7 @@ var ResourceTimeOffBalancesResource = class extends _chunkIHRXVIUUcjs.BaseResour
|
|
|
8331
8341
|
};
|
|
8332
8342
|
|
|
8333
8343
|
// src/resources/roles.ts
|
|
8334
|
-
var RolesResource = class extends
|
|
8344
|
+
var RolesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8335
8345
|
constructor(http, pageSize) {
|
|
8336
8346
|
super(http, {
|
|
8337
8347
|
key: "roles",
|
|
@@ -8398,7 +8408,7 @@ var RolesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
8398
8408
|
};
|
|
8399
8409
|
|
|
8400
8410
|
// src/resources/service_calls.ts
|
|
8401
|
-
var ServiceCallsResource = class extends
|
|
8411
|
+
var ServiceCallsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8402
8412
|
constructor(http, pageSize) {
|
|
8403
8413
|
super(http, {
|
|
8404
8414
|
key: "service_calls",
|
|
@@ -8467,7 +8477,7 @@ var ServiceCallsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
8467
8477
|
};
|
|
8468
8478
|
|
|
8469
8479
|
// src/resources/service_call_task_resources.ts
|
|
8470
|
-
var ServiceCallTaskResourcesResource = class extends
|
|
8480
|
+
var ServiceCallTaskResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8471
8481
|
constructor(http, pageSize) {
|
|
8472
8482
|
super(http, {
|
|
8473
8483
|
key: "service_call_task_resources",
|
|
@@ -8524,7 +8534,7 @@ var ServiceCallTaskResourcesResource = class extends _chunkIHRXVIUUcjs.BaseResou
|
|
|
8524
8534
|
};
|
|
8525
8535
|
|
|
8526
8536
|
// src/resources/service_call_tasks.ts
|
|
8527
|
-
var ServiceCallTasksResource = class extends
|
|
8537
|
+
var ServiceCallTasksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8528
8538
|
constructor(http, pageSize) {
|
|
8529
8539
|
super(http, {
|
|
8530
8540
|
key: "service_call_tasks",
|
|
@@ -8581,7 +8591,7 @@ var ServiceCallTasksResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
8581
8591
|
};
|
|
8582
8592
|
|
|
8583
8593
|
// src/resources/service_call_ticket_resources.ts
|
|
8584
|
-
var ServiceCallTicketResourcesResource = class extends
|
|
8594
|
+
var ServiceCallTicketResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8585
8595
|
constructor(http, pageSize) {
|
|
8586
8596
|
super(http, {
|
|
8587
8597
|
key: "service_call_ticket_resources",
|
|
@@ -8638,7 +8648,7 @@ var ServiceCallTicketResourcesResource = class extends _chunkIHRXVIUUcjs.BaseRes
|
|
|
8638
8648
|
};
|
|
8639
8649
|
|
|
8640
8650
|
// src/resources/service_call_tickets.ts
|
|
8641
|
-
var ServiceCallTicketsResource = class extends
|
|
8651
|
+
var ServiceCallTicketsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8642
8652
|
constructor(http, pageSize) {
|
|
8643
8653
|
super(http, {
|
|
8644
8654
|
key: "service_call_tickets",
|
|
@@ -8695,7 +8705,7 @@ var ServiceCallTicketsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
8695
8705
|
};
|
|
8696
8706
|
|
|
8697
8707
|
// src/resources/service_level_agreement_results.ts
|
|
8698
|
-
var ServiceLevelAgreementResultsResource = class extends
|
|
8708
|
+
var ServiceLevelAgreementResultsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8699
8709
|
constructor(http, pageSize) {
|
|
8700
8710
|
super(http, {
|
|
8701
8711
|
key: "service_level_agreement_results",
|
|
@@ -8734,7 +8744,7 @@ var ServiceLevelAgreementResultsResource = class extends _chunkIHRXVIUUcjs.BaseR
|
|
|
8734
8744
|
};
|
|
8735
8745
|
|
|
8736
8746
|
// src/resources/services.ts
|
|
8737
|
-
var ServicesResource = class extends
|
|
8747
|
+
var ServicesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8738
8748
|
constructor(http, pageSize) {
|
|
8739
8749
|
super(http, {
|
|
8740
8750
|
key: "services",
|
|
@@ -8802,7 +8812,7 @@ var ServicesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
8802
8812
|
};
|
|
8803
8813
|
|
|
8804
8814
|
// src/resources/skills.ts
|
|
8805
|
-
var SkillsResource = class extends
|
|
8815
|
+
var SkillsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8806
8816
|
constructor(http, pageSize) {
|
|
8807
8817
|
super(http, {
|
|
8808
8818
|
key: "skills",
|
|
@@ -8846,7 +8856,7 @@ var SkillsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
8846
8856
|
};
|
|
8847
8857
|
|
|
8848
8858
|
// src/resources/subscription_periods.ts
|
|
8849
|
-
var SubscriptionPeriodsResource = class extends
|
|
8859
|
+
var SubscriptionPeriodsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8850
8860
|
constructor(http, pageSize) {
|
|
8851
8861
|
super(http, {
|
|
8852
8862
|
key: "subscription_periods",
|
|
@@ -8885,7 +8895,7 @@ var SubscriptionPeriodsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
8885
8895
|
};
|
|
8886
8896
|
|
|
8887
8897
|
// src/resources/subscriptions.ts
|
|
8888
|
-
var SubscriptionsResource = class extends
|
|
8898
|
+
var SubscriptionsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8889
8899
|
constructor(http, pageSize) {
|
|
8890
8900
|
super(http, {
|
|
8891
8901
|
key: "subscriptions",
|
|
@@ -8954,7 +8964,7 @@ var SubscriptionsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
8954
8964
|
};
|
|
8955
8965
|
|
|
8956
8966
|
// src/resources/survey_results.ts
|
|
8957
|
-
var SurveyResultsResource = class extends
|
|
8967
|
+
var SurveyResultsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8958
8968
|
constructor(http, pageSize) {
|
|
8959
8969
|
super(http, {
|
|
8960
8970
|
key: "survey_results",
|
|
@@ -8993,7 +9003,7 @@ var SurveyResultsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
8993
9003
|
};
|
|
8994
9004
|
|
|
8995
9005
|
// src/resources/surveys.ts
|
|
8996
|
-
var SurveysResource = class extends
|
|
9006
|
+
var SurveysResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
8997
9007
|
constructor(http, pageSize) {
|
|
8998
9008
|
super(http, {
|
|
8999
9009
|
key: "surveys",
|
|
@@ -9037,7 +9047,7 @@ var SurveysResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
9037
9047
|
};
|
|
9038
9048
|
|
|
9039
9049
|
// src/resources/tag_aliases.ts
|
|
9040
|
-
var TagAliasesResource = class extends
|
|
9050
|
+
var TagAliasesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9041
9051
|
constructor(http, pageSize) {
|
|
9042
9052
|
super(http, {
|
|
9043
9053
|
key: "tag_aliases",
|
|
@@ -9094,7 +9104,7 @@ var TagAliasesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
9094
9104
|
};
|
|
9095
9105
|
|
|
9096
9106
|
// src/resources/tag_groups.ts
|
|
9097
|
-
var TagGroupsResource = class extends
|
|
9107
|
+
var TagGroupsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9098
9108
|
constructor(http, pageSize) {
|
|
9099
9109
|
super(http, {
|
|
9100
9110
|
key: "tag_groups",
|
|
@@ -9163,7 +9173,7 @@ var TagGroupsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
9163
9173
|
};
|
|
9164
9174
|
|
|
9165
9175
|
// src/resources/tags.ts
|
|
9166
|
-
var TagsResource = class extends
|
|
9176
|
+
var TagsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9167
9177
|
constructor(http, pageSize) {
|
|
9168
9178
|
super(http, {
|
|
9169
9179
|
key: "tags",
|
|
@@ -9232,7 +9242,7 @@ var TagsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
9232
9242
|
};
|
|
9233
9243
|
|
|
9234
9244
|
// src/resources/task_secondary_resources.ts
|
|
9235
|
-
var TaskSecondaryResourcesResource = class extends
|
|
9245
|
+
var TaskSecondaryResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9236
9246
|
constructor(http, pageSize) {
|
|
9237
9247
|
super(http, {
|
|
9238
9248
|
key: "task_secondary_resources",
|
|
@@ -9289,7 +9299,7 @@ var TaskSecondaryResourcesResource = class extends _chunkIHRXVIUUcjs.BaseResourc
|
|
|
9289
9299
|
};
|
|
9290
9300
|
|
|
9291
9301
|
// src/resources/tasks.ts
|
|
9292
|
-
var TasksResource = class extends
|
|
9302
|
+
var TasksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9293
9303
|
constructor(http, pageSize) {
|
|
9294
9304
|
super(http, {
|
|
9295
9305
|
key: "tasks",
|
|
@@ -9377,7 +9387,7 @@ var ThresholdInformationResource = class {
|
|
|
9377
9387
|
};
|
|
9378
9388
|
|
|
9379
9389
|
// src/resources/ticket_additional_configuration_items.ts
|
|
9380
|
-
var TicketAdditionalConfigurationItemsResource = class extends
|
|
9390
|
+
var TicketAdditionalConfigurationItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9381
9391
|
constructor(http, pageSize) {
|
|
9382
9392
|
super(http, {
|
|
9383
9393
|
key: "ticket_additional_configuration_items",
|
|
@@ -9434,7 +9444,7 @@ var TicketAdditionalConfigurationItemsResource = class extends _chunkIHRXVIUUcjs
|
|
|
9434
9444
|
};
|
|
9435
9445
|
|
|
9436
9446
|
// src/resources/ticket_additional_contacts.ts
|
|
9437
|
-
var TicketAdditionalContactsResource = class extends
|
|
9447
|
+
var TicketAdditionalContactsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9438
9448
|
constructor(http, pageSize) {
|
|
9439
9449
|
super(http, {
|
|
9440
9450
|
key: "ticket_additional_contacts",
|
|
@@ -9491,7 +9501,7 @@ var TicketAdditionalContactsResource = class extends _chunkIHRXVIUUcjs.BaseResou
|
|
|
9491
9501
|
};
|
|
9492
9502
|
|
|
9493
9503
|
// src/resources/ticket_attachments.ts
|
|
9494
|
-
var TicketAttachmentsResource = class extends
|
|
9504
|
+
var TicketAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9495
9505
|
constructor(http, pageSize) {
|
|
9496
9506
|
super(http, {
|
|
9497
9507
|
key: "ticket_attachments",
|
|
@@ -9553,7 +9563,7 @@ var TicketAttachmentsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
9553
9563
|
};
|
|
9554
9564
|
|
|
9555
9565
|
// src/resources/ticket_categories.ts
|
|
9556
|
-
var TicketCategoriesResource = class extends
|
|
9566
|
+
var TicketCategoriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9557
9567
|
constructor(http, pageSize) {
|
|
9558
9568
|
super(http, {
|
|
9559
9569
|
key: "ticket_categories",
|
|
@@ -9612,7 +9622,7 @@ var TicketCategoriesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
9612
9622
|
};
|
|
9613
9623
|
|
|
9614
9624
|
// src/resources/ticket_category_field_defaults.ts
|
|
9615
|
-
var TicketCategoryFieldDefaultsResource = class extends
|
|
9625
|
+
var TicketCategoryFieldDefaultsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9616
9626
|
constructor(http, pageSize) {
|
|
9617
9627
|
super(http, {
|
|
9618
9628
|
key: "ticket_category_field_defaults",
|
|
@@ -9654,7 +9664,7 @@ var TicketCategoryFieldDefaultsResource = class extends _chunkIHRXVIUUcjs.BaseRe
|
|
|
9654
9664
|
};
|
|
9655
9665
|
|
|
9656
9666
|
// src/resources/ticket_change_request_approvals.ts
|
|
9657
|
-
var TicketChangeRequestApprovalsResource = class extends
|
|
9667
|
+
var TicketChangeRequestApprovalsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9658
9668
|
constructor(http, pageSize) {
|
|
9659
9669
|
super(http, {
|
|
9660
9670
|
key: "ticket_change_request_approvals",
|
|
@@ -9711,7 +9721,7 @@ var TicketChangeRequestApprovalsResource = class extends _chunkIHRXVIUUcjs.BaseR
|
|
|
9711
9721
|
};
|
|
9712
9722
|
|
|
9713
9723
|
// src/resources/ticket_charges.ts
|
|
9714
|
-
var TicketChargesResource = class extends
|
|
9724
|
+
var TicketChargesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9715
9725
|
constructor(http, pageSize) {
|
|
9716
9726
|
super(http, {
|
|
9717
9727
|
key: "ticket_charges",
|
|
@@ -9782,7 +9792,7 @@ var TicketChargesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
9782
9792
|
};
|
|
9783
9793
|
|
|
9784
9794
|
// src/resources/ticket_checklist_items.ts
|
|
9785
|
-
var TicketChecklistItemsResource = class extends
|
|
9795
|
+
var TicketChecklistItemsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9786
9796
|
constructor(http, pageSize) {
|
|
9787
9797
|
super(http, {
|
|
9788
9798
|
key: "ticket_checklist_items",
|
|
@@ -9848,7 +9858,7 @@ var TicketChecklistItemsResource = class extends _chunkIHRXVIUUcjs.BaseResource
|
|
|
9848
9858
|
};
|
|
9849
9859
|
|
|
9850
9860
|
// src/resources/ticket_checklist_libraries.ts
|
|
9851
|
-
var TicketChecklistLibrariesResource = class extends
|
|
9861
|
+
var TicketChecklistLibrariesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9852
9862
|
constructor(http, pageSize) {
|
|
9853
9863
|
super(http, {
|
|
9854
9864
|
key: "ticket_checklist_libraries",
|
|
@@ -9872,9 +9882,9 @@ var TicketChecklistLibrariesResource = class extends _chunkIHRXVIUUcjs.BaseResou
|
|
|
9872
9882
|
* `dryRun: true` returns the pinned envelope (document existence is unverifiable in the MVP
|
|
9873
9883
|
* surface — no documents read op — and never issues the POST). */
|
|
9874
9884
|
async attachToDocument(documentID, data, opts = {}) {
|
|
9875
|
-
const n =
|
|
9885
|
+
const n = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, documentID, "documentID");
|
|
9876
9886
|
if (opts.dryRun === true) {
|
|
9877
|
-
return
|
|
9887
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
|
|
9878
9888
|
operation: "ticket_checklist_libraries.attachToDocument",
|
|
9879
9889
|
method: "POST",
|
|
9880
9890
|
path: `/V1.0/Documents/${n}/ChecklistLibraries`,
|
|
@@ -9891,7 +9901,7 @@ var TicketChecklistLibrariesResource = class extends _chunkIHRXVIUUcjs.BaseResou
|
|
|
9891
9901
|
body: { ...data },
|
|
9892
9902
|
operation: "ticket_checklist_libraries.attachToDocument"
|
|
9893
9903
|
});
|
|
9894
|
-
return
|
|
9904
|
+
return _chunkKB2ANVVRcjs.unwrapOperation.call(void 0, res);
|
|
9895
9905
|
}
|
|
9896
9906
|
/** Resolve a TicketChecklistLibrary from a numeric id (or, where the vendor indexes a primary text field,
|
|
9897
9907
|
* from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
|
|
@@ -9907,7 +9917,7 @@ var TicketChecklistLibrariesResource = class extends _chunkIHRXVIUUcjs.BaseResou
|
|
|
9907
9917
|
};
|
|
9908
9918
|
|
|
9909
9919
|
// src/resources/ticket_history.ts
|
|
9910
|
-
var TicketHistoryResource = class extends
|
|
9920
|
+
var TicketHistoryResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9911
9921
|
constructor(http, pageSize) {
|
|
9912
9922
|
super(http, {
|
|
9913
9923
|
key: "ticket_history",
|
|
@@ -9946,7 +9956,7 @@ var TicketHistoryResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
9946
9956
|
};
|
|
9947
9957
|
|
|
9948
9958
|
// src/resources/ticket_note_attachments.ts
|
|
9949
|
-
var TicketNoteAttachmentsResource = class extends
|
|
9959
|
+
var TicketNoteAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
9950
9960
|
constructor(http, pageSize) {
|
|
9951
9961
|
super(http, {
|
|
9952
9962
|
key: "ticket_note_attachments",
|
|
@@ -10008,7 +10018,7 @@ var TicketNoteAttachmentsResource = class extends _chunkIHRXVIUUcjs.BaseResource
|
|
|
10008
10018
|
};
|
|
10009
10019
|
|
|
10010
10020
|
// src/resources/ticket_notes.ts
|
|
10011
|
-
var TicketNotesResource = class extends
|
|
10021
|
+
var TicketNotesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
10012
10022
|
constructor(http, pageSize) {
|
|
10013
10023
|
super(http, {
|
|
10014
10024
|
key: "ticket_notes",
|
|
@@ -10067,7 +10077,7 @@ var TicketNotesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
10067
10077
|
};
|
|
10068
10078
|
|
|
10069
10079
|
// src/resources/ticket_note_webhooks.ts
|
|
10070
|
-
var TicketNoteWebhooksResource = class extends
|
|
10080
|
+
var TicketNoteWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
10071
10081
|
constructor(http, pageSize) {
|
|
10072
10082
|
super(http, {
|
|
10073
10083
|
key: "ticket_note_webhooks",
|
|
@@ -10143,7 +10153,7 @@ var TicketNoteWebhooksResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
10143
10153
|
};
|
|
10144
10154
|
|
|
10145
10155
|
// src/resources/ticket_secondary_resources.ts
|
|
10146
|
-
var TicketSecondaryResourcesResource = class extends
|
|
10156
|
+
var TicketSecondaryResourcesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
10147
10157
|
constructor(http, pageSize) {
|
|
10148
10158
|
super(http, {
|
|
10149
10159
|
key: "ticket_secondary_resources",
|
|
@@ -10210,9 +10220,9 @@ async function fetchTicket(http, id, operation) {
|
|
|
10210
10220
|
});
|
|
10211
10221
|
const body = res;
|
|
10212
10222
|
if (body === null || !("item" in body)) {
|
|
10213
|
-
throw new (0,
|
|
10223
|
+
throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`Ticket ${id} not found (unexpected envelope shape)`, { resourceIds: [id] });
|
|
10214
10224
|
}
|
|
10215
|
-
if (body.item === null || body.item === void 0) throw new (0,
|
|
10225
|
+
if (body.item === null || body.item === void 0) throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`Ticket ${id} not found`, { resourceIds: [id] });
|
|
10216
10226
|
return body.item;
|
|
10217
10227
|
}
|
|
10218
10228
|
async function ticketQueryItems(http, path, filter, maxRecords, operation) {
|
|
@@ -10223,29 +10233,29 @@ async function ticketQueryItems(http, path, filter, maxRecords, operation) {
|
|
|
10223
10233
|
body: { MaxRecords: maxRecords, filter },
|
|
10224
10234
|
operation
|
|
10225
10235
|
});
|
|
10226
|
-
return
|
|
10236
|
+
return _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res).items;
|
|
10227
10237
|
}
|
|
10228
10238
|
function isRouteUnavailable(err) {
|
|
10229
|
-
return
|
|
10239
|
+
return _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) && (err.httpStatus === 404 || err.httpStatus === 500);
|
|
10230
10240
|
}
|
|
10231
10241
|
function routeFact(route, path, err) {
|
|
10232
10242
|
return {
|
|
10233
10243
|
route,
|
|
10234
10244
|
path,
|
|
10235
|
-
httpStatus:
|
|
10245
|
+
httpStatus: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) && typeof err.httpStatus === "number" ? err.httpStatus : null
|
|
10236
10246
|
};
|
|
10237
10247
|
}
|
|
10238
10248
|
function childDeclaresQuery(resourceKey) {
|
|
10239
|
-
return
|
|
10249
|
+
return _chunkCXXNONRPcjs.CAPABILITIES.some(
|
|
10240
10250
|
(c) => c.id === `${resourceKey}.query` && (c.status === "implemented" || c.status === "tested")
|
|
10241
10251
|
);
|
|
10242
10252
|
}
|
|
10243
10253
|
function planScopedPath(resourceKey, ticketId) {
|
|
10244
10254
|
if (!childDeclaresQuery(resourceKey)) return null;
|
|
10245
|
-
const entry =
|
|
10255
|
+
const entry = _chunkKB2ANVVRcjs.RELATIONSHIP_MAP[resourceKey];
|
|
10246
10256
|
const parent = entry === void 0 ? null : entry.parent;
|
|
10247
10257
|
if (parent === null || parent.resource !== "tickets" || parent.segment === null || parent.field === null) return null;
|
|
10248
|
-
const parentPath = _optionalChain([
|
|
10258
|
+
const parentPath = _optionalChain([_chunkKB2ANVVRcjs.RELATIONSHIP_MAP, 'access', _52 => _52[parent.resource], 'optionalAccess', _53 => _53.path]);
|
|
10249
10259
|
if (parentPath === null || parentPath === void 0) return null;
|
|
10250
10260
|
return `/V1.0/${parentPath}/${ticketId}/${parent.segment}`;
|
|
10251
10261
|
}
|
|
@@ -10284,14 +10294,14 @@ async function scopedCollectionRead(http, startPath, limit, operation, accept) {
|
|
|
10284
10294
|
break;
|
|
10285
10295
|
}
|
|
10286
10296
|
const body = await http.request({ method: "GET", path: target, operation });
|
|
10287
|
-
const { items: pageItems, pageDetails } =
|
|
10297
|
+
const { items: pageItems, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, body, operation);
|
|
10288
10298
|
nextCursor = pageDetails.nextPageUrl;
|
|
10289
10299
|
pages += 1;
|
|
10290
10300
|
const window = pageItems.slice(0, Math.max(0, limit - items.length));
|
|
10291
10301
|
for (const row of window) if (accept(row)) items.push(row);
|
|
10292
10302
|
if (items.length >= limit) break;
|
|
10293
10303
|
if (nextCursor === null || pageItems.length === 0) break;
|
|
10294
|
-
target =
|
|
10304
|
+
target = _chunkKB2ANVVRcjs.cursorToPath.call(void 0, http.baseUrl, nextCursor);
|
|
10295
10305
|
}
|
|
10296
10306
|
const capped = items.length >= limit || guard && nextCursor !== null;
|
|
10297
10307
|
return { items, capped };
|
|
@@ -10325,7 +10335,7 @@ function truncate(text, limit) {
|
|
|
10325
10335
|
}
|
|
10326
10336
|
async function slaHealthCheck(_resource, id, opts = {}, http) {
|
|
10327
10337
|
void opts;
|
|
10328
|
-
const ticketId =
|
|
10338
|
+
const ticketId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
|
|
10329
10339
|
await fetchTicket(http, ticketId, "tickets.slaHealthCheck");
|
|
10330
10340
|
const rows = await ticketQueryItems(
|
|
10331
10341
|
http,
|
|
@@ -10350,9 +10360,9 @@ async function slaHealthCheck(_resource, id, opts = {}, http) {
|
|
|
10350
10360
|
async function summary(_resource, id, opts = {}, http) {
|
|
10351
10361
|
const limit = opts.summaryTextLimit === void 0 ? 500 : Math.trunc(opts.summaryTextLimit);
|
|
10352
10362
|
if (!Number.isInteger(limit) || limit < 1) {
|
|
10353
|
-
throw new (0,
|
|
10363
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`summaryTextLimit must be an integer >= 1 (got ${String(opts.summaryTextLimit)})`);
|
|
10354
10364
|
}
|
|
10355
|
-
const ticketId =
|
|
10365
|
+
const ticketId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
|
|
10356
10366
|
const ticket = await fetchTicket(http, ticketId, "tickets.summary");
|
|
10357
10367
|
const desc = truncate(ticket.description, limit);
|
|
10358
10368
|
const now = _nullishCoalesce(opts.now, () => ( /* @__PURE__ */ new Date()));
|
|
@@ -10379,13 +10389,13 @@ async function summary(_resource, id, opts = {}, http) {
|
|
|
10379
10389
|
}
|
|
10380
10390
|
async function timeline(_resource, id, opts = {}, http) {
|
|
10381
10391
|
const limit = opts.limit === void 0 ? 100 : Math.trunc(opts.limit);
|
|
10382
|
-
if (!Number.isInteger(limit) || limit < 1) throw new (0,
|
|
10392
|
+
if (!Number.isInteger(limit) || limit < 1) throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`limit must be an integer >= 1 (got ${String(opts.limit)})`);
|
|
10383
10393
|
const bounded = Math.min(limit, 500);
|
|
10384
10394
|
const textLimit = opts.textLimit === void 0 ? 500 : Math.trunc(opts.textLimit);
|
|
10385
10395
|
if (!Number.isInteger(textLimit) || textLimit < 1) {
|
|
10386
|
-
throw new (0,
|
|
10396
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`textLimit must be an integer >= 1 (got ${String(opts.textLimit)})`);
|
|
10387
10397
|
}
|
|
10388
|
-
const ticketId =
|
|
10398
|
+
const ticketId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
|
|
10389
10399
|
await fetchTicket(http, ticketId, "tickets.timeline");
|
|
10390
10400
|
const dateFilters = (field) => {
|
|
10391
10401
|
const f = [{ field: "ticketID", op: "eq", value: ticketId }];
|
|
@@ -10472,14 +10482,14 @@ function isPositiveInt(v) {
|
|
|
10472
10482
|
return typeof v === "number" && Number.isInteger(v) && v > 0;
|
|
10473
10483
|
}
|
|
10474
10484
|
function namedVendorFields(err) {
|
|
10475
|
-
if (!
|
|
10476
|
-
const entries = _nullishCoalesce(
|
|
10485
|
+
if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) return [];
|
|
10486
|
+
const entries = _nullishCoalesce(_chunkKB2ANVVRcjs.parseVendorErrors.call(void 0, err.vendorError), () => ( []));
|
|
10477
10487
|
const out = /* @__PURE__ */ new Set();
|
|
10478
10488
|
for (const e of entries) if (e.field !== void 0) out.add(e.field);
|
|
10479
10489
|
return [...out];
|
|
10480
10490
|
}
|
|
10481
10491
|
function vendorDetailOf(err) {
|
|
10482
|
-
return
|
|
10492
|
+
return _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? _chunkKB2ANVVRcjs.formatVendorDetail.call(void 0, err.vendorError) : void 0;
|
|
10483
10493
|
}
|
|
10484
10494
|
async function fetchItem(http, path, operation) {
|
|
10485
10495
|
const res = await http.request({ method: "GET", path, operation });
|
|
@@ -10500,8 +10510,8 @@ function operationId(res) {
|
|
|
10500
10510
|
return typeof body.itemId === "number" ? body.itemId : typeof body.id === "number" ? body.id : void 0;
|
|
10501
10511
|
}
|
|
10502
10512
|
function discoveryMerge(err, body, defaults) {
|
|
10503
|
-
if (!
|
|
10504
|
-
const entries =
|
|
10513
|
+
if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) return null;
|
|
10514
|
+
const entries = _chunkKB2ANVVRcjs.parseVendorErrors.call(void 0, err.vendorError);
|
|
10505
10515
|
if (entries === void 0) return null;
|
|
10506
10516
|
for (const entry of entries) {
|
|
10507
10517
|
const field = entry.field;
|
|
@@ -10513,7 +10523,7 @@ function discoveryMerge(err, body, defaults) {
|
|
|
10513
10523
|
}
|
|
10514
10524
|
function stepErrorText(code, err) {
|
|
10515
10525
|
const detail = vendorDetailOf(err);
|
|
10516
|
-
const base =
|
|
10526
|
+
const base = _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.message : String(err);
|
|
10517
10527
|
return detail ? `${code}: ${detail}` : `${code}: ${base}`;
|
|
10518
10528
|
}
|
|
10519
10529
|
var DEFAULT_TICKET_PRIORITY = 3;
|
|
@@ -10522,7 +10532,7 @@ var DEFAULT_NOTE_TYPE = 1;
|
|
|
10522
10532
|
var DEFAULT_PUBLISH = 1;
|
|
10523
10533
|
var PUBLISH_VALUES = /* @__PURE__ */ new Set([1, 2, 4]);
|
|
10524
10534
|
var SAFE_TICKET_CREATE_DEFAULTS = {};
|
|
10525
|
-
var QueueRequiredError = class extends
|
|
10535
|
+
var QueueRequiredError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
10526
10536
|
constructor(message, options = {}) {
|
|
10527
10537
|
super(message, {
|
|
10528
10538
|
code: "QUEUE_REQUIRED",
|
|
@@ -10533,13 +10543,13 @@ var QueueRequiredError = class extends _chunkIHRXVIUUcjs.AutotaskError {
|
|
|
10533
10543
|
this.name = "QueueRequiredError";
|
|
10534
10544
|
}
|
|
10535
10545
|
};
|
|
10536
|
-
var TicketResourceInvalidError = class extends
|
|
10546
|
+
var TicketResourceInvalidError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
10537
10547
|
constructor(message, options = {}) {
|
|
10538
10548
|
super(message, { code: "RESOURCE_INVALID", category: "validation", ...options });
|
|
10539
10549
|
this.name = "TicketResourceInvalidError";
|
|
10540
10550
|
}
|
|
10541
10551
|
};
|
|
10542
|
-
var TicketCreateValidationFailedError = class extends
|
|
10552
|
+
var TicketCreateValidationFailedError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
10543
10553
|
/** The vendor-named fields (empty when the 500 body named nothing parseable). */
|
|
10544
10554
|
|
|
10545
10555
|
constructor(message, vendorFields, options = {}) {
|
|
@@ -10549,43 +10559,43 @@ var TicketCreateValidationFailedError = class extends _chunkIHRXVIUUcjs.Autotask
|
|
|
10549
10559
|
}
|
|
10550
10560
|
};
|
|
10551
10561
|
async function openWithNoteAndAssign(resource, params, note, assign, opts, http) {
|
|
10552
|
-
const companyID =
|
|
10562
|
+
const companyID = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, _optionalChain([params, 'optionalAccess', _54 => _54.companyID]), "params.companyID");
|
|
10553
10563
|
const title = _optionalChain([params, 'optionalAccess', _55 => _55.title]);
|
|
10554
10564
|
if (typeof title !== "string" || title.trim() === "") {
|
|
10555
|
-
throw new (0,
|
|
10565
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("openWithNoteAndAssign: params.title is required (a non-empty string)", { operation: OP_OPEN });
|
|
10556
10566
|
}
|
|
10557
10567
|
const priority = _nullishCoalesce(params.priority, () => ( DEFAULT_TICKET_PRIORITY));
|
|
10558
10568
|
const status = _nullishCoalesce(params.status, () => ( DEFAULT_TICKET_STATUS));
|
|
10559
10569
|
if (!isPositiveInt(priority)) {
|
|
10560
|
-
throw new (0,
|
|
10570
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: params.priority must be a positive integer (got ${String(params.priority)})`, { operation: OP_OPEN });
|
|
10561
10571
|
}
|
|
10562
10572
|
if (!isPositiveInt(status)) {
|
|
10563
|
-
throw new (0,
|
|
10573
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: params.status must be a positive integer (got ${String(params.status)})`, { operation: OP_OPEN });
|
|
10564
10574
|
}
|
|
10565
10575
|
if (params.queueID !== void 0 && !isPositiveInt(params.queueID)) {
|
|
10566
|
-
throw new (0,
|
|
10576
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: params.queueID must be a positive integer (got ${String(params.queueID)})`, { operation: OP_OPEN });
|
|
10567
10577
|
}
|
|
10568
10578
|
if (note !== void 0) {
|
|
10569
10579
|
if (typeof note.description !== "string" || note.description.trim() === "") {
|
|
10570
|
-
throw new (0,
|
|
10580
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("openWithNoteAndAssign: note.description is required (a non-empty string)", { operation: OP_OPEN });
|
|
10571
10581
|
}
|
|
10572
10582
|
if (typeof note.title !== "string" || note.title.trim() === "") {
|
|
10573
|
-
throw new (0,
|
|
10583
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("openWithNoteAndAssign: note.title is required (a non-empty string) \u2014 the ww29 scoped note create 500s without it (S12-A live-verified: Missing Required Field: title; the S11-B proven note body is { title, description, noteType: 1, publish: 1 })", { operation: OP_OPEN });
|
|
10574
10584
|
}
|
|
10575
10585
|
if (note.noteType !== void 0 && !isPositiveInt(note.noteType)) {
|
|
10576
|
-
throw new (0,
|
|
10586
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: note.noteType must be a positive integer (got ${String(note.noteType)})`, { operation: OP_OPEN });
|
|
10577
10587
|
}
|
|
10578
10588
|
if (note.publish !== void 0 && !PUBLISH_VALUES.has(note.publish)) {
|
|
10579
|
-
throw new (0,
|
|
10589
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: note.publish must be an integer picklist value 1/2/4 (got ${String(note.publish)} \u2014 NOT a boolean)`, { operation: OP_OPEN });
|
|
10580
10590
|
}
|
|
10581
10591
|
}
|
|
10582
|
-
const assignee = assign === void 0 ? void 0 :
|
|
10592
|
+
const assignee = assign === void 0 ? void 0 : _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, assign.resourceID, "assign.resourceID");
|
|
10583
10593
|
if (assign !== void 0 && assignee !== void 0 && (typeof assignee === "number" ? assignee < 1 : false)) {
|
|
10584
|
-
throw new (0,
|
|
10594
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`openWithNoteAndAssign: assign.resourceID must be a positive integer (got ${String(assignee)})`, { operation: OP_OPEN });
|
|
10585
10595
|
}
|
|
10586
10596
|
const roleID = _optionalChain([assign, 'optionalAccess', _56 => _56.roleID]);
|
|
10587
10597
|
if (assign !== void 0 && !isPositiveInt(roleID)) {
|
|
10588
|
-
throw new (0,
|
|
10598
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("openWithNoteAndAssign: assign.roleID is required (a positive integer) \u2014 the ww29 vendor requires BOTH assignedResourceID and assignedResourceRoleID when assigning a resource (S12-A live-verified: Data violation: When assigning a Resource, you must assign both a assignedResourceID and assignedResourceRoleID)", { operation: OP_OPEN });
|
|
10589
10599
|
}
|
|
10590
10600
|
if (assign !== void 0 && assignee !== void 0) {
|
|
10591
10601
|
const rid = assignee;
|
|
@@ -10620,7 +10630,7 @@ async function openWithNoteAndAssign(resource, params, note, assign, opts, http)
|
|
|
10620
10630
|
if (assign !== void 0) {
|
|
10621
10631
|
warnings.push(`the assignment is the v0.6.0 MERGE update (unredacted GET + collection PUT, 2 wire) setting assignedResourceID ${String(assignee)} + assignedResourceRoleID ${String(roleID)} (the vendor requires both \u2014 S12-A live-verified); a failure lands in steps[] as ASSIGN_FAILED (the applied ticketId is still returned).`);
|
|
10622
10632
|
}
|
|
10623
|
-
return
|
|
10633
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
|
|
10624
10634
|
{
|
|
10625
10635
|
operation: OP_OPEN,
|
|
10626
10636
|
method: "POST",
|
|
@@ -10662,8 +10672,8 @@ async function openWithNoteAndAssign(resource, params, note, assign, opts, http)
|
|
|
10662
10672
|
`openWithNoteAndAssign: the vendor rejected the ticket create naming 'queueID' (the ww29 live-required set is { title, status, priority, companyID, queueID }) and the node never guesses a queue${detail ? ` \u2014 ${detail}` : ""}`,
|
|
10663
10673
|
{
|
|
10664
10674
|
operation: OP_OPEN,
|
|
10665
|
-
httpStatus:
|
|
10666
|
-
vendorError:
|
|
10675
|
+
httpStatus: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.httpStatus : void 0,
|
|
10676
|
+
vendorError: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.vendorError : void 0
|
|
10667
10677
|
}
|
|
10668
10678
|
);
|
|
10669
10679
|
}
|
|
@@ -10678,8 +10688,8 @@ async function openWithNoteAndAssign(resource, params, note, assign, opts, http)
|
|
|
10678
10688
|
named,
|
|
10679
10689
|
{
|
|
10680
10690
|
operation: OP_OPEN,
|
|
10681
|
-
httpStatus:
|
|
10682
|
-
vendorError:
|
|
10691
|
+
httpStatus: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.httpStatus : void 0,
|
|
10692
|
+
vendorError: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.vendorError : void 0,
|
|
10683
10693
|
resourceIds: [companyID]
|
|
10684
10694
|
}
|
|
10685
10695
|
);
|
|
@@ -10701,10 +10711,10 @@ async function openWithNoteAndAssign(resource, params, note, assign, opts, http)
|
|
|
10701
10711
|
try {
|
|
10702
10712
|
const current = await fetchItemUnredacted(http, `/V1.0/Tickets/${ticketId}`, OP_OPEN);
|
|
10703
10713
|
if (current === null) {
|
|
10704
|
-
throw new (0,
|
|
10714
|
+
throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`openWithNoteAndAssign: ticket ${ticketId} vanished between the create and the assign merge read`, { operation: OP_OPEN, resourceIds: [ticketId] });
|
|
10705
10715
|
}
|
|
10706
10716
|
ticketNumber = typeof current.ticketNumber === "string" ? current.ticketNumber : null;
|
|
10707
|
-
const merged =
|
|
10717
|
+
const merged = _chunkKB2ANVVRcjs.mergePartialBody.call(void 0, current, { id: ticketId, assignedResourceID: assignee, assignedResourceRoleID: roleID });
|
|
10708
10718
|
merged.id = ticketId;
|
|
10709
10719
|
await http.request({ method: "PUT", path: "/V1.0/Tickets", body: merged, operation: OP_OPEN });
|
|
10710
10720
|
assigned = true;
|
|
@@ -10725,7 +10735,7 @@ async function openWithNoteAndAssign(resource, params, note, assign, opts, http)
|
|
|
10725
10735
|
var STATUS_REQUIRED_FIELDS = {
|
|
10726
10736
|
// <discovery output lands here — e.g. 8: { requiredFields: ['dueDateTime'], safeDefaults: { dueDateTime: '<now>' } }>
|
|
10727
10737
|
};
|
|
10728
|
-
var StatusUnknownError = class extends
|
|
10738
|
+
var StatusUnknownError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
10729
10739
|
/** The live picklist size (the message names it; the values + labels are via operations.fieldCatalog with labels: true). */
|
|
10730
10740
|
|
|
10731
10741
|
constructor(message, options = {}) {
|
|
@@ -10739,7 +10749,7 @@ var StatusUnknownError = class extends _chunkIHRXVIUUcjs.AutotaskError {
|
|
|
10739
10749
|
this.picklistCount = _nullishCoalesce(options.picklistCount, () => ( 0));
|
|
10740
10750
|
}
|
|
10741
10751
|
};
|
|
10742
|
-
var StatusFieldsRequiredError = class extends
|
|
10752
|
+
var StatusFieldsRequiredError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
10743
10753
|
|
|
10744
10754
|
|
|
10745
10755
|
|
|
@@ -10768,16 +10778,16 @@ async function readLiveStatusSet(resource) {
|
|
|
10768
10778
|
}
|
|
10769
10779
|
var GUARD_DEGRADED_WARNING = "the tenant's live status picklist metadata was unavailable (the local guard is degraded for this call \u2014 the W-A4 wall or a metadata failure); the vendor's own validation is the final authority on the status value";
|
|
10770
10780
|
async function changeStatus(resource, id, targetStatus, fields, opts, http) {
|
|
10771
|
-
const ticketId =
|
|
10781
|
+
const ticketId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
|
|
10772
10782
|
if (!isPositiveInt(targetStatus)) {
|
|
10773
|
-
throw new (0,
|
|
10783
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`changeStatus: targetStatus must be a positive integer (got ${String(targetStatus)})`, { operation: OP_STATUS });
|
|
10774
10784
|
}
|
|
10775
10785
|
let liveStatus = null;
|
|
10776
10786
|
try {
|
|
10777
10787
|
const ids = await readLiveStatusSet(resource);
|
|
10778
10788
|
if (ids.size > 0) liveStatus = ids;
|
|
10779
10789
|
} catch (err) {
|
|
10780
|
-
if (!
|
|
10790
|
+
if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.code === "ABORTED") throw err;
|
|
10781
10791
|
}
|
|
10782
10792
|
if (liveStatus !== null && !liveStatus.has(targetStatus)) {
|
|
10783
10793
|
_optionalChain([http, 'access', _57 => _57.fieldCache, 'optionalAccess', _58 => _58.invalidate, 'call', _59 => _59("tickets")]);
|
|
@@ -10787,7 +10797,7 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
|
|
|
10787
10797
|
const freshIds = await readLiveStatusSet(resource);
|
|
10788
10798
|
if (freshIds.size > 0) freshStatus = freshIds;
|
|
10789
10799
|
} catch (err) {
|
|
10790
|
-
if (!
|
|
10800
|
+
if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.code === "ABORTED") throw err;
|
|
10791
10801
|
freshStatus = null;
|
|
10792
10802
|
reReadFailed = true;
|
|
10793
10803
|
}
|
|
@@ -10804,16 +10814,16 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
|
|
|
10804
10814
|
}
|
|
10805
10815
|
const guardDegraded = liveStatus === null;
|
|
10806
10816
|
if (fields !== void 0 && (typeof fields !== "object" || fields === null || Array.isArray(fields))) {
|
|
10807
|
-
throw new (0,
|
|
10817
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("changeStatus: fields must be a plain object of ticket fields (or omitted)", { operation: OP_STATUS });
|
|
10808
10818
|
}
|
|
10809
10819
|
const current = await fetchItemUnredacted(http, `/V1.0/Tickets/${ticketId}`, OP_STATUS);
|
|
10810
10820
|
if (current === null) {
|
|
10811
|
-
throw new (0,
|
|
10821
|
+
throw new (0, _chunkKB2ANVVRcjs.NotFoundError)(`changeStatus: ticket ${ticketId} was not found (tickets.get returned item: null)`, { operation: OP_STATUS, resourceIds: [ticketId] });
|
|
10812
10822
|
}
|
|
10813
10823
|
const previousStatus = typeof current.status === "number" ? current.status : null;
|
|
10814
10824
|
if (previousStatus === targetStatus) {
|
|
10815
10825
|
if (opts.dryRun === true) {
|
|
10816
|
-
return
|
|
10826
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
|
|
10817
10827
|
{
|
|
10818
10828
|
operation: OP_STATUS,
|
|
10819
10829
|
method: "PUT",
|
|
@@ -10867,7 +10877,7 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
|
|
|
10867
10877
|
if (mapEntry === void 0) {
|
|
10868
10878
|
warnings.push(`status ${targetStatus} has no entry in the live-discovered required-field map yet \u2014 if the vendor 500 names a required field without a safe default, the apply throws the typed STATUS_FIELDS_REQUIRED (the caller supplies the value; never a blind retry).`);
|
|
10869
10879
|
}
|
|
10870
|
-
return
|
|
10880
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
|
|
10871
10881
|
{
|
|
10872
10882
|
operation: OP_STATUS,
|
|
10873
10883
|
method: "PUT",
|
|
@@ -10886,7 +10896,7 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
|
|
|
10886
10896
|
);
|
|
10887
10897
|
}
|
|
10888
10898
|
const safeDefaults = _nullishCoalesce(_optionalChain([mapEntry, 'optionalAccess', _62 => _62.safeDefaults]), () => ( {}));
|
|
10889
|
-
const body =
|
|
10899
|
+
const body = _chunkKB2ANVVRcjs.mergePartialBody.call(void 0, current, mergeData);
|
|
10890
10900
|
body.id = ticketId;
|
|
10891
10901
|
let merges = 0;
|
|
10892
10902
|
for (; ; ) {
|
|
@@ -10910,8 +10920,8 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
|
|
|
10910
10920
|
{ vendorFields: named, currentStatus: previousStatus, targetStatus, currentValues },
|
|
10911
10921
|
{
|
|
10912
10922
|
operation: OP_STATUS,
|
|
10913
|
-
httpStatus:
|
|
10914
|
-
vendorError:
|
|
10923
|
+
httpStatus: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.httpStatus : void 0,
|
|
10924
|
+
vendorError: _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? err.vendorError : void 0,
|
|
10915
10925
|
resourceIds: [ticketId]
|
|
10916
10926
|
}
|
|
10917
10927
|
);
|
|
@@ -10921,7 +10931,7 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
|
|
|
10921
10931
|
}
|
|
10922
10932
|
const verify = await fetchItem(http, `/V1.0/Tickets/${ticketId}`, OP_STATUS);
|
|
10923
10933
|
if (verify === null) {
|
|
10924
|
-
throw new (0,
|
|
10934
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskError)(`changeStatus: the post-PUT read-back found no ticket ${ticketId} (the PUT 200ed but the record is gone)`, {
|
|
10925
10935
|
code: "INVALID_RESPONSE",
|
|
10926
10936
|
category: "server",
|
|
10927
10937
|
operation: OP_STATUS,
|
|
@@ -10930,7 +10940,7 @@ async function changeStatus(resource, id, targetStatus, fields, opts, http) {
|
|
|
10930
10940
|
}
|
|
10931
10941
|
const finalStatus = typeof verify.status === "number" ? verify.status : null;
|
|
10932
10942
|
if (finalStatus !== targetStatus) {
|
|
10933
|
-
throw new (0,
|
|
10943
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskError)(
|
|
10934
10944
|
`changeStatus: the post-PUT read-back shows status ${_nullishCoalesce(finalStatus, () => ( "unknown"))} (the vendor 200ed the PUT but did not apply ${targetStatus} \u2014 the F-A1 lesson: the 200 proves nothing)`,
|
|
10935
10945
|
{
|
|
10936
10946
|
code: "INVALID_RESPONSE",
|
|
@@ -10948,7 +10958,7 @@ var DEFAULT_PART_LIMIT = 50;
|
|
|
10948
10958
|
function partLimit(value, name) {
|
|
10949
10959
|
const n = value === void 0 ? DEFAULT_PART_LIMIT : Math.trunc(value);
|
|
10950
10960
|
if (!Number.isInteger(n) || n < 1) {
|
|
10951
|
-
throw new (0,
|
|
10961
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`fullContext: ${name} must be an integer >= 1 (got ${String(value)})`);
|
|
10952
10962
|
}
|
|
10953
10963
|
return n;
|
|
10954
10964
|
}
|
|
@@ -10964,7 +10974,7 @@ async function fullContext(resource, id, opts = {}, http) {
|
|
|
10964
10974
|
const noteLimit = partLimit(opts.noteLimit, "noteLimit");
|
|
10965
10975
|
const timeEntryLimit = partLimit(opts.timeEntryLimit, "timeEntryLimit");
|
|
10966
10976
|
const textLimit = partLimit(opts.textLimit, "textLimit");
|
|
10967
|
-
const ticketId =
|
|
10977
|
+
const ticketId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
|
|
10968
10978
|
const ctx = await resource.getContext(ticketId);
|
|
10969
10979
|
const op = "tickets.fullContext";
|
|
10970
10980
|
const ticketFilter = [{ field: "ticketID", op: "eq", value: ticketId }];
|
|
@@ -11018,7 +11028,7 @@ async function fullContext(resource, id, opts = {}, http) {
|
|
|
11018
11028
|
result.truncated = result.truncated || part.capped || historyRows.some((h) => h.detailTruncated === true);
|
|
11019
11029
|
}
|
|
11020
11030
|
if (opts.names === true) {
|
|
11021
|
-
const builder =
|
|
11031
|
+
const builder = _chunkKB2ANVVRcjs.createNamePlan.call(void 0, _chunkKB2ANVVRcjs.TICKET_LABEL_FIELDS);
|
|
11022
11032
|
const t = ctx.ticket;
|
|
11023
11033
|
builder.addResource(t["creatorResourceID"]);
|
|
11024
11034
|
builder.addFk("contract", t["contractID"]);
|
|
@@ -11030,20 +11040,20 @@ async function fullContext(resource, id, opts = {}, http) {
|
|
|
11030
11040
|
builder.addFk("billingCode", e["billingCodeID"]);
|
|
11031
11041
|
builder.addFk("contract", e["contractID"]);
|
|
11032
11042
|
}
|
|
11033
|
-
const names = await
|
|
11043
|
+
const names = await _chunkKB2ANVVRcjs.resolveCompositeNames.call(void 0, http, builder.plan(), { maxNameReads: opts.maxNameReads });
|
|
11034
11044
|
const ticketRow = { ...ctx.ticket };
|
|
11035
|
-
|
|
11036
|
-
|
|
11037
|
-
|
|
11038
|
-
|
|
11039
|
-
for (const f of
|
|
11045
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, ticketRow, "creatorResourceID", (v) => names.resourceName(v));
|
|
11046
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, ticketRow, "contractID", (v) => names.recordName("contract", v));
|
|
11047
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, ticketRow, "billingCodeID", (v) => names.recordName("billingCode", v));
|
|
11048
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, ticketRow, "assignedResourceRoleID", (v) => names.recordName("role", v));
|
|
11049
|
+
for (const f of _chunkKB2ANVVRcjs.TICKET_LABEL_FIELDS) _chunkKB2ANVVRcjs.addLabelSibling.call(void 0, ticketRow, f, names);
|
|
11040
11050
|
result.ticket = ticketRow;
|
|
11041
11051
|
result.timeEntries.items = entriesPart.items.map((e) => {
|
|
11042
11052
|
const row = { ...e };
|
|
11043
|
-
|
|
11044
|
-
|
|
11045
|
-
|
|
11046
|
-
|
|
11053
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "resourceID", (v) => names.resourceName(v));
|
|
11054
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "roleID", (v) => names.recordName("role", v));
|
|
11055
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "billingCodeID", (v) => names.recordName("billingCode", v));
|
|
11056
|
+
_chunkKB2ANVVRcjs.addNameSibling.call(void 0, row, "contractID", (v) => names.recordName("contract", v));
|
|
11047
11057
|
return row;
|
|
11048
11058
|
});
|
|
11049
11059
|
result.names = names.section;
|
|
@@ -11053,7 +11063,7 @@ async function fullContext(resource, id, opts = {}, http) {
|
|
|
11053
11063
|
}
|
|
11054
11064
|
|
|
11055
11065
|
// src/resources/tickets.ts
|
|
11056
|
-
var TicketsResource = class extends
|
|
11066
|
+
var TicketsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
11057
11067
|
constructor(http, pageSize) {
|
|
11058
11068
|
super(http, {
|
|
11059
11069
|
key: "tickets",
|
|
@@ -11159,7 +11169,7 @@ var TicketsResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
11159
11169
|
};
|
|
11160
11170
|
|
|
11161
11171
|
// src/resources/ticket_webhooks.ts
|
|
11162
|
-
var TicketWebhooksResource = class extends
|
|
11172
|
+
var TicketWebhooksResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
11163
11173
|
constructor(http, pageSize) {
|
|
11164
11174
|
super(http, {
|
|
11165
11175
|
key: "ticket_webhooks",
|
|
@@ -11245,7 +11255,7 @@ async function queryTimeEntries(_resource, filter, limit, operation, http) {
|
|
|
11245
11255
|
body: { MaxRecords: limit, filter },
|
|
11246
11256
|
operation
|
|
11247
11257
|
});
|
|
11248
|
-
const { items, pageDetails } =
|
|
11258
|
+
const { items, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res);
|
|
11249
11259
|
return { items, hasMore: pageDetails.nextPageUrl != null };
|
|
11250
11260
|
}
|
|
11251
11261
|
async function windowQuery3(_resource, kind, http, opts) {
|
|
@@ -11264,7 +11274,7 @@ async function customRange3(_resource, from, to, http, opts) {
|
|
|
11264
11274
|
const fromB = customRangeDay(from, "from", zone, "customRange");
|
|
11265
11275
|
const toB = customRangeDay(to, "to", zone, "customRange");
|
|
11266
11276
|
if (fromB.ms > toB.ms) {
|
|
11267
|
-
throw new (0,
|
|
11277
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("customRange: from must not be after to");
|
|
11268
11278
|
}
|
|
11269
11279
|
const toEndMs = zone === void 0 ? toB.ms + DAY_MS2 - 1 : localDayEndMs(toB.y, toB.mo, toB.d, zone);
|
|
11270
11280
|
const filter = [
|
|
@@ -11289,7 +11299,7 @@ async function postedWithin(_resource, from, to, http, opts, opLabel = "time_ent
|
|
|
11289
11299
|
const fromB = customRangeDay(from, "from", zone, OP2);
|
|
11290
11300
|
const toB = customRangeDay(to, "to", zone, OP2);
|
|
11291
11301
|
if (fromB.ms > toB.ms) {
|
|
11292
|
-
throw new (0,
|
|
11302
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(`${OP2}: from (${iso2(fromB.ms)}) must not be after to (${iso2(toB.ms)})`, { operation: OP2 });
|
|
11293
11303
|
}
|
|
11294
11304
|
const windowToMs = zone === void 0 ? toB.ms + DAY_MS2 - 1 : localDayEndMs(toB.y, toB.mo, toB.d, zone);
|
|
11295
11305
|
const filter = [
|
|
@@ -11356,13 +11366,13 @@ var LINKAGE_OWNED_FIELDS = /* @__PURE__ */ new Set([
|
|
|
11356
11366
|
"roleID"
|
|
11357
11367
|
]);
|
|
11358
11368
|
var TIME_WINDOW_FIELDS = /* @__PURE__ */ new Set(["dateWorked", "startDateTime", "endDateTime", "hoursWorked"]);
|
|
11359
|
-
var ResourceInvalidError = class extends
|
|
11369
|
+
var ResourceInvalidError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
11360
11370
|
constructor(message, options = {}) {
|
|
11361
11371
|
super(message, { code: "RESOURCE_INVALID", category: "validation", ...options });
|
|
11362
11372
|
this.name = "ResourceInvalidError";
|
|
11363
11373
|
}
|
|
11364
11374
|
};
|
|
11365
|
-
var AllocationCodeError = class extends
|
|
11375
|
+
var AllocationCodeError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
11366
11376
|
/** The failure kind (the machine code is `ALLOCATION_CODE_<KIND>`). */
|
|
11367
11377
|
|
|
11368
11378
|
constructor(kind, message, options = {}) {
|
|
@@ -11371,7 +11381,7 @@ var AllocationCodeError = class extends _chunkIHRXVIUUcjs.AutotaskError {
|
|
|
11371
11381
|
this.kind = kind;
|
|
11372
11382
|
}
|
|
11373
11383
|
};
|
|
11374
|
-
var NoApplicableAllocationCodeError = class extends
|
|
11384
|
+
var NoApplicableAllocationCodeError = class extends _chunkKB2ANVVRcjs.AutotaskError {
|
|
11375
11385
|
/** The structured blocker details (filters tried + department sets). */
|
|
11376
11386
|
|
|
11377
11387
|
constructor(details, options = {}) {
|
|
@@ -11397,7 +11407,7 @@ async function boundedQuery(http, path, filter, totalCap, operation) {
|
|
|
11397
11407
|
let pages = 0;
|
|
11398
11408
|
for (; ; ) {
|
|
11399
11409
|
if (pages >= PAGE_GUARD) {
|
|
11400
|
-
throw new (0,
|
|
11410
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskError)(`createForResource: the ${path} walk hit the ${PAGE_GUARD}-page guard`, {
|
|
11401
11411
|
code: "RESOLUTION_TRUNCATED",
|
|
11402
11412
|
category: "resolution",
|
|
11403
11413
|
operation,
|
|
@@ -11408,11 +11418,11 @@ async function boundedQuery(http, path, filter, totalCap, operation) {
|
|
|
11408
11418
|
const res = await http.request({
|
|
11409
11419
|
method: "POST",
|
|
11410
11420
|
idempotent: true,
|
|
11411
|
-
path: isFirst ? path :
|
|
11421
|
+
path: isFirst ? path : _chunkKB2ANVVRcjs.cursorToPath.call(void 0, http.baseUrl, cursor),
|
|
11412
11422
|
body: { MaxRecords: pageSize, filter },
|
|
11413
11423
|
operation
|
|
11414
11424
|
});
|
|
11415
|
-
const { items: pageItems, pageDetails } =
|
|
11425
|
+
const { items: pageItems, pageDetails } = _chunkKB2ANVVRcjs.unwrapItems.call(void 0, res, operation);
|
|
11416
11426
|
items.push(...pageItems);
|
|
11417
11427
|
pages += 1;
|
|
11418
11428
|
if (items.length >= totalCap) break;
|
|
@@ -11525,8 +11535,8 @@ function windowDefaults(params) {
|
|
|
11525
11535
|
};
|
|
11526
11536
|
}
|
|
11527
11537
|
async function createForResource(resource, resourceID, params, opts = {}, http) {
|
|
11528
|
-
const rid =
|
|
11529
|
-
const pin = (value, label) => typeof value === "number" ?
|
|
11538
|
+
const rid = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, resourceID, "resourceID");
|
|
11539
|
+
const pin = (value, label) => typeof value === "number" ? _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, value, label) : void 0;
|
|
11530
11540
|
const pins = {
|
|
11531
11541
|
code: pin(params.internallAllocationCodeID, "internallAllocationCodeID"),
|
|
11532
11542
|
ticket: pin(params.ticketID, "ticketID"),
|
|
@@ -11535,19 +11545,19 @@ async function createForResource(resource, resourceID, params, opts = {}, http)
|
|
|
11535
11545
|
};
|
|
11536
11546
|
const pinCount = [pins.code, pins.ticket, pins.task].filter((v) => v !== void 0).length;
|
|
11537
11547
|
if (pinCount > 1) {
|
|
11538
|
-
throw new (0,
|
|
11548
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
11539
11549
|
"createForResource: exactly one linkage pin is honoured (internallAllocationCodeID | ticketID | taskID) \u2014 the vendor gate requires exactly one; pass one pin (or none for the default internal linkage)",
|
|
11540
11550
|
{ operation: OP }
|
|
11541
11551
|
);
|
|
11542
11552
|
}
|
|
11543
11553
|
if (pins.role !== void 0 && pins.code !== void 0) {
|
|
11544
|
-
throw new (0,
|
|
11554
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
11545
11555
|
"createForResource: a pinned roleID is only meaningful with the task/ticket linkage (internallAllocationCodeID pins the internal linkage and owns the code) \u2014 drop one",
|
|
11546
11556
|
{ operation: OP }
|
|
11547
11557
|
);
|
|
11548
11558
|
}
|
|
11549
11559
|
if (params.hoursWorked !== void 0 && (typeof params.hoursWorked !== "number" || !Number.isFinite(params.hoursWorked) || params.hoursWorked <= 0)) {
|
|
11550
|
-
throw new (0,
|
|
11560
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)(
|
|
11551
11561
|
`createForResource: hoursWorked must be a positive finite number (got ${String(params.hoursWorked)})`,
|
|
11552
11562
|
{ operation: OP }
|
|
11553
11563
|
);
|
|
@@ -11624,7 +11634,7 @@ async function createForResource(resource, resourceID, params, opts = {}, http)
|
|
|
11624
11634
|
if (usedLinkage === "internal" && linkage === "task") {
|
|
11625
11635
|
warnings.push("the task had zero applicable general allocation codes \u2014 the linkage fell back to internal (the sanctioned fallback; no taskID/roleID in the body).");
|
|
11626
11636
|
}
|
|
11627
|
-
return
|
|
11637
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0,
|
|
11628
11638
|
{
|
|
11629
11639
|
operation: OP,
|
|
11630
11640
|
method: "POST",
|
|
@@ -11663,7 +11673,7 @@ async function createForResource(resource, resourceID, params, opts = {}, http)
|
|
|
11663
11673
|
};
|
|
11664
11674
|
} catch (err) {
|
|
11665
11675
|
lastError = err;
|
|
11666
|
-
const text =
|
|
11676
|
+
const text = _chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) ? `${_nullishCoalesce(_chunkKB2ANVVRcjs.formatVendorDetail.call(void 0, err.vendorError), () => ( ""))} ${err.message}` : "";
|
|
11667
11677
|
const gate3 = ROLE_REJECTION_PATTERN.test(text);
|
|
11668
11678
|
if (usedLinkage !== "internal" && gate3) {
|
|
11669
11679
|
if (!taskRoleFetched && usedLinkage === "task" && pins.task !== void 0) {
|
|
@@ -11683,14 +11693,14 @@ async function createForResource(resource, resourceID, params, opts = {}, http)
|
|
|
11683
11693
|
throw err;
|
|
11684
11694
|
}
|
|
11685
11695
|
}
|
|
11686
|
-
if (
|
|
11696
|
+
if (_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, lastError)) {
|
|
11687
11697
|
lastError.suggestedAction = (lastError.suggestedAction ? `${lastError.suggestedAction} ` : "") + `The createForResource attempt budget (${MAX_CREATE_ATTEMPTS} attempts: the role ladder + ${MAX_DISCOVERY_MERGES2} discovery merges) was exhausted \u2014 the vendor oracle rejected every candidate. Re-read the record/fields (operations.fieldCatalog, billing_codes.query with a filter) and retry with an explicit pin.`;
|
|
11688
11698
|
}
|
|
11689
11699
|
throw lastError;
|
|
11690
11700
|
}
|
|
11691
11701
|
function discoveryField(err, body, defaults) {
|
|
11692
|
-
if (!
|
|
11693
|
-
const entries =
|
|
11702
|
+
if (!_chunkKB2ANVVRcjs.isAutotaskError.call(void 0, err) || err.vendorError === void 0) return null;
|
|
11703
|
+
const entries = _chunkKB2ANVVRcjs.parseVendorErrors.call(void 0, err.vendorError);
|
|
11694
11704
|
if (entries === void 0) return null;
|
|
11695
11705
|
for (const entry of entries) {
|
|
11696
11706
|
const field = entry.field;
|
|
@@ -11703,7 +11713,7 @@ function discoveryField(err, body, defaults) {
|
|
|
11703
11713
|
}
|
|
11704
11714
|
|
|
11705
11715
|
// src/resources/time_entries.ts
|
|
11706
|
-
var TimeEntriesResource = class extends
|
|
11716
|
+
var TimeEntriesResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
11707
11717
|
constructor(http, pageSize) {
|
|
11708
11718
|
super(http, {
|
|
11709
11719
|
key: "time_entries",
|
|
@@ -11840,7 +11850,7 @@ var TimeEntriesResource = class extends _chunkIHRXVIUUcjs.BaseResource {
|
|
|
11840
11850
|
};
|
|
11841
11851
|
|
|
11842
11852
|
// src/resources/time_entry_attachments.ts
|
|
11843
|
-
var TimeEntryAttachmentsResource = class extends
|
|
11853
|
+
var TimeEntryAttachmentsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
11844
11854
|
constructor(http, pageSize) {
|
|
11845
11855
|
super(http, {
|
|
11846
11856
|
key: "time_entry_attachments",
|
|
@@ -11903,9 +11913,9 @@ var TimeEntryAttachmentsResource = class extends _chunkIHRXVIUUcjs.BaseResource
|
|
|
11903
11913
|
|
|
11904
11914
|
// src/resources/special/time_off_requests.ts
|
|
11905
11915
|
async function approve(_resource, id, opts = {}, http) {
|
|
11906
|
-
const numericId =
|
|
11916
|
+
const numericId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
|
|
11907
11917
|
if (opts.dryRun === true) {
|
|
11908
|
-
return
|
|
11918
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
|
|
11909
11919
|
operation: "time_off_requests.approve",
|
|
11910
11920
|
method: "GET",
|
|
11911
11921
|
path: `/V1.0/TimeOffRequests/${numericId}/Approve`,
|
|
@@ -11920,16 +11930,16 @@ async function approve(_resource, id, opts = {}, http) {
|
|
|
11920
11930
|
path: `/V1.0/TimeOffRequests/${numericId}/Approve`,
|
|
11921
11931
|
operation: "time_off_requests.approve"
|
|
11922
11932
|
});
|
|
11923
|
-
return
|
|
11933
|
+
return _chunkKB2ANVVRcjs.unwrapOperation.call(void 0, res);
|
|
11924
11934
|
}
|
|
11925
11935
|
async function reject(_resource, id, reason, opts = {}, http) {
|
|
11926
|
-
const numericId =
|
|
11936
|
+
const numericId = _chunkKB2ANVVRcjs.parseIdentifier.call(void 0, id, "id");
|
|
11927
11937
|
const text = reason.trim();
|
|
11928
11938
|
if (text === "") {
|
|
11929
|
-
throw new (0,
|
|
11939
|
+
throw new (0, _chunkKB2ANVVRcjs.AutotaskConfigError)("reject: a non-empty reason is required (vendor TimeOffRequestRejectModel)");
|
|
11930
11940
|
}
|
|
11931
11941
|
if (opts.dryRun === true) {
|
|
11932
|
-
return
|
|
11942
|
+
return _chunkKB2ANVVRcjs.buildDryRunResult.call(void 0, {
|
|
11933
11943
|
operation: "time_off_requests.reject",
|
|
11934
11944
|
method: "POST",
|
|
11935
11945
|
path: `/V1.0/TimeOffRequests/${numericId}/Reject`,
|
|
@@ -11946,11 +11956,11 @@ async function reject(_resource, id, reason, opts = {}, http) {
|
|
|
11946
11956
|
body: { timeOffRequestID: numericId, reason: text },
|
|
11947
11957
|
operation: "time_off_requests.reject"
|
|
11948
11958
|
});
|
|
11949
|
-
return
|
|
11959
|
+
return _chunkKB2ANVVRcjs.unwrapOperation.call(void 0, res);
|
|
11950
11960
|
}
|
|
11951
11961
|
|
|
11952
11962
|
// src/resources/time_off_requests.ts
|
|
11953
|
-
var TimeOffRequestsResource = class extends
|
|
11963
|
+
var TimeOffRequestsResource = class extends _chunkKB2ANVVRcjs.BaseResource {
|
|
11954
11964
|
constructor(http, pageSize) {
|
|
11955
11965
|
super(http, {
|
|
11956
11966
|
key: "time_off_requests",
|