n8n-nodes-autotask 2.26.2 → 2.26.3
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/dist/nodes/Autotask/ai-tools/description-builders.d.ts.map +1 -1
- package/dist/nodes/Autotask/ai-tools/description-builders.js +436 -450
- package/dist/nodes/Autotask/ai-tools/description-builders.js.map +1 -1
- package/dist/nodes/Autotask/ai-tools/read-param-descriptions.d.ts +26 -0
- package/dist/nodes/Autotask/ai-tools/read-param-descriptions.d.ts.map +1 -0
- package/dist/nodes/Autotask/ai-tools/read-param-descriptions.js +43 -0
- package/dist/nodes/Autotask/ai-tools/read-param-descriptions.js.map +1 -0
- package/dist/nodes/Autotask/ai-tools/schema-generator.d.ts.map +1 -1
- package/dist/nodes/Autotask/ai-tools/schema-generator.js +70 -121
- package/dist/nodes/Autotask/ai-tools/schema-generator.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ const debug_trace_1 = require("./debug-trace");
|
|
|
8
8
|
const operation_metadata_1 = require("./operation-metadata");
|
|
9
9
|
const typed_reference_1 = require("../helpers/typed-reference");
|
|
10
10
|
const resource_language_1 = require("./resource-language");
|
|
11
|
-
const
|
|
11
|
+
const read_param_descriptions_1 = require("./read-param-descriptions");
|
|
12
12
|
/** Picklist inlining threshold — at or below this count, inline all values; above, tell LLM to call listPicklistValues. */
|
|
13
13
|
const INLINE_PICKLIST_THRESHOLD = 4;
|
|
14
14
|
/** Anthropic API requires property keys to match this pattern. */
|
|
@@ -128,13 +128,8 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
128
128
|
'in',
|
|
129
129
|
'notIn',
|
|
130
130
|
]);
|
|
131
|
-
const rFilterValueSchema = rz
|
|
132
|
-
|
|
133
|
-
.describe("Filter value as string. For reference/picklist fields, pass human-readable name (e.g. 'In Progress', 'Contoso', 'High') — auto-resolves to ID, or pass numeric ID directly. For in/notIn: comma-separate names or IDs (e.g. 'Neil,Andrew' or '123,456'). Each name resolved independently; names with multiple candidates return pendingConfirmations, already-resolved names shown in resolvedElements. Booleans: 'true'/'false'.");
|
|
134
|
-
const rRecencySchema = rz
|
|
135
|
-
.string()
|
|
136
|
-
.nullish()
|
|
137
|
-
.describe('Preset time window: last_15m, last_1h, last_2h, last_3h, last_4h, last_6h, last_8h, last_12h, last_24h, last_1d–last_7d, last_14d, last_30d, last_90d. Or last_Nd (N=1–365). Mutually exclusive with since/until.');
|
|
131
|
+
const rFilterValueSchema = rz.string().describe(read_param_descriptions_1.READ_PARAM_DESC.filter_value);
|
|
132
|
+
const rRecencySchema = rz.string().nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.recency);
|
|
138
133
|
function buildUnifiedSchema(resource, operations, readFields, writeFields) {
|
|
139
134
|
const operationMetadata = operations
|
|
140
135
|
.map((operation) => (0, operation_metadata_1.getOperationMetadata)(operation))
|
|
@@ -231,7 +226,7 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
231
226
|
.coerce.string()
|
|
232
227
|
.nullish()
|
|
233
228
|
.describe('Resource name, email, or numeric ID (auto-resolved). Required for getByResource and getByYear. ' +
|
|
234
|
-
"For ticket.getByResource: searches primary (assignedResourceID) and/or secondary (TicketSecondaryResources) assignments
|
|
229
|
+
"For ticket.getByResource: searches primary (assignedResourceID) and/or secondary (TicketSecondaryResources) assignments per 'mode'.");
|
|
235
230
|
}
|
|
236
231
|
// ticket.getByResource — mode field + list-family params (operation metadata marks supportsFilters:false so inject manually)
|
|
237
232
|
if (hasGetByResource && resource === 'ticket') {
|
|
@@ -249,7 +244,7 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
249
244
|
.min(1)
|
|
250
245
|
.max(500)
|
|
251
246
|
.nullish()
|
|
252
|
-
.describe('Max records per branch (1-500, default 10).
|
|
247
|
+
.describe('Max records per branch (1-500, default 10). Combined merged result may exceed limit when mode=both.');
|
|
253
248
|
}
|
|
254
249
|
if (!shape.fields) {
|
|
255
250
|
shape.fields = rz
|
|
@@ -260,16 +255,10 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
260
255
|
if (!shape.recency)
|
|
261
256
|
shape.recency = rRecencySchema;
|
|
262
257
|
if (!shape.since) {
|
|
263
|
-
shape.since = rz
|
|
264
|
-
.string()
|
|
265
|
-
.nullish()
|
|
266
|
-
.describe('Range start (ISO-8601; e.g. 2026-01-01T09:00:00Z). Overrides recency.');
|
|
258
|
+
shape.since = rz.string().nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.since);
|
|
267
259
|
}
|
|
268
260
|
if (!shape.until) {
|
|
269
|
-
shape.until = rz
|
|
270
|
-
.string()
|
|
271
|
-
.nullish()
|
|
272
|
-
.describe('Range end (ISO-8601). Requires since or recency.');
|
|
261
|
+
shape.until = rz.string().nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.until);
|
|
273
262
|
}
|
|
274
263
|
if (!shape.excludeTerminalStatuses) {
|
|
275
264
|
shape.excludeTerminalStatuses = rz
|
|
@@ -290,14 +279,14 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
290
279
|
.number()
|
|
291
280
|
.int()
|
|
292
281
|
.nullish()
|
|
293
|
-
.describe('Calendar year (e.g. 2024). Required for getByYear
|
|
282
|
+
.describe('Calendar year (e.g. 2024). Required for getByYear.');
|
|
294
283
|
}
|
|
295
284
|
// rejectReason — used only by reject
|
|
296
285
|
if (hasReject) {
|
|
297
286
|
shape.rejectReason = rz
|
|
298
287
|
.string()
|
|
299
288
|
.nullish()
|
|
300
|
-
.describe(
|
|
289
|
+
.describe("Reason for rejecting the time off request. Required when rejectReasonPolicy='mandatory'.");
|
|
301
290
|
shape.rejectReasonPolicy = rz
|
|
302
291
|
.enum(['optional', 'mandatory'])
|
|
303
292
|
.nullish()
|
|
@@ -306,9 +295,9 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
306
295
|
// globalNotesSearch — virtual resource, custom fields only, skip all standard filter blocks
|
|
307
296
|
if (resource === 'globalNotesSearch') {
|
|
308
297
|
if (operations.includes('searchNotes')) {
|
|
309
|
-
shape['keyword'] = rz.string().nullish().describe('Text to search
|
|
310
|
-
shape['since'] = rz.string().nullish().describe('ISO
|
|
311
|
-
shape['until'] = rz.string().nullish().describe('ISO
|
|
298
|
+
shape['keyword'] = rz.string().nullish().describe('Text to search note titles and bodies (contains match) across all 7 note types. At least one of keyword, since, or until is required.');
|
|
299
|
+
shape['since'] = rz.string().nullish().describe('ISO-8601 datetime — notes with createDateTime >= this. At least one of keyword, since, or until is required.');
|
|
300
|
+
shape['until'] = rz.string().nullish().describe('ISO-8601 datetime — notes with createDateTime <= this. At least one of keyword, since, or until is required.');
|
|
312
301
|
shape['limit'] = rz.number().int().min(1).max(25).nullish().describe('Max results per note entity type (default 10, max 25). Total records = 7 × limit at most.');
|
|
313
302
|
}
|
|
314
303
|
// Helper-op fields — describeFields/listPicklistValues/describeOperation are always
|
|
@@ -338,51 +327,29 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
338
327
|
}
|
|
339
328
|
// fields — column selection
|
|
340
329
|
if (hasGetFamily || hasCreate) {
|
|
341
|
-
shape.fields = rz
|
|
342
|
-
.string()
|
|
343
|
-
.nullish()
|
|
344
|
-
.describe(`Sparse fieldset — comma-separated field names to return. Omit for all fields. The id field is always included automatically. ` +
|
|
345
|
-
`Reduces payload size significantly for entities with many fields. ` +
|
|
346
|
-
`With returnAll=true, specifying fields lifts the ${operation_dispatch_1.MAX_RESPONSE_RECORDS}-record payload cap — all matching records are returned. ` +
|
|
347
|
-
`Real API field names only (call describeFields for the full list). Do not request *_label or *_name fields — those are auto-added by outputMode=idsAndLabels.`);
|
|
330
|
+
shape.fields = rz.string().nullish().describe((0, read_param_descriptions_1.fieldsDesc)());
|
|
348
331
|
}
|
|
349
332
|
// Filter fields for list operations
|
|
350
333
|
const hasSearchByKeywordForListShared = operations.includes('searchByKeyword');
|
|
351
334
|
if (hasListFamily || hasSearchByKeywordForListShared) {
|
|
352
335
|
const fieldNames = readFields.filter((f) => !f.udf && isValidSchemaKey(f.id)).map((f) => f.id);
|
|
353
|
-
const
|
|
336
|
+
const filterFieldPairClause = "Field to filter on. Provide filter_value with it (not needed when filter_op is 'exist'/'notExist'). For 'older than'/upper-bound date queries use a date field (createDate, lastActivityDate, dueDateTime) with filter_op='lt'.";
|
|
337
|
+
const filterFieldDesc = `${filterFieldPairClause} Use operation 'describeFields' to see valid field names.`;
|
|
354
338
|
shape.filter_field =
|
|
355
339
|
fieldNames.length > 0
|
|
356
340
|
? rz
|
|
357
341
|
.enum(fieldNames)
|
|
358
342
|
.nullish()
|
|
359
|
-
.describe(
|
|
343
|
+
.describe(filterFieldPairClause)
|
|
360
344
|
: rz.string().nullish().describe(filterFieldDesc);
|
|
361
|
-
shape.filter_op = rFilterOpEnum.nullish().describe(
|
|
345
|
+
shape.filter_op = rFilterOpEnum.nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.filter_op);
|
|
362
346
|
shape.filter_value = rFilterValueSchema.nullish();
|
|
363
|
-
shape.filter_field_2 = rz
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
shape.
|
|
368
|
-
shape.
|
|
369
|
-
shape.filter_logic = rz
|
|
370
|
-
.enum(['and', 'or'])
|
|
371
|
-
.nullish()
|
|
372
|
-
.describe("Combiner between the two filter pairs: 'and' (default) or 'or'.");
|
|
373
|
-
shape.limit = rz
|
|
374
|
-
.number()
|
|
375
|
-
.int()
|
|
376
|
-
.min(1)
|
|
377
|
-
.max(500)
|
|
378
|
-
.nullish()
|
|
379
|
-
.describe('Max results (1-500, default 10)');
|
|
380
|
-
shape.offset = rz
|
|
381
|
-
.number()
|
|
382
|
-
.int()
|
|
383
|
-
.min(0)
|
|
384
|
-
.nullish()
|
|
385
|
-
.describe('Skip first N records (0–499). Response includes hasMore/nextOffset. Max 500 total — narrow filters for more.');
|
|
347
|
+
shape.filter_field_2 = rz.string().nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.filter_field_2);
|
|
348
|
+
shape.filter_op_2 = rFilterOpEnum.nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.filter_op_2);
|
|
349
|
+
shape.filter_value_2 = rFilterValueSchema.nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.filter_value_2);
|
|
350
|
+
shape.filter_logic = rz.enum(['and', 'or']).nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.filter_logic);
|
|
351
|
+
shape.limit = rz.number().int().min(1).max(500).nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.limit);
|
|
352
|
+
shape.offset = rz.number().int().min(0).nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.offset);
|
|
386
353
|
shape.recency = rRecencySchema;
|
|
387
354
|
const dateFields = readFields
|
|
388
355
|
.filter((f) => !f.udf && isValidSchemaKey(f.id) && f.type.toLowerCase().includes('date'))
|
|
@@ -393,32 +360,14 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
393
360
|
.nullish()
|
|
394
361
|
.describe(`Date/time field for recency/since/until. Available: ${dateFields.join(', ')}. Default: first available.`);
|
|
395
362
|
}
|
|
396
|
-
shape.since = rz
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
shape.until = rz
|
|
401
|
-
.string()
|
|
402
|
-
.nullish()
|
|
403
|
-
.describe('Range end (ISO-8601). Requires since or recency.');
|
|
404
|
-
shape.filtersJson = rz.string().nullish().describe(`Advanced filters as JSON array of Autotask IFilterCondition objects. Mutually exclusive with filter_field. No label resolution — use numeric IDs for all values including in/notIn (for name-based in/notIn use the filter_value param path instead). Dates UTC ISO-8601. ` +
|
|
405
|
-
`Supports: eq/noteq/gt/gte/lt/lte/contains/beginsWith/endsWith/exist/notExist/in/notIn. ` +
|
|
406
|
-
`in/notIn value must be a JSON array (max 500 values per Autotask API limit). ` +
|
|
407
|
-
`Nested AND group: [{"op":"and","items":[<cond1>,<cond2>]}]. ` +
|
|
408
|
-
`Nested OR group: [{"op":"or","items":[<cond1>,<cond2>]}]. ` +
|
|
409
|
-
`Each condition shape: {"field":"<fieldName>","op":"<op>","value":<value>}. ` +
|
|
410
|
-
`Call describeFields for valid field names on this resource, and listPicklistValues for valid picklist IDs.`);
|
|
411
|
-
shape.returnAll = rz
|
|
412
|
-
.coerce.boolean()
|
|
413
|
-
.nullish()
|
|
414
|
-
.describe(`Fetch ALL matching records via API cursor pagination. Default false = up to limit. ` +
|
|
415
|
-
`Without fields: payload capped at ${operation_dispatch_1.MAX_RESPONSE_RECORDS} records. ` +
|
|
416
|
-
`With fields param (sparse fieldset): cap lifted — all records returned. ` +
|
|
417
|
-
`Pair returnAll=true with a narrow fields list for efficient bulk ID/lookup patterns.`);
|
|
363
|
+
shape.since = rz.string().nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.since);
|
|
364
|
+
shape.until = rz.string().nullish().describe(read_param_descriptions_1.READ_PARAM_DESC.until);
|
|
365
|
+
shape.filtersJson = rz.string().nullish().describe((0, read_param_descriptions_1.filtersJsonDesc)());
|
|
366
|
+
shape.returnAll = rz.coerce.boolean().nullish().describe((0, read_param_descriptions_1.returnAllDesc)());
|
|
418
367
|
shape.outputMode = rz
|
|
419
368
|
.enum(['idsAndLabels', 'rawIds'])
|
|
420
369
|
.nullish()
|
|
421
|
-
.describe(
|
|
370
|
+
.describe(read_param_descriptions_1.READ_PARAM_DESC.outputMode);
|
|
422
371
|
// excludeTerminalStatuses — only for resources that have terminal status semantics
|
|
423
372
|
if (resource_language_1.RESOURCES_WITH_TERMINAL_STATUS_EXCLUSION.has(resource) &&
|
|
424
373
|
operations.includes('getMany') &&
|
|
@@ -434,15 +383,15 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
434
383
|
shape.companyName = rz
|
|
435
384
|
.string()
|
|
436
385
|
.nullish()
|
|
437
|
-
.describe('
|
|
386
|
+
.describe('Company name for contains matching and ranking.');
|
|
438
387
|
shape.email = rz
|
|
439
388
|
.string()
|
|
440
389
|
.nullish()
|
|
441
|
-
.describe('
|
|
390
|
+
.describe('Email used to infer domain for matching.');
|
|
442
391
|
shape.website = rz
|
|
443
392
|
.string()
|
|
444
393
|
.nullish()
|
|
445
|
-
.describe('
|
|
394
|
+
.describe('Website/domain used for primary domain matching.');
|
|
446
395
|
shape.limit = rz
|
|
447
396
|
.number()
|
|
448
397
|
.int()
|
|
@@ -481,7 +430,7 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
481
430
|
shape.ticketFields = rz
|
|
482
431
|
.string()
|
|
483
432
|
.nullish()
|
|
484
|
-
.describe('
|
|
433
|
+
.describe('Comma-separated ticket fields to return.');
|
|
485
434
|
}
|
|
486
435
|
// summary fields
|
|
487
436
|
if (hasSummary) {
|
|
@@ -492,7 +441,7 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
492
441
|
shape.summaryTextLimit = rz
|
|
493
442
|
.number()
|
|
494
443
|
.nullish()
|
|
495
|
-
.describe('
|
|
444
|
+
.describe('Max characters for summary description/resolution fields (default 500; 0 = no limit).');
|
|
496
445
|
shape.includeChildCounts = rz
|
|
497
446
|
.coerce.boolean()
|
|
498
447
|
.nullish()
|
|
@@ -540,19 +489,19 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
540
489
|
.nullish()
|
|
541
490
|
.describe(hasGetByCompanyAndStatus
|
|
542
491
|
? 'Company name or numeric companyID (auto-resolved). Required for getByCompanyAndStatus; optional for other ops.'
|
|
543
|
-
: 'Company name or numeric companyID (auto-resolved).
|
|
492
|
+
: 'Company name or numeric companyID (auto-resolved). Omit for all companies.');
|
|
544
493
|
}
|
|
545
494
|
if (resource_language_1.RESOURCES_WITH_PRIORITY.has(resource) && !shape.priority) {
|
|
546
495
|
shape.priority = rz
|
|
547
496
|
.string()
|
|
548
497
|
.nullish()
|
|
549
|
-
.describe('Priority picklist label or ID
|
|
498
|
+
.describe('Priority picklist label or ID.');
|
|
550
499
|
}
|
|
551
500
|
if (hasGetByCompanyAndStatus && !shape.status) {
|
|
552
501
|
shape.status = rz
|
|
553
502
|
.string()
|
|
554
503
|
.nullish()
|
|
555
|
-
.describe('Status picklist label or ID
|
|
504
|
+
.describe('Status picklist label or ID. Omit for all statuses.');
|
|
556
505
|
}
|
|
557
506
|
}
|
|
558
507
|
// getBySLAStatus fields
|
|
@@ -574,7 +523,7 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
574
523
|
shape.company = rz
|
|
575
524
|
.string()
|
|
576
525
|
.nullish()
|
|
577
|
-
.describe('Company name or numeric companyID (auto-resolved).
|
|
526
|
+
.describe('Company name or numeric companyID (auto-resolved).');
|
|
578
527
|
}
|
|
579
528
|
}
|
|
580
529
|
// countByPeriod fields
|
|
@@ -590,19 +539,19 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
590
539
|
shape.company = rz
|
|
591
540
|
.string()
|
|
592
541
|
.nullish()
|
|
593
|
-
.describe('Company name or numeric companyID (auto-resolved).
|
|
542
|
+
.describe('Company name or numeric companyID (auto-resolved).');
|
|
594
543
|
}
|
|
595
544
|
if (!shape.status) {
|
|
596
545
|
shape.status = rz
|
|
597
546
|
.string()
|
|
598
547
|
.nullish()
|
|
599
|
-
.describe('Status picklist label or ID
|
|
548
|
+
.describe('Status picklist label or ID.');
|
|
600
549
|
}
|
|
601
550
|
if (resource_language_1.RESOURCES_WITH_PRIORITY.has(resource) && !shape.priority) {
|
|
602
551
|
shape.priority = rz
|
|
603
552
|
.string()
|
|
604
553
|
.nullish()
|
|
605
|
-
.describe('Priority picklist label or ID
|
|
554
|
+
.describe('Priority picklist label or ID.');
|
|
606
555
|
}
|
|
607
556
|
}
|
|
608
557
|
// getByAge fields
|
|
@@ -680,7 +629,7 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
680
629
|
shape.userDefinedFields = rz
|
|
681
630
|
.string()
|
|
682
631
|
.nullish()
|
|
683
|
-
.describe('JSON object of UDF field name → value pairs
|
|
632
|
+
.describe('JSON object of UDF field name → value pairs. ' +
|
|
684
633
|
'Keys must exactly match UDF field names as returned by describeFields (mode=write). ' +
|
|
685
634
|
'Example: {"Customer Size": "Enterprise", "Region": "APAC"}. ' +
|
|
686
635
|
'For picklist UDFs use the picklist value ID (label resolution not supported for UDFs).');
|
|
@@ -717,30 +666,30 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
717
666
|
.int()
|
|
718
667
|
.min(1)
|
|
719
668
|
.nullish()
|
|
720
|
-
.describe('
|
|
669
|
+
.describe('Destination company location ID.');
|
|
721
670
|
shape.destinationContactId = rz
|
|
722
671
|
.number()
|
|
723
672
|
.int()
|
|
724
673
|
.min(1)
|
|
725
674
|
.nullish()
|
|
726
|
-
.describe('
|
|
675
|
+
.describe('Destination contact ID.');
|
|
727
676
|
shape.copyUdfs = rz
|
|
728
677
|
.coerce.boolean()
|
|
729
678
|
.nullish()
|
|
730
|
-
.describe('
|
|
679
|
+
.describe('Copy user-defined fields (default true).');
|
|
731
680
|
shape.copyAttachments = rz
|
|
732
681
|
.coerce.boolean()
|
|
733
682
|
.nullish()
|
|
734
|
-
.describe('
|
|
735
|
-
shape.copyNotes = rz.coerce.boolean().nullish().describe('
|
|
683
|
+
.describe('Copy CI attachments (default true).');
|
|
684
|
+
shape.copyNotes = rz.coerce.boolean().nullish().describe('Copy notes (default true).');
|
|
736
685
|
shape.copyNoteAttachments = rz
|
|
737
686
|
.coerce.boolean()
|
|
738
687
|
.nullish()
|
|
739
|
-
.describe('
|
|
688
|
+
.describe('Copy note attachments (default true).');
|
|
740
689
|
shape.deactivateSource = rz
|
|
741
690
|
.coerce.boolean()
|
|
742
691
|
.nullish()
|
|
743
|
-
.describe('
|
|
692
|
+
.describe('Deactivate the source CI after safety checks (default true).');
|
|
744
693
|
shape.idempotencyKey = rz.string().nullish().describe('Optional run key for traceability.');
|
|
745
694
|
shape.includeMaskedUdfsPolicy = rz
|
|
746
695
|
.enum(['omit', 'fail'])
|
|
@@ -771,7 +720,7 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
771
720
|
shape.retryJitter = rz
|
|
772
721
|
.coerce.boolean()
|
|
773
722
|
.nullish()
|
|
774
|
-
.describe('
|
|
723
|
+
.describe('Use jitter in retry backoff (default true).');
|
|
775
724
|
shape.throttleMaxBytesPer5Min = rz
|
|
776
725
|
.number()
|
|
777
726
|
.int()
|
|
@@ -816,31 +765,31 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
816
765
|
.int()
|
|
817
766
|
.min(1)
|
|
818
767
|
.nullish()
|
|
819
|
-
.describe('
|
|
768
|
+
.describe('Destination company location ID.');
|
|
820
769
|
shape.skipIfDuplicateEmailFound = rz
|
|
821
770
|
.coerce.boolean()
|
|
822
771
|
.nullish()
|
|
823
|
-
.describe('
|
|
772
|
+
.describe('Skip the move when a duplicate email exists on the destination (default true).');
|
|
824
773
|
shape.copyContactGroups = rz
|
|
825
774
|
.coerce.boolean()
|
|
826
775
|
.nullish()
|
|
827
|
-
.describe('
|
|
776
|
+
.describe('Copy contact group memberships (default true).');
|
|
828
777
|
shape.copyCompanyNotes = rz
|
|
829
778
|
.coerce.boolean()
|
|
830
779
|
.nullish()
|
|
831
|
-
.describe('
|
|
780
|
+
.describe('Copy company notes linked to the contact (default true).');
|
|
832
781
|
shape.copyNoteAttachments = rz
|
|
833
782
|
.coerce.boolean()
|
|
834
783
|
.nullish()
|
|
835
|
-
.describe('
|
|
784
|
+
.describe('Copy attachments for copied notes (default true).');
|
|
836
785
|
shape.sourceAuditNote = rz
|
|
837
786
|
.string()
|
|
838
787
|
.nullish()
|
|
839
|
-
.describe('
|
|
788
|
+
.describe('Audit note written to the source company context.');
|
|
840
789
|
shape.destinationAuditNote = rz
|
|
841
790
|
.string()
|
|
842
791
|
.nullish()
|
|
843
|
-
.describe('
|
|
792
|
+
.describe('Audit note written to the destination company context.');
|
|
844
793
|
if (!shape.impersonationResourceId) {
|
|
845
794
|
shape.impersonationResourceId = rz
|
|
846
795
|
.coerce.string()
|
|
@@ -871,31 +820,31 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
871
820
|
shape.includeTickets = rz
|
|
872
821
|
.coerce.boolean()
|
|
873
822
|
.nullish()
|
|
874
|
-
.describe('
|
|
823
|
+
.describe('Include tickets (default false).');
|
|
875
824
|
shape.includeProjects = rz
|
|
876
825
|
.coerce.boolean()
|
|
877
826
|
.nullish()
|
|
878
|
-
.describe('
|
|
827
|
+
.describe('Include projects (default false).');
|
|
879
828
|
shape.includeServiceCallAssignments = rz
|
|
880
829
|
.coerce.boolean()
|
|
881
830
|
.nullish()
|
|
882
|
-
.describe('
|
|
831
|
+
.describe('Reassign service call task/ticket resources (default false).');
|
|
883
832
|
shape.includeAppointments = rz
|
|
884
833
|
.coerce.boolean()
|
|
885
834
|
.nullish()
|
|
886
|
-
.describe('
|
|
835
|
+
.describe('Reassign appointments (default false).');
|
|
887
836
|
shape.includeCompanies = rz
|
|
888
837
|
.coerce.boolean()
|
|
889
838
|
.nullish()
|
|
890
|
-
.describe('
|
|
839
|
+
.describe('Transfer companies owned by the source resource (default false).');
|
|
891
840
|
shape.companyIdAllowlist = rz
|
|
892
841
|
.string()
|
|
893
842
|
.nullish()
|
|
894
|
-
.describe('
|
|
843
|
+
.describe('Comma-separated company IDs to scope the transfer. Applies only when includeCompanies=true.');
|
|
895
844
|
shape.includeOpportunities = rz
|
|
896
845
|
.coerce.boolean()
|
|
897
846
|
.nullish()
|
|
898
|
-
.describe('
|
|
847
|
+
.describe('Transfer opportunities owned by the source resource (default false).');
|
|
899
848
|
shape.dueWindowPreset = rz
|
|
900
849
|
.enum([
|
|
901
850
|
'today',
|
|
@@ -910,7 +859,7 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
910
859
|
'custom',
|
|
911
860
|
])
|
|
912
861
|
.nullish()
|
|
913
|
-
.describe("
|
|
862
|
+
.describe("Due window preset. Use 'custom' with dueBeforeCustom.");
|
|
914
863
|
shape.dueBeforeCustom = rz
|
|
915
864
|
.string()
|
|
916
865
|
.nullish()
|
|
@@ -922,7 +871,7 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
922
871
|
shape.includeItemsWithNoDueDate = rz
|
|
923
872
|
.coerce.boolean()
|
|
924
873
|
.nullish()
|
|
925
|
-
.describe('
|
|
874
|
+
.describe('Include items with no due date (default true, unless a due window is set).');
|
|
926
875
|
shape.ticketAssignmentMode = rz
|
|
927
876
|
.enum(['primaryOnly', 'primaryAndSecondary'])
|
|
928
877
|
.nullish()
|
|
@@ -954,15 +903,15 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
954
903
|
shape.statusAllowlistByLabel = rz
|
|
955
904
|
.string()
|
|
956
905
|
.nullish()
|
|
957
|
-
.describe('
|
|
906
|
+
.describe('Comma-separated status labels to allow. Ignored when statusAllowlistByValue is set. Supply only one of the two.');
|
|
958
907
|
shape.statusAllowlistByValue = rz
|
|
959
908
|
.string()
|
|
960
909
|
.nullish()
|
|
961
|
-
.describe('
|
|
910
|
+
.describe('Comma-separated status IDs to allow. Takes precedence — when set, statusAllowlistByLabel is ignored. Supply only one of the two.');
|
|
962
911
|
shape.addAuditNotes = rz
|
|
963
912
|
.coerce.boolean()
|
|
964
913
|
.nullish()
|
|
965
|
-
.describe('
|
|
914
|
+
.describe('Create per-entity audit notes (default false).');
|
|
966
915
|
shape.auditNoteTemplate = rz
|
|
967
916
|
.string()
|
|
968
917
|
.nullish()
|
|
@@ -981,7 +930,7 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
981
930
|
// getAvailableRoles fields
|
|
982
931
|
if (operations.includes('getAvailableRoles')) {
|
|
983
932
|
if (!shape.resourceID) {
|
|
984
|
-
shape.resourceID = rz.coerce.string().nullish().describe('
|
|
933
|
+
shape.resourceID = rz.coerce.string().nullish().describe('Resource (technician) ID or name to find available roles for. Required for getAvailableRoles.');
|
|
985
934
|
}
|
|
986
935
|
if (!shape.ticketID) {
|
|
987
936
|
shape.ticketID = rz.coerce.string().nullish().describe('Ticket ID. If provided, derives queueID and contractID from the ticket automatically.');
|
|
@@ -1022,7 +971,7 @@ function getRuntimeSchemaBuilders(rz) {
|
|
|
1022
971
|
shape.userDefinedFields = rz
|
|
1023
972
|
.string()
|
|
1024
973
|
.nullish()
|
|
1025
|
-
.describe('JSON object of UDF field name → value pairs
|
|
974
|
+
.describe('JSON object of UDF field name → value pairs. ' +
|
|
1026
975
|
'Keys must exactly match UDF field names as returned by describeFields (mode=write). ' +
|
|
1027
976
|
'Example: {"Customer Size": "Enterprise", "Region": "APAC"}. ' +
|
|
1028
977
|
'For picklist UDFs use the picklist value ID (label resolution not supported for UDFs).');
|