node-autotask 0.39.3 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/ARCHITECTURE.md +6 -2
  2. package/CHANGELOG.md +32 -0
  3. package/MCP_TOOL_CATALOG.json +3 -3
  4. package/MCP_TOOL_MANIFEST.md +5 -5
  5. package/N8N_MCP_MANIFEST.json +2 -2
  6. package/N8N_MCP_MANIFEST.md +3 -3
  7. package/README.md +28 -36
  8. package/capabilities.json +1315 -1320
  9. package/dist/base-CVx2VMSj.d.cts +103 -0
  10. package/dist/base-CVx2VMSj.d.ts +103 -0
  11. package/dist/capabilities.cjs +2 -2
  12. package/dist/capabilities.js +1 -1
  13. package/dist/{chunk-MBI24PEF.cjs → chunk-E5W24BZB.cjs} +143 -143
  14. package/dist/{chunk-F4YDKUGY.cjs → chunk-EUGSF3U4.cjs} +287 -292
  15. package/dist/{chunk-VR6RYXTD.cjs → chunk-EVDVESQM.cjs} +1314 -1319
  16. package/dist/{chunk-BPRDYT5L.cjs → chunk-FEYVLIHD.cjs} +738 -1699
  17. package/dist/{chunk-5JAS6CAN.js → chunk-MTFRSD7P.js} +2 -2
  18. package/dist/{chunk-K6RZDRWX.js → chunk-O32L6GS5.js} +4 -9
  19. package/dist/{chunk-GSMFRPYB.js → chunk-VDVBXXJW.js} +570 -1531
  20. package/dist/{chunk-GDSCYY2G.js → chunk-Y6YJYKBZ.js} +1314 -1319
  21. package/dist/{index-DkZVRMeW.d.ts → index-BKp8_P2L.d.cts} +125 -806
  22. package/dist/{index-DkZVRMeW.d.cts → index-BKp8_P2L.d.ts} +125 -806
  23. package/dist/index.cjs +22 -50
  24. package/dist/index.d.cts +103 -102
  25. package/dist/index.d.ts +103 -102
  26. package/dist/index.js +18 -46
  27. package/dist/operations/index.cjs +178 -178
  28. package/dist/operations/index.d.cts +5 -4
  29. package/dist/operations/index.d.ts +5 -4
  30. package/dist/operations/index.js +3 -3
  31. package/dist/pool.cjs +17 -60
  32. package/dist/pool.d.cts +5 -13
  33. package/dist/pool.d.ts +5 -13
  34. package/dist/pool.js +13 -56
  35. package/dist/resources/index.cjs +4 -4
  36. package/dist/resources/index.d.cts +1 -1
  37. package/dist/resources/index.d.ts +1 -1
  38. package/dist/resources/index.js +3 -3
  39. package/dist/types/index.d.cts +1 -1
  40. package/dist/types/index.d.ts +1 -1
  41. package/docs/API.md +131 -320
  42. package/docs/N8N-ADAPTER.md +7 -7
  43. package/examples/mcp-server-http.ts +18 -18
  44. package/package.json +1 -1
@@ -1,50 +1,57 @@
1
- /** Memory guard: when the entry count reaches this on a `set`, expired
2
- * entries are purged first (a long-lived MCP server must not grow without
3
- * bound between lazy purges). */
1
+ /** Default bound of the read cache (a long-lived server must not grow without bound). */
4
2
  declare const READ_CACHE_MAX_ENTRIES = 4096;
5
- /**
6
- * A read-through TTL cache (lazy purge on read; expiry is `Date.now()`
7
- * based). Constructed by `resolveConfig` from `cache: { ttlMs,
8
- * perResourceTtlMs? }` — a positive-integer `ttlMs` is required
9
- * (validated there too); every `perResourceTtlMs` value is a positive
10
- * integer, validated fail-closed the same way (issue #32).
11
- */
12
- declare class ReadCache {
13
- /** The configured TTL in ms (the fallback for resources without an override). */
3
+ /** Read-cache TTL of the reference tables: human-timescale lookups served for an hour. */
4
+ declare const REFERENCE_TTL_MS = 3600000;
5
+ /** The reference tables (the wire entity segment of the cached path). */
6
+ declare const REFERENCE_ENTITIES: readonly string[];
7
+ /** The three metadata reads one entity can serve. */
8
+ declare const FIELD_CACHE_KINDS: readonly ["info", "fields", "udf"];
9
+ /** One of the per-entity metadata reads. */
10
+ type FieldCacheKind = (typeof FIELD_CACHE_KINDS)[number];
11
+ /** The field-cache key of one entity's metadata read (`tickets:fields`). */
12
+ declare function fieldKey(resourceKey: string, kind: FieldCacheKind): string;
13
+ /** The read-cache TTL for a key: the reference tables live `REFERENCE_TTL_MS` (or `ttlMs` when longer). */
14
+ declare function readTtlFor(key: string, ttlMs: number): number;
15
+ interface TtlCacheOptions {
16
+ /** Entry bound (positive integer; default `READ_CACHE_MAX_ENTRIES`). */
17
+ maxEntries?: number;
18
+ /** Per-key TTL in ms (default: `ttlMs` for every key). */
19
+ ttlFor?: (key: string) => number;
20
+ }
21
+ /** A TTL map with clone-on-read, an invalidation epoch and in-flight de-duplication. */
22
+ declare class TtlCache {
14
23
  readonly ttlMs: number;
15
- /** The per-resource TTL overrides (issue #32; absent = every resource uses `ttlMs`). */
16
- readonly perResourceTtlMs?: Readonly<Record<string, number>>;
24
+ readonly maxEntries: number;
25
+ private readonly ttlFor;
17
26
  private readonly store;
27
+ private readonly inflightMap;
18
28
  private epochCounter;
19
- constructor(ttlMs: number, perResourceTtlMs?: Record<string, number>);
20
- /**
21
- * The TTL (ms) for a resource plan key: the `perResourceTtlMs` override
22
- * when the map is present and names the resource, else the base
23
- * `ttlMs` (absent map, absent key, and `undefined` all fall back).
24
- */
25
- ttlFor(resource?: string): number;
26
- /**
27
- * Read-through lookup: the live entry's value, or `undefined` (absent OR
28
- * expired — an expired entry is purged lazily on this read).
29
- */
29
+ constructor(ttlMs: number, options?: TtlCacheOptions);
30
+ /** The live value (a copy), or `undefined` when absent or expired. */
30
31
  get(key: string): unknown;
31
- /** Store a successful read payload under `key`, live for `ttlFor(resource)`:
32
- * the per-resource override (issue #32) when named, else `ttlMs`.
33
- * `epoch` is the invalidation epoch the caller captured BEFORE its wire
34
- * read: a read that straddled a `clear()` (a write) is dropped, never
35
- * re-stored with its pre-write body. */
36
- set(key: string, value: unknown, resource?: string, epoch?: number): void;
32
+ /** Store `value` under `key`. `epoch` is the value the caller read BEFORE its
33
+ * wire request: a read that straddled a `clear()` (a write) is dropped. */
34
+ set(key: string, value: unknown, epoch?: number): void;
35
+ /** `{ hit, age }` without consuming or cloning the entry (age in ms since stored). */
36
+ peek(key: string): {
37
+ hit: boolean;
38
+ age: number | null;
39
+ };
40
+ /** The shared in-flight read for `key`, if any. */
41
+ inflight(key: string): Promise<unknown> | undefined;
42
+ /** Register an in-flight read so concurrent callers share it; dropped on settle. */
43
+ track(key: string, promise: Promise<unknown>): Promise<unknown>;
44
+ /** Drop one key. */
45
+ delete(key: string): boolean;
46
+ /** Drop every stored and in-flight key that starts with `prefix`. */
47
+ invalidate(prefix: string): void;
37
48
  /** Drop every expired entry (returns the number removed). */
38
49
  purgeExpired(): number;
39
- /** Current entry count (live + not-yet-purged expired). */
50
+ /** Stored entry count (live + not-yet-purged expired). */
40
51
  get size(): number;
41
- /** Drop one key (issue #36: a later positive outcome clears a stale 'absent' marker). */
42
- delete(key: string): boolean;
43
- /** The invalidation epoch: bumped by `clear()`; capture it before a wire
44
- * read and pass it to `set` so a read in flight across a write cannot
45
- * re-store its stale answer. */
52
+ /** Bumped by `clear()`; capture it before a wire read and pass it to `set`. */
46
53
  get epoch(): number;
47
- /** Drop everything (e.g. a caller that knows the tenant was reset). */
54
+ /** Drop everything and bump the epoch. */
48
55
  clear(): void;
49
56
  }
50
57
 
@@ -395,7 +402,7 @@ interface AuditEvent {
395
402
  body?: unknown;
396
403
  /** Set when the request ended in an error; the stable machine code. */
397
404
  errorCode?: string;
398
- /** True when the call was refused locally (the tenant cooldown gate) and never sent. */
405
+ /** True when the call was refused locally (the tenant cooldown or zone maintenance gate) and never sent. */
399
406
  notSent?: boolean;
400
407
  }
401
408
  /** Bounded client-scan caps for resolution (section 19.2; per-client). */
@@ -429,501 +436,6 @@ interface OperationMetadata {
429
436
  dryRun: boolean;
430
437
  }
431
438
 
432
- /** The three metadata reads one entity can serve (closed set). */
433
- declare const FIELD_CACHE_KINDS: readonly ["info", "fields", "udf"];
434
- /** One of the three per-entity metadata channels. */
435
- type FieldCacheKind = (typeof FIELD_CACHE_KINDS)[number];
436
- /**
437
- * A read-through TTL cache for successful entity-metadata reads (lazy
438
- * purge on read; expiry is `Date.now()` based). Constructed by
439
- * `resolveConfig` from `fieldCache: { ttlMs, maxEntities }` — a
440
- * positive-integer `ttlMs` is required (validated here, as in ReadCache).
441
- */
442
- declare class FieldCache {
443
- /** The configured TTL in ms. */
444
- readonly ttlMs: number;
445
- /** The entity bound (the cap applies to STORED entries; inflight never counts). */
446
- readonly maxEntities: number;
447
- private readonly store;
448
- private readonly inflightMap;
449
- constructor(ttlMs: number, maxEntities?: number);
450
- /** The composite key: one entity's catalogs are one key apart. */
451
- static key(resourceKey: string, kind: FieldCacheKind): string;
452
- /**
453
- * Read-through lookup: the live entry's value (a copy), or `undefined`
454
- * (absent OR expired — an expired entry is purged lazily on this read).
455
- */
456
- get(resourceKey: string, kind: FieldCacheKind): unknown;
457
- /**
458
- * Store a SUCCESSFUL, NON-EMPTY metadata value under (entity, kind),
459
- * live for `ttlMs`. An EMPTY value (`[]` / `{}` / null) is refused
460
- * silently (never cached — an empty is not an answer): the next call
461
- * refetches.
462
- */
463
- set(resourceKey: string, kind: FieldCacheKind, value: unknown): void;
464
- /** True for the values that must never be cached (an empty is not an answer). */
465
- static isEmpty(value: unknown): boolean;
466
- /**
467
- * In-flight de-duplication: the shared in-flight promise for
468
- * (entity, kind), or `undefined` (nothing in flight — the caller
469
- * issues the request and registers it with `track`).
470
- */
471
- inflight(resourceKey: string, kind: FieldCacheKind): Promise<unknown> | undefined;
472
- /**
473
- * Register an in-flight metadata read: concurrent callers for the same
474
- * (entity, kind) await the SAME promise (one wire request). The entry
475
- * is dropped on settle — success OR failure (a failure is never
476
- * cached; the next caller refetches).
477
- */
478
- track(resourceKey: string, kind: FieldCacheKind, promise: Promise<unknown>): Promise<unknown>;
479
- /**
480
- * The drift signal: drop the entity's STORED entries AND its in-flight
481
- * promise (a refetch must not join a request whose premise just moved).
482
- * A no-op when the entity holds nothing.
483
- */
484
- invalidate(resourceKey: string): void;
485
- /**
486
- * A non-mutating probe for the served op's per-row `cache` report:
487
- * `hit` = a live (unexpired) entry exists; `age` = ms since that entry
488
- * was stored (null when `hit` is false). Never purges, never clones.
489
- */
490
- peek(resourceKey: string, kind: FieldCacheKind): {
491
- hit: boolean;
492
- age: number | null;
493
- };
494
- /** Drop every expired entry (returns the number removed). */
495
- purgeExpired(): number;
496
- /** Current entry count (live + not-yet-purged expired). */
497
- get size(): number;
498
- /** Drop everything (e.g. a caller that knows the tenant was reset). */
499
- clear(): void;
500
- }
501
-
502
- /** One stored name answer: the resolved name (null when the vendor
503
- * returned no name part) + the blind marker (the vendor's true
504
- * not-found for this id). */
505
- interface ResourceNameEntry {
506
- /** The composed display name (`firstName [middleName] lastName`,
507
- * single spaces); null when the record exists but carries no name
508
- * part (a vendor data gap — distinct from blind). */
509
- name: string | null;
510
- /** True when the per-id read is the vendor's true not-found (404 or
511
- * `200 item: null`) — the table-invisible case the op reports with
512
- * the id kept and no error. */
513
- blind: boolean;
514
- }
515
- /**
516
- * A read-through TTL cache for `operations.expandResourceNames` name
517
- * answers (lazy purge on read; expiry is `Date.now()` based).
518
- * Constructed by `resolveConfig` from
519
- * `resourceNameCache: { ttlMs, maxEntries }` — a positive-integer
520
- * `ttlMs` is required (validated here, as in ReadCache / FieldCache).
521
- */
522
- declare class ResourceNameCache {
523
- /** The configured TTL in ms. */
524
- readonly ttlMs: number;
525
- /** The entry bound (the cap applies to STORED entries; inflight never counts). */
526
- readonly maxEntries: number;
527
- private readonly store;
528
- private readonly inflightMap;
529
- private epochCounter;
530
- constructor(ttlMs: number, maxEntries?: number);
531
- /** The namespaced key: `resources:<canonical id>` (the namespace
532
- * leaves a documented path to future FK tables — v1 serves
533
- * `resources` only). */
534
- static key(id: Identifier): string;
535
- /**
536
- * Read-through lookup: the live entry (a copy), or `undefined`
537
- * (absent OR expired — an expired entry is purged lazily on this
538
- * read).
539
- */
540
- get(id: Identifier): ResourceNameEntry | undefined;
541
- /**
542
- * Store a name answer under the id, live for `ttlMs`. ALWAYS stores
543
- * (the no-name-part answer `{ name: null, blind: false }` is a stable
544
- * fact and is cached — the documented difference from the fieldCache
545
- * empty rule); past the cap, purge expired first, then evict the
546
- * oldest-inserted (Map insertion order; refreshes re-insert so the
547
- * memory guard drops the OLDEST-inserted entries first).
548
- */
549
- set(id: Identifier, value: ResourceNameEntry, epoch?: number): void;
550
- /**
551
- * In-flight de-duplication: the shared in-flight promise for the id,
552
- * or `undefined` (nothing in flight — the caller issues the request
553
- * and registers it with `track`).
554
- */
555
- inflight(id: Identifier): Promise<unknown> | undefined;
556
- /**
557
- * Register an in-flight name read: concurrent callers for the same id
558
- * await the SAME promise (one wire request). The entry is dropped on
559
- * settle — success OR failure (a failure is never cached; the next
560
- * caller refetches).
561
- */
562
- track(id: Identifier, promise: Promise<unknown>): Promise<unknown>;
563
- /** Drop every expired entry (returns the number removed). */
564
- purgeExpired(): number;
565
- /** The invalidation epoch: bumped by `clear()`; capture it before a wire
566
- * read and pass it to `set` so a stale answer is dropped. */
567
- get epoch(): number;
568
- /** Current entry count (live + not-yet-purged expired). */
569
- get size(): number;
570
- /**
571
- * Drop everything — the SCOPED invalidation target: a real write to
572
- * the `resources` resource through the same client (a rename via this
573
- * client is always fresh).
574
- */
575
- clear(): void;
576
- }
577
-
578
- /**
579
- * AutotaskError hierarchy (ARCHITECTURE section 10).
580
- *
581
- * Every error carries the structured contract: `code` (stable SCREAMING_SNAKE
582
- * machine code), `category`, `retryable`, plus `operation`, `httpStatus`,
583
- * `vendorError` (the vendor payload under a documented key, deep-redacted —
584
- * the INV-A1 hotfix), `resourceIds` (the LEGACY unlabeled id list — the
585
- * stamp sites name records of several vendor entities and say nothing about
586
- * which; every SDK stamp site that sets it also sets `details.idRefs`, the
587
- * labeled `{ entity, id }` companion — issue #116),
588
- * `suggestedAction` (deterministic next step only), `correlationId` and `url`.
589
- *
590
- * `item: null` on a single GET (HTTP 200) is a NOT FOUND, not a success — the
591
- * vendor's not-found signal (G1 envelope.md). The vendor documents no error
592
- * bodies; the shape `{ errors: [{ message, field?, code? }] }` is pinned from
593
- * the node's errorHandler and parsed defensively here.
594
- */
595
- type ErrorCategory = 'auth' | 'not_found' | 'validation' | 'conflict' | 'rate_limit' | 'server' | 'network' | 'timeout' | 'resolution' | 'policy';
596
- /**
597
- * A labeled id reference (issue #116). The legacy `resourceIds` field reads
598
- * as Autotask **Resource** (staff) ids, but the special ops stamp ids of
599
- * many other entities into it (ticket / company / contact / billing-code /
600
- * the failed record's own id on a generic `get`), unlabeled — so feeding an
601
- * error's `resourceIds` to `operations.expandResourceNames` (whose only wire
602
- * verb is `GET /V1.0/Resources/{id}`) resolves a colliding non-staff id to
603
- * an unrelated person's name. Every SDK stamp site that sets `resourceIds`
604
- * now also sets `details.idRefs` — the same ids, each labeled with the vendor entity
605
- * it identifies — so consumers can resolve against the entity the error
606
- * actually names instead of parsing the message.
607
- *
608
- * `entity` is the vendor entity name (singular snake_case — `company`,
609
- * `ticket`, `contact`, `billing_code`, `resource`, ...; the de-pluralized
610
- * vendor table name — the same word the error message uses; the SDK
611
- * resource key is the same word plural). `resource` (staff) is the ONLY
612
- * entity `operations.expandResourceNames` resolves — a ref of any other
613
- * entity must NOT be fed to it.
614
- */
615
- interface ErrorIdRef {
616
- /** The vendor entity the id identifies (singular snake_case, e.g. `company`, `ticket`, `resource` = staff). */
617
- entity: string;
618
- /** The value that addresses the record at that entity's endpoint: the
619
- * vendor id (a safe integer, or the canonical integer-string form) —
620
- * except `resource_time_off_balances.getByYear`, where the endpoint's
621
- * path key is the YEAR (the vendor defines no record-id read for this
622
- * entity). */
623
- id: number | string;
624
- }
625
- interface AutotaskErrorOptions {
626
- code?: string;
627
- category?: ErrorCategory;
628
- operation?: string;
629
- httpStatus?: number;
630
- vendorError?: unknown;
631
- /**
632
- * The ids the error is about. LEGACY, unlabeled: reads as Resource
633
- * (staff) ids but the stamp sites name records of several entities
634
- * (issue #116). Kept for compatibility; the labeled form rides on
635
- * `details.idRefs` (`ErrorIdRef[]`) and is what consumers should use.
636
- * The pairing above is a guarantee of the SDK stamp sites — an error you
637
- * construct yourself may set `resourceIds` without `details.idRefs`.
638
- */
639
- resourceIds?: (number | string)[];
640
- suggestedAction?: string;
641
- correlationId?: string;
642
- retryable?: boolean;
643
- url?: string;
644
- /**
645
- * The structured, deterministic extras that ride on the error WITHOUT
646
- * changing its contract: issue #9 — the recovery refusals' payload
647
- * (`{ resource, reason/note, ... }` on DELETE_BOUNDARY /
648
- * MARKER_UNSAFE_ID / RECOVERY_TRUNCATED); issue #14 — `emptyReason`
649
- * (the typed reason a miss / drift carries — { kind, note, authority,
650
- * remedy }) and `pointerNote` (the known-unusable-op pointer sentence);
651
- * issue #116 — `idRefs` (`ErrorIdRef[]`, the labeled `{ entity, id }`
652
- * companion of the legacy `resourceIds` — every SDK stamp site that sets
653
- * `resourceIds` also sets it). Additive only — the status, code, message
654
- * and retryability are never derived from it.
655
- */
656
- details?: Record<string, unknown>;
657
- }
658
- declare class AutotaskError extends Error {
659
- code: string;
660
- category: ErrorCategory;
661
- operation?: string;
662
- httpStatus?: number;
663
- vendorError?: unknown;
664
- /** Legacy unlabeled id list (issue #116) — see `AutotaskErrorOptions.resourceIds`; the labeled companion rides on `details.idRefs`. */
665
- resourceIds?: (number | string)[];
666
- suggestedAction?: string;
667
- correlationId?: string;
668
- retryable: boolean;
669
- url?: string;
670
- /** Issue #9/#14: the additive structured extras (recovery refusal payload; emptyReason / pointerNote) — never changes the error contract. */
671
- details?: Record<string, unknown>;
672
- constructor(message: string, options?: AutotaskErrorOptions);
673
- }
674
- declare class AutotaskConfigError extends AutotaskError {
675
- constructor(message: string, options?: AutotaskErrorOptions);
676
- }
677
- /** Type guard for the hierarchy. */
678
- declare function isAutotaskError(err: unknown): err is AutotaskError;
679
-
680
- /**
681
- * The optional per-host circuit breaker at the transport (issue #26).
682
- *
683
- * #6 gates a TENANT after a 429. Nothing equivalent existed for a vendor
684
- * that is DOWN: during an outage or a maintenance window every call burns
685
- * its full retry budget and the agent keeps issuing new ones. The breaker
686
- * counts SERVICE-FAILURE outcomes per HOST (a zone outage hits every tenant
687
- * on that zone — vendor health is host-scoped, so the key is the host of
688
- * the configured base URL, not #6's `user@host`) and fails further calls
689
- * for that host LOCALLY — a typed `CircuitBreakerError` (`code:
690
- * 'CIRCUIT_BREAKER_OPEN'`, `notSent: true`, `retryable: true`, `retryAfter`
691
- * = the remaining open time) with zero upstream calls — until the open
692
- * period passes and `successesToClose` probe successes prove the host is
693
- * healthy again.
694
- *
695
- * OFF by default (`circuitBreaker: { enabled: true }` opts in). Defaults
696
- * from the prior art (tphakala/go-autotask `circuitbreaker.go`): 5 counted
697
- * failures in a 10-second window open the circuit for 30 seconds;
698
- * `successesToClose` 2 probe successes close it; `halfOpenProbes` bounds the
699
- * probes admitted while half-open (default `= successesToClose`, validated
700
- * `>= successesToClose` — a breaker that can never close is a misconfiguration
701
- * and is refused fail-closed at construction).
702
- *
703
- * Timer-free (the #6 cooldown design decision): the state is pure
704
- * timestamps and everything is derived from `Date.now()` lazily at each
705
- * request — `closed` (no entry / nothing armed), `open` (until
706
- * `openedAt + openTimeoutMs`), then the lazy `half-open` transition on the
707
- * first request after the open period. No `setInterval`, no injected clock
708
- * (the test suite fakes time with `vi.useFakeTimers()`, exactly like
709
- * `test/cooldown.test.ts`).
710
- *
711
- * The DEFAULT failure predicate counts exactly: `NETWORK_ERROR`, `TIMEOUT`,
712
- * a vendor 429 (by status — a surfaced 429 may carry an ADOPTED vendor
713
- * machine code, e.g. the thread-threshold `Itgenatr005`), a 5xx EXCEPT the
714
- * deterministic field-validation 500 (keyed on #23's `details.deterministic`
715
- * signal — by that signal only), and `UNEXPECTED_CONTENT_TYPE` (the #24
716
- * maintenance page, by code — NEVER `INVALID_RESPONSE`: the W-A7 shape-drift
717
- * and the #13 marker-recovery key are untouched). Never counted: `ABORTED`
718
- * (a caller's cancellation says nothing about service health), any 4xx, and
719
- * local/policy refusals (the cooldown gate's `notSent` refusal, the local
720
- * hourly limiter, config errors) — a call that never reached the vendor is
721
- * never a service failure.
722
- *
723
- * Store: the default is the in-process in-memory map shared by every client
724
- * instance (entries capped at 1024, evicting the OLDEST last-activity first
725
- * — failing open: the longest-idle host loses state, an actively failing or
726
- * open host keeps its). The default store is deliberately NOT anchored on
727
- * globalThis (the #6 precedent): a process that loads both the ESM and the
728
- * CJS build gets one map per build — inject one shared `CircuitBreakerStore`
729
- * if you need cross-build sharing (the interface leaves room for a
730
- * Redis-backed store). The state RIDES THE STORE, not the client: a pool
731
- * LRU eviction of a tenant client loses nothing (an evicted-then-recreated
732
- * tenant on the same host hits the same shared state). On a shared-host
733
- * gateway (one host, many credential tuples) the breaker is PER HOST — one
734
- * tenant's outage opens the circuit for that host's other tenants too (the
735
- * documented consequence of the host-only key; `enabled` is off by default,
736
- * so nothing changes unless opted in). `thresholdInformation.get()` bypasses
737
- * the REFUSAL so a downed host can still be probed for headroom — its
738
- * outcome is still RECORDED (a 2xx closes toward recovery; a failure
739
- * re-arms; the #6 ThresholdInformation-bypass semantics).
740
- */
741
-
742
- /**
743
- * One host's breaker state (all epoch ms). `openedAt === null` = closed;
744
- * `openedAt + openTimeoutMs > now` = open; after that the state is
745
- * half-open (the lazy transition — no timers). `probes` bounds the probes
746
- * admitted while half-open (`halfOpenProbes`); every probe completion
747
- * (success OR a NON-COUNTED outcome, issue #262) decrements it, but only
748
- * when it settles in the window it was admitted in (`windowOpenedAt` — a
749
- * probe of a dead window is voided, issue #271). The transport never
750
- * stores an empty closed entry: closing the circuit DELETES the entry
751
- * (a healthy host leaves no trace — the #6 delete-on-2xx precedent).
752
- */
753
- interface CircuitBreakerState {
754
- /** Counted-failure timestamps (pruned to the failure window at record time). */
755
- failures: number[];
756
- /** When the circuit (re)opened (epoch ms); null while closed. */
757
- openedAt: number | null;
758
- /** Probe successes toward `successesToClose` (the current open/half-open phase). */
759
- successes: number;
760
- /** Probes admitted while half-open (in flight or awaiting a verdict). */
761
- probes: number;
762
- /**
763
- * When the CURRENT open window opened (epoch ms): set once at the open
764
- * transition and never moved by a re-arm (a counted failure moves
765
- * `openedAt` from now, but not this); null while closed. OPTIONAL: a store
766
- * that never persists it (or an older build re-arming a shared entry)
767
- * leaves the probe unpinned — the pre-#271 behaviour. A probe's
768
- * settlement is pinned to it: a probe admitted in a different window
769
- * (the entry was deleted on close and re-created on the next open) is
770
- * voided, never settled against the newer window (the #43 void
771
- * precedent, window-scoped — issue #271).
772
- */
773
- windowOpenedAt?: number | null;
774
- }
775
- /**
776
- * Per-host breaker state: the SAME get/set/delete shape as `CooldownStore`
777
- * (`src/cooldown.ts`), over the richer `CircuitBreakerState` (a single
778
- * deadline number cannot hold a state machine + counters).
779
- */
780
- interface CircuitBreakerStore {
781
- /** The host's state, or undefined when nothing is recorded for it (= closed). */
782
- get(hostKey: string): CircuitBreakerState | undefined;
783
- /** Store (or replace) the host's state. */
784
- set(hostKey: string, state: CircuitBreakerState): void;
785
- /** Delete the host's entry (close reset, a healthy host leaves no trace). */
786
- delete(hostKey: string): void;
787
- }
788
- /** Counted-failure window: "5 failures in 10 s" (the prior-art default). */
789
- declare const DEFAULT_CIRCUIT_BREAKER_WINDOW_MS = 10000;
790
- /** Counted failures inside the window that open the circuit. */
791
- declare const DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD = 5;
792
- /** How long the circuit stays open before the half-open probes. */
793
- declare const DEFAULT_CIRCUIT_BREAKER_OPEN_TIMEOUT_MS = 30000;
794
- /** Probe successes that close the circuit. */
795
- declare const DEFAULT_CIRCUIT_BREAKER_SUCCESSES_TO_CLOSE = 2;
796
- /** Entry cap of the default in-memory store. */
797
- declare const DEFAULT_CIRCUIT_BREAKER_MAX_ENTRIES = 1024;
798
- /**
799
- * The default in-memory store: a capped Map, evicting the entry with the
800
- * OLDEST last-activity first when full (failing open — the longest-idle
801
- * host goes; an actively failing or an open host keeps its state).
802
- * Last-activity = `openedAt` when armed, else the newest `failures`
803
- * timestamp (a closed entry always carries >= 1 failure).
804
- */
805
- declare class InMemoryCircuitBreakerStore implements CircuitBreakerStore {
806
- private readonly maxEntries;
807
- private readonly states;
808
- constructor(maxEntries?: number);
809
- get(hostKey: string): CircuitBreakerState | undefined;
810
- set(hostKey: string, state: CircuitBreakerState): void;
811
- delete(hostKey: string): void;
812
- /** Drop every entry (test helper surface; also used by resetDefaultCircuitBreakerStore). */
813
- clear(): void;
814
- }
815
- /** The default in-process store, created on first call. */
816
- declare function defaultCircuitBreakerStore(): CircuitBreakerStore;
817
- /** Reset helper for tests: clears the shared default store. */
818
- declare function resetDefaultCircuitBreakerStore(): void;
819
- /**
820
- * The breaker key: the lowercased HOST of the (normalised) base URL —
821
- * host-only (issue #26's "per-host keying"; decision: vendor health is
822
- * host-scoped, not credential-scoped). A host can never contain `@` or
823
- * `:`-ambiguity beyond the standard `host:port` form; impersonation (a
824
- * header, not key material) does not change it. The same derivation as
825
- * `buildTenantKey`'s host part (`src/cooldown.ts`).
826
- */
827
- declare function buildBreakerKey(baseUrl: string): string;
828
- /**
829
- * The DEFAULT failure predicate (injectable via
830
- * `config.circuitBreaker.isFailure`): what counts against the circuit.
831
- * Counts exactly — `NETWORK_ERROR`, `TIMEOUT`, a vendor 429 (by STATUS: a
832
- * surfaced 429 may carry an adopted vendor machine code as its stable
833
- * code, e.g. the thread-threshold `Itgenatr005`), a 5xx EXCEPT the
834
- * deterministic field-validation 500 (#23's `details.deterministic`
835
- * signal — by that signal only), and `UNEXPECTED_CONTENT_TYPE` (the #24
836
- * maintenance page, by code). Never counts: `ABORTED`, any 4xx, a
837
- * local/policy refusal (`notSent` — a local refusal, the cooldown's or the
838
- * breaker's own, never reached the vendor), or `INVALID_RESPONSE` (the
839
- * W-A7 shape-drift / #13 marker-recovery key).
840
- */
841
- declare function isBreakerFailure(err: AutotaskError): boolean;
842
-
843
- /**
844
- * Per-tenant 429 cooldown gate (issue #6).
845
- *
846
- * Once the transport has used up its retries on a 429 (or the Retry-After is
847
- * too long to wait, or the method is non-retriable), the vendor has said
848
- * "stop" — but an agent that repeats the same calls within seconds keeps
849
- * hitting a tenant that is already over its threshold, and the repeats can
850
- * prolong the throttle. The gate remembers the cooldown DEADLINE per tenant
851
- * (lowercased username + lowercased host; impersonation does not change the
852
- * key) and fails every further call for that tenant LOCALLY — a typed
853
- * `RateLimitError` with `notSent: true`, zero upstream calls — until the
854
- * deadline passes.
855
- *
856
- * Defaults (decisions from the issue): ON by default with a 15-minute hard
857
- * cap; `Retry-After` missing or unparseable -> a 60-second window; the
858
- * thread-threshold 429 (vendor code `Itgenatr005`, clears in seconds) arms
859
- * only a short window: min(Retry-After, 10 s), default 5 s. A 2xx from a
860
- * call that got through clears the gate early; expiry is lazy (the first
861
- * call after the deadline deletes the entry and proceeds); a hostile
862
- * Retry-After is clamped to the cap, so a lock-out is always bounded.
863
- *
864
- * Store: the default is the in-process in-memory map shared by every client
865
- * instance (entries capped at 1024, evicting the EARLIEST deadline first —
866
- * failing open; a tenant that keeps 429-ing keeps its fresh deadline). The
867
- * default store is deliberately NOT anchored on globalThis: a process that
868
- * loads both the ESM and the CJS build gets one map per build — inject one
869
- * shared `CooldownStore` if you need cross-build sharing (the interface
870
- * leaves room for a Redis-backed store). `thresholdInformation.get()`
871
- * bypasses the gate so a throttled tenant can still read its own headroom
872
- * (a 2xx clears; a 429 re-arms).
873
- */
874
- /** One tenant's armed cooldown: get/set/delete of the deadline (epoch ms). */
875
- interface CooldownStore {
876
- /** The armed deadline (epoch ms) for the tenant key, or undefined when not armed. */
877
- get(tenantKey: string): number | undefined;
878
- /** Arm (or re-arm) the tenant's gate until `deadline` (epoch ms). */
879
- set(tenantKey: string, deadline: number): void;
880
- /** Delete the tenant's entry (lazy expiry, early clear on 2xx). */
881
- delete(tenantKey: string): void;
882
- }
883
- /** Hard cap on a tenant lock-out: a hostile `Retry-After` is clamped here. */
884
- declare const DEFAULT_COOLDOWN_MAX_MS: number;
885
- /** Window when `Retry-After` is missing or unparseable. */
886
- declare const DEFAULT_COOLDOWN_DEFAULT_MS = 60000;
887
- /** Entry cap of the default in-memory store. */
888
- declare const DEFAULT_COOLDOWN_MAX_ENTRIES = 1024;
889
- /**
890
- * The default in-memory store: a capped Map, evicting the entry with the
891
- * EARLIEST deadline first when full (failing open — a tenant that keeps
892
- * 429-ing keeps its fresh deadline; the soonest-to-expire entries go).
893
- */
894
- declare class InMemoryCooldownStore implements CooldownStore {
895
- private readonly maxEntries;
896
- private readonly deadlines;
897
- constructor(maxEntries?: number);
898
- get(tenantKey: string): number | undefined;
899
- set(tenantKey: string, deadline: number): void;
900
- delete(tenantKey: string): void;
901
- /** Drop every entry (test helper surface; also used by resetDefaultCooldownStore). */
902
- clear(): void;
903
- }
904
- /** The default in-process store, created on first call. */
905
- declare function defaultCooldownStore(): CooldownStore;
906
- /** Reset helper for tests: clears the shared default store. */
907
- declare function resetDefaultCooldownStore(): void;
908
- /**
909
- * The tenant key: lowercased username + `@` + lowercased host. A host can
910
- * never contain `@`, so the key is unambiguous; impersonation (a header,
911
- * not part of the key) does not change it.
912
- */
913
- declare function buildTenantKey(userName: string, baseUrl: string): string;
914
- /**
915
- * The cooldown window (ms) for a 429 about to surface. `retryAfterSecs` is
916
- * the parsed `Retry-After` (undefined when missing/unparseable — the parser
917
- * never returns negatives). Normal 429: Retry-After clamped to `maxMs`,
918
- * defaulting to `defaultMs`. Thread-threshold 429 (`Itgenatr005`): a short
919
- * window — min(Retry-After, 10 s), default 5 s — it clears in seconds.
920
- */
921
- declare function cooldownDurationMs(retryAfterSecs: number | undefined, opts: {
922
- maxMs: number;
923
- defaultMs: number;
924
- threadThreshold?: boolean;
925
- }): number;
926
-
927
439
  /**
928
440
  * Logger hook + credential redaction (ARCHITECTURE sections 14, 9).
929
441
  *
@@ -994,11 +506,16 @@ interface AutotaskConfig {
994
506
  * Maintenance-window auto-retry (the weekly Autotask maintenance window — the
995
507
  * edge answers a non-JSON HTML page before the vendor application ever sees
996
508
  * the request). The page is recognised from the first 256 bytes of the body
997
- * at ANY status; while it persists the transport waits `maintenancePollMs`
998
- * and retries, up to this many ms from the first maintenance response.
999
- * Default 3_600_000 (1 hour; the observed median window is about 2 h and the
1000
- * ceiling 4 h — `MAINTENANCE_WINDOW_MAX_MS`); `0` disables the wait and
1001
- * surfaces the error at once.
509
+ * at ANY status, and it opens the zone's shared maintenance gate (issue
510
+ * #285, always on): while open, every other call on the zone fails at once
511
+ * with `MaintenanceError` (`code: 'MAINTENANCE'`, `notSent: true`), and one
512
+ * call per `maintenancePollMs` goes upstream as the probe; the first
513
+ * non-maintenance response closes the gate. The call that owns the probe
514
+ * slot waits `maintenancePollMs` and retries, up to this many ms from the
515
+ * first maintenance response. Default 3_600_000 (1 hour; the observed median
516
+ * window is about 2 h and the ceiling 4 h — `MAINTENANCE_WINDOW_MAX_MS`);
517
+ * `0` disables the wait: the call throws `MaintenanceError` at once and the
518
+ * gate still opens.
1002
519
  *
1003
520
  * A non-JSON `2xx` page applies to READS AND WRITES: it is edge-served before
1004
521
  * execution, which is exactly the case where a bounded auto-retry is safe.
@@ -1011,7 +528,7 @@ interface AutotaskConfig {
1011
528
  * is bounded per call.
1012
529
  */
1013
530
  maintenanceMaxWaitMs?: number;
1014
- /** Poll interval while waiting out a maintenance page. Default 30_000. */
531
+ /** Poll interval while waiting out a maintenance page, and the gate's probe interval. Default 30_000. */
1015
532
  maintenancePollMs?: number;
1016
533
  /** Optional request log sink. Default: no-op. */
1017
534
  logger?: Logger;
@@ -1035,53 +552,15 @@ interface AutotaskConfig {
1035
552
  * wait out, on a non-retriable method), further calls for that tenant
1036
553
  * (lowercased username + lowercased host) fail LOCALLY with
1037
554
  * `RateLimitError` (`code: 'RATE_LIMITED_COOLDOWN'`, `notSent: true`)
1038
- * until the deadline passes — zero upstream calls. `enabled: false`
1039
- * disables the gate; `maxMs` caps the window (default 15 minutes);
1040
- * `defaultMs` is the window when Retry-After is missing/unparseable
1041
- * (default 60 s); `store` injects a custom `CooldownStore` (the default
1042
- * is the in-process in-memory map shared by every client instance).
555
+ * until the deadline passes. `enabled: false` disables the gate; `maxMs`
556
+ * caps the window (default 15 minutes); `defaultMs` is the window when
557
+ * Retry-After is missing/unparseable (default 60 s). The state is one
558
+ * in-process map shared by every client.
1043
559
  */
1044
560
  cooldown?: {
1045
561
  enabled?: boolean;
1046
562
  maxMs?: number;
1047
563
  defaultMs?: number;
1048
- store?: CooldownStore;
1049
- };
1050
- /**
1051
- * Optional per-host circuit breaker at the transport (issue #26): OFF by
1052
- * default. Counts SERVICE-FAILURE outcomes per host (the host of the
1053
- * base URL — a zone outage hits every tenant on that zone, so the key is
1054
- * host-only; a different tenant on a different host is unaffected, and
1055
- * on a shared host one tenant's outage opens the circuit for the others
1056
- * — the documented consequence of the host-only key) and, once
1057
- * `failureThreshold` counted failures land inside the `failureWindowMs`
1058
- * window, refuses further calls for that host LOCALLY (`CircuitBreakerError`,
1059
- * `code: 'CIRCUIT_BREAKER_OPEN'`, `notSent: true`, `retryable: true`,
1060
- * `retryAfter` = remaining open seconds — the deliberate divergence from
1061
- * #6's `retryable: false`: the open period is bounded and advertised)
1062
- * until `openTimeoutMs` passes and `successesToClose` probe successes
1063
- * close it. `halfOpenProbes` bounds the probes admitted while half-open
1064
- * (default `= successesToClose`; MUST be `>= successesToClose` — a
1065
- * breaker that can never close is refused fail-closed at construction).
1066
- * `store` injects a custom `CircuitBreakerStore` (the default is the
1067
- * in-process in-memory map shared by every client instance); `isFailure`
1068
- * injects the failure predicate (the default counts NETWORK_ERROR,
1069
- * TIMEOUT, a vendor 429, a 5xx EXCEPT the deterministic validation 500,
1070
- * and UNEXPECTED_CONTENT_TYPE — never ABORTED, a 4xx, or a local
1071
- * refusal). Gated calls emit the audit event with `notSent` and consume
1072
- * no `rateLimit.perHour` stamp; `thresholdInformation.get()` bypasses the
1073
- * refusal (its outcome is still recorded). Timer-free: everything is
1074
- * derived from `Date.now()` lazily, like the #6 cooldown.
1075
- */
1076
- circuitBreaker?: {
1077
- enabled?: boolean;
1078
- failureWindowMs?: number;
1079
- failureThreshold?: number;
1080
- openTimeoutMs?: number;
1081
- successesToClose?: number;
1082
- halfOpenProbes?: number;
1083
- store?: CircuitBreakerStore;
1084
- isFailure?: (err: AutotaskError) => boolean;
1085
564
  };
1086
565
  /**
1087
566
  * Bounded client-scan for resolution (section 19.2). A bare-value
@@ -1118,82 +597,31 @@ interface AutotaskConfig {
1118
597
  */
1119
598
  redactPersonalData?: boolean;
1120
599
  /**
1121
- * Read-through TTL cache for successful single-record reads (get-by-id
1122
- * and the id branch of `resolve`). ON by default (issue #80): an ABSENT
1123
- * block builds the default instance (`DEFAULT_READ_CACHE_TTL_MS` — 5
1124
- * min — with the plan-derived per-resource table
1125
- * `DEFAULT_PER_RESOURCE_TTL_MS` applied as the default map); `cache:
1126
- * false` is the explicit opt-out (no instance — the uncached path,
1127
- * byte-identical to the pre-#80 off mode); an object merges over the
1128
- * defaults (`ttlMs` optional). A cached read is a snapshot at fetch
1129
- * time: mutations are never cached, and any real write through this
1130
- * client clears the cache, so a write-then-read on the same client
1131
- * re-fetches; writes made elsewhere (another client, the Autotask UI)
1132
- * show up once the TTL expires. `ttlMs` must be a positive integer (ms)
1133
- * when present. `perResourceTtlMs` (issue #32) is an optional map of
1134
- * resource plan key -> TTL in ms whose entries OVERRIDE the default
1135
- * table per resource (operator entry > table entry > `ttlMs`); a
1136
- * resource named in neither falls back to `ttlMs`. Every value is a
1137
- * positive integer (validated fail-closed like `ttlMs`). The key
1138
- * contract (docs section 11.15): the entry takes the override for the
1139
- * plan key of the entity the read path points to — a contact read
1140
- * through `tickets.getContext` expires on the contact's TTL. The
1141
- * plan-derived default table (`DEFAULT_PER_RESOURCE_TTL_MS` in
1142
- * `src/cache-ttl-tables.ts`, reference class 1h vs default class 5min)
1143
- * IS the default per-resource map (issue #80 — applied by default, not
1144
- * just a reference).
600
+ * The SDK's in-memory caches (issue #286), ON by default: an absent block
601
+ * builds them with the defaults; `cache: false` turns every channel off
602
+ * (every read goes to the wire). Two channels:
603
+ * - single-record reads (get-by-id, the id branch of `resolve`, the
604
+ * composite FK reads and `operations.expandResourceNames` names): `ttlMs`
605
+ * (default `DEFAULT_READ_CACHE_TTL_MS`, 5 min); the reference tables
606
+ * (`REFERENCE_ENTITIES`) live 1 h. Any real write through the client
607
+ * clears this channel; writes made elsewhere show up once the TTL expires.
608
+ * - entity field metadata: `fieldTtlMs` (default
609
+ * `DEFAULT_FIELD_CACHE_TTL_MS`, 5 min); a vendor drift signal drops the
610
+ * entity's entries.
611
+ * Lists, queries, counts, mutations and errors are never cached. TTLs are
612
+ * positive integers (ms).
1145
613
  */
1146
614
  cache?: false | {
1147
615
  ttlMs?: number;
1148
- perResourceTtlMs?: Record<string, number>;
616
+ fieldTtlMs?: number;
1149
617
  /**
1150
- * Advanced (issue #219 N6): supply the `ReadCache` INSTANCE instead of
1151
- * letting the client build one — `ClientPool` shares one per tenant
618
+ * Advanced (issue #219 N6): supply the record-cache INSTANCE instead of
619
+ * letting the client build one. `ClientPool` shares one per tenant
1152
620
  * across the clients it builds, so a write through any pooled client
1153
- * voids the read cache for all of them. The instance owns its TTLs:
1154
- * combining it with `ttlMs` / `perResourceTtlMs` refuses (fail closed).
1155
- * `ReadCache` is exported from the SDK root (`import { ReadCache } from 'node-autotask'`).
621
+ * voids it for all of them. The instance owns its TTL: combining it
622
+ * with `ttlMs` refuses. `TtlCache` is exported from the SDK root.
1156
623
  */
1157
- store?: ReadCache;
1158
- };
1159
- /**
1160
- * Live field-metadata channel for the entityInformation trio
1161
- * (`getEntityInfo` / `getFieldInfo` / `getUdfInfo`). ON by default
1162
- * (issue #80): an ABSENT block builds the default instance
1163
- * (`DEFAULT_FIELD_CACHE_TTL_MS` — 5 min — with `FIELD_CACHE_MAX_ENTITIES`);
1164
- * `fieldCache: false` is the explicit opt-out (no instance — the trio
1165
- * is the uncached wire path, bit-for-bit); an object merges over the
1166
- * defaults. Live reads are snapshots at fetch time: a vendor drift (a
1167
- * deterministic validation 500, or an INVALID_RESPONSE on a metadata
1168
- * read) invalidates the entity's entries so the next call refetches;
1169
- * anything the drift signals do not name shows up once `ttlMs` expires.
1170
- * Field metadata only — record reads are `cache`, a different channel.
1171
- * `ttlMs` must be a positive integer (ms) when present; `maxEntities`
1172
- * (optional, positive integer) bounds the in-memory store.
1173
- */
1174
- fieldCache?: false | {
1175
- ttlMs?: number;
1176
- maxEntities?: number;
1177
- };
1178
- /**
1179
- * Resource-name channel for `operations.expandResourceNames` (issue
1180
- * #65). ON by default (issue #80): an ABSENT block builds the default
1181
- * instance (`DEFAULT_RESOURCE_NAME_CACHE_TTL_MS` — 1 h — with
1182
- * `RESOURCE_NAME_CACHE_MAX_ENTRIES`); `resourceNameCache: false` is
1183
- * the explicit opt-out (no instance, and the op is the uncached per-id
1184
- * path, bit-for-bit — per-call de-duplication still applies); an
1185
- * object merges over the defaults. Stores the op's name projection per
1186
- * resource id (a resolved name, or the vendor's true not-found as a
1187
- * blind marker — a repeat miss costs no wire); failures are never
1188
- * cached. Live names are snapshots at fetch time: a `resources` write
1189
- * through the same client clears the channel; a rename made elsewhere
1190
- * shows up once `ttlMs` expires. `ttlMs` must be a positive integer
1191
- * (ms) when present; `maxEntries` (optional, positive integer) bounds
1192
- * the in-memory store.
1193
- */
1194
- resourceNameCache?: false | {
1195
- ttlMs?: number;
1196
- maxEntries?: number;
624
+ store?: TtlCache;
1197
625
  };
1198
626
  /**
1199
627
  * Opt-in PUT item-path fallback for updates (issue #34). OFF by default
@@ -1226,7 +654,7 @@ interface AutotaskConfig {
1226
654
  * base DIFFERS from the client's live base: the client re-points its live
1227
655
  * base URL (process-lifetime — never persisted) and retries the SAME
1228
656
  * request ONCE against it; the re-pointed host starts with fresh per-host
1229
- * transport state (no cooldown/breaker inheritance from the stale host).
657
+ * transport state (no cooldown/maintenance-gate inheritance from the stale host).
1230
658
  * A resolved base identical to the live one, or a discovery fault
1231
659
  * (network / non-200 / malformed / missing `url`), propagates today's
1232
660
  * typed 401 untouched (zero retry — the recovery must not turn a
@@ -1297,21 +725,6 @@ interface ResolvedAutotaskConfig {
1297
725
  enabled: boolean;
1298
726
  maxMs: number;
1299
727
  defaultMs: number;
1300
- store?: CooldownStore;
1301
- };
1302
- /**
1303
- * Resolved per-host circuit breaker (final values; OFF by default). When
1304
- * `enabled` is false the transport keeps no breaker state at all.
1305
- */
1306
- circuitBreaker: {
1307
- enabled: boolean;
1308
- failureWindowMs: number;
1309
- failureThreshold: number;
1310
- openTimeoutMs: number;
1311
- successesToClose: number;
1312
- halfOpenProbes: number;
1313
- store?: CircuitBreakerStore;
1314
- isFailure?: (err: AutotaskError) => boolean;
1315
728
  };
1316
729
  /** Resolved scan caps (final values; defaults 500 records / 4 pages; scanOnMiss default false). */
1317
730
  resolution: {
@@ -1323,12 +736,10 @@ interface ResolvedAutotaskConfig {
1323
736
  onAudit?: (event: AuditEvent) => void;
1324
737
  /** Response redaction for PII + CONFIDENTIAL fields (resolved; default true). */
1325
738
  redactPersonalData: boolean;
1326
- /** The read cache (the default instance when `cache` is absent; absent only for explicit `cache: false`, issue #80). */
1327
- readCache?: ReadCache;
1328
- /** The field-metadata cache (the default instance when `fieldCache` is absent; absent only for explicit `fieldCache: false`, issue #80). */
1329
- fieldCache?: FieldCache;
1330
- /** The resource-name cache (the default instance when `resourceNameCache` is absent; absent only for explicit `resourceNameCache: false`, issue #65). */
1331
- resourceNameCache?: ResourceNameCache;
739
+ /** The record-read cache (absent only for `cache: false`). */
740
+ readCache?: TtlCache;
741
+ /** The field-metadata cache (absent only for `cache: false`). */
742
+ fieldCache?: TtlCache;
1332
743
  /** Resolved update fallback gate (final value; OFF by default, issue #34). */
1333
744
  update: {
1334
745
  putFallback: boolean;
@@ -1421,16 +832,6 @@ interface RequestOptions {
1421
832
  * call clears the gate; a 429 re-arms it).
1422
833
  */
1423
834
  bypassCooldown?: boolean;
1424
- /**
1425
- * INTERNAL (SDK-only, never a caller surface): bypass the host circuit
1426
- * breaker's REFUSAL for this one call (issue #26 — the #6
1427
- * ThresholdInformation bypass applies). Used by
1428
- * `thresholdInformation.get()` so a downed host can still be probed for
1429
- * headroom. The call's outcome is still RECORDED against the circuit
1430
- * (a 2xx counts toward closing; a counted failure re-arms the open
1431
- * period).
1432
- */
1433
- bypassCircuitBreaker?: boolean;
1434
835
  }
1435
836
  /**
1436
837
  * The legacy retriable method set (kept exported for the public-surface
@@ -1443,57 +844,11 @@ interface RequestOptions {
1443
844
  */
1444
845
  declare const IDEMPOTENT_METHODS: readonly string[];
1445
846
 
1446
- /**
1447
- * A short-TTL in-memory cache of the `latest` walk's count probes (lazy
1448
- * purge on read; expiry is `Date.now()` based; LRU-ish eviction at the cap).
1449
- * Plain `number` values only — `set` refuses a non-finite number silently
1450
- * (the sentinel record never reaches it by construction; the guard keeps
1451
- * the store's type honest if a caller ever does).
1452
- */
1453
- declare class LatestCountCache {
1454
- /** The TTL in ms. */
1455
- readonly ttlMs: number;
1456
- /** The entry bound (applies to STORED entries). */
1457
- readonly maxEntries: number;
1458
- private readonly store;
1459
- /** The invalidation epoch (the `ReadCache` pattern — issue #139): bumped
1460
- * by `clear()`; capture it before a wire read and pass it to `set` so a
1461
- * probe in flight across a write cannot re-store its stale answer. */
1462
- private epochCounter;
1463
- constructor(ttlMs: number, maxEntries?: number);
1464
- /** The composite key: (resource plan key, canonical filter serialisation)
1465
- * — the `\u0000` separator is unencodable in a filter value, so no two
1466
- * (resource, conditions) pairs collide. */
1467
- static key(resourceKey: string, conditions: readonly FilterCondition[] | undefined): string;
1468
- /** The live entry's count, or `undefined` (absent OR expired — an expired
1469
- * entry is purged lazily on this read). */
1470
- get(key: string): number | undefined;
1471
- /** The invalidation epoch: bumped by `clear()`; capture it before a wire
1472
- * read and pass it to `set` so a probe in flight across a write cannot
1473
- * re-store its stale answer (issue #139, the `ReadCache` pattern). */
1474
- get epoch(): number;
1475
- /** Store a SUCCESSFUL plain-number count under `key`, live for `ttlMs`.
1476
- * `epoch` is the invalidation epoch the caller captured BEFORE its wire
1477
- * read: a probe that straddled a `clear()` (a write) is dropped, never
1478
- * re-stored with its pre-write body (issue #139). Past the cap: purge
1479
- * expired entries first, then evict the oldest-inserted (Map iteration
1480
- * order = insertion order). */
1481
- set(key: string, value: number, epoch?: number): void;
1482
- /** Drop one entry (absent = no-op). Issue #157: the stale-LOW recovery
1483
- * deletes the cached total before its one fresh wire re-probe, so the
1484
- * re-probe cannot be served by the entry it is meant to replace. */
1485
- delete(key: string): void;
1486
- /** Clear every entry (a real write through the owning client — the
1487
- * write-then-read re-fetch rule) and bump the invalidation epoch: a
1488
- * `set` captured before this `clear` is discarded (issue #139). */
1489
- clear(): void;
1490
- }
1491
-
1492
847
  /**
1493
848
  * HttpClient — fetch transport (ARCHITECTURE section 8). Split from http.ts
1494
849
  * (issue #166); see src/http.ts for the barrel and the behaviour summary.
1495
850
  *
1496
- * `request()` is an orchestrator over: the pre-send gates (cooldown, breaker),
851
+ * `request()` is an orchestrator over: the pre-send gates (cooldown, maintenance),
1497
852
  * a per-attempt loop (`sendOnce` -> `handleSuccess` | `handleFailureStatus`
1498
853
  * each yielding "done" or "retry"), and the settle steps (success/failure
1499
854
  * bookkeeping, audit, cache invalidation).
@@ -1520,17 +875,10 @@ declare class HttpClient {
1520
875
  readonly timeoutMs: number;
1521
876
  /** Bounded client-scan caps for resolution (section 19.2; per-client). */
1522
877
  readonly resolution: ResolutionCaps;
1523
- /** Single-record read cache (issue #80: the default instance when `cache` is absent; undefined only when the user set `false` explicitly). */
1524
- readonly readCache: ReadCache | undefined;
1525
- /** Field-metadata cache for the entityInformation trio (issue #80: the default instance when `fieldCache` is absent; undefined only when the user set `false` explicitly). */
1526
- readonly fieldCache: FieldCache | undefined;
1527
- /** Resource-name cache for `operations.expandResourceNames` (issue #80: the default instance when `resourceNameCache` is absent; undefined only when the user set `false` explicitly, issue #65). */
1528
- readonly resourceNameCache: ResourceNameCache | undefined;
1529
- /** The `latest` walk's count-probe cache (issue #127: the short-TTL
1530
- * per-client count cache — ALWAYS on, process-internal: no config
1531
- * surface, no served keys; the plain `count` op and `operations.aggregate`
1532
- * bypass it by construction and promise fresh totals). */
1533
- readonly latestCountCache: LatestCountCache;
878
+ /** Record-read cache (absent only for `cache: false`; issue #286). */
879
+ readonly readCache: TtlCache | undefined;
880
+ /** Field-metadata cache for the entityInformation trio (absent only for `cache: false`). */
881
+ readonly fieldCache: TtlCache | undefined;
1534
882
  /** Resolved update fallback gate (issue #34; OFF by default). */
1535
883
  readonly update: {
1536
884
  putFallback: boolean;
@@ -1545,8 +893,8 @@ declare class HttpClient {
1545
893
  private readonly hourly;
1546
894
  /** FIFO semaphore bounding in-flight requests to `maxConcurrent`. */
1547
895
  private readonly semaphore;
1548
- /** Tenant 429 cooldown gate store (undefined when the gate is disabled). */
1549
- private readonly cooldownStore;
896
+ /** Tenant 429 cooldown gate (issue #6; ON by default). */
897
+ private readonly cooldownEnabled;
1550
898
  private readonly cooldownMaxMs;
1551
899
  private readonly cooldownDefaultMs;
1552
900
  /** The live base URL (issue #43 — the `baseUrl` getter's backing field;
@@ -1565,18 +913,9 @@ declare class HttpClient {
1565
913
  * Gates the issue-#43 re-point target: a refused host is a discovery
1566
914
  * fault (the original 401 propagates byte-identically, zero wire). */
1567
915
  private readonly hostPolicy;
1568
- /** The gate key for this client's tenant (lowercased userName + host).
1569
- * Re-derived on a zone re-point (issue #43 — the re-pointed host starts
1570
- * with fresh per-host state). */
916
+ /** The cooldown key (`user@host`) and the maintenance-gate key (host); re-derived on a zone re-point (issue #43). */
1571
917
  private tenantKey;
1572
- /** The host circuit breaker settings (issue #26; undefined when the
1573
- * breaker is off — the default, in which case the gate/recording sites
1574
- * are skipped and no store entry is ever written). */
1575
- private readonly breaker;
1576
- /** The breaker key for this client's host (lowercased host of the base
1577
- * URL — host-only: vendor health is host-scoped, issue #26). Re-derived
1578
- * on a zone re-point (issue #43). */
1579
- private breakerKey;
918
+ private hostKey;
1580
919
  private readonly logger;
1581
920
  /** Response redaction policy (the INV-A1 hotfix; PII/CONFIDENTIAL default on, SECRET always).
1582
921
  * Public read so the single dry-run envelope builder (base.ts `buildDryRunResult`)
@@ -1609,38 +948,14 @@ declare class HttpClient {
1609
948
  private emitAudit;
1610
949
  /**
1611
950
  * Issue #43: re-point the client to the tenant's newly resolved zone
1612
- * base. The transport's PER-HOST state is RE-DERIVED, so the re-pointed
1613
- * host starts FRESH: no cooldown/breaker/tenant-rate inheritance from
1614
- * the stale host (conservative — the stale host's armed entries stay in
1615
- * the shared stores for the other clients that still talk to it; nothing
1616
- * is copied across). The configured base (config.baseUrl) is untouched;
951
+ * base. The gate keys are RE-DERIVED, so the re-pointed host starts
952
+ * fresh: no cooldown/maintenance inheritance from the stale host (its
953
+ * entries stay for the other clients that still talk to it). The configured base (config.baseUrl) is untouched;
1617
954
  * the LIVE base is `baseUrl` (the getter over liveBaseUrl), and the
1618
955
  * re-point is logged (a transport fact — the success path is unchanged,
1619
956
  * no envelope change).
1620
957
  */
1621
958
  private repointZoneBase;
1622
- /**
1623
- * Breaker success recording (issue #26). A probe admitted on one host must
1624
- * never record onto another: if the call re-pointed (issue #43) the
1625
- * outcome was measured on a different host — void the probe (the admitted
1626
- * budget on the original host dangles for the rest of the open period;
1627
- * bounded, conservative, nothing crosses hosts).
1628
- */
1629
- private recordBreakerSuccess;
1630
- /** Breaker failure recording (issue #26); same host-pinning as the success recorder (issue #43). */
1631
- private recordBreakerFailure;
1632
- /**
1633
- * Breaker probe settlement for a NON-COUNTED outcome (issue #262): the
1634
- * failure predicate said the outcome is not a service failure (any 4xx,
1635
- * ABORTED, EMPTY_RESPONSE, INVALID_RESPONSE, REDIRECT_BLOCKED, the
1636
- * deterministic validation 500), so nothing is counted and the open
1637
- * period is NOT re-armed — but the probe SETTLED, so its admitted
1638
- * half-open slot is released (the contract in `circuit-breaker.ts`: every
1639
- * probe completion decrements `probes`). Same host-pinning as the
1640
- * recorders (issue #43): a re-pointed probe is voided, never settled
1641
- * cross-host.
1642
- */
1643
- private settleBreakerProbe;
1644
959
  /** The caller's signal wins over the deadline when both fired. */
1645
960
  private interrupted;
1646
961
  /** A retry only runs when its wait fits inside what is left of the call budget. */
@@ -1655,28 +970,32 @@ declare class HttpClient {
1655
970
  * `maintenanceMaxWaitMs` from the FIRST such response (one budget shared
1656
971
  * by the 2xx-page and any-status sites), polling `maintenancePollMs`, a
1657
972
  * fresh per-attempt deadline after each wait; does not consume
1658
- * `maxRetries`. True when a wait happened (loop again); false when the
1659
- * budget is spent (`maintenanceBudgetSpent` is set).
973
+ * `maxRetries`. Only the call that owns the zone's probe slot waits (one
974
+ * prober per zone); any other call gets false at once. True when a wait
975
+ * happened (loop again); false when the budget is spent
976
+ * (`maintenanceBudgetSpent` is set) or another call owns the slot.
1660
977
  */
1661
978
  private waitOutMaintenance;
1662
979
  /** The wait is a FACT for the request: stamp `details.maintenance` (and the exhaustion action) on a surfaced error. */
1663
980
  private stampMaintenance;
1664
- private auditNotSent;
1665
981
  /**
1666
- * Tenant 429 cooldown gate (issue #6): a 429 armed the gate for this
1667
- * tenant — fail LOCALLY (before the semaphore, the hourly limiter and
1668
- * fetch: zero upstream calls) until the deadline passes.
982
+ * Issue #285: the call itself received the maintenance page and will not
983
+ * (or may not) wait it out — the same typed `MAINTENANCE` the gate's
984
+ * refusals carry, so a consumer maps one code. Unlike a refusal the call
985
+ * WAS sent (`httpStatus` set, no `notSent`). A mutation answered at a
986
+ * non-2xx status (review F1) is not retryable: a proxy can serve that page
987
+ * after forwarding the write, so the outcome is unknown.
1669
988
  */
1670
- private gateCooldown;
989
+ private maintenancePageError;
990
+ private auditNotSent;
1671
991
  /**
1672
- * Host circuit breaker gate (issue #26): the SAME pre-send slot as the
1673
- * #6 cooldown gate (cooldown first): OUTSIDE the retry loop, before the
1674
- * hourly limiter, the semaphore and fetch — a refusal makes zero fetches,
1675
- * consumes no hourly stamp and no concurrency slot.
1676
- * `thresholdInformation.get()` bypasses the REFUSAL
1677
- * (`bypassCircuitBreaker`) but its outcome is still recorded.
992
+ * The pre-send gates (OUTSIDE the retry loop, before the hourly limiter,
993
+ * the semaphore and fetch: a refusal makes zero fetches). The tenant 429
994
+ * cooldown (issue #6; `thresholdInformation.get()` bypasses it), then the
995
+ * zone maintenance gate (issue #285), which admits one probe per poll
996
+ * interval while open. An already-aborted caller still gets the abort error.
1678
997
  */
1679
- private gateBreaker;
998
+ private gate;
1680
999
  /**
1681
1000
  * Take the hourly slot and a semaphore permit, fetch, and read the body.
1682
1001
  * `retry` when a network error is retriable (already waited); throws the
@@ -1737,7 +1056,7 @@ declare class HttpClient {
1737
1056
  * queryBounded noteChars free-text cap (issue #61 — response-side only);
1738
1057
  * - docs/API.md §11.7/§11.8/§11.9/§11.10/§11.11/§11.12 render the same facts.
1739
1058
  *
1740
- * planHash: 9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f
1059
+ * planHash: eaa2bea2d3107fffc8b10fb9efef5475e457595d585d790871bec7c221802672
1741
1060
  */
1742
1061
 
1743
1062
  /** One pinned blind-surface stamp (the result-time sentinel object). */
@@ -2418,7 +1737,7 @@ declare abstract class MetaBase<T = Record<string, unknown>> extends QueryBase<T
2418
1737
  protected scopedItemPath(parentId: Identifier, id: Identifier): string;
2419
1738
  /** `GET /V1.0/<E>/entityInformation` → `{ info }` unwrapped.
2420
1739
  * Goes through the field cache when it is present (issue #80:
2421
- * default-on; `fieldCache: false` = the bit-for-bit uncached wire
1740
+ * default-on; `cache: false` = the bit-for-bit uncached wire
2422
1741
  * path). A fresh
2423
1742
  * (bypass + refresh) metadata read is the caller's act: drop the
2424
1743
  * entity's entries via the fieldCache's `invalidate` first — the trio
@@ -2426,7 +1745,7 @@ declare abstract class MetaBase<T = Record<string, unknown>> extends QueryBase<T
2426
1745
  getEntityInfo(): Promise<EntityInformationModel>;
2427
1746
  /** `GET /V1.0/<E>/entityInformation/fields` → `{ fields }` unwrapped.
2428
1747
  * Goes through the field cache when it is present (issue #80:
2429
- * default-on; `fieldCache: false` = the bit-for-bit uncached wire
1748
+ * default-on; `cache: false` = the bit-for-bit uncached wire
2430
1749
  * path). A fresh
2431
1750
  * (bypass + refresh) metadata read is the caller's act: drop the
2432
1751
  * entity's entries via the fieldCache's `invalidate` first — the trio
@@ -2434,7 +1753,7 @@ declare abstract class MetaBase<T = Record<string, unknown>> extends QueryBase<T
2434
1753
  getFieldInfo(): Promise<FieldInformationModel[]>;
2435
1754
  /** `GET /V1.0/<E>/entityInformation/userDefinedFields` → `{ fields }` unwrapped.
2436
1755
  * Goes through the field cache when it is present (issue #80:
2437
- * default-on; `fieldCache: false` = the bit-for-bit uncached wire
1756
+ * default-on; `cache: false` = the bit-for-bit uncached wire
2438
1757
  * path). A fresh
2439
1758
  * (bypass + refresh) metadata read is the caller's act: drop the
2440
1759
  * entity's entries via the fieldCache's `invalidate` first — the trio
@@ -2469,16 +1788,16 @@ declare abstract class MetaBase<T = Record<string, unknown>> extends QueryBase<T
2469
1788
  *
2470
1789
  * Issue #36 (negative caching, the pinned hazard): the vendor's true
2471
1790
  * not-found (the HTTP 404 or the 200 `item: null` signal — both surface
2472
- * as `NotFoundError`) is stored as an ABSENT marker in the SAME ReadCache
1791
+ * as `NotFoundError`) is stored as an ABSENT marker in the SAME read cache
2473
1792
  * under a namespaced key the positive get path never constructs, so a
2474
1793
  * repeat composite call serves 'absent' with zero wire for that part.
2475
- * The marker expires on the READ entity's TTL (the #32 per-resource
2476
- * table / `perResourceTtlMs` override, via `set`'s resource key) and is
2477
- * cleared by any real write through the client (the ReadCache clear).
1794
+ * The marker expires on the READ entity's TTL (the key carries the read
1795
+ * path, so `readTtlFor` applies) and is
1796
+ * cleared by any real write through the client (the read cache clear).
2478
1797
  * A transient fault (5xx, shape drift, network) is NEVER stored as an
2479
1798
  * ABSENT marker — it propagates and the next call re-wires (no
2480
1799
  * poisoning; a malformed 200 body may still land under the POSITIVE
2481
- * key — pre-existing ReadCache behaviour, out of this mechanism's
1800
+ * key — pre-existing read cache behaviour, out of this mechanism's
2482
1801
  * scope). The marker is consulted BEFORE the positive lookup, but a
2483
1802
  * POSITIVE entry that exists alongside a live marker means a newer
2484
1803
  * positive outcome (this client read/created the record after the
@@ -17177,4 +16496,4 @@ declare class AutotaskClient {
17177
16496
  }): Promise<PromiseSettledResult<R>[]>;
17178
16497
  }
17179
16498
 
17180
- export { type BillingItemApprovalLevelSummary as $, type AutotaskConfig as A, AppointmentsResource as B, type CreateIfNotExistsResult as C, type AppointmentsResourceQueryParams as D, type ExpenseItem as E, type FilterOperator as F, type AuditEvent as G, type Holiday as H, type Identifier as I, type AuthTokenResultModel as J, AuthenticateResource as K, AutotaskConfigError as L, type AutotaskVersionResultModel as M, type BillingCode as N, type OperationResult as O, type PagingModel as P, type QueryParams as Q, ReadCache as R, type BillingCodeCreate as S, type TicketAdditionalConfigurationItem as T, type BillingCodeSummary as U, type BillingCodeUpdate as V, BillingCodesResource as W, type BillingCodesResourceQueryParams as X, type BillingItemApprovalLevel as Y, type ZoneName as Z, type BillingItemApprovalLevelCreate as _, AutotaskClient as a, type CompanySiteConfigurationsUpdate as a$, type BillingItemApprovalLevelUpdate as a0, BillingItemApprovalLevelsResource as a1, type BillingItemApprovalLevelsResourceQueryParams as a2, type BillingItems as a3, type BillingItemsCreate as a4, BillingItemsResource as a5, type BillingItemsResourceQueryParams as a6, type BillingItemsSummary as a7, type BillingItemsUpdate as a8, CREDENTIAL_HEADER_NAMES as a9, type CompaniesResourceQueryParams as aA, type Company as aB, type CompanyAlert as aC, type CompanyAlertCreate as aD, type CompanyAlertSummary as aE, type CompanyAlertUpdate as aF, CompanyAlertsResource as aG, type CompanyAlertsResourceQueryParams as aH, type CompanyContext as aI, type CompanyCreate as aJ, type CompanyLocation as aK, type CompanyLocationCreate as aL, type CompanyLocationSummary as aM, type CompanyLocationUpdate as aN, CompanyLocationsResource as aO, type CompanyLocationsResourceQueryParams as aP, type CompanyNote as aQ, type CompanyNoteCreate as aR, type CompanyNoteSummary as aS, type CompanyNoteUpdate as aT, CompanyNotesResource as aU, type CompanyNotesResourceQueryParams as aV, type CompanySiteConfigurations as aW, type CompanySiteConfigurationsCreate as aX, CompanySiteConfigurationsResource as aY, type CompanySiteConfigurationsResourceQueryParams as aZ, type CompanySiteConfigurationsSummary as a_, type ChangeRequestLinkCreate as aa, type ChangeRequestLinkSummary as ab, type ChangeRequestLinkUpdate as ac, ChangeRequestLinksResource as ad, type ChangeRequestLinksResourceQueryParams as ae, ChecklistLibrariesResource as af, type ChecklistLibrariesResourceQueryParams as ag, type ChecklistLibrary as ah, type ChecklistLibraryChecklistItem as ai, type ChecklistLibraryChecklistItemCreate as aj, type ChecklistLibraryChecklistItemSummary as ak, type ChecklistLibraryChecklistItemUpdate as al, ChecklistLibraryChecklistItemsResource as am, type ChecklistLibraryChecklistItemsResourceQueryParams as an, type ChecklistLibraryCreate as ao, type ChecklistLibrarySummary as ap, type ChecklistLibraryUpdate as aq, type CircuitBreakerState as ar, type CircuitBreakerStore as as, type ClassificationIcon as at, type ClassificationIconCreate as au, type ClassificationIconSummary as av, type ClassificationIconUpdate as aw, ClassificationIconsResource as ax, type ClassificationIconsResourceQueryParams as ay, CompaniesResource as az, AutotaskError as b, type ConfigurationItemWebhookSummary as b$, type CompanySummary as b0, type CompanyUpdate as b1, type CompanyWebhook as b2, type CompanyWebhookCreate as b3, type CompanyWebhookSummary as b4, type CompanyWebhookUpdate as b5, CompanyWebhooksResource as b6, type CompanyWebhooksResourceQueryParams as b7, type ConfigProfile as b8, type ConfigurationItemBillingProductAssociations as b9, type ConfigurationItemNoteCreate as bA, type ConfigurationItemNoteSummary as bB, type ConfigurationItemNoteUpdate as bC, ConfigurationItemNotesResource as bD, type ConfigurationItemNotesResourceQueryParams as bE, type ConfigurationItemRelatedItem as bF, type ConfigurationItemRelatedItemCreate as bG, type ConfigurationItemRelatedItemSummary as bH, type ConfigurationItemRelatedItemUpdate as bI, ConfigurationItemRelatedItemsResource as bJ, type ConfigurationItemRelatedItemsResourceQueryParams as bK, type ConfigurationItemSslSubjectAlternativeName as bL, type ConfigurationItemSslSubjectAlternativeNameCreate as bM, type ConfigurationItemSslSubjectAlternativeNameSummary as bN, type ConfigurationItemSslSubjectAlternativeNameUpdate as bO, ConfigurationItemSslSubjectAlternativeNamesResource as bP, type ConfigurationItemSslSubjectAlternativeNamesResourceQueryParams as bQ, type ConfigurationItemSummary as bR, type ConfigurationItemType as bS, type ConfigurationItemTypeCreate as bT, type ConfigurationItemTypeSummary as bU, type ConfigurationItemTypeUpdate as bV, ConfigurationItemTypesResource as bW, type ConfigurationItemTypesResourceQueryParams as bX, type ConfigurationItemUpdate as bY, type ConfigurationItemWebhook as bZ, type ConfigurationItemWebhookCreate as b_, type ConfigurationItemBillingProductAssociationsCreate as ba, ConfigurationItemBillingProductAssociationsResource as bb, type ConfigurationItemBillingProductAssociationsResourceQueryParams as bc, type ConfigurationItemBillingProductAssociationsSummary as bd, type ConfigurationItemBillingProductAssociationsUpdate as be, ConfigurationItemCategoriesResource as bf, type ConfigurationItemCategoriesResourceQueryParams as bg, type ConfigurationItemCategory as bh, type ConfigurationItemCategoryCreate as bi, type ConfigurationItemCategorySummary as bj, type ConfigurationItemCategoryUdfAssociation as bk, type ConfigurationItemCategoryUdfAssociationCreate as bl, type ConfigurationItemCategoryUdfAssociationSummary as bm, type ConfigurationItemCategoryUdfAssociationUpdate as bn, ConfigurationItemCategoryUdfAssociationsResource as bo, type ConfigurationItemCategoryUdfAssociationsResourceQueryParams as bp, type ConfigurationItemCategoryUpdate as bq, type ConfigurationItemContext as br, type ConfigurationItemCreate as bs, type ConfigurationItemDnsRecord as bt, type ConfigurationItemDnsRecordCreate as bu, type ConfigurationItemDnsRecordSummary as bv, type ConfigurationItemDnsRecordUpdate as bw, ConfigurationItemDnsRecordsResource as bx, type ConfigurationItemDnsRecordsResourceQueryParams as by, type ConfigurationItemNote as bz, type AutotaskErrorOptions as c, type ContractExclusionRolesResourceQueryParams as c$, type ConfigurationItemWebhookUpdate as c0, ConfigurationItemWebhooksResource as c1, type ConfigurationItemWebhooksResourceQueryParams as c2, ConfigurationItemsResource as c3, type ConfigurationItemsResourceQueryParams as c4, type Contact as c5, type ContactContext as c6, type ContactCreate as c7, type ContactGroupContacts as c8, type ContactGroupContactsCreate as c9, type ContractBlock as cA, type ContractBlockCreate as cB, type ContractBlockHourFactor as cC, type ContractBlockHourFactorCreate as cD, type ContractBlockHourFactorSummary as cE, type ContractBlockHourFactorUpdate as cF, ContractBlockHourFactorsResource as cG, type ContractBlockHourFactorsResourceQueryParams as cH, type ContractBlockSummary as cI, type ContractBlockUpdate as cJ, ContractBlocksResource as cK, type ContractBlocksResourceQueryParams as cL, type ContractChargeCreate as cM, type ContractChargeSummary as cN, type ContractChargeUpdate as cO, ContractChargesResource as cP, type ContractChargesResourceQueryParams as cQ, type ContractCreate as cR, type ContractExclusionBillingCode as cS, type ContractExclusionBillingCodeCreate as cT, type ContractExclusionBillingCodeSummary as cU, type ContractExclusionBillingCodeUpdate as cV, ContractExclusionBillingCodesResource as cW, type ContractExclusionBillingCodesResourceQueryParams as cX, type ContractExclusionRoles as cY, type ContractExclusionRolesCreate as cZ, ContractExclusionRolesResource as c_, ContactGroupContactsResource as ca, type ContactGroupContactsResourceQueryParams as cb, type ContactGroupContactsSummary as cc, type ContactGroupContactsUpdate as cd, type ContactGroups as ce, type ContactGroupsCreate as cf, ContactGroupsResource as cg, type ContactGroupsResourceQueryParams as ch, type ContactGroupsSummary as ci, type ContactGroupsUpdate as cj, type ContactSummary as ck, type ContactUpdate as cl, type ContactWebhook as cm, type ContactWebhookCreate as cn, type ContactWebhookSummary as co, type ContactWebhookUpdate as cp, ContactWebhooksResource as cq, type ContactWebhooksResourceQueryParams as cr, ContactsResource as cs, type ContactsResourceQueryParams as ct, type ContractBillingRule as cu, type ContractBillingRuleCreate as cv, type ContractBillingRuleSummary as cw, type ContractBillingRuleUpdate as cx, ContractBillingRulesResource as cy, type ContractBillingRulesResourceQueryParams as cz, type ResolvedAutotaskConfig as d, type ContractServiceBundleAdjustmentsResourceQueryParams as d$, type ContractExclusionRolesSummary as d0, type ContractExclusionRolesUpdate as d1, type ContractExclusionSetExcludedRoles as d2, type ContractExclusionSetExcludedRolesCreate as d3, ContractExclusionSetExcludedRolesResource as d4, type ContractExclusionSetExcludedRolesResourceQueryParams as d5, type ContractExclusionSetExcludedRolesSummary as d6, type ContractExclusionSetExcludedRolesUpdate as d7, type ContractExclusionSetExcludedWorkTypes as d8, type ContractExclusionSetExcludedWorkTypesCreate as d9, type ContractRateUpdate as dA, ContractRatesResource as dB, type ContractRatesResourceQueryParams as dC, type ContractRetainers as dD, type ContractRetainersCreate as dE, ContractRetainersResource as dF, type ContractRetainersResourceQueryParams as dG, type ContractRetainersSummary as dH, type ContractRetainersUpdate as dI, type ContractRoleCosts as dJ, type ContractRoleCostsCreate as dK, ContractRoleCostsResource as dL, type ContractRoleCostsResourceQueryParams as dM, type ContractRoleCostsSummary as dN, type ContractRoleCostsUpdate as dO, type ContractServiceAdjustment as dP, type ContractServiceAdjustmentCreate as dQ, type ContractServiceAdjustmentSummary as dR, type ContractServiceAdjustmentUpdate as dS, ContractServiceAdjustmentsResource as dT, type ContractServiceAdjustmentsResourceQueryParams as dU, type ContractServiceBundle as dV, type ContractServiceBundleAdjustment as dW, type ContractServiceBundleAdjustmentCreate as dX, type ContractServiceBundleAdjustmentSummary as dY, type ContractServiceBundleAdjustmentUpdate as dZ, ContractServiceBundleAdjustmentsResource as d_, ContractExclusionSetExcludedWorkTypesResource as da, type ContractExclusionSetExcludedWorkTypesResourceQueryParams as db, type ContractExclusionSetExcludedWorkTypesSummary as dc, type ContractExclusionSetExcludedWorkTypesUpdate as dd, type ContractExclusionSets as de, type ContractExclusionSetsCreate as df, ContractExclusionSetsResource as dg, type ContractExclusionSetsResourceQueryParams as dh, type ContractExclusionSetsSummary as di, type ContractExclusionSetsUpdate as dj, type ContractMilestone as dk, type ContractMilestoneCreate as dl, type ContractMilestoneSummary as dm, type ContractMilestoneUpdate as dn, ContractMilestonesResource as dp, type ContractMilestonesResourceQueryParams as dq, type ContractNote as dr, type ContractNoteCreate as ds, type ContractNoteSummary as dt, type ContractNoteUpdate as du, ContractNotesResource as dv, type ContractNotesResourceQueryParams as dw, type ContractRate as dx, type ContractRateCreate as dy, type ContractRateSummary as dz, type RequestOptions as e, type DomainRegistrar as e$, type ContractServiceBundleCreate as e0, type ContractServiceBundleSummary as e1, type ContractServiceBundleUnit as e2, type ContractServiceBundleUnitCreate as e3, type ContractServiceBundleUnitSummary as e4, type ContractServiceBundleUnitUpdate as e5, ContractServiceBundleUnitsResource as e6, type ContractServiceBundleUnitsResourceQueryParams as e7, type ContractServiceBundleUpdate as e8, ContractServiceBundlesResource as e9, type CountriesResourceQueryParams as eA, type Country as eB, type CountryCreate as eC, type CountrySummary as eD, type CountryUpdate as eE, CurrenciesResource as eF, type CurrenciesResourceQueryParams as eG, type Currency as eH, type CurrencyCreate as eI, type CurrencySummary as eJ, type CurrencyUpdate as eK, DEFAULT_CIRCUIT_BREAKER_FAILURE_THRESHOLD as eL, DEFAULT_CIRCUIT_BREAKER_MAX_ENTRIES as eM, DEFAULT_CIRCUIT_BREAKER_OPEN_TIMEOUT_MS as eN, DEFAULT_CIRCUIT_BREAKER_SUCCESSES_TO_CLOSE as eO, DEFAULT_CIRCUIT_BREAKER_WINDOW_MS as eP, DEFAULT_COOLDOWN_DEFAULT_MS as eQ, DEFAULT_COOLDOWN_MAX_ENTRIES as eR, DEFAULT_COOLDOWN_MAX_MS as eS, DEFAULT_ZONE as eT, type Department as eU, type DepartmentCreate as eV, type DepartmentSummary as eW, type DepartmentUpdate as eX, DepartmentsResource as eY, type DepartmentsResourceQueryParams as eZ, type DocumentChecklistLibrary as e_, type ContractServiceBundlesResourceQueryParams as ea, type ContractServiceCreate as eb, type ContractServiceSummary as ec, type ContractServiceUnit as ed, type ContractServiceUnitCreate as ee, type ContractServiceUnitSummary as ef, type ContractServiceUnitUpdate as eg, ContractServiceUnitsResource as eh, type ContractServiceUnitsResourceQueryParams as ei, type ContractServiceUpdate as ej, ContractServicesResource as ek, type ContractServicesResourceQueryParams as el, type ContractSummary as em, type ContractTicketPurchases as en, type ContractTicketPurchasesCreate as eo, ContractTicketPurchasesResource as ep, type ContractTicketPurchasesResourceQueryParams as eq, type ContractTicketPurchasesSummary as er, type ContractTicketPurchasesUpdate as es, type ContractUpdate as et, type ContractsProfitabilityResult as eu, ContractsResource as ev, type ContractsResourceQueryParams as ew, type CooldownStore as ex, type CostRateResolution as ey, CountriesResource as ez, type FilterCondition as f, type InvoiceTemplateSummary as f$, type DomainRegistrarCreate as f0, type DomainRegistrarSummary as f1, type DomainRegistrarUpdate as f2, DomainRegistrarsResource as f3, type DomainRegistrarsResourceQueryParams as f4, type DryRunResult as f5, type EmptyReasonInfo as f6, type EmptyReasonKind as f7, type EntityInformationModel as f8, EntityInformationResource as f9, type HolidaySetCreate as fA, type HolidaySetSummary as fB, type HolidaySetUpdate as fC, HolidaySetsResource as fD, type HolidaySetsResourceQueryParams as fE, type HolidaySummary as fF, type HolidayUpdate as fG, HolidaysResource as fH, type HolidaysResourceQueryParams as fI, HttpClient as fJ, IDEMPOTENT_METHODS as fK, InMemoryCircuitBreakerStore as fL, InMemoryCooldownStore as fM, type InventoryProduct as fN, type InventoryProductCreate as fO, type InventoryProductSummary as fP, type InventoryProductUpdate as fQ, InventoryProductsResource as fR, type InventoryProductsResourceQueryParams as fS, type InventoryStockedItemAdd as fT, type InventoryStockedItemRemove as fU, type InventoryStockedItemTransfer as fV, type Invoice as fW, type InvoiceCreate as fX, type InvoiceSummary as fY, type InvoiceTemplate as fZ, type InvoiceTemplateCreate as f_, type EntityInformationResultModel as fa, type ErrorCategory as fb, type ErrorIdRef as fc, type ExpenseItemAttachment as fd, type ExpenseItemAttachmentCreate as fe, type ExpenseItemAttachmentSummary as ff, type ExpenseItemAttachmentUpdate as fg, ExpenseItemAttachmentsResource as fh, type ExpenseItemAttachmentsResourceQueryParams as fi, type ExpenseItemCreate as fj, type ExpenseItemSummary as fk, type ExpenseItemUpdate as fl, ExpenseItemsResource as fm, type ExpenseItemsResourceQueryParams as fn, type ExpenseReport as fo, type ExpenseReportCreate as fp, type ExpenseReportSummary as fq, type ExpenseReportUpdate as fr, ExpenseReportsResource as fs, type ExpenseReportsResourceQueryParams as ft, type Field as fu, type FieldDiff as fv, type FieldInformationModel as fw, type FilterValue as fx, type GlobalEntityInformationResultModel as fy, type HolidayCreate as fz, type Filter as g, type PhasesResourceQueryParams as g$, type InvoiceTemplateUpdate as g0, InvoiceTemplatesResource as g1, type InvoiceTemplatesResourceQueryParams as g2, type InvoiceUpdate as g3, InvoicesResource as g4, type InvoicesResourceQueryParams as g5, type KeyValuePair as g6, type Logger as g7, MAX_PAGES as g8, type ModuleAccessResultModel as g9, type OpportunityUpdate as gA, type OrganizationalLevel1 as gB, type OrganizationalLevel1Create as gC, type OrganizationalLevel1Summary as gD, type OrganizationalLevel1Update as gE, OrganizationalLevel1sResource as gF, type OrganizationalLevel1sResourceQueryParams as gG, type OrganizationalLevel2 as gH, type OrganizationalLevel2Create as gI, type OrganizationalLevel2Summary as gJ, type OrganizationalLevel2Update as gK, OrganizationalLevel2sResource as gL, type OrganizationalLevel2sResourceQueryParams as gM, type OrganizationalLevelAssociation as gN, type OrganizationalLevelAssociationCreate as gO, type OrganizationalLevelAssociationSummary as gP, type OrganizationalLevelAssociationUpdate as gQ, OrganizationalLevelAssociationsResource as gR, type OrganizationalLevelAssociationsResourceQueryParams as gS, type Page as gT, type PageFetcher as gU, type PaginateOptions as gV, type Phase as gW, type PhaseCreate as gX, type PhaseSummary as gY, type PhaseUpdate as gZ, PhasesResource as g_, ModulesResource as ga, NoopLogger as gb, type NotificationHistory as gc, type NotificationHistoryCreate as gd, NotificationHistoryResource as ge, type NotificationHistoryResourceQueryParams as gf, type NotificationHistorySummary as gg, type NotificationHistoryUpdate as gh, type OperationMetadata as gi, type OperationShapeDrift as gj, OpportunitiesResource as gk, type OpportunitiesResourceQueryParams as gl, type OpportunityAttachment as gm, type OpportunityAttachmentCreate as gn, type OpportunityAttachmentSummary as go, type OpportunityAttachmentUpdate as gp, OpportunityAttachmentsResource as gq, type OpportunityAttachmentsResourceQueryParams as gr, OpportunityCategoriesResource as gs, type OpportunityCategoriesResourceQueryParams as gt, type OpportunityCategory as gu, type OpportunityCategoryCreate as gv, type OpportunityCategorySummary as gw, type OpportunityCategoryUpdate as gx, type OpportunityCreate as gy, type OpportunitySummary as gz, type ChangeRequestLink as h, PurchaseOrdersResource as h$, type PickListValue as h0, type Product as h1, type ProductCreate as h2, type ProductSummary as h3, type ProductUpdate as h4, type ProductVendors as h5, type ProductVendorsCreate as h6, ProductVendorsResource as h7, type ProductVendorsResourceQueryParams as h8, type ProductVendorsSummary as h9, type ProjectNoteUpdate as hA, ProjectNotesResource as hB, type ProjectNotesResourceQueryParams as hC, type ProjectSummary as hD, type ProjectUpdate as hE, ProjectsResource as hF, type ProjectsResourceQueryParams as hG, type PurchaseApprovals as hH, type PurchaseApprovalsCreate as hI, PurchaseApprovalsResource as hJ, type PurchaseApprovalsResourceQueryParams as hK, type PurchaseApprovalsSummary as hL, type PurchaseApprovalsUpdate as hM, type PurchaseOrderItemReceiving as hN, type PurchaseOrderItemReceivingCreate as hO, PurchaseOrderItemReceivingResource as hP, type PurchaseOrderItemReceivingResourceQueryParams as hQ, type PurchaseOrderItemReceivingSummary as hR, type PurchaseOrderItemReceivingUpdate as hS, type PurchaseOrderItems as hT, type PurchaseOrderItemsCreate as hU, PurchaseOrderItemsResource as hV, type PurchaseOrderItemsResourceQueryParams as hW, type PurchaseOrderItemsSummary as hX, type PurchaseOrderItemsUpdate as hY, type PurchaseOrders as hZ, type PurchaseOrdersCreate as h_, type ProductVendorsUpdate as ha, ProductsResource as hb, type ProductsResourceQueryParams as hc, type ProfitRateSource as hd, type ProfitabilityActivityCategory as he, type ProfitabilityDataQualityWarning as hf, type ProfitabilityHighestCostTicket as hg, type ProfitabilityLabourCostMethod as hh, type ProfitabilityMiscoding as hi, type ProfitabilityMonthlyRow as hj, type ProfitabilityOpenRenewalItem as hk, type ProfitabilityOptions as hl, type ProfitabilityPart as hm, type ProfitabilityPartDigest as hn, type ProfitabilityRevenueByType as ho, type Project as hp, type ProjectChargeCreate as hq, type ProjectChargeSummary as hr, type ProjectChargeUpdate as hs, ProjectChargesResource as ht, type ProjectChargesResourceQueryParams as hu, type ProjectContext as hv, type ProjectCreate as hw, type ProjectNote as hx, type ProjectNoteCreate as hy, type ProjectNoteSummary as hz, type ConfigurationItem as i, type ResourceTimeOffApproverUpdate as i$, type PurchaseOrdersResourceQueryParams as i0, type PurchaseOrdersSummary as i1, type PurchaseOrdersUpdate as i2, type Quote as i3, type QuoteCreate as i4, type QuoteItem as i5, type QuoteItemCreate as i6, type QuoteItemSummary as i7, type QuoteItemUpdate as i8, QuoteItemsResource as i9, type ResourceRoleCreate as iA, type ResourceRoleQueue as iB, type ResourceRoleQueueCreate as iC, type ResourceRoleQueueSummary as iD, type ResourceRoleQueueUpdate as iE, ResourceRoleQueuesResource as iF, type ResourceRoleQueuesResourceQueryParams as iG, type ResourceRoleSummary as iH, type ResourceRoleUpdate as iI, ResourceRolesResource as iJ, type ResourceRolesResourceQueryParams as iK, type ResourceSkill as iL, type ResourceSkillCreate as iM, type ResourceSkillSummary as iN, type ResourceSkillUpdate as iO, ResourceSkillsResource as iP, type ResourceSkillsResourceQueryParams as iQ, type ResourceSummary as iR, type ResourceTimeOffAdditional as iS, type ResourceTimeOffAdditionalCreate as iT, ResourceTimeOffAdditionalResource as iU, type ResourceTimeOffAdditionalResourceQueryParams as iV, type ResourceTimeOffAdditionalSummary as iW, type ResourceTimeOffAdditionalUpdate as iX, type ResourceTimeOffApprover as iY, type ResourceTimeOffApproverCreate as iZ, type ResourceTimeOffApproverSummary as i_, type QuoteItemsResourceQueryParams as ia, type QuoteLocation as ib, type QuoteLocationCreate as ic, type QuoteLocationSummary as id, type QuoteLocationUpdate as ie, QuoteLocationsResource as ig, type QuoteLocationsResourceQueryParams as ih, type QuoteSummary as ii, type QuoteTemplate as ij, type QuoteTemplateCreate as ik, type QuoteTemplateSummary as il, type QuoteTemplateUpdate as im, QuoteTemplatesResource as io, type QuoteTemplatesResourceQueryParams as ip, type QuoteUpdate as iq, QuotesResource as ir, type QuotesResourceQueryParams as is, READ_CACHE_MAX_ENTRIES as it, REDACTED as iu, type Resolution as iv, type ResolutionCaps as iw, type Resource as ix, type ResourceCreate as iy, type ResourceRole as iz, type ContractCharge as j, ServicesResource as j$, ResourceTimeOffApproversResource as j0, type ResourceTimeOffApproversResourceQueryParams as j1, type ResourceTimeOffBalance as j2, type ResourceTimeOffBalanceCreate as j3, type ResourceTimeOffBalanceSummary as j4, type ResourceTimeOffBalanceUpdate as j5, ResourceTimeOffBalancesResource as j6, type ResourceTimeOffBalancesResourceQueryParams as j7, type ResourceUpdate as j8, ResourcesResource as j9, type ServiceCallTaskUpdate as jA, ServiceCallTasksResource as jB, type ServiceCallTasksResourceQueryParams as jC, type ServiceCallTicket as jD, type ServiceCallTicketCreate as jE, type ServiceCallTicketResource as jF, type ServiceCallTicketResourceCreate as jG, type ServiceCallTicketResourceSummary as jH, type ServiceCallTicketResourceUpdate as jI, ServiceCallTicketResourcesResource as jJ, type ServiceCallTicketResourcesResourceQueryParams as jK, type ServiceCallTicketSummary as jL, type ServiceCallTicketUpdate as jM, ServiceCallTicketsResource as jN, type ServiceCallTicketsResourceQueryParams as jO, type ServiceCallUpdate as jP, ServiceCallsResource as jQ, type ServiceCallsResourceQueryParams as jR, type ServiceCreate as jS, type ServiceLevelAgreementResults as jT, type ServiceLevelAgreementResultsCreate as jU, ServiceLevelAgreementResultsResource as jV, type ServiceLevelAgreementResultsResourceQueryParams as jW, type ServiceLevelAgreementResultsSummary as jX, type ServiceLevelAgreementResultsUpdate as jY, type ServiceSummary as jZ, type ServiceUpdate as j_, type ResourcesResourceQueryParams as ja, type Role as jb, type RoleCreate as jc, type RoleSummary as jd, type RoleUpdate as je, RolesResource as jf, type RolesResourceQueryParams as jg, type SalesOrder as jh, type SalesOrderCreate as ji, type SalesOrderSummary as jj, type SalesOrderUpdate as jk, SalesOrdersResource as jl, type SalesOrdersResourceQueryParams as jm, type Service as jn, type ServiceCall as jo, type ServiceCallCreate as jp, type ServiceCallSummary as jq, type ServiceCallTask as jr, type ServiceCallTaskCreate as js, type ServiceCallTaskResource as jt, type ServiceCallTaskResourceCreate as ju, type ServiceCallTaskResourceSummary as jv, type ServiceCallTaskResourceUpdate as jw, ServiceCallTaskResourcesResource as jx, type ServiceCallTaskResourcesResourceQueryParams as jy, type ServiceCallTaskSummary as jz, type Contract as k, type TaxRegionSummary as k$, type ServicesResourceQueryParams as k0, type Skill as k1, type SkillCreate as k2, type SkillSummary as k3, type SkillUpdate as k4, SkillsResource as k5, type SkillsResourceQueryParams as k6, type Subscription as k7, type SubscriptionCreate as k8, type SubscriptionPeriod as k9, TagAliasesResource as kA, type TagAliasesResourceQueryParams as kB, type TagCreate as kC, type TagGroup as kD, type TagGroupCreate as kE, type TagGroupSummary as kF, type TagGroupUpdate as kG, TagGroupsResource as kH, type TagGroupsResourceQueryParams as kI, type TagSummary as kJ, type TagUpdate as kK, TagsResource as kL, type TagsResourceQueryParams as kM, type Task as kN, type TaskCreate as kO, type TaskSecondaryResource as kP, type TaskSecondaryResourceCreate as kQ, type TaskSecondaryResourceSummary as kR, type TaskSecondaryResourceUpdate as kS, TaskSecondaryResourcesResource as kT, type TaskSecondaryResourcesResourceQueryParams as kU, type TaskSummary as kV, type TaskUpdate as kW, TasksResource as kX, type TasksResourceQueryParams as kY, type TaxRegion as kZ, type TaxRegionCreate as k_, type SubscriptionPeriodCreate as ka, type SubscriptionPeriodSummary as kb, type SubscriptionPeriodUpdate as kc, SubscriptionPeriodsResource as kd, type SubscriptionPeriodsResourceQueryParams as ke, type SubscriptionSummary as kf, type SubscriptionUpdate as kg, SubscriptionsResource as kh, type SubscriptionsResourceQueryParams as ki, type Survey as kj, type SurveyCreate as kk, type SurveyResults as kl, type SurveyResultsCreate as km, SurveyResultsResource as kn, type SurveyResultsResourceQueryParams as ko, type SurveyResultsSummary as kp, type SurveyResultsUpdate as kq, type SurveySummary as kr, type SurveyUpdate as ks, SurveysResource as kt, type SurveysResourceQueryParams as ku, type Tag as kv, type TagAlias as kw, type TagAliasCreate as kx, type TagAliasSummary as ky, type TagAliasUpdate as kz, type ContractService as l, type TicketHistorySummary as l$, type TaxRegionUpdate as l0, TaxRegionsResource as l1, type TaxRegionsResourceQueryParams as l2, ThresholdInformationResource as l3, type ThresholdStatusResultModel as l4, type Ticket as l5, type TicketAdditionalConfigurationItemCreate as l6, type TicketAdditionalConfigurationItemSummary as l7, type TicketAdditionalConfigurationItemUpdate as l8, TicketAdditionalConfigurationItemsResource as l9, type TicketChangeRequestApprovalSummary as lA, type TicketChangeRequestApprovalUpdate as lB, TicketChangeRequestApprovalsResource as lC, type TicketChangeRequestApprovalsResourceQueryParams as lD, type TicketChargeCreate as lE, type TicketChargeSummary as lF, type TicketChargeUpdate as lG, TicketChargesResource as lH, type TicketChargesResourceQueryParams as lI, type TicketChecklistItem as lJ, type TicketChecklistItemCreate as lK, type TicketChecklistItemSummary as lL, type TicketChecklistItemUpdate as lM, TicketChecklistItemsResource as lN, type TicketChecklistItemsResourceQueryParams as lO, TicketChecklistLibrariesResource as lP, type TicketChecklistLibrariesResourceQueryParams as lQ, type TicketChecklistLibrary as lR, type TicketChecklistLibraryCreate as lS, type TicketChecklistLibrarySummary as lT, type TicketChecklistLibraryUpdate as lU, type TicketContext as lV, type TicketCreate as lW, type TicketHistory as lX, type TicketHistoryCreate as lY, TicketHistoryResource as lZ, type TicketHistoryResourceQueryParams as l_, type TicketAdditionalConfigurationItemsResourceQueryParams as la, type TicketAdditionalContactCreate as lb, type TicketAdditionalContactSummary as lc, type TicketAdditionalContactUpdate as ld, TicketAdditionalContactsResource as le, type TicketAdditionalContactsResourceQueryParams as lf, type TicketAttachment as lg, type TicketAttachmentCreate as lh, type TicketAttachmentSummary as li, type TicketAttachmentUpdate as lj, TicketAttachmentsResource as lk, type TicketAttachmentsResourceQueryParams as ll, TicketCategoriesResource as lm, type TicketCategoriesResourceQueryParams as ln, type TicketCategory as lo, type TicketCategoryCreate as lp, type TicketCategoryFieldDefault as lq, type TicketCategoryFieldDefaultCreate as lr, type TicketCategoryFieldDefaultSummary as ls, type TicketCategoryFieldDefaultUpdate as lt, TicketCategoryFieldDefaultsResource as lu, type TicketCategoryFieldDefaultsResourceQueryParams as lv, type TicketCategorySummary as lw, type TicketCategoryUpdate as lx, type TicketChangeRequestApproval as ly, type TicketChangeRequestApprovalCreate as lz, type HolidaySet as m, type UdfField as m$, type TicketHistoryUpdate as m0, type TicketNote as m1, type TicketNoteAttachment as m2, type TicketNoteAttachmentCreate as m3, type TicketNoteAttachmentSummary as m4, type TicketNoteAttachmentUpdate as m5, TicketNoteAttachmentsResource as m6, type TicketNoteAttachmentsResourceQueryParams as m7, type TicketNoteCreate as m8, type TicketNoteSummary as m9, type TimeEntriesPostedPagingOptions as mA, type TimeEntriesPostedStateResult as mB, type TimeEntriesPostedWindowCountOptions as mC, type TimeEntriesPostedWindowListOptions as mD, type TimeEntriesPostedWindowOptions as mE, type TimeEntriesPostedWindowResult as mF, TimeEntriesResource as mG, type TimeEntriesResourceQueryParams as mH, type TimeEntriesStatusCountOptions as mI, type TimeEntriesStatusListOptions as mJ, type TimeEntriesStatusOptions as mK, type TimeEntryAttachment as mL, type TimeEntryAttachmentCreate as mM, type TimeEntryAttachmentSummary as mN, type TimeEntryAttachmentUpdate as mO, TimeEntryAttachmentsResource as mP, type TimeEntryAttachmentsResourceQueryParams as mQ, type TimeEntryCreate as mR, type TimeEntrySummary as mS, type TimeEntryUpdate as mT, type TimeOffRequest as mU, type TimeOffRequestCreate as mV, type TimeOffRequestReject as mW, type TimeOffRequestSummary as mX, type TimeOffRequestUpdate as mY, TimeOffRequestsResource as mZ, type TimeOffRequestsResourceQueryParams as m_, type TicketNoteUpdate as ma, type TicketNoteWebhook as mb, type TicketNoteWebhookCreate as mc, type TicketNoteWebhookSummary as md, type TicketNoteWebhookUpdate as me, TicketNoteWebhooksResource as mf, type TicketNoteWebhooksResourceQueryParams as mg, TicketNotesResource as mh, type TicketNotesResourceQueryParams as mi, type TicketSecondaryResource as mj, type TicketSecondaryResourceCreate as mk, type TicketSecondaryResourceSummary as ml, type TicketSecondaryResourceUpdate as mm, TicketSecondaryResourcesResource as mn, type TicketSecondaryResourcesResourceQueryParams as mo, type TicketSummary as mp, type TicketUpdate as mq, type TicketWebhook as mr, type TicketWebhookCreate as ms, type TicketWebhookSummary as mt, type TicketWebhookUpdate as mu, TicketWebhooksResource as mv, type TicketWebhooksResourceQueryParams as mw, TicketsResource as mx, type TicketsResourceQueryParams as my, type TimeEntriesPostedCountResult as mz, type Opportunity as n, VersionInformationResource as n0, VersionResource as n1, ZONES as n2, ZONE_CATALOG as n3, ZoneInformationResource as n4, type ZoneInformationResultModel as n5, buildBreakerKey as n6, buildTenantKey as n7, clampPageSize as n8, collectAll as n9, FIELD_CATALOG_HONESTY_NOTE as nA, type FieldCacheKind as nB, type FieldCatalogCompactFieldRow as nC, type FieldCatalogFieldRow as nD, type FieldCatalogOptions as nE, type FieldCatalogResult as nF, type FieldCatalogRow as nG, type FieldCatalogRowError as nH, type FieldCatalogTrimKind as nI, type FieldCatalogTruncation as nJ, type FieldDerivation as nK, MAX_FIELD_CATALOG_WIRE as nL, MIN_FIELD_CATALOG_MAX_BYTES as nM, PICKLIST_CATALOG_UNAVAILABLE_NOTE as nN, PICKLIST_VALUE_NOT_SERVED_NOTE as nO, fieldCatalog as nP, cooldownDurationMs as na, defaultCircuitBreakerStore as nb, defaultCooldownStore as nc, isAutotaskError as nd, isBreakerFailure as ne, isCredentialHeaderName as nf, paginate as ng, paginateItems as nh, redactRecord as ni, resetDefaultCircuitBreakerStore as nj, resetDefaultCooldownStore as nk, resolveBaseUrl as nl, toArray as nm, totalPagesFor as nn, zoneUrl as no, type RowNamesSummary as np, type BlindSurfaceInfo as nq, type RelationshipResource as nr, type BlindSurfaceInventory as ns, type BlindSurfaceRow as nt, type CreateGuidanceValueRequirement as nu, type CreateGuidanceRow as nv, type CreateBlockerKind as nw, type CreateGuidanceReport as nx, type DerivationRule as ny, FIELD_CACHE_KINDS as nz, type ProjectCharge as o, type TicketAdditionalContact as p, type TicketCharge as q, type TimeEntry as r, type TicketChangeStatusResult as s, type TicketChangeStatusNoChange as t, AGENT_PROFILE as u, type ApiVersionResultModel as v, type Appointment as w, type AppointmentCreate as x, type AppointmentSummary as y, type AppointmentUpdate as z };
16499
+ export { type BillingItemApprovalLevelsResourceQueryParams as $, type AutotaskConfig as A, type AuditEvent as B, type CreateIfNotExistsResult as C, type AuthTokenResultModel as D, type ExpenseItem as E, type FilterOperator as F, AuthenticateResource as G, type Holiday as H, type Identifier as I, type AutotaskVersionResultModel as J, type BillingCode as K, type BillingCodeCreate as L, type BillingCodeSummary as M, type BillingCodeUpdate as N, type OperationResult as O, type PagingModel as P, type QueryParams as Q, type ResolvedAutotaskConfig as R, BillingCodesResource as S, TtlCache as T, type BillingCodesResourceQueryParams as U, type BillingItemApprovalLevel as V, type BillingItemApprovalLevelCreate as W, type BillingItemApprovalLevelSummary as X, type BillingItemApprovalLevelUpdate as Y, type ZoneName as Z, BillingItemApprovalLevelsResource as _, AutotaskClient as a, type CompanyWebhookSummary as a$, type BillingItems as a0, type BillingItemsCreate as a1, BillingItemsResource as a2, type BillingItemsResourceQueryParams as a3, type BillingItemsSummary as a4, type BillingItemsUpdate as a5, CREDENTIAL_HEADER_NAMES as a6, type ChangeRequestLinkCreate as a7, type ChangeRequestLinkSummary as a8, type ChangeRequestLinkUpdate as a9, type CompanyAlertUpdate as aA, CompanyAlertsResource as aB, type CompanyAlertsResourceQueryParams as aC, type CompanyContext as aD, type CompanyCreate as aE, type CompanyLocation as aF, type CompanyLocationCreate as aG, type CompanyLocationSummary as aH, type CompanyLocationUpdate as aI, CompanyLocationsResource as aJ, type CompanyLocationsResourceQueryParams as aK, type CompanyNote as aL, type CompanyNoteCreate as aM, type CompanyNoteSummary as aN, type CompanyNoteUpdate as aO, CompanyNotesResource as aP, type CompanyNotesResourceQueryParams as aQ, type CompanySiteConfigurations as aR, type CompanySiteConfigurationsCreate as aS, CompanySiteConfigurationsResource as aT, type CompanySiteConfigurationsResourceQueryParams as aU, type CompanySiteConfigurationsSummary as aV, type CompanySiteConfigurationsUpdate as aW, type CompanySummary as aX, type CompanyUpdate as aY, type CompanyWebhook as aZ, type CompanyWebhookCreate as a_, ChangeRequestLinksResource as aa, type ChangeRequestLinksResourceQueryParams as ab, ChecklistLibrariesResource as ac, type ChecklistLibrariesResourceQueryParams as ad, type ChecklistLibrary as ae, type ChecklistLibraryChecklistItem as af, type ChecklistLibraryChecklistItemCreate as ag, type ChecklistLibraryChecklistItemSummary as ah, type ChecklistLibraryChecklistItemUpdate as ai, ChecklistLibraryChecklistItemsResource as aj, type ChecklistLibraryChecklistItemsResourceQueryParams as ak, type ChecklistLibraryCreate as al, type ChecklistLibrarySummary as am, type ChecklistLibraryUpdate as an, type ClassificationIcon as ao, type ClassificationIconCreate as ap, type ClassificationIconSummary as aq, type ClassificationIconUpdate as ar, ClassificationIconsResource as as, type ClassificationIconsResourceQueryParams as at, CompaniesResource as au, type CompaniesResourceQueryParams as av, type Company as aw, type CompanyAlert as ax, type CompanyAlertCreate as ay, type CompanyAlertSummary as az, type RequestOptions as b, type ConfigurationItemsResourceQueryParams as b$, type CompanyWebhookUpdate as b0, CompanyWebhooksResource as b1, type CompanyWebhooksResourceQueryParams as b2, type ConfigProfile as b3, type ConfigurationItemBillingProductAssociations as b4, type ConfigurationItemBillingProductAssociationsCreate as b5, ConfigurationItemBillingProductAssociationsResource as b6, type ConfigurationItemBillingProductAssociationsResourceQueryParams as b7, type ConfigurationItemBillingProductAssociationsSummary as b8, type ConfigurationItemBillingProductAssociationsUpdate as b9, type ConfigurationItemRelatedItem as bA, type ConfigurationItemRelatedItemCreate as bB, type ConfigurationItemRelatedItemSummary as bC, type ConfigurationItemRelatedItemUpdate as bD, ConfigurationItemRelatedItemsResource as bE, type ConfigurationItemRelatedItemsResourceQueryParams as bF, type ConfigurationItemSslSubjectAlternativeName as bG, type ConfigurationItemSslSubjectAlternativeNameCreate as bH, type ConfigurationItemSslSubjectAlternativeNameSummary as bI, type ConfigurationItemSslSubjectAlternativeNameUpdate as bJ, ConfigurationItemSslSubjectAlternativeNamesResource as bK, type ConfigurationItemSslSubjectAlternativeNamesResourceQueryParams as bL, type ConfigurationItemSummary as bM, type ConfigurationItemType as bN, type ConfigurationItemTypeCreate as bO, type ConfigurationItemTypeSummary as bP, type ConfigurationItemTypeUpdate as bQ, ConfigurationItemTypesResource as bR, type ConfigurationItemTypesResourceQueryParams as bS, type ConfigurationItemUpdate as bT, type ConfigurationItemWebhook as bU, type ConfigurationItemWebhookCreate as bV, type ConfigurationItemWebhookSummary as bW, type ConfigurationItemWebhookUpdate as bX, ConfigurationItemWebhooksResource as bY, type ConfigurationItemWebhooksResourceQueryParams as bZ, ConfigurationItemsResource as b_, ConfigurationItemCategoriesResource as ba, type ConfigurationItemCategoriesResourceQueryParams as bb, type ConfigurationItemCategory as bc, type ConfigurationItemCategoryCreate as bd, type ConfigurationItemCategorySummary as be, type ConfigurationItemCategoryUdfAssociation as bf, type ConfigurationItemCategoryUdfAssociationCreate as bg, type ConfigurationItemCategoryUdfAssociationSummary as bh, type ConfigurationItemCategoryUdfAssociationUpdate as bi, ConfigurationItemCategoryUdfAssociationsResource as bj, type ConfigurationItemCategoryUdfAssociationsResourceQueryParams as bk, type ConfigurationItemCategoryUpdate as bl, type ConfigurationItemContext as bm, type ConfigurationItemCreate as bn, type ConfigurationItemDnsRecord as bo, type ConfigurationItemDnsRecordCreate as bp, type ConfigurationItemDnsRecordSummary as bq, type ConfigurationItemDnsRecordUpdate as br, ConfigurationItemDnsRecordsResource as bs, type ConfigurationItemDnsRecordsResourceQueryParams as bt, type ConfigurationItemNote as bu, type ConfigurationItemNoteCreate as bv, type ConfigurationItemNoteSummary as bw, type ConfigurationItemNoteUpdate as bx, ConfigurationItemNotesResource as by, type ConfigurationItemNotesResourceQueryParams as bz, type FilterCondition as c, ContractExclusionSetExcludedRolesResource as c$, type Contact as c0, type ContactContext as c1, type ContactCreate as c2, type ContactGroupContacts as c3, type ContactGroupContactsCreate as c4, ContactGroupContactsResource as c5, type ContactGroupContactsResourceQueryParams as c6, type ContactGroupContactsSummary as c7, type ContactGroupContactsUpdate as c8, type ContactGroups as c9, type ContractBlockHourFactorUpdate as cA, ContractBlockHourFactorsResource as cB, type ContractBlockHourFactorsResourceQueryParams as cC, type ContractBlockSummary as cD, type ContractBlockUpdate as cE, ContractBlocksResource as cF, type ContractBlocksResourceQueryParams as cG, type ContractChargeCreate as cH, type ContractChargeSummary as cI, type ContractChargeUpdate as cJ, ContractChargesResource as cK, type ContractChargesResourceQueryParams as cL, type ContractCreate as cM, type ContractExclusionBillingCode as cN, type ContractExclusionBillingCodeCreate as cO, type ContractExclusionBillingCodeSummary as cP, type ContractExclusionBillingCodeUpdate as cQ, ContractExclusionBillingCodesResource as cR, type ContractExclusionBillingCodesResourceQueryParams as cS, type ContractExclusionRoles as cT, type ContractExclusionRolesCreate as cU, ContractExclusionRolesResource as cV, type ContractExclusionRolesResourceQueryParams as cW, type ContractExclusionRolesSummary as cX, type ContractExclusionRolesUpdate as cY, type ContractExclusionSetExcludedRoles as cZ, type ContractExclusionSetExcludedRolesCreate as c_, type ContactGroupsCreate as ca, ContactGroupsResource as cb, type ContactGroupsResourceQueryParams as cc, type ContactGroupsSummary as cd, type ContactGroupsUpdate as ce, type ContactSummary as cf, type ContactUpdate as cg, type ContactWebhook as ch, type ContactWebhookCreate as ci, type ContactWebhookSummary as cj, type ContactWebhookUpdate as ck, ContactWebhooksResource as cl, type ContactWebhooksResourceQueryParams as cm, ContactsResource as cn, type ContactsResourceQueryParams as co, type ContractBillingRule as cp, type ContractBillingRuleCreate as cq, type ContractBillingRuleSummary as cr, type ContractBillingRuleUpdate as cs, ContractBillingRulesResource as ct, type ContractBillingRulesResourceQueryParams as cu, type ContractBlock as cv, type ContractBlockCreate as cw, type ContractBlockHourFactor as cx, type ContractBlockHourFactorCreate as cy, type ContractBlockHourFactorSummary as cz, type Filter as d, type ContractServiceBundleUnitSummary as d$, type ContractExclusionSetExcludedRolesResourceQueryParams as d0, type ContractExclusionSetExcludedRolesSummary as d1, type ContractExclusionSetExcludedRolesUpdate as d2, type ContractExclusionSetExcludedWorkTypes as d3, type ContractExclusionSetExcludedWorkTypesCreate as d4, ContractExclusionSetExcludedWorkTypesResource as d5, type ContractExclusionSetExcludedWorkTypesResourceQueryParams as d6, type ContractExclusionSetExcludedWorkTypesSummary as d7, type ContractExclusionSetExcludedWorkTypesUpdate as d8, type ContractExclusionSets as d9, ContractRetainersResource as dA, type ContractRetainersResourceQueryParams as dB, type ContractRetainersSummary as dC, type ContractRetainersUpdate as dD, type ContractRoleCosts as dE, type ContractRoleCostsCreate as dF, ContractRoleCostsResource as dG, type ContractRoleCostsResourceQueryParams as dH, type ContractRoleCostsSummary as dI, type ContractRoleCostsUpdate as dJ, type ContractServiceAdjustment as dK, type ContractServiceAdjustmentCreate as dL, type ContractServiceAdjustmentSummary as dM, type ContractServiceAdjustmentUpdate as dN, ContractServiceAdjustmentsResource as dO, type ContractServiceAdjustmentsResourceQueryParams as dP, type ContractServiceBundle as dQ, type ContractServiceBundleAdjustment as dR, type ContractServiceBundleAdjustmentCreate as dS, type ContractServiceBundleAdjustmentSummary as dT, type ContractServiceBundleAdjustmentUpdate as dU, ContractServiceBundleAdjustmentsResource as dV, type ContractServiceBundleAdjustmentsResourceQueryParams as dW, type ContractServiceBundleCreate as dX, type ContractServiceBundleSummary as dY, type ContractServiceBundleUnit as dZ, type ContractServiceBundleUnitCreate as d_, type ContractExclusionSetsCreate as da, ContractExclusionSetsResource as db, type ContractExclusionSetsResourceQueryParams as dc, type ContractExclusionSetsSummary as dd, type ContractExclusionSetsUpdate as de, type ContractMilestone as df, type ContractMilestoneCreate as dg, type ContractMilestoneSummary as dh, type ContractMilestoneUpdate as di, ContractMilestonesResource as dj, type ContractMilestonesResourceQueryParams as dk, type ContractNote as dl, type ContractNoteCreate as dm, type ContractNoteSummary as dn, type ContractNoteUpdate as dp, ContractNotesResource as dq, type ContractNotesResourceQueryParams as dr, type ContractRate as ds, type ContractRateCreate as dt, type ContractRateSummary as du, type ContractRateUpdate as dv, ContractRatesResource as dw, type ContractRatesResourceQueryParams as dx, type ContractRetainers as dy, type ContractRetainersCreate as dz, type ChangeRequestLink as e, type ExpenseItemAttachmentSummary as e$, type ContractServiceBundleUnitUpdate as e0, ContractServiceBundleUnitsResource as e1, type ContractServiceBundleUnitsResourceQueryParams as e2, type ContractServiceBundleUpdate as e3, ContractServiceBundlesResource as e4, type ContractServiceBundlesResourceQueryParams as e5, type ContractServiceCreate as e6, type ContractServiceSummary as e7, type ContractServiceUnit as e8, type ContractServiceUnitCreate as e9, type CurrenciesResourceQueryParams as eA, type Currency as eB, type CurrencyCreate as eC, type CurrencySummary as eD, type CurrencyUpdate as eE, DEFAULT_ZONE as eF, type Department as eG, type DepartmentCreate as eH, type DepartmentSummary as eI, type DepartmentUpdate as eJ, DepartmentsResource as eK, type DepartmentsResourceQueryParams as eL, type DocumentChecklistLibrary as eM, type DomainRegistrar as eN, type DomainRegistrarCreate as eO, type DomainRegistrarSummary as eP, type DomainRegistrarUpdate as eQ, DomainRegistrarsResource as eR, type DomainRegistrarsResourceQueryParams as eS, type DryRunResult as eT, type EmptyReasonInfo as eU, type EmptyReasonKind as eV, type EntityInformationModel as eW, EntityInformationResource as eX, type EntityInformationResultModel as eY, type ExpenseItemAttachment as eZ, type ExpenseItemAttachmentCreate as e_, type ContractServiceUnitSummary as ea, type ContractServiceUnitUpdate as eb, ContractServiceUnitsResource as ec, type ContractServiceUnitsResourceQueryParams as ed, type ContractServiceUpdate as ee, ContractServicesResource as ef, type ContractServicesResourceQueryParams as eg, type ContractSummary as eh, type ContractTicketPurchases as ei, type ContractTicketPurchasesCreate as ej, ContractTicketPurchasesResource as ek, type ContractTicketPurchasesResourceQueryParams as el, type ContractTicketPurchasesSummary as em, type ContractTicketPurchasesUpdate as en, type ContractUpdate as eo, type ContractsProfitabilityResult as ep, ContractsResource as eq, type ContractsResourceQueryParams as er, type CostRateResolution as es, CountriesResource as et, type CountriesResourceQueryParams as eu, type Country as ev, type CountryCreate as ew, type CountrySummary as ex, type CountryUpdate as ey, CurrenciesResource as ez, type ConfigurationItem as f, type NotificationHistoryResourceQueryParams as f$, type ExpenseItemAttachmentUpdate as f0, ExpenseItemAttachmentsResource as f1, type ExpenseItemAttachmentsResourceQueryParams as f2, type ExpenseItemCreate as f3, type ExpenseItemSummary as f4, type ExpenseItemUpdate as f5, ExpenseItemsResource as f6, type ExpenseItemsResourceQueryParams as f7, type ExpenseReport as f8, type ExpenseReportCreate as f9, type InventoryProductUpdate as fA, InventoryProductsResource as fB, type InventoryProductsResourceQueryParams as fC, type InventoryStockedItemAdd as fD, type InventoryStockedItemRemove as fE, type InventoryStockedItemTransfer as fF, type Invoice as fG, type InvoiceCreate as fH, type InvoiceSummary as fI, type InvoiceTemplate as fJ, type InvoiceTemplateCreate as fK, type InvoiceTemplateSummary as fL, type InvoiceTemplateUpdate as fM, InvoiceTemplatesResource as fN, type InvoiceTemplatesResourceQueryParams as fO, type InvoiceUpdate as fP, InvoicesResource as fQ, type InvoicesResourceQueryParams as fR, type KeyValuePair as fS, type Logger as fT, MAX_PAGES as fU, type ModuleAccessResultModel as fV, ModulesResource as fW, NoopLogger as fX, type NotificationHistory as fY, type NotificationHistoryCreate as fZ, NotificationHistoryResource as f_, type ExpenseReportSummary as fa, type ExpenseReportUpdate as fb, ExpenseReportsResource as fc, type ExpenseReportsResourceQueryParams as fd, FIELD_CACHE_KINDS as fe, type Field as ff, type FieldCacheKind as fg, type FieldDiff as fh, type FieldInformationModel as fi, type FilterValue as fj, type GlobalEntityInformationResultModel as fk, type HolidayCreate as fl, type HolidaySetCreate as fm, type HolidaySetSummary as fn, type HolidaySetUpdate as fo, HolidaySetsResource as fp, type HolidaySetsResourceQueryParams as fq, type HolidaySummary as fr, type HolidayUpdate as fs, HolidaysResource as ft, type HolidaysResourceQueryParams as fu, HttpClient as fv, IDEMPOTENT_METHODS as fw, type InventoryProduct as fx, type InventoryProductCreate as fy, type InventoryProductSummary as fz, type ContractCharge as g, type ProfitabilityDataQualityWarning as g$, type NotificationHistorySummary as g0, type NotificationHistoryUpdate as g1, type OperationMetadata as g2, type OperationShapeDrift as g3, OpportunitiesResource as g4, type OpportunitiesResourceQueryParams as g5, type OpportunityAttachment as g6, type OpportunityAttachmentCreate as g7, type OpportunityAttachmentSummary as g8, type OpportunityAttachmentUpdate as g9, type OrganizationalLevelAssociationUpdate as gA, OrganizationalLevelAssociationsResource as gB, type OrganizationalLevelAssociationsResourceQueryParams as gC, type Page as gD, type PageFetcher as gE, type PaginateOptions as gF, type Phase as gG, type PhaseCreate as gH, type PhaseSummary as gI, type PhaseUpdate as gJ, PhasesResource as gK, type PhasesResourceQueryParams as gL, type PickListValue as gM, type Product as gN, type ProductCreate as gO, type ProductSummary as gP, type ProductUpdate as gQ, type ProductVendors as gR, type ProductVendorsCreate as gS, ProductVendorsResource as gT, type ProductVendorsResourceQueryParams as gU, type ProductVendorsSummary as gV, type ProductVendorsUpdate as gW, ProductsResource as gX, type ProductsResourceQueryParams as gY, type ProfitRateSource as gZ, type ProfitabilityActivityCategory as g_, OpportunityAttachmentsResource as ga, type OpportunityAttachmentsResourceQueryParams as gb, OpportunityCategoriesResource as gc, type OpportunityCategoriesResourceQueryParams as gd, type OpportunityCategory as ge, type OpportunityCategoryCreate as gf, type OpportunityCategorySummary as gg, type OpportunityCategoryUpdate as gh, type OpportunityCreate as gi, type OpportunitySummary as gj, type OpportunityUpdate as gk, type OrganizationalLevel1 as gl, type OrganizationalLevel1Create as gm, type OrganizationalLevel1Summary as gn, type OrganizationalLevel1Update as go, OrganizationalLevel1sResource as gp, type OrganizationalLevel1sResourceQueryParams as gq, type OrganizationalLevel2 as gr, type OrganizationalLevel2Create as gs, type OrganizationalLevel2Summary as gt, type OrganizationalLevel2Update as gu, OrganizationalLevel2sResource as gv, type OrganizationalLevel2sResourceQueryParams as gw, type OrganizationalLevelAssociation as gx, type OrganizationalLevelAssociationCreate as gy, type OrganizationalLevelAssociationSummary as gz, type Contract as h, QuoteLocationsResource as h$, type ProfitabilityHighestCostTicket as h0, type ProfitabilityLabourCostMethod as h1, type ProfitabilityMiscoding as h2, type ProfitabilityMonthlyRow as h3, type ProfitabilityOpenRenewalItem as h4, type ProfitabilityOptions as h5, type ProfitabilityPart as h6, type ProfitabilityPartDigest as h7, type ProfitabilityRevenueByType as h8, type Project as h9, type PurchaseOrderItemReceivingResourceQueryParams as hA, type PurchaseOrderItemReceivingSummary as hB, type PurchaseOrderItemReceivingUpdate as hC, type PurchaseOrderItems as hD, type PurchaseOrderItemsCreate as hE, PurchaseOrderItemsResource as hF, type PurchaseOrderItemsResourceQueryParams as hG, type PurchaseOrderItemsSummary as hH, type PurchaseOrderItemsUpdate as hI, type PurchaseOrders as hJ, type PurchaseOrdersCreate as hK, PurchaseOrdersResource as hL, type PurchaseOrdersResourceQueryParams as hM, type PurchaseOrdersSummary as hN, type PurchaseOrdersUpdate as hO, type Quote as hP, type QuoteCreate as hQ, type QuoteItem as hR, type QuoteItemCreate as hS, type QuoteItemSummary as hT, type QuoteItemUpdate as hU, QuoteItemsResource as hV, type QuoteItemsResourceQueryParams as hW, type QuoteLocation as hX, type QuoteLocationCreate as hY, type QuoteLocationSummary as hZ, type QuoteLocationUpdate as h_, type ProjectChargeCreate as ha, type ProjectChargeSummary as hb, type ProjectChargeUpdate as hc, ProjectChargesResource as hd, type ProjectChargesResourceQueryParams as he, type ProjectContext as hf, type ProjectCreate as hg, type ProjectNote as hh, type ProjectNoteCreate as hi, type ProjectNoteSummary as hj, type ProjectNoteUpdate as hk, ProjectNotesResource as hl, type ProjectNotesResourceQueryParams as hm, type ProjectSummary as hn, type ProjectUpdate as ho, ProjectsResource as hp, type ProjectsResourceQueryParams as hq, type PurchaseApprovals as hr, type PurchaseApprovalsCreate as hs, PurchaseApprovalsResource as ht, type PurchaseApprovalsResourceQueryParams as hu, type PurchaseApprovalsSummary as hv, type PurchaseApprovalsUpdate as hw, type PurchaseOrderItemReceiving as hx, type PurchaseOrderItemReceivingCreate as hy, PurchaseOrderItemReceivingResource as hz, type ContractService as i, type RoleSummary as i$, type QuoteLocationsResourceQueryParams as i0, type QuoteSummary as i1, type QuoteTemplate as i2, type QuoteTemplateCreate as i3, type QuoteTemplateSummary as i4, type QuoteTemplateUpdate as i5, QuoteTemplatesResource as i6, type QuoteTemplatesResourceQueryParams as i7, type QuoteUpdate as i8, QuotesResource as i9, type ResourceSkillUpdate as iA, ResourceSkillsResource as iB, type ResourceSkillsResourceQueryParams as iC, type ResourceSummary as iD, type ResourceTimeOffAdditional as iE, type ResourceTimeOffAdditionalCreate as iF, ResourceTimeOffAdditionalResource as iG, type ResourceTimeOffAdditionalResourceQueryParams as iH, type ResourceTimeOffAdditionalSummary as iI, type ResourceTimeOffAdditionalUpdate as iJ, type ResourceTimeOffApprover as iK, type ResourceTimeOffApproverCreate as iL, type ResourceTimeOffApproverSummary as iM, type ResourceTimeOffApproverUpdate as iN, ResourceTimeOffApproversResource as iO, type ResourceTimeOffApproversResourceQueryParams as iP, type ResourceTimeOffBalance as iQ, type ResourceTimeOffBalanceCreate as iR, type ResourceTimeOffBalanceSummary as iS, type ResourceTimeOffBalanceUpdate as iT, ResourceTimeOffBalancesResource as iU, type ResourceTimeOffBalancesResourceQueryParams as iV, type ResourceUpdate as iW, ResourcesResource as iX, type ResourcesResourceQueryParams as iY, type Role as iZ, type RoleCreate as i_, type QuotesResourceQueryParams as ia, READ_CACHE_MAX_ENTRIES as ib, REDACTED as ic, REFERENCE_ENTITIES as id, REFERENCE_TTL_MS as ie, type Resolution as ig, type ResolutionCaps as ih, type Resource as ii, type ResourceCreate as ij, type ResourceRole as ik, type ResourceRoleCreate as il, type ResourceRoleQueue as im, type ResourceRoleQueueCreate as io, type ResourceRoleQueueSummary as ip, type ResourceRoleQueueUpdate as iq, ResourceRoleQueuesResource as ir, type ResourceRoleQueuesResourceQueryParams as is, type ResourceRoleSummary as it, type ResourceRoleUpdate as iu, ResourceRolesResource as iv, type ResourceRolesResourceQueryParams as iw, type ResourceSkill as ix, type ResourceSkillCreate as iy, type ResourceSkillSummary as iz, type HolidaySet as j, SubscriptionPeriodsResource as j$, type RoleUpdate as j0, RolesResource as j1, type RolesResourceQueryParams as j2, type SalesOrder as j3, type SalesOrderCreate as j4, type SalesOrderSummary as j5, type SalesOrderUpdate as j6, SalesOrdersResource as j7, type SalesOrdersResourceQueryParams as j8, type Service as j9, type ServiceCallTicketsResourceQueryParams as jA, type ServiceCallUpdate as jB, ServiceCallsResource as jC, type ServiceCallsResourceQueryParams as jD, type ServiceCreate as jE, type ServiceLevelAgreementResults as jF, type ServiceLevelAgreementResultsCreate as jG, ServiceLevelAgreementResultsResource as jH, type ServiceLevelAgreementResultsResourceQueryParams as jI, type ServiceLevelAgreementResultsSummary as jJ, type ServiceLevelAgreementResultsUpdate as jK, type ServiceSummary as jL, type ServiceUpdate as jM, ServicesResource as jN, type ServicesResourceQueryParams as jO, type Skill as jP, type SkillCreate as jQ, type SkillSummary as jR, type SkillUpdate as jS, SkillsResource as jT, type SkillsResourceQueryParams as jU, type Subscription as jV, type SubscriptionCreate as jW, type SubscriptionPeriod as jX, type SubscriptionPeriodCreate as jY, type SubscriptionPeriodSummary as jZ, type SubscriptionPeriodUpdate as j_, type ServiceCall as ja, type ServiceCallCreate as jb, type ServiceCallSummary as jc, type ServiceCallTask as jd, type ServiceCallTaskCreate as je, type ServiceCallTaskResource as jf, type ServiceCallTaskResourceCreate as jg, type ServiceCallTaskResourceSummary as jh, type ServiceCallTaskResourceUpdate as ji, ServiceCallTaskResourcesResource as jj, type ServiceCallTaskResourcesResourceQueryParams as jk, type ServiceCallTaskSummary as jl, type ServiceCallTaskUpdate as jm, ServiceCallTasksResource as jn, type ServiceCallTasksResourceQueryParams as jo, type ServiceCallTicket as jp, type ServiceCallTicketCreate as jq, type ServiceCallTicketResource as jr, type ServiceCallTicketResourceCreate as js, type ServiceCallTicketResourceSummary as jt, type ServiceCallTicketResourceUpdate as ju, ServiceCallTicketResourcesResource as jv, type ServiceCallTicketResourcesResourceQueryParams as jw, type ServiceCallTicketSummary as jx, type ServiceCallTicketUpdate as jy, ServiceCallTicketsResource as jz, type Opportunity as k, type TicketAdditionalContactUpdate as k$, type SubscriptionPeriodsResourceQueryParams as k0, type SubscriptionSummary as k1, type SubscriptionUpdate as k2, SubscriptionsResource as k3, type SubscriptionsResourceQueryParams as k4, type Survey as k5, type SurveyCreate as k6, type SurveyResults as k7, type SurveyResultsCreate as k8, SurveyResultsResource as k9, type TaskCreate as kA, type TaskSecondaryResource as kB, type TaskSecondaryResourceCreate as kC, type TaskSecondaryResourceSummary as kD, type TaskSecondaryResourceUpdate as kE, TaskSecondaryResourcesResource as kF, type TaskSecondaryResourcesResourceQueryParams as kG, type TaskSummary as kH, type TaskUpdate as kI, TasksResource as kJ, type TasksResourceQueryParams as kK, type TaxRegion as kL, type TaxRegionCreate as kM, type TaxRegionSummary as kN, type TaxRegionUpdate as kO, TaxRegionsResource as kP, type TaxRegionsResourceQueryParams as kQ, ThresholdInformationResource as kR, type ThresholdStatusResultModel as kS, type Ticket as kT, type TicketAdditionalConfigurationItemCreate as kU, type TicketAdditionalConfigurationItemSummary as kV, type TicketAdditionalConfigurationItemUpdate as kW, TicketAdditionalConfigurationItemsResource as kX, type TicketAdditionalConfigurationItemsResourceQueryParams as kY, type TicketAdditionalContactCreate as kZ, type TicketAdditionalContactSummary as k_, type SurveyResultsResourceQueryParams as ka, type SurveyResultsSummary as kb, type SurveyResultsUpdate as kc, type SurveySummary as kd, type SurveyUpdate as ke, SurveysResource as kf, type SurveysResourceQueryParams as kg, type Tag as kh, type TagAlias as ki, type TagAliasCreate as kj, type TagAliasSummary as kk, type TagAliasUpdate as kl, TagAliasesResource as km, type TagAliasesResourceQueryParams as kn, type TagCreate as ko, type TagGroup as kp, type TagGroupCreate as kq, type TagGroupSummary as kr, type TagGroupUpdate as ks, TagGroupsResource as kt, type TagGroupsResourceQueryParams as ku, type TagSummary as kv, type TagUpdate as kw, TagsResource as kx, type TagsResourceQueryParams as ky, type Task as kz, type ProjectCharge as l, type TicketNoteWebhookSummary as l$, TicketAdditionalContactsResource as l0, type TicketAdditionalContactsResourceQueryParams as l1, type TicketAttachment as l2, type TicketAttachmentCreate as l3, type TicketAttachmentSummary as l4, type TicketAttachmentUpdate as l5, TicketAttachmentsResource as l6, type TicketAttachmentsResourceQueryParams as l7, TicketCategoriesResource as l8, type TicketCategoriesResourceQueryParams as l9, type TicketChecklistItemsResourceQueryParams as lA, TicketChecklistLibrariesResource as lB, type TicketChecklistLibrariesResourceQueryParams as lC, type TicketChecklistLibrary as lD, type TicketChecklistLibraryCreate as lE, type TicketChecklistLibrarySummary as lF, type TicketChecklistLibraryUpdate as lG, type TicketContext as lH, type TicketCreate as lI, type TicketHistory as lJ, type TicketHistoryCreate as lK, TicketHistoryResource as lL, type TicketHistoryResourceQueryParams as lM, type TicketHistorySummary as lN, type TicketHistoryUpdate as lO, type TicketNote as lP, type TicketNoteAttachment as lQ, type TicketNoteAttachmentCreate as lR, type TicketNoteAttachmentSummary as lS, type TicketNoteAttachmentUpdate as lT, TicketNoteAttachmentsResource as lU, type TicketNoteAttachmentsResourceQueryParams as lV, type TicketNoteCreate as lW, type TicketNoteSummary as lX, type TicketNoteUpdate as lY, type TicketNoteWebhook as lZ, type TicketNoteWebhookCreate as l_, type TicketCategory as la, type TicketCategoryCreate as lb, type TicketCategoryFieldDefault as lc, type TicketCategoryFieldDefaultCreate as ld, type TicketCategoryFieldDefaultSummary as le, type TicketCategoryFieldDefaultUpdate as lf, TicketCategoryFieldDefaultsResource as lg, type TicketCategoryFieldDefaultsResourceQueryParams as lh, type TicketCategorySummary as li, type TicketCategoryUpdate as lj, type TicketChangeRequestApproval as lk, type TicketChangeRequestApprovalCreate as ll, type TicketChangeRequestApprovalSummary as lm, type TicketChangeRequestApprovalUpdate as ln, TicketChangeRequestApprovalsResource as lo, type TicketChangeRequestApprovalsResourceQueryParams as lp, type TicketChargeCreate as lq, type TicketChargeSummary as lr, type TicketChargeUpdate as ls, TicketChargesResource as lt, type TicketChargesResourceQueryParams as lu, type TicketChecklistItem as lv, type TicketChecklistItemCreate as lw, type TicketChecklistItemSummary as lx, type TicketChecklistItemUpdate as ly, TicketChecklistItemsResource as lz, type TicketAdditionalConfigurationItem as m, readTtlFor as m$, type TicketNoteWebhookUpdate as m0, TicketNoteWebhooksResource as m1, type TicketNoteWebhooksResourceQueryParams as m2, TicketNotesResource as m3, type TicketNotesResourceQueryParams as m4, type TicketSecondaryResource as m5, type TicketSecondaryResourceCreate as m6, type TicketSecondaryResourceSummary as m7, type TicketSecondaryResourceUpdate as m8, TicketSecondaryResourcesResource as m9, type TimeEntryAttachmentUpdate as mA, TimeEntryAttachmentsResource as mB, type TimeEntryAttachmentsResourceQueryParams as mC, type TimeEntryCreate as mD, type TimeEntrySummary as mE, type TimeEntryUpdate as mF, type TimeOffRequest as mG, type TimeOffRequestCreate as mH, type TimeOffRequestReject as mI, type TimeOffRequestSummary as mJ, type TimeOffRequestUpdate as mK, TimeOffRequestsResource as mL, type TimeOffRequestsResourceQueryParams as mM, type TtlCacheOptions as mN, type UdfField as mO, VersionInformationResource as mP, VersionResource as mQ, ZONES as mR, ZONE_CATALOG as mS, ZoneInformationResource as mT, type ZoneInformationResultModel as mU, clampPageSize as mV, collectAll as mW, fieldKey as mX, isCredentialHeaderName as mY, paginate as mZ, paginateItems as m_, type TicketSecondaryResourcesResourceQueryParams as ma, type TicketSummary as mb, type TicketUpdate as mc, type TicketWebhook as md, type TicketWebhookCreate as me, type TicketWebhookSummary as mf, type TicketWebhookUpdate as mg, TicketWebhooksResource as mh, type TicketWebhooksResourceQueryParams as mi, TicketsResource as mj, type TicketsResourceQueryParams as mk, type TimeEntriesPostedCountResult as ml, type TimeEntriesPostedPagingOptions as mm, type TimeEntriesPostedStateResult as mn, type TimeEntriesPostedWindowCountOptions as mo, type TimeEntriesPostedWindowListOptions as mp, type TimeEntriesPostedWindowOptions as mq, type TimeEntriesPostedWindowResult as mr, TimeEntriesResource as ms, type TimeEntriesResourceQueryParams as mt, type TimeEntriesStatusCountOptions as mu, type TimeEntriesStatusListOptions as mv, type TimeEntriesStatusOptions as mw, type TimeEntryAttachment as mx, type TimeEntryAttachmentCreate as my, type TimeEntryAttachmentSummary as mz, type TicketAdditionalContact as n, redactRecord as n0, resolveBaseUrl as n1, toArray as n2, totalPagesFor as n3, zoneUrl as n4, type RowNamesSummary as n5, type BlindSurfaceInfo as n6, type RelationshipResource as n7, type BlindSurfaceInventory as n8, type BlindSurfaceRow as n9, type CreateGuidanceValueRequirement as na, type CreateGuidanceRow as nb, type CreateBlockerKind as nc, type CreateGuidanceReport as nd, type DerivationRule as ne, FIELD_CATALOG_HONESTY_NOTE as nf, type FieldCatalogCompactFieldRow as ng, type FieldCatalogFieldRow as nh, type FieldCatalogOptions as ni, type FieldCatalogResult as nj, type FieldCatalogRow as nk, type FieldCatalogRowError as nl, type FieldCatalogTrimKind as nm, type FieldCatalogTruncation as nn, type FieldDerivation as no, MAX_FIELD_CATALOG_WIRE as np, MIN_FIELD_CATALOG_MAX_BYTES as nq, PICKLIST_CATALOG_UNAVAILABLE_NOTE as nr, PICKLIST_VALUE_NOT_SERVED_NOTE as ns, fieldCatalog as nt, type TicketCharge as o, type TimeEntry as p, type TicketChangeStatusResult as q, type TicketChangeStatusNoChange as r, AGENT_PROFILE as s, type ApiVersionResultModel as t, type Appointment as u, type AppointmentCreate as v, type AppointmentSummary as w, type AppointmentUpdate as x, AppointmentsResource as y, type AppointmentsResourceQueryParams as z };