node-autotask 0.44.0 → 0.45.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 (47) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/MCP_TOOL_CATALOG.json +153 -1269
  3. package/MCP_TOOL_MANIFEST.md +28 -95
  4. package/MCP_TOOL_OVERRIDES.json +8 -62
  5. package/N8N_MCP_MANIFEST.json +118 -695
  6. package/N8N_MCP_MANIFEST.md +32 -52
  7. package/README.md +5 -10
  8. package/capabilities.json +23788 -31075
  9. package/dist/{base-CftidiyZ.d.cts → base-BVoYDlVA.d.cts} +2 -2
  10. package/dist/{base-CftidiyZ.d.ts → base-BVoYDlVA.d.ts} +2 -2
  11. package/dist/capabilities.cjs +2 -2
  12. package/dist/capabilities.js +1 -1
  13. package/dist/{chunk-N6IWPGHB.js → chunk-ASMCTZO2.js} +23787 -31074
  14. package/dist/{chunk-6WLGHKIU.cjs → chunk-DC3PY4EF.cjs} +1839 -1407
  15. package/dist/{chunk-BKTOMNT2.js → chunk-DXKXQHCX.js} +5 -5
  16. package/dist/{chunk-KWQSGWY5.cjs → chunk-JO6WI763.cjs} +143 -143
  17. package/dist/{chunk-LYI5FRPX.js → chunk-NSW7JPVS.js} +11544 -13365
  18. package/dist/{chunk-7MCKJTSA.js → chunk-O4PIPUS4.js} +1583 -1151
  19. package/dist/{chunk-PH3ESYAF.cjs → chunk-VXVYFJH3.cjs} +23787 -31074
  20. package/dist/{chunk-EMYDC5SG.cjs → chunk-YMBVKVK4.cjs} +6123 -7944
  21. package/dist/{index-YbEk0awP.d.cts → index-C5g1H_hF.d.ts} +1194 -1415
  22. package/dist/{index-D8FtzUGP.d.ts → index-Db0SNnQn.d.cts} +1194 -1415
  23. package/dist/{index-DgBA1JMH.d.cts → index-c549LvOb.d.cts} +188 -188
  24. package/dist/{index-DgBA1JMH.d.ts → index-c549LvOb.d.ts} +188 -188
  25. package/dist/index.cjs +22 -22
  26. package/dist/index.d.cts +15 -42
  27. package/dist/index.d.ts +15 -42
  28. package/dist/index.js +7 -7
  29. package/dist/operations/index.cjs +5 -2327
  30. package/dist/operations/index.d.cts +7 -287
  31. package/dist/operations/index.d.ts +7 -287
  32. package/dist/operations/index.js +29 -2351
  33. package/dist/pool.cjs +8 -8
  34. package/dist/pool.d.cts +1 -1
  35. package/dist/pool.d.ts +1 -1
  36. package/dist/pool.js +4 -4
  37. package/dist/resources/index.cjs +4 -4
  38. package/dist/resources/index.d.cts +2 -2
  39. package/dist/resources/index.d.ts +2 -2
  40. package/dist/resources/index.js +7 -7
  41. package/dist/types/index.d.cts +1 -1
  42. package/dist/types/index.d.ts +1 -1
  43. package/docs/API.md +201 -303
  44. package/docs/LIVE-TESTING.md +4 -6
  45. package/docs/N8N-ADAPTER.md +26 -26
  46. package/n8n-mcp.curation.json +3 -3
  47. package/package.json +1 -1
@@ -137,18 +137,16 @@ DRY-RUN-ONLY verdict (the only no-credentials path, exit 0).
137
137
  Full-sweep budget (worst case, every table non-empty — the machine-readable
138
138
  number is the report's `budget` block): PLAN-HONEST 1016 bounded op calls
139
139
  (every read/helper row = at most ONE bounded call — reads use
140
- `queryBounded` limit 2, a TOTAL cap; the served-artifact rows —
141
- operations.blindSurfaces (issue #11), operations.createGuidance (issue
142
- #12) — plan the op call at ZERO wire, but still count as one op call in
140
+ `queryBounded` limit 2, a TOTAL cap; the served-artifact row —
141
+ operations.createGuidance (issue #12) — plans the op call at ZERO wire,
142
+ but still counts as one op call in
143
143
  this number: the budget counts ROW calls, not raw wire, so the 1016 is the
144
144
  conservative row-based figure)
145
145
  + <=82 best-effort update diff GETs
146
146
  + <=129 cached limit-1 id reads (one per resource; the parent chain shares
147
147
  the cache) = <= 1227. WIRE-HONEST: the dry-run verification reads ride on
148
148
  top — 54 delete current-record GETs + 63 scoped-create parent-verify GETs
149
- + 20 getContext part GETs + <=18 special-op reads (incl. the issue #9
150
- `operations.recovery` dry-run find — ONE bounded query, zero mutating
151
- wire) = <=155 — so the worst case is <= 1382 raw wire requests. The 1600
149
+ + 20 getContext part GETs + <=18 special-op reads = <=155 — so the worst case is <= 1382 raw wire requests. The 1600
152
150
  --max-calls cap bounds the row-based plan (actualCalls <= 1227); the wire
153
151
  count cannot exceed plan + the stated verification set (and 1382 is far
154
152
  under the API's 10k req/hour). ZERO mutating requests: every mutation travels
@@ -36,12 +36,12 @@ Two sources in, markdown table out: the node repo (the ops column is re-derived
36
36
  |----------|-----------|---------------|---------------------------|------------------|----------------------------------|
37
37
  | `appointments` | Appointment | no | create, delete, get, getMany, update, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
38
38
  | `billingCodes` | BillingCode | no | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search |
39
- | `billingItems` | BillingItems | no | update, get, getMany, count | — | count, customRange, get, getEntityInfo, getFieldInfo, getUdfInfo, last14, last24h, last30, last7, last90, lastFullFortnight, lastFullMonth, lastFullQuarter, lastFullWeek, query, resolve, today, update, yesterday |
40
- | `changeRequestLinks` | ChangeRequestLink | no | create, createIfNotExists, delete, get, getMany, count | createIfNotExists → `change_request_links.createIfNotExists` | count, create, createIfNotExists, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
39
+ | `billingItems` | BillingItems | no | update, get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
40
+ | `changeRequestLinks` | ChangeRequestLink | no | create, createIfNotExists, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
41
41
  | `checklistLibraries` | ChecklistLibrary | no | create, update, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
42
42
  | `checklistLibraryChecklistItems` | ChecklistLibraryChecklistItem | yes | create, update, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
43
43
  | `classificationIcons` | ClassificationIcon | no | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search |
44
- | `companies` | Company | no | create, update, get, getMany, count, searchByIdentity, searchByDomain | searchByDomain → `companies.searchByDomain`; searchByIdentity → `companies.searchByIdentity` | count, create, fullProfile, get, getContext, getEntityInfo, getFieldInfo, getUdfInfo, prepareCrmWrite, query, resolve, search, searchByDomain, searchByIdentity, unbilledWork, update, upsertByName |
44
+ | `companies` | Company | no | create, update, get, getMany, count, searchByIdentity, searchByDomain | searchByDomain → `companies.searchByDomain`; searchByIdentity → `companies.searchByIdentity` | count, create, fullProfile, get, getContext, getEntityInfo, getFieldInfo, getUdfInfo, prepareCrmWrite, query, resolve, search, searchByDomain, searchByIdentity, unbilledWork, update |
45
45
  | `companyAlerts` | CompanyAlert | yes | create, update, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
46
46
  | `companyLocations` | CompanyLocation | yes | create, get, getMany, update, delete, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
47
47
  | `companyNotes` | CompanyNote | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
@@ -56,15 +56,15 @@ Two sources in, markdown table out: the node repo (the ops column is re-derived
56
56
  | `configurationItemSslSubjectAlternativeNames` | ConfigurationItemSslSubjectAlternativeName | yes | update, get, getMany, delete, count | — | count, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
57
57
  | `configurationItemTypes` | ConfigurationItemType | no | create, update, get, getMany, delete, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
58
58
  | `configurationItemWebhooks` | ConfigurationItemWebhook | yes | get, getMany, delete | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
59
- | `configurationItems` | ConfigurationItem | no | create, update, get, getMany, count, moveConfigurationItem, createIfNotExists | createIfNotExists → `configuration_items.createIfNotExists`; moveConfigurationItem → `configuration_items.moveConfigurationItem` | count, create, createIfNotExists, findBySerial, get, getContext, getEntityInfo, getFieldInfo, getUdfInfo, moveConfigurationItem, profile, query, resolve, search, update |
59
+ | `configurationItems` | ConfigurationItem | no | create, update, get, getMany, count, moveConfigurationItem, createIfNotExists | moveConfigurationItem → `configuration_items.moveConfigurationItem` | count, create, findBySerial, get, getContext, getEntityInfo, getFieldInfo, getUdfInfo, moveConfigurationItem, profile, query, resolve, search, update |
60
60
  | `contactGroupContacts` | ContactGroupContacts | no | create, get, getMany, delete, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
61
61
  | `contactGroups` | ContactGroups | no | create, update, get, getMany, delete, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
62
62
  | `contactWebhooks` | ContactWebhook | yes | get, getMany, delete | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
63
- | `contacts` | Contact | yes | create, get, getMany, update, count, delete, moveToCompany | moveToCompany → `contacts.moveToCompany` | count, create, delete, findByEmail, get, getContext, getEntityInfo, getFieldInfo, getUdfInfo, moveToCompany, query, resolve, search, update, upsertByEmail |
63
+ | `contacts` | Contact | yes | create, get, getMany, update, count, delete, moveToCompany | moveToCompany → `contacts.moveToCompany` | count, create, delete, findByEmail, fullProfile, get, getContext, getEntityInfo, getFieldInfo, getUdfInfo, moveToCompany, query, resolve, search, update |
64
64
  | `contractBillingRules` | ContractBillingRule | yes | create, update, get, getMany, count, delete | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
65
65
  | `contractBlockHourFactors` | ContractBlockHourFactor | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
66
66
  | `contractBlocks` | ContractBlock | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
67
- | `contractCharges` | ContractCharge | yes | create, createIfNotExists, update, delete, get, getMany, count | createIfNotExists → `contract_charges.createIfNotExists` | count, create, createIfNotExists, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
67
+ | `contractCharges` | ContractCharge | yes | create, createIfNotExists, update, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
68
68
  | `contractExclusionBillingCodes` | ContractExclusionBillingCode | yes | create, get, getMany, count, delete | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
69
69
  | `contractExclusionRoles` | ContractExclusionRoles | yes | create, get, getMany, count, delete | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
70
70
  | `contractExclusionSetExcludedRoles` | ContractExclusionSetExcludedRoles | yes | create, get, getMany, count, delete | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
@@ -80,25 +80,25 @@ Two sources in, markdown table out: the node repo (the ops column is re-derived
80
80
  | `contractServiceBundleUnits` | ContractServiceBundleUnit | yes | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
81
81
  | `contractServiceBundles` | ContractServiceBundle | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
82
82
  | `contractServiceUnits` | ContractServiceUnit | yes | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
83
- | `contractServices` | ContractService | yes | create, update, get, getMany, count, createIfNotExists | createIfNotExists → `contract_services.createIfNotExists` | count, create, createIfNotExists, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
83
+ | `contractServices` | ContractService | yes | create, update, get, getMany, count, createIfNotExists | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
84
84
  | `contractTicketPurchases` | ContractTicketPurchases | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
85
- | `contracts` | Contract | no | create, update, get, getMany, count, createIfNotExists | createIfNotExists → `contracts.createIfNotExists` | count, create, createIfNotExists, get, getEntityInfo, getFieldInfo, getUdfInfo, lineOfBusiness, profitability, query, resolve, search, update |
85
+ | `contracts` | Contract | no | create, update, get, getMany, count, createIfNotExists | — | count, create, fullProfile, get, getEntityInfo, getFieldInfo, getUdfInfo, lineOfBusiness, profitability, query, resolve, search, update |
86
86
  | `countries` | Country | no | get, getMany, update, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
87
87
  | `departments` | Department | no | count, create, get, getMany, update | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
88
88
  | `domainRegistrar` | DomainRegistrar | no | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
89
89
  | `expenseItemAttachments` | ExpenseItemAttachment | yes | create, getMany, count, download, delete | download → `expense_item_attachments.download` | count, create, delete, download, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
90
- | `expenseItems` | ExpenseItem | yes | create, update, get, getMany, count, createIfNotExists | createIfNotExists → `expense_items.createIfNotExists` | count, create, createIfNotExists, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
90
+ | `expenseItems` | ExpenseItem | yes | create, update, get, getMany, count, createIfNotExists | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
91
91
  | `expenseReports` | ExpenseReport | no | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
92
- | `holidaySets` | HolidaySet | no | create, update, get, getMany, delete, count, createIfNotExists | createIfNotExists → `holiday_sets.createIfNotExists` | count, create, createIfNotExists, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
93
- | `holidays` | Holiday | yes | create, update, get, getMany, count, delete, createIfNotExists | createIfNotExists → `holidays.createIfNotExists` | count, create, createIfNotExists, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
94
- | `invoices` | Invoice | no | update, get, getMany, count, pdf, markupHtml, markupXml | markupHtml → `invoices.markupHtml`; markupXml → `invoices.markupXml`; pdf → `invoices.pdf` | count, customRange, get, getEntityInfo, getFieldInfo, getUdfInfo, last14, last24h, last30, last7, last90, lastFullFortnight, lastFullMonth, lastFullQuarter, lastFullWeek, markupHtml, markupXml, pdf, query, resolve, today, update, yesterday |
92
+ | `holidaySets` | HolidaySet | no | create, update, get, getMany, delete, count, createIfNotExists | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
93
+ | `holidays` | Holiday | yes | create, update, get, getMany, count, delete, createIfNotExists | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
94
+ | `invoices` | Invoice | no | update, get, getMany, count, pdf, markupHtml, markupXml | markupHtml → `invoices.markupHtml`; markupXml → `invoices.markupXml`; pdf → `invoices.pdf` | count, get, getEntityInfo, getFieldInfo, getUdfInfo, markupHtml, markupXml, pdf, query, resolve, update |
95
95
  | `notificationHistory` | NotificationHistory | no | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
96
- | `opportunities` | Opportunity | no | create, createIfNotExists, update, get, getMany, count | createIfNotExists → `opportunities.createIfNotExists` | count, create, createIfNotExists, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
96
+ | `opportunities` | Opportunity | no | create, createIfNotExists, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
97
97
  | `opportunityAttachments` | OpportunityAttachment | yes | create, getMany, count, download, delete | download → `opportunity_attachments.download` | count, create, delete, download, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
98
98
  | `opportunityCategories` | OpportunityCategory | no | get, getMany, count, update | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
99
99
  | `productVendors` | ProductVendors | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
100
100
  | `products` | Product | no | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
101
- | `projectCharges` | ProjectCharge | yes | create, update, delete, get, getMany, count, createIfNotExists | createIfNotExists → `project_charges.createIfNotExists` | count, create, createIfNotExists, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
101
+ | `projectCharges` | ProjectCharge | yes | create, update, delete, get, getMany, count, createIfNotExists | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
102
102
  | `projectNotes` | ProjectNote | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
103
103
  | `projectPhases` | Phase | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
104
104
  | `projectTasks` | Task | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
@@ -110,20 +110,20 @@ Two sources in, markdown table out: the node repo (the ops column is re-derived
110
110
  | `quoteItems` | QuoteItem | yes | create, update, get, getMany, count, delete | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
111
111
  | `quoteLocations` | QuoteLocation | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
112
112
  | `quoteTemplates` | QuoteTemplate | no | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search |
113
- | `quotes` | Quote | no | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
113
+ | `quotes` | Quote | no | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update, withItems |
114
114
  | `resourceRoleQueues` | ResourceRoleQueue | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
115
115
  | `resourceRoles` | ResourceRole | yes | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
116
116
  | `resourceSkills` | ResourceSkill | yes | get, getMany, count, update | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
117
117
  | `resourceTimeOffAdditional` | ResourceTimeOffAdditional | yes | get, update | getByResource → `resource_time_off_additional.getByResource`; get → `resource_time_off_additional.getByResource` | getByResource, getEntityInfo, getFieldInfo, getUdfInfo, resolve, update |
118
118
  | `resourceTimeOffApprovers` | ResourceTimeOffApprover | yes | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
119
119
  | `resourceTimeOffBalances` | ResourceTimeOffBalance | yes | get, getByYear | getByResource → `resource_time_off_balances.getByResource`; getByYear → `resource_time_off_balances.getByYear` | get, getByResource, getByYear, getEntityInfo, getFieldInfo, getUdfInfo, resolve |
120
- | `resources` | Resource | no | get, getMany, whoAmI, transferOwnership, update, count | transferOwnership → `resources.transferOwnership`; whoAmI → `resources.whoAmI` | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, transferOwnership, update, whoAmI |
120
+ | `resources` | Resource | no | get, getMany, whoAmI, transferOwnership, update, count | whoAmI → `resources.whoAmI` | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update, whoAmI, workload |
121
121
  | `roles` | Role | no | create, get, getMany, update | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
122
122
  | `serviceCallTaskResources` | ServiceCallTaskResource | yes | create, get, getMany, delete, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
123
123
  | `serviceCallTasks` | ServiceCallTask | yes | create, get, getMany, delete, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
124
124
  | `serviceCallTicketResources` | ServiceCallTicketResource | yes | create, get, getMany, delete, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
125
125
  | `serviceCallTickets` | ServiceCallTicket | yes | create, get, getMany, delete, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
126
- | `serviceCalls` | ServiceCall | no | create, update, get, getMany, delete, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
126
+ | `serviceCalls` | ServiceCall | no | create, update, get, getMany, delete, count | — | count, create, delete, fullProfile, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
127
127
  | `serviceLevelAgreementResults` | ServiceLevelAgreementResults | no | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
128
128
  | `services` | Service | no | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
129
129
  | `skills` | Skill | no | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search |
@@ -135,13 +135,13 @@ Two sources in, markdown table out: the node repo (the ops column is re-derived
135
135
  | `tagGroups` | TagGroup | no | create, update, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
136
136
  | `tags` | Tag | no | create, update, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
137
137
  | `taskSecondaryResources` | TaskSecondaryResource | yes | create, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
138
- | `ticketAdditionalConfigurationItems` | TicketAdditionalConfigurationItem | yes | create, createIfNotExists, delete, get, getMany, count | createIfNotExists → `ticket_additional_configuration_items.createIfNotExists` | count, create, createIfNotExists, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
139
- | `ticketAdditionalContacts` | TicketAdditionalContact | yes | create, createIfNotExists, delete, get, getMany, count | createIfNotExists → `ticket_additional_contacts.createIfNotExists` | count, create, createIfNotExists, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
138
+ | `ticketAdditionalConfigurationItems` | TicketAdditionalConfigurationItem | yes | create, createIfNotExists, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
139
+ | `ticketAdditionalContacts` | TicketAdditionalContact | yes | create, createIfNotExists, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
140
140
  | `ticketAttachments` | TicketAttachment | yes | create, getMany, count, download, delete | download → `ticket_attachments.download` | count, create, delete, download, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
141
141
  | `ticketCategories` | TicketCategory | no | get, getMany, update, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
142
142
  | `ticketCategoryFieldDefaults` | TicketCategoryFieldDefault | yes | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
143
143
  | `ticketChangeRequestApprovals` | TicketChangeRequestApproval | yes | create, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
144
- | `ticketCharges` | TicketCharge | yes | create, createIfNotExists, update, delete, get, getMany, count | createIfNotExists → `ticket_charges.createIfNotExists` | count, create, createIfNotExists, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, moveToTicket, query, resolve, search, update |
144
+ | `ticketCharges` | TicketCharge | yes | create, createIfNotExists, update, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, moveToTicket, query, resolve, search, update |
145
145
  | `ticketChecklistItems` | TicketChecklistItem | yes | create, update, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
146
146
  | `ticketChecklistLibraries` | TicketChecklistLibrary | yes | create | — | attachToDocument, create, getEntityInfo, getFieldInfo, getUdfInfo, resolve |
147
147
  | `ticketHistories` | TicketHistory | no | get, getMany, count | — | count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
@@ -150,8 +150,8 @@ Two sources in, markdown table out: the node repo (the ops column is re-derived
150
150
  | `ticketNotes` | TicketNote | yes | create, update, get, getMany, count | — | count, create, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, update |
151
151
  | `ticketSecondaryResources` | TicketSecondaryResource | yes | create, delete, get, getMany, count | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
152
152
  | `ticketWebhooks` | TicketWebhook | yes | get, getMany, delete | — | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, search, update |
153
- | `tickets` | Ticket | no | create, get, getMany, slaHealthCheck, summary, timeline, update, count | slaHealthCheck → `tickets.slaHealthCheck`; summary → `tickets.summary`; timeline → `tickets.timeline` | changeStatus, count, create, findByTicketNumber, forResource, fullContext, get, getContext, getEntityInfo, getFieldInfo, getUdfInfo, lineOfBusiness, openWithNoteAndAssign, query, resolve, search, slaHealthCheck, statusSemantics, summary, timeline, update |
154
- | `timeEntries` | TimeEntry | no | create, update, get, getMany, getPosted, getUnposted, delete, count, createIfNotExists | createIfNotExists → `time_entries.createIfNotExists`; customRange → `time_entries.customRange`; getPosted → `time_entries.getPosted`; getUnposted → `time_entries.getUnposted`; last14 → `time_entries.last14`; last24h → `time_entries.last24h`; last30 → `time_entries.last30`; last7 → `time_entries.last7`; last90 → `time_entries.last90`; lastFullFortnight → `time_entries.lastFullFortnight`; lastFullMonth → `time_entries.lastFullMonth`; lastFullQuarter → `time_entries.lastFullQuarter`; lastFullWeek → `time_entries.lastFullWeek`; today → `time_entries.today`; yesterday → `time_entries.yesterday` | approve, count, create, createForResource, createIfNotExists, customRange, dateWorkedWindow, delete, get, getEntityInfo, getFieldInfo, getPosted, getUdfInfo, getUnposted, last14, last24h, last30, last7, last90, lastFullFortnight, lastFullMonth, lastFullQuarter, lastFullWeek, moveToTicket, postedWithin, query, resolve, today, update, yesterday |
153
+ | `tickets` | Ticket | no | create, get, getMany, slaHealthCheck, summary, timeline, update, count | slaHealthCheck → `tickets.slaHealthCheck`; summary → `tickets.summary`; timeline → `tickets.timeline` | changeStatus, count, create, findByTicketNumber, forResource, fullContext, get, getContext, getEntityInfo, getFieldInfo, getUdfInfo, lineOfBusiness, query, resolve, search, slaHealthCheck, statusSemantics, summary, timeline, update |
154
+ | `timeEntries` | TimeEntry | no | create, update, get, getMany, getPosted, getUnposted, delete, count, createIfNotExists | dateWorkedWindow → `time_entries.dateWorkedWindow`; moveToTicket → `time_entries.moveToTicket` | count, create, dateWorkedWindow, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, moveToTicket, query, resolve, update |
155
155
  | `timeEntryAttachments` | TimeEntryAttachment | yes | create, getMany, count, download, delete | download → `time_entry_attachments.download` | count, create, delete, download, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve |
156
156
  | `timeOffRequests` | TimeOffRequest | no | get, getMany, count, approve, reject | approve → `time_off_requests.approve`; reject → `time_off_requests.reject` | approve, count, get, getEntityInfo, getFieldInfo, getUdfInfo, query, reject, resolve |
157
157
  | `(none — NOT IMPLEMENTED in node)` | InventoryProduct (StockedItemsAdd/Remove/Transfer pseudo-entities) | yes | | stockedItemsAdd → `inventory_products.stockedItemsAdd`; stockedItemsRemove → `inventory_products.stockedItemsRemove`; stockedItemsTransfer → `inventory_products.stockedItemsTransfer` | count, create, delete, get, getEntityInfo, getFieldInfo, getUdfInfo, query, resolve, stockedItemsAdd, stockedItemsRemove, stockedItemsTransfer, update |
@@ -352,10 +352,10 @@ taste**: extend or shrink it only via a recorded change to
352
352
  `code`, `category`, `retryable`, `operation`, `httpStatus`, `suggestedAction`
353
353
  (the nextAction directive — follow it), `correlationId`, the deep-redacted
354
354
  `vendorError` body (the vendor's own field-level failure text — absent when
355
- the error carries no body), and — when the SDK attached extras (issue #9/#14:
356
- the typed `emptyReason` / `pointerNote` on a plan-pinned op's failure, the
357
- recovery refusal `candidateIds`) — `details` (passed through verbatim;
358
- absent on unpinned surfaces). A string `vendorError` / `details.bodySnippet`
355
+ the error carries no body), and — when the SDK attached extras (issue
356
+ #13/#14: the typed `emptyReason` / `pointerNote` on a plan-pinned op's
357
+ failure, the #13 shape-drift `candidateIds` refusal) — `details` (passed
358
+ through verbatim; absent on unpinned surfaces). A string `vendorError` / `details.bodySnippet`
359
359
  body is host-sourced free text: when the untrusted-content projection is on
360
360
  it is served wrapped in `<untrusted_content>` (the wrapper marks DATA, never
361
361
  instructions); a parsed (non-string) `vendorError` body is the redacted copy
@@ -45,15 +45,15 @@
45
45
  "entity": "resource",
46
46
  "apiEntity": "resources",
47
47
  "included": true,
48
- "reason": "The staff side: the resource the credentials act as (whoAmI) and staff lookup (get/query/count/resolve/search), plus resource update and the approval-gated ownership transfer.",
48
+ "reason": "The staff side: the resource the credentials act as (whoAmI) and staff lookup (get/query/count/resolve/search), plus resource update.",
49
49
  "excludeDestructive": true,
50
- "notes": "resources.transferOwnership is approval-gated (requiresApproval) \u2014 it stays in the write tool with its confirm rule; no destructive operations for resources."
50
+ "notes": "No approval-gated operations for resources remain (the transferOwnership ownership transfer was cut in #292); no destructive operations for resources."
51
51
  },
52
52
  {
53
53
  "entity": "timeEntry",
54
54
  "apiEntity": "time_entries",
55
55
  "included": true,
56
- "reason": "The effort side: time entries logged against tickets \u2014 create/update (incl. createIfNotExists) and the bounded window reads (today/last7/last30/last90/last24h/customRange, posted/unposted).",
56
+ "reason": "The effort side: time entries logged against tickets \u2014 create/update and the posted-state window read (dateWorkedWindow: the inclusive dateWorked window with the posted/unposted split from the billing-item join).",
57
57
  "excludeDestructive": true,
58
58
  "notes": "time_entries.delete (destructive, confirm-gated) is excluded from the consumer surface by default; listed available-via-SDK-server."
59
59
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-autotask",
3
- "version": "0.44.0",
3
+ "version": "0.45.0",
4
4
  "description": "Fully-typed TypeScript SDK for the Autotask (Datto) PSA REST API. Zero runtime dependencies. Built for building MCP servers and integrations.",
5
5
  "type": "module",
6
6
  "sideEffects": false,