node-autotask 0.43.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.
- package/CHANGELOG.md +49 -0
- package/MCP_TOOL_CATALOG.json +156 -1253
- package/MCP_TOOL_MANIFEST.md +154 -220
- package/MCP_TOOL_OVERRIDES.json +8 -62
- package/N8N_MCP_MANIFEST.json +128 -705
- package/N8N_MCP_MANIFEST.md +43 -63
- package/README.md +10 -28
- package/capabilities.json +15315 -22219
- package/dist/{base-CVx2VMSj.d.cts → base-BVoYDlVA.d.cts} +2 -1
- package/dist/{base-CVx2VMSj.d.ts → base-BVoYDlVA.d.ts} +2 -1
- package/dist/capabilities.cjs +2 -2
- package/dist/capabilities.d.cts +2 -1
- package/dist/capabilities.d.ts +2 -1
- package/dist/capabilities.js +1 -1
- package/dist/{chunk-5VHSLJMR.js → chunk-A6LHCJQP.js} +30 -9
- package/dist/{chunk-JY2BWYXY.js → chunk-ASMCTZO2.js} +15314 -22218
- package/dist/{chunk-TH7B5H4P.cjs → chunk-DC3PY4EF.cjs} +1839 -1407
- package/dist/{chunk-4EFXIE53.js → chunk-DXKXQHCX.js} +5 -5
- package/dist/{chunk-SK3GYRNA.cjs → chunk-JO6WI763.cjs} +143 -143
- package/dist/{chunk-Q23JULNN.js → chunk-NSW7JPVS.js} +11529 -13319
- package/dist/{chunk-KTEDPS4X.js → chunk-O4PIPUS4.js} +1583 -1151
- package/dist/{chunk-MJTKK3QG.cjs → chunk-SN4BMQ2N.cjs} +31 -10
- package/dist/{chunk-5BDUMDAQ.cjs → chunk-VXVYFJH3.cjs} +15314 -22218
- package/dist/{chunk-VFLAMMIJ.cjs → chunk-YMBVKVK4.cjs} +10604 -12394
- package/dist/{index-C7rMJ4IV.d.ts → index-C5g1H_hF.d.ts} +1080 -1288
- package/dist/{index-Cm_Xpt7X.d.cts → index-Db0SNnQn.d.cts} +1080 -1288
- package/dist/{index-C3KFMnRT.d.cts → index-c549LvOb.d.cts} +332 -331
- package/dist/{index-C3KFMnRT.d.ts → index-c549LvOb.d.ts} +332 -331
- package/dist/index.cjs +23 -23
- package/dist/index.d.cts +15 -41
- package/dist/index.d.ts +15 -41
- package/dist/index.js +8 -8
- package/dist/operations/index.cjs +5 -2234
- package/dist/operations/index.d.cts +51 -323
- package/dist/operations/index.d.ts +51 -323
- package/dist/operations/index.js +30 -2259
- package/dist/pool.cjs +9 -9
- package/dist/pool.d.cts +4 -3
- package/dist/pool.d.ts +4 -3
- package/dist/pool.js +5 -5
- package/dist/resources/index.cjs +5 -5
- package/dist/resources/index.d.cts +2 -2
- package/dist/resources/index.d.ts +2 -2
- package/dist/resources/index.js +8 -8
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/untrusted.cjs +2 -2
- package/dist/untrusted.d.cts +14 -5
- package/dist/untrusted.d.ts +14 -5
- package/dist/untrusted.js +1 -1
- package/docs/API.md +321 -334
- package/docs/LIVE-TESTING.md +4 -6
- package/docs/N8N-ADAPTER.md +26 -26
- package/examples/mcp/schemas.ts +2 -0
- package/examples/mcp/tools-read.ts +3 -2
- package/n8n-mcp.curation.json +3 -3
- package/package.json +10 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { q as AuditEvent, e$ as ResolutionCaps, Q as QueryParams, cX as EmptyReasonInfo, e_ as Resolution, I as Identifier, e4 as Page, cZ as EntityInformationModel, dc as FieldInformationModel, da as Field, a as FilterCondition, O as OperationResult, cW as DryRunResult, m as Appointment, n as AppointmentCreate, p as AppointmentUpdate, o as AppointmentSummary, r as AuthTokenResultModel, B as BillingCode, t as BillingCodeCreate, v as BillingCodeUpdate, u as BillingCodeSummary, w as BillingItemApprovalLevel, x as BillingItemApprovalLevelCreate, z as BillingItemApprovalLevelUpdate, D as BillingItems, G as BillingItemsCreate, K as BillingItemsUpdate, J as BillingItemsSummary, C as ChangeRequestLink, L as ChangeRequestLinkCreate, N as ChangeRequestLinkUpdate, M as ChangeRequestLinkSummary, R as ChecklistLibrary, X as ChecklistLibraryCreate, Z as ChecklistLibraryUpdate, Y as ChecklistLibrarySummary, S as ChecklistLibraryChecklistItem, U as ChecklistLibraryChecklistItemCreate, W as ChecklistLibraryChecklistItemUpdate, V as ChecklistLibraryChecklistItemSummary, _ as ClassificationIcon, $ as ClassificationIconCreate, a1 as ClassificationIconUpdate, a0 as ClassificationIconSummary, a2 as Company, e0 as OrganizationalLevelAssociation, dY as OrganizationalLevel2, dU as OrganizationalLevel1, a9 as CompanyLocation, b3 as Contact, ad as CompanyNote, gJ as Ticket, ei as Project, hW as CompositeNamesSection, l as TimeEntry, a8 as CompanyCreate, am as CompanyUpdate, al as CompanySummary, a7 as CompanyContext, a3 as CompanyAlert, a4 as CompanyAlertCreate, a6 as CompanyAlertUpdate, a5 as CompanyAlertSummary, aa as CompanyLocationCreate, ac as CompanyLocationUpdate, ab as CompanyLocationSummary, ae as CompanyNoteCreate, ag as CompanyNoteUpdate, af as CompanyNoteSummary, ah as CompanySiteConfigurations, ai as CompanySiteConfigurationsCreate, ak as CompanySiteConfigurationsUpdate, aj as CompanySiteConfigurationsSummary, an as CompanyWebhook, ao as CompanyWebhookCreate, aq as CompanyWebhookUpdate, ap as CompanyWebhookSummary, ar as ConfigurationItemBillingProductAssociations, as as ConfigurationItemBillingProductAssociationsCreate, au as ConfigurationItemBillingProductAssociationsUpdate, at as ConfigurationItemBillingProductAssociationsSummary, av as ConfigurationItemCategory, aw as ConfigurationItemCategoryCreate, aC as ConfigurationItemCategoryUpdate, ax as ConfigurationItemCategorySummary, ay as ConfigurationItemCategoryUdfAssociation, az as ConfigurationItemCategoryUdfAssociationCreate, aB as ConfigurationItemCategoryUdfAssociationUpdate, aA as ConfigurationItemCategoryUdfAssociationSummary, aF as ConfigurationItemDnsRecord, aG as ConfigurationItemDnsRecordCreate, aI as ConfigurationItemDnsRecordUpdate, aH as ConfigurationItemDnsRecordSummary, aJ as ConfigurationItemNote, aK as ConfigurationItemNoteCreate, aM as ConfigurationItemNoteUpdate, aL as ConfigurationItemNoteSummary, aN as ConfigurationItemRelatedItem, aO as ConfigurationItemRelatedItemCreate, aQ as ConfigurationItemRelatedItemUpdate, aP as ConfigurationItemRelatedItemSummary, c as ConfigurationItem, aW as ConfigurationItemType, aE as ConfigurationItemCreate, a_ as ConfigurationItemUpdate, aV as ConfigurationItemSummary, aD as ConfigurationItemContext, aR as ConfigurationItemSslSubjectAlternativeName, aS as ConfigurationItemSslSubjectAlternativeNameCreate, aU as ConfigurationItemSslSubjectAlternativeNameUpdate, aT as ConfigurationItemSslSubjectAlternativeNameSummary, aX as ConfigurationItemTypeCreate, aZ as ConfigurationItemTypeUpdate, aY as ConfigurationItemTypeSummary, a$ as ConfigurationItemWebhook, b0 as ConfigurationItemWebhookCreate, b2 as ConfigurationItemWebhookUpdate, b1 as ConfigurationItemWebhookSummary, b6 as ContactGroupContacts, b7 as ContactGroupContactsCreate, b9 as ContactGroupContactsUpdate, b8 as ContactGroupContactsSummary, ba as ContactGroups, bb as ContactGroupsCreate, bd as ContactGroupsUpdate, bc as ContactGroupsSummary, be as ContactSummary, b5 as ContactCreate, bf as ContactUpdate, b4 as ContactContext, bg as ContactWebhook, bh as ContactWebhookCreate, bj as ContactWebhookUpdate, bi as ContactWebhookSummary, bk as ContractBillingRule, bl as ContractBillingRuleCreate, bn as ContractBillingRuleUpdate, bm as ContractBillingRuleSummary, bq as ContractBlockHourFactor, br as ContractBlockHourFactorCreate, bt as ContractBlockHourFactorUpdate, bs as ContractBlockHourFactorSummary, bo as ContractBlock, bp as ContractBlockCreate, bv as ContractBlockUpdate, bu as ContractBlockSummary, d as ContractCharge, bw as ContractChargeCreate, by as ContractChargeUpdate, bx as ContractChargeSummary, bA as ContractExclusionBillingCode, bB as ContractExclusionBillingCodeCreate, bD as ContractExclusionBillingCodeUpdate, bC as ContractExclusionBillingCodeSummary, bE as ContractExclusionRoles, bF as ContractExclusionRolesCreate, bH as ContractExclusionRolesUpdate, bG as ContractExclusionRolesSummary, bI as ContractExclusionSetExcludedRoles, bJ as ContractExclusionSetExcludedRolesCreate, bL as ContractExclusionSetExcludedRolesUpdate, bK as ContractExclusionSetExcludedRolesSummary, bM as ContractExclusionSetExcludedWorkTypes, bN as ContractExclusionSetExcludedWorkTypesCreate, bP as ContractExclusionSetExcludedWorkTypesUpdate, bO as ContractExclusionSetExcludedWorkTypesSummary, bQ as ContractExclusionSets, bR as ContractExclusionSetsCreate, bT as ContractExclusionSetsUpdate, bS as ContractExclusionSetsSummary, bU as ContractMilestone, bV as ContractMilestoneCreate, bX as ContractMilestoneUpdate, bW as ContractMilestoneSummary, bY as ContractNote, bZ as ContractNoteCreate, b$ as ContractNoteUpdate, b_ as ContractNoteSummary, c0 as ContractRate, c1 as ContractRateCreate, c3 as ContractRateUpdate, c2 as ContractRateSummary, c4 as ContractRetainers, c5 as ContractRetainersCreate, c7 as ContractRetainersUpdate, c6 as ContractRetainersSummary, c8 as ContractRoleCosts, c9 as ContractRoleCostsCreate, cb as ContractRoleCostsUpdate, ca as ContractRoleCostsSummary, cc as ContractServiceAdjustment, cd as ContractServiceAdjustmentCreate, cf as ContractServiceAdjustmentUpdate, ce as ContractServiceAdjustmentSummary, ch as ContractServiceBundleAdjustment, ci as ContractServiceBundleAdjustmentCreate, ck as ContractServiceBundleAdjustmentUpdate, cj as ContractServiceBundleAdjustmentSummary, cg as ContractServiceBundle, cl as ContractServiceBundleCreate, cr as ContractServiceBundleUpdate, cm as ContractServiceBundleSummary, cn as ContractServiceBundleUnit, co as ContractServiceBundleUnitCreate, cq as ContractServiceBundleUnitUpdate, cp as ContractServiceBundleUnitSummary, f as ContractService, cs as ContractServiceCreate, cy as ContractServiceUpdate, ct as ContractServiceSummary, cu as ContractServiceUnit, cv as ContractServiceUnitCreate, cx as ContractServiceUnitUpdate, cw as ContractServiceUnitSummary, e as Contract, dt as Invoice, f0 as Resource, E as ExpenseItem, g4 as Subscription, bz as ContractCreate, cE as ContractUpdate, cz as ContractSummary, cA as ContractTicketPurchases, cB as ContractTicketPurchasesCreate, cD as ContractTicketPurchasesUpdate, cC as ContractTicketPurchasesSummary, cF as Country, cG as CountryCreate, cI as CountryUpdate, cH as CountrySummary, cJ as Currency, cK as CurrencyCreate, cM as CurrencyUpdate, cL as CurrencySummary, cN as Department, cO as DepartmentCreate, cQ as DepartmentUpdate, cP as DepartmentSummary, cS as DomainRegistrar, cT as DomainRegistrarCreate, cV as DomainRegistrarUpdate, cU as DomainRegistrarSummary, de as GlobalEntityInformationResultModel, c$ as ExpenseItemAttachment, d0 as ExpenseItemAttachmentCreate, d2 as ExpenseItemAttachmentUpdate, d1 as ExpenseItemAttachmentSummary, d3 as ExpenseItemCreate, d5 as ExpenseItemUpdate, d4 as ExpenseItemSummary, d6 as ExpenseReport, d7 as ExpenseReportCreate, d9 as ExpenseReportUpdate, d8 as ExpenseReportSummary, g as HolidaySet, dg as HolidaySetCreate, di as HolidaySetUpdate, dh as HolidaySetSummary, H as Holiday, df as HolidayCreate, dk as HolidayUpdate, dj as HolidaySummary, dl as InventoryProduct, dm as InventoryProductCreate, dp as InventoryProductUpdate, dn as InventoryProductSummary, dq as InventoryStockedItemAdd, dr as InventoryStockedItemRemove, ds as InventoryStockedItemTransfer, du as InvoiceCreate, dA as InvoiceUpdate, dv as InvoiceSummary, dw as InvoiceTemplate, dx as InvoiceTemplateCreate, dz as InvoiceTemplateUpdate, dC as ModuleAccessResultModel, dD as NotificationHistory, dE as NotificationHistoryCreate, dG as NotificationHistoryUpdate, dF as NotificationHistorySummary, h as Opportunity, dR as OpportunityCreate, dT as OpportunityUpdate, dS as OpportunitySummary, dJ as OpportunityAttachment, dK as OpportunityAttachmentCreate, dM as OpportunityAttachmentUpdate, dL as OpportunityAttachmentSummary, dN as OpportunityCategory, dO as OpportunityCategoryCreate, dQ as OpportunityCategoryUpdate, dP as OpportunityCategorySummary, dV as OrganizationalLevel1Create, dX as OrganizationalLevel1Update, dZ as OrganizationalLevel2Create, d$ as OrganizationalLevel2Update, e1 as OrganizationalLevelAssociationCreate, e3 as OrganizationalLevelAssociationUpdate, e5 as Phase, e6 as PhaseCreate, e8 as PhaseUpdate, e7 as PhaseSummary, ea as Product, eb as ProductCreate, ed as ProductUpdate, ec as ProductSummary, ee as ProductVendors, ef as ProductVendorsCreate, eh as ProductVendorsUpdate, eg as ProductVendorsSummary, i as ProjectCharge, ej as ProjectChargeCreate, el as ProjectChargeUpdate, ek as ProjectChargeSummary, eo as ProjectNote, ep as ProjectNoteCreate, er as ProjectNoteUpdate, eq as ProjectNoteSummary, en as ProjectCreate, et as ProjectUpdate, es as ProjectSummary, hX as CompositeContextOptions, em as ProjectContext, eu as PurchaseApprovals, ev as PurchaseApprovalsCreate, ex as PurchaseApprovalsUpdate, ew as PurchaseApprovalsSummary, ey as PurchaseOrderItemReceiving, ez as PurchaseOrderItemReceivingCreate, eB as PurchaseOrderItemReceivingUpdate, eA as PurchaseOrderItemReceivingSummary, eC as PurchaseOrderItems, eD as PurchaseOrderItemsCreate, eF as PurchaseOrderItemsUpdate, eE as PurchaseOrderItemsSummary, eG as PurchaseOrders, eH as PurchaseOrdersCreate, eJ as PurchaseOrdersUpdate, eI as PurchaseOrdersSummary, eM as QuoteItem, eN as QuoteItemCreate, eP as QuoteItemUpdate, eO as QuoteItemSummary, eQ as QuoteLocation, eR as QuoteLocationCreate, eT as QuoteLocationUpdate, eS as QuoteLocationSummary, eK as Quote, eL as QuoteCreate, eZ as QuoteUpdate, eU as QuoteSummary, eV as QuoteTemplate, eW as QuoteTemplateCreate, eY as QuoteTemplateUpdate, eX as QuoteTemplateSummary, f4 as ResourceRoleQueue, f5 as ResourceRoleQueueCreate, f7 as ResourceRoleQueueUpdate, f6 as ResourceRoleQueueSummary, f2 as ResourceRole, f3 as ResourceRoleCreate, f9 as ResourceRoleUpdate, f8 as ResourceRoleSummary, fa as ResourceSkill, fb as ResourceSkillCreate, fd as ResourceSkillUpdate, fc as ResourceSkillSummary, f1 as ResourceCreate, fr as ResourceUpdate, fe as ResourceSummary, ff as ResourceTimeOffAdditional, fg as ResourceTimeOffAdditionalCreate, fi as ResourceTimeOffAdditionalUpdate, fh as ResourceTimeOffAdditionalSummary, fj as ResourceTimeOffApprover, fk as ResourceTimeOffApproverCreate, fm as ResourceTimeOffApproverUpdate, fl as ResourceTimeOffApproverSummary, fn as ResourceTimeOffBalance, fo as ResourceTimeOffBalanceCreate, fq as ResourceTimeOffBalanceUpdate, fp as ResourceTimeOffBalanceSummary, fs as Role, ft as RoleCreate, fv as RoleUpdate, fu as RoleSummary, fw as SalesOrder, fx as SalesOrderCreate, fz as SalesOrderUpdate, fB as ServiceCall, fC as ServiceCallCreate, fU as ServiceCallUpdate, fD as ServiceCallSummary, fG as ServiceCallTaskResource, fH as ServiceCallTaskResourceCreate, fJ as ServiceCallTaskResourceUpdate, fI as ServiceCallTaskResourceSummary, fE as ServiceCallTask, fF as ServiceCallTaskCreate, fL as ServiceCallTaskUpdate, fK as ServiceCallTaskSummary, fO as ServiceCallTicketResource, fP as ServiceCallTicketResourceCreate, fR as ServiceCallTicketResourceUpdate, fQ as ServiceCallTicketResourceSummary, fM as ServiceCallTicket, fN as ServiceCallTicketCreate, fT as ServiceCallTicketUpdate, fS as ServiceCallTicketSummary, fW as ServiceLevelAgreementResults, fX as ServiceLevelAgreementResultsCreate, fZ as ServiceLevelAgreementResultsUpdate, fY as ServiceLevelAgreementResultsSummary, fA as Service, fV as ServiceCreate, f$ as ServiceUpdate, f_ as ServiceSummary, g0 as Skill, g1 as SkillCreate, g3 as SkillUpdate, g2 as SkillSummary, g6 as SubscriptionPeriod, g7 as SubscriptionPeriodCreate, g9 as SubscriptionPeriodUpdate, g8 as SubscriptionPeriodSummary, g5 as SubscriptionCreate, gb as SubscriptionUpdate, ga as SubscriptionSummary, ge as SurveyResults, gf as SurveyResultsCreate, gh as SurveyResultsUpdate, gg as SurveyResultsSummary, gc as Survey, gd as SurveyCreate, gj as SurveyUpdate, gi as SurveySummary, gl as TagAlias, gm as TagAliasCreate, go as TagAliasUpdate, gn as TagAliasSummary, gq as TagGroup, gr as TagGroupCreate, gt as TagGroupUpdate, gs as TagGroupSummary, gk as Tag, gp as TagCreate, gv as TagUpdate, gu as TagSummary, gy as TaskSecondaryResource, gz as TaskSecondaryResourceCreate, gB as TaskSecondaryResourceUpdate, gA as TaskSecondaryResourceSummary, gw as Task, gx as TaskCreate, gD as TaskUpdate, gC as TaskSummary, gE as TaxRegion, gF as TaxRegionCreate, gH as TaxRegionUpdate, gI as ThresholdStatusResultModel, T as TicketAdditionalConfigurationItem, gK as TicketAdditionalConfigurationItemCreate, gM as TicketAdditionalConfigurationItemUpdate, gL as TicketAdditionalConfigurationItemSummary, j as TicketAdditionalContact, gN as TicketAdditionalContactCreate, gP as TicketAdditionalContactUpdate, gO as TicketAdditionalContactSummary, gQ as TicketAttachment, gR as TicketAttachmentCreate, gT as TicketAttachmentUpdate, gS as TicketAttachmentSummary, gU as TicketCategory, gV as TicketCategoryCreate, g$ as TicketCategoryUpdate, g_ as TicketCategorySummary, gW as TicketCategoryFieldDefault, gX as TicketCategoryFieldDefaultCreate, gZ as TicketCategoryFieldDefaultUpdate, gY as TicketCategoryFieldDefaultSummary, h0 as TicketChangeRequestApproval, h1 as TicketChangeRequestApprovalCreate, h3 as TicketChangeRequestApprovalUpdate, h2 as TicketChangeRequestApprovalSummary, k as TicketCharge, h4 as TicketChargeCreate, h6 as TicketChargeUpdate, h5 as TicketChargeSummary, h7 as TicketChecklistItem, h8 as TicketChecklistItemCreate, ha as TicketChecklistItemUpdate, h9 as TicketChecklistItemSummary, hb as TicketChecklistLibrary, hc as TicketChecklistLibraryCreate, he as TicketChecklistLibraryUpdate, hd as TicketChecklistLibrarySummary, hh as TicketHistory, hi as TicketHistoryCreate, hk as TicketHistoryUpdate, hj as TicketHistorySummary, hm as TicketNoteAttachment, hn as TicketNoteAttachmentCreate, hp as TicketNoteAttachmentUpdate, ho as TicketNoteAttachmentSummary, hl as TicketNote, hq as TicketNoteCreate, hs as TicketNoteUpdate, hr as TicketNoteSummary, ht as TicketNoteWebhook, hu as TicketNoteWebhookCreate, hw as TicketNoteWebhookUpdate, hv as TicketNoteWebhookSummary, hx as TicketSecondaryResource, hy as TicketSecondaryResourceCreate, hA as TicketSecondaryResourceUpdate, hz as TicketSecondaryResourceSummary, hg as TicketCreate, hC as TicketUpdate, hB as TicketSummary, hf as TicketContext, hD as TicketWebhook, hE as TicketWebhookCreate, hG as TicketWebhookUpdate, hF as TicketWebhookSummary, hL as TimeEntryCreate, hN as TimeEntryUpdate, hM as TimeEntrySummary, hH as TimeEntryAttachment, hI as TimeEntryAttachmentCreate, hK as TimeEntryAttachmentUpdate, hJ as TimeEntryAttachmentSummary, hO as TimeOffRequest, hP as TimeOffRequestCreate, hS as TimeOffRequestUpdate, hR as TimeOffRequestSummary, A as ApiVersionResultModel, s as AutotaskVersionResultModel, hU as ZoneInformationResultModel } from './index-C3KFMnRT.cjs';
|
|
1
|
+
import { i as AuditEvent, eY as ResolutionCaps, I as Identifier, dZ as OrganizationalLevelAssociation, dV as OrganizationalLevel2, dR as OrganizationalLevel1, E as EmptyReasonInfo, Q as QueryParams, eX as Resolution, e1 as Page, cS as EntityInformationModel, d6 as FieldInformationModel, d4 as Field, c as FilterCondition, O as OperationResult, cQ as DryRunResult, e as Appointment, f as AppointmentCreate, h as AppointmentUpdate, g as AppointmentSummary, j as AuthTokenResultModel, B as BillingCode, l as BillingCodeCreate, n as BillingCodeUpdate, m as BillingCodeSummary, o as BillingItemApprovalLevel, p as BillingItemApprovalLevelCreate, r as BillingItemApprovalLevelUpdate, s as BillingItems, t as BillingItemsCreate, v as BillingItemsUpdate, u as BillingItemsSummary, C as ChangeRequestLink, w as ChangeRequestLinkCreate, y as ChangeRequestLinkUpdate, x as ChangeRequestLinkSummary, z as ChecklistLibrary, K as ChecklistLibraryCreate, M as ChecklistLibraryUpdate, L as ChecklistLibrarySummary, D as ChecklistLibraryChecklistItem, G as ChecklistLibraryChecklistItemCreate, J as ChecklistLibraryChecklistItemUpdate, H as ChecklistLibraryChecklistItemSummary, N as ClassificationIcon, R as ClassificationIconCreate, T as ClassificationIconUpdate, S as ClassificationIconSummary, U as Company, $ as CompanyLocation, aW as Contact, a3 as CompanyNote, gG as Ticket, ee as Project, hW as CompositeNamesSection, hH as TimeEntry, _ as CompanyCreate, ac as CompanyUpdate, ab as CompanySummary, Z as CompanyContext, V as CompanyAlert, W as CompanyAlertCreate, Y as CompanyAlertUpdate, X as CompanyAlertSummary, a0 as CompanyLocationCreate, a2 as CompanyLocationUpdate, a1 as CompanyLocationSummary, a4 as CompanyNoteCreate, a6 as CompanyNoteUpdate, a5 as CompanyNoteSummary, a7 as CompanySiteConfigurations, a8 as CompanySiteConfigurationsCreate, aa as CompanySiteConfigurationsUpdate, a9 as CompanySiteConfigurationsSummary, ad as CompanyWebhook, ae as CompanyWebhookCreate, ag as CompanyWebhookUpdate, af as CompanyWebhookSummary, ai as ConfigurationItemBillingProductAssociations, aj as ConfigurationItemBillingProductAssociationsCreate, al as ConfigurationItemBillingProductAssociationsUpdate, ak as ConfigurationItemBillingProductAssociationsSummary, am as ConfigurationItemCategory, an as ConfigurationItemCategoryCreate, at as ConfigurationItemCategoryUpdate, ao as ConfigurationItemCategorySummary, ap as ConfigurationItemCategoryUdfAssociation, aq as ConfigurationItemCategoryUdfAssociationCreate, as as ConfigurationItemCategoryUdfAssociationUpdate, ar as ConfigurationItemCategoryUdfAssociationSummary, aw as ConfigurationItemDnsRecord, ax as ConfigurationItemDnsRecordCreate, az as ConfigurationItemDnsRecordUpdate, ay as ConfigurationItemDnsRecordSummary, aA as ConfigurationItemNote, aB as ConfigurationItemNoteCreate, aD as ConfigurationItemNoteUpdate, aC as ConfigurationItemNoteSummary, aE as ConfigurationItemRelatedItem, aF as ConfigurationItemRelatedItemCreate, aH as ConfigurationItemRelatedItemUpdate, aG as ConfigurationItemRelatedItemSummary, ah as ConfigurationItem, aN as ConfigurationItemType, av as ConfigurationItemCreate, aR as ConfigurationItemUpdate, aM as ConfigurationItemSummary, au as ConfigurationItemContext, aI as ConfigurationItemSslSubjectAlternativeName, aJ as ConfigurationItemSslSubjectAlternativeNameCreate, aL as ConfigurationItemSslSubjectAlternativeNameUpdate, aK as ConfigurationItemSslSubjectAlternativeNameSummary, aO as ConfigurationItemTypeCreate, aQ as ConfigurationItemTypeUpdate, aP as ConfigurationItemTypeSummary, aS as ConfigurationItemWebhook, aT as ConfigurationItemWebhookCreate, aV as ConfigurationItemWebhookUpdate, aU as ConfigurationItemWebhookSummary, aZ as ContactGroupContacts, a_ as ContactGroupContactsCreate, b0 as ContactGroupContactsUpdate, a$ as ContactGroupContactsSummary, b1 as ContactGroups, b2 as ContactGroupsCreate, b4 as ContactGroupsUpdate, b3 as ContactGroupsSummary, aY as ContactCreate, b6 as ContactUpdate, b5 as ContactSummary, aX as ContactContext, b7 as ContactWebhook, b8 as ContactWebhookCreate, ba as ContactWebhookUpdate, b9 as ContactWebhookSummary, bc as ContractBillingRule, bd as ContractBillingRuleCreate, bf as ContractBillingRuleUpdate, be as ContractBillingRuleSummary, bi as ContractBlockHourFactor, bj as ContractBlockHourFactorCreate, bl as ContractBlockHourFactorUpdate, bk as ContractBlockHourFactorSummary, bg as ContractBlock, bh as ContractBlockCreate, bn as ContractBlockUpdate, bm as ContractBlockSummary, bo as ContractCharge, bp as ContractChargeCreate, br as ContractChargeUpdate, bq as ContractChargeSummary, bt as ContractExclusionBillingCode, bu as ContractExclusionBillingCodeCreate, bw as ContractExclusionBillingCodeUpdate, bv as ContractExclusionBillingCodeSummary, bx as ContractExclusionRoles, by as ContractExclusionRolesCreate, bA as ContractExclusionRolesUpdate, bz as ContractExclusionRolesSummary, bB as ContractExclusionSetExcludedRoles, bC as ContractExclusionSetExcludedRolesCreate, bE as ContractExclusionSetExcludedRolesUpdate, bD as ContractExclusionSetExcludedRolesSummary, bF as ContractExclusionSetExcludedWorkTypes, bG as ContractExclusionSetExcludedWorkTypesCreate, bI as ContractExclusionSetExcludedWorkTypesUpdate, bH as ContractExclusionSetExcludedWorkTypesSummary, bJ as ContractExclusionSets, bK as ContractExclusionSetsCreate, bM as ContractExclusionSetsUpdate, bL as ContractExclusionSetsSummary, bN as ContractMilestone, bO as ContractMilestoneCreate, bQ as ContractMilestoneUpdate, bP as ContractMilestoneSummary, bR as ContractNote, bS as ContractNoteCreate, bU as ContractNoteUpdate, bT as ContractNoteSummary, bV as ContractRate, bW as ContractRateCreate, bY as ContractRateUpdate, bX as ContractRateSummary, bZ as ContractRetainers, b_ as ContractRetainersCreate, c0 as ContractRetainersUpdate, b$ as ContractRetainersSummary, c1 as ContractRoleCosts, c2 as ContractRoleCostsCreate, c4 as ContractRoleCostsUpdate, c3 as ContractRoleCostsSummary, c6 as ContractServiceAdjustment, c7 as ContractServiceAdjustmentCreate, c9 as ContractServiceAdjustmentUpdate, c8 as ContractServiceAdjustmentSummary, cb as ContractServiceBundleAdjustment, cc as ContractServiceBundleAdjustmentCreate, ce as ContractServiceBundleAdjustmentUpdate, cd as ContractServiceBundleAdjustmentSummary, ca as ContractServiceBundle, cf as ContractServiceBundleCreate, cl as ContractServiceBundleUpdate, cg as ContractServiceBundleSummary, ch as ContractServiceBundleUnit, ci as ContractServiceBundleUnitCreate, ck as ContractServiceBundleUnitUpdate, cj as ContractServiceBundleUnitSummary, c5 as ContractService, cm as ContractServiceCreate, cs as ContractServiceUpdate, cn as ContractServiceSummary, co as ContractServiceUnit, cp as ContractServiceUnitCreate, cr as ContractServiceUnitUpdate, cq as ContractServiceUnitSummary, bb as Contract, dp as Invoice, eZ as Resource, cU as ExpenseItem, g1 as Subscription, bs as ContractCreate, cy as ContractUpdate, ct as ContractSummary, cu as ContractTicketPurchases, cv as ContractTicketPurchasesCreate, cx as ContractTicketPurchasesUpdate, cw as ContractTicketPurchasesSummary, cz as Country, cA as CountryCreate, cC as CountryUpdate, cB as CountrySummary, cD as Currency, cE as CurrencyCreate, cG as CurrencyUpdate, cF as CurrencySummary, cH as Department, cI as DepartmentCreate, cK as DepartmentUpdate, cJ as DepartmentSummary, cM as DomainRegistrar, cN as DomainRegistrarCreate, cP as DomainRegistrarUpdate, cO as DomainRegistrarSummary, d8 as GlobalEntityInformationResultModel, cV as ExpenseItemAttachment, cW as ExpenseItemAttachmentCreate, cY as ExpenseItemAttachmentUpdate, cX as ExpenseItemAttachmentSummary, cZ as ExpenseItemCreate, c$ as ExpenseItemUpdate, c_ as ExpenseItemSummary, d0 as ExpenseReport, d1 as ExpenseReportCreate, d3 as ExpenseReportUpdate, d2 as ExpenseReportSummary, db as HolidaySet, dc as HolidaySetCreate, de as HolidaySetUpdate, dd as HolidaySetSummary, d9 as Holiday, da as HolidayCreate, dg as HolidayUpdate, df as HolidaySummary, dh as InventoryProduct, di as InventoryProductCreate, dk as InventoryProductUpdate, dj as InventoryProductSummary, dl as InventoryStockedItemAdd, dm as InventoryStockedItemRemove, dn as InventoryStockedItemTransfer, dq as InvoiceCreate, dw as InvoiceUpdate, dr as InvoiceSummary, ds as InvoiceTemplate, dt as InvoiceTemplateCreate, dv as InvoiceTemplateUpdate, dy as ModuleAccessResultModel, dz as NotificationHistory, dA as NotificationHistoryCreate, dC as NotificationHistoryUpdate, dB as NotificationHistorySummary, dF as Opportunity, dO as OpportunityCreate, dQ as OpportunityUpdate, dP as OpportunitySummary, dG as OpportunityAttachment, dH as OpportunityAttachmentCreate, dJ as OpportunityAttachmentUpdate, dI as OpportunityAttachmentSummary, dK as OpportunityCategory, dL as OpportunityCategoryCreate, dN as OpportunityCategoryUpdate, dM as OpportunityCategorySummary, dS as OrganizationalLevel1Create, dU as OrganizationalLevel1Update, dW as OrganizationalLevel2Create, dY as OrganizationalLevel2Update, d_ as OrganizationalLevelAssociationCreate, e0 as OrganizationalLevelAssociationUpdate, e2 as Phase, e3 as PhaseCreate, e5 as PhaseUpdate, e4 as PhaseSummary, e6 as Product, e7 as ProductCreate, e9 as ProductUpdate, e8 as ProductSummary, ea as ProductVendors, eb as ProductVendorsCreate, ed as ProductVendorsUpdate, ec as ProductVendorsSummary, ef as ProjectCharge, eg as ProjectChargeCreate, ei as ProjectChargeUpdate, eh as ProjectChargeSummary, el as ProjectNote, em as ProjectNoteCreate, eo as ProjectNoteUpdate, en as ProjectNoteSummary, ek as ProjectCreate, eq as ProjectUpdate, ep as ProjectSummary, hX as CompositeContextOptions, ej as ProjectContext, er as PurchaseApprovals, es as PurchaseApprovalsCreate, eu as PurchaseApprovalsUpdate, et as PurchaseApprovalsSummary, ev as PurchaseOrderItemReceiving, ew as PurchaseOrderItemReceivingCreate, ey as PurchaseOrderItemReceivingUpdate, ex as PurchaseOrderItemReceivingSummary, ez as PurchaseOrderItems, eA as PurchaseOrderItemsCreate, eC as PurchaseOrderItemsUpdate, eB as PurchaseOrderItemsSummary, eD as PurchaseOrders, eE as PurchaseOrdersCreate, eG as PurchaseOrdersUpdate, eF as PurchaseOrdersSummary, eJ as QuoteItem, eK as QuoteItemCreate, eM as QuoteItemUpdate, eL as QuoteItemSummary, eN as QuoteLocation, eO as QuoteLocationCreate, eQ as QuoteLocationUpdate, eP as QuoteLocationSummary, eH as Quote, eI as QuoteCreate, eW as QuoteUpdate, eR as QuoteSummary, eS as QuoteTemplate, eT as QuoteTemplateCreate, eV as QuoteTemplateUpdate, eU as QuoteTemplateSummary, f1 as ResourceRoleQueue, f2 as ResourceRoleQueueCreate, f4 as ResourceRoleQueueUpdate, f3 as ResourceRoleQueueSummary, e$ as ResourceRole, f0 as ResourceRoleCreate, f6 as ResourceRoleUpdate, f5 as ResourceRoleSummary, f7 as ResourceSkill, f8 as ResourceSkillCreate, fa as ResourceSkillUpdate, f9 as ResourceSkillSummary, hg as TicketCreate, hC as TicketUpdate, hB as TicketSummary, hf as TicketContext, fD as ServiceCallTaskResource, fB as ServiceCallTask, fk as ResourceTimeOffBalance, hP as TimeOffRequest, e_ as ResourceCreate, fo as ResourceUpdate, fb as ResourceSummary, fc as ResourceTimeOffAdditional, fd as ResourceTimeOffAdditionalCreate, ff as ResourceTimeOffAdditionalUpdate, fe as ResourceTimeOffAdditionalSummary, fg as ResourceTimeOffApprover, fh as ResourceTimeOffApproverCreate, fj as ResourceTimeOffApproverUpdate, fi as ResourceTimeOffApproverSummary, fl as ResourceTimeOffBalanceCreate, fn as ResourceTimeOffBalanceUpdate, fm as ResourceTimeOffBalanceSummary, fp as Role, fq as RoleCreate, fs as RoleUpdate, fr as RoleSummary, ft as SalesOrder, fu as SalesOrderCreate, fw as SalesOrderUpdate, fy as ServiceCall, fJ as ServiceCallTicket, fz as ServiceCallCreate, fR as ServiceCallUpdate, fA as ServiceCallSummary, fE as ServiceCallTaskResourceCreate, fG as ServiceCallTaskResourceUpdate, fF as ServiceCallTaskResourceSummary, fC as ServiceCallTaskCreate, fI as ServiceCallTaskUpdate, fH as ServiceCallTaskSummary, fL as ServiceCallTicketResource, fM as ServiceCallTicketResourceCreate, fO as ServiceCallTicketResourceUpdate, fN as ServiceCallTicketResourceSummary, fK as ServiceCallTicketCreate, fQ as ServiceCallTicketUpdate, fP as ServiceCallTicketSummary, fT as ServiceLevelAgreementResults, fU as ServiceLevelAgreementResultsCreate, fW as ServiceLevelAgreementResultsUpdate, fV as ServiceLevelAgreementResultsSummary, fx as Service, fS as ServiceCreate, fY as ServiceUpdate, fX as ServiceSummary, fZ as Skill, f_ as SkillCreate, g0 as SkillUpdate, f$ as SkillSummary, g3 as SubscriptionPeriod, g4 as SubscriptionPeriodCreate, g6 as SubscriptionPeriodUpdate, g5 as SubscriptionPeriodSummary, g2 as SubscriptionCreate, g8 as SubscriptionUpdate, g7 as SubscriptionSummary, gb as SurveyResults, gc as SurveyResultsCreate, ge as SurveyResultsUpdate, gd as SurveyResultsSummary, g9 as Survey, ga as SurveyCreate, gg as SurveyUpdate, gf as SurveySummary, gi as TagAlias, gj as TagAliasCreate, gl as TagAliasUpdate, gk as TagAliasSummary, gn as TagGroup, go as TagGroupCreate, gq as TagGroupUpdate, gp as TagGroupSummary, gh as Tag, gm as TagCreate, gs as TagUpdate, gr as TagSummary, gv as TaskSecondaryResource, gw as TaskSecondaryResourceCreate, gy as TaskSecondaryResourceUpdate, gx as TaskSecondaryResourceSummary, gt as Task, gu as TaskCreate, gA as TaskUpdate, gz as TaskSummary, gB as TaxRegion, gC as TaxRegionCreate, gE as TaxRegionUpdate, gF as ThresholdStatusResultModel, gH as TicketAdditionalConfigurationItem, gI as TicketAdditionalConfigurationItemCreate, gK as TicketAdditionalConfigurationItemUpdate, gJ as TicketAdditionalConfigurationItemSummary, gL as TicketAdditionalContact, gM as TicketAdditionalContactCreate, gO as TicketAdditionalContactUpdate, gN as TicketAdditionalContactSummary, gP as TicketAttachment, gQ as TicketAttachmentCreate, gS as TicketAttachmentUpdate, gR as TicketAttachmentSummary, gT as TicketCategory, gU as TicketCategoryCreate, g_ as TicketCategoryUpdate, gZ as TicketCategorySummary, gV as TicketCategoryFieldDefault, gW as TicketCategoryFieldDefaultCreate, gY as TicketCategoryFieldDefaultUpdate, gX as TicketCategoryFieldDefaultSummary, g$ as TicketChangeRequestApproval, h0 as TicketChangeRequestApprovalCreate, h2 as TicketChangeRequestApprovalUpdate, h1 as TicketChangeRequestApprovalSummary, h3 as TicketCharge, h4 as TicketChargeCreate, h6 as TicketChargeUpdate, h5 as TicketChargeSummary, h7 as TicketChecklistItem, h8 as TicketChecklistItemCreate, ha as TicketChecklistItemUpdate, h9 as TicketChecklistItemSummary, hb as TicketChecklistLibrary, hc as TicketChecklistLibraryCreate, he as TicketChecklistLibraryUpdate, hd as TicketChecklistLibrarySummary, hh as TicketHistory, hi as TicketHistoryCreate, hk as TicketHistoryUpdate, hj as TicketHistorySummary, hm as TicketNoteAttachment, hn as TicketNoteAttachmentCreate, hp as TicketNoteAttachmentUpdate, ho as TicketNoteAttachmentSummary, hl as TicketNote, hq as TicketNoteCreate, hs as TicketNoteUpdate, hr as TicketNoteSummary, ht as TicketNoteWebhook, hu as TicketNoteWebhookCreate, hw as TicketNoteWebhookUpdate, hv as TicketNoteWebhookSummary, hx as TicketSecondaryResource, hy as TicketSecondaryResourceCreate, hA as TicketSecondaryResourceUpdate, hz as TicketSecondaryResourceSummary, hD as TicketWebhook, hE as TicketWebhookCreate, hG as TicketWebhookUpdate, hF as TicketWebhookSummary, hM as TimeEntryCreate, hO as TimeEntryUpdate, hN as TimeEntrySummary, hI as TimeEntryAttachment, hJ as TimeEntryAttachmentCreate, hL as TimeEntryAttachmentUpdate, hK as TimeEntryAttachmentSummary, hQ as TimeOffRequestCreate, hT as TimeOffRequestUpdate, hS as TimeOffRequestSummary, A as ApiVersionResultModel, k as AutotaskVersionResultModel, hV as ZoneInformationResultModel } from './index-c549LvOb.cjs';
|
|
2
2
|
|
|
3
3
|
/** Default bound of the read cache (a long-lived server must not grow without bound). */
|
|
4
4
|
declare const READ_CACHE_MAX_ENTRIES = 4096;
|
|
@@ -176,8 +176,8 @@ interface AutotaskConfig {
|
|
|
176
176
|
/**
|
|
177
177
|
* Row label siblings on the read surfaces (issue #287): when `true`,
|
|
178
178
|
* `query`/`queryBounded` (and the invoke `<resource>.query` path),
|
|
179
|
-
* `operations.aggregate` group keys
|
|
180
|
-
*
|
|
179
|
+
* `operations.aggregate` group keys and `operations.fetchByIds` add the
|
|
180
|
+
* `*Name` / `*Label` siblings to the served rows
|
|
181
181
|
* (picklist `<field>Label`, `<fk>Name` for the record-FK fields and the
|
|
182
182
|
* staff name for `resourceID`/`*ResourceID`). Default `false` (raw ids —
|
|
183
183
|
* the label pass costs a field-catalog read plus up to 20 cold name
|
|
@@ -738,20 +738,18 @@ declare class HttpClient {
|
|
|
738
738
|
* update dry-run envelope (issue #14 — additive);
|
|
739
739
|
* - src/http.ts attaches EMPTY_REASON_STAMPS / POINTER_NOTES to typed
|
|
740
740
|
* errors (issue #14 — the reason rides on the error details, additive);
|
|
741
|
-
* - operations.recovery reads DELETE_BOUNDARY_NOTES + MARKER_FIELDS
|
|
742
|
-
* (issue #9 — zero wire);
|
|
743
741
|
* - src/resources/base.ts reads RESPONSE_DRIFT_MARKERS on a drifted 2xx
|
|
744
742
|
* create (issue #13 — ONE bounded marker read; absent pin = old behaviour);
|
|
745
|
-
* -
|
|
746
|
-
*
|
|
747
|
-
*
|
|
743
|
+
* - BLIND_SURFACE_INVENTORY + REACHABILITY_PROBE_DEFAULTS — the
|
|
744
|
+
* plan.reachability artifacts (issue #11); the ops that served them were
|
|
745
|
+
* deleted in #289, the plan data and the artifacts remain;
|
|
748
746
|
* - operations.createGuidance serves CREATE_GUIDANCE (issue #12 — the
|
|
749
747
|
* zone-fact create-guidance catalog, zero wire);
|
|
750
748
|
* - src/resources/base.ts reads UNTRUSTED_FIELDS_BY_RESOURCE for the
|
|
751
749
|
* queryBounded noteChars free-text cap (issue #61 — response-side only);
|
|
752
750
|
* - docs/API.md §11.7/§11.8/§11.9/§11.10/§11.11/§11.12 render the same facts.
|
|
753
751
|
*
|
|
754
|
-
* planHash:
|
|
752
|
+
* planHash: dc0c06eae0d75d77a9d41c50f8d9a4a7ce458f34e62aa1e7f9b5f35a487e4020
|
|
755
753
|
*/
|
|
756
754
|
|
|
757
755
|
/** One pinned blind-surface stamp (the result-time sentinel object). */
|
|
@@ -767,44 +765,6 @@ interface BlindSurfaceInfo {
|
|
|
767
765
|
/** The zone fact + remedy, LLM-consumer grade. */
|
|
768
766
|
note: string;
|
|
769
767
|
}
|
|
770
|
-
/** One blind-surface inventory row (issue #11 — the served discovery row). */
|
|
771
|
-
interface BlindSurfaceRow {
|
|
772
|
-
/** The plan resource key. */
|
|
773
|
-
resource: string;
|
|
774
|
-
/** The affected read ops (the pinned subset of count/query that exist for the resource). */
|
|
775
|
-
ops: Array<'count' | 'query'>;
|
|
776
|
-
/** The blind class (closed set): unowned-blind | fully-blind | unfiltered-blind | unknown (no class assigned — data-full or no count observable). */
|
|
777
|
-
kind: 'unowned-blind' | 'fully-blind' | 'unfiltered-blind' | 'unknown';
|
|
778
|
-
/** The ww29 discovery fact: rows seen for the unfiltered limit-2 read (0 = blind; 1-2 = data-full; null = no count observable). */
|
|
779
|
-
unfilteredRows: number | null;
|
|
780
|
-
/** The authority op that answers for a record (e.g. companies.get); null when the plan has no get row. */
|
|
781
|
-
authority: string | null;
|
|
782
|
-
/** The discovery fact + remedy, LLM-consumer grade. */
|
|
783
|
-
note: string;
|
|
784
|
-
/** The proof level: live-verified | discovery-sweep | spec-derived. */
|
|
785
|
-
proof: 'live-verified' | 'discovery-sweep' | 'spec-derived';
|
|
786
|
-
}
|
|
787
|
-
/** The blind-surface inventory (issue #11 — the served 116-surface artifact). */
|
|
788
|
-
interface BlindSurfaceInventory {
|
|
789
|
-
zone: string;
|
|
790
|
-
label: string;
|
|
791
|
-
verifiedAt: string | null;
|
|
792
|
-
/** The discovery sweep date (the ww29 run). */
|
|
793
|
-
discoveredAt: string | null;
|
|
794
|
-
surfaces: BlindSurfaceRow[];
|
|
795
|
-
counts: {
|
|
796
|
-
total: number;
|
|
797
|
-
dataFull: number;
|
|
798
|
-
blind: number;
|
|
799
|
-
pinned: number;
|
|
800
|
-
};
|
|
801
|
-
/** The resources the sweep found data-full (safe for unfiltered reads). */
|
|
802
|
-
dataFull: string[];
|
|
803
|
-
remedies: {
|
|
804
|
-
generic: string;
|
|
805
|
-
byResource: Record<string, string>;
|
|
806
|
-
};
|
|
807
|
-
}
|
|
808
768
|
/** The create-blocker class (issue #12 — the closed 9-set; the gate re-derives). */
|
|
809
769
|
type CreateBlockerKind = 'ok' | 'blind-reference' | 'blind-parent' | 'picklist-unexposed' | 'undocumented-ladder' | 'resource-role-pair' | 'delete-absent' | 'non-mutable' | 'unknown';
|
|
810
770
|
/**
|
|
@@ -1020,10 +980,47 @@ interface RelationshipResource {
|
|
|
1020
980
|
note: string;
|
|
1021
981
|
proof: string;
|
|
1022
982
|
} | null;
|
|
1023
|
-
/** The spec-derived name-like
|
|
983
|
+
/** The spec-derived name-like marker field (issue #9; null = none). */
|
|
1024
984
|
markerField: string | null;
|
|
1025
985
|
}
|
|
1026
986
|
|
|
987
|
+
/** One hop's status: ok (record served), missing (the pointer is absent — or,
|
|
988
|
+
* for a level hop, the parent association row did not resolve so the pointer
|
|
989
|
+
* was never read), unresolved (the pointer exists but the vendor returned no
|
|
990
|
+
* record), capped (the read budget ran out before this hop was read). */
|
|
991
|
+
type LineOfBusinessMarker = 'ok' | 'missing' | 'unresolved' | 'capped';
|
|
992
|
+
/** The dedicated Line of Business chain section (issue: LOB resolution). */
|
|
993
|
+
interface LineOfBusinessNames {
|
|
994
|
+
/** Where the association id came from: the ticket's own pointer, or its contract's
|
|
995
|
+
* (the composite resolves the ticket -> contract fallback). Absent on other call sites. */
|
|
996
|
+
source?: 'ticket' | 'contract';
|
|
997
|
+
/** The contract consulted for the fallback, when `source` is 'contract'. */
|
|
998
|
+
contractId?: Identifier;
|
|
999
|
+
/** The association row when served, otherwise null. */
|
|
1000
|
+
association: OrganizationalLevelAssociation | null;
|
|
1001
|
+
/** The OrganizationalLevel2 row (the customizable "Line of Business" label), otherwise null. */
|
|
1002
|
+
organizationalLevel2: OrganizationalLevel2 | null;
|
|
1003
|
+
/** The OrganizationalLevel1 row (the division), otherwise null. */
|
|
1004
|
+
organizationalLevel1: OrganizationalLevel1 | null;
|
|
1005
|
+
/** Explicit per-hop markers — a broken chain is reported, never thrown. */
|
|
1006
|
+
markers: {
|
|
1007
|
+
association: LineOfBusinessMarker;
|
|
1008
|
+
organizationalLevel2: LineOfBusinessMarker;
|
|
1009
|
+
organizationalLevel1: LineOfBusinessMarker;
|
|
1010
|
+
};
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
/** The `names` summary a labelled result carries ONLY when something was
|
|
1014
|
+
* left unlabelled: the cold-read cap was hit or a picklist could not be
|
|
1015
|
+
* resolved. Issue #287: the structured `truncated` / `capped` / catalogError
|
|
1016
|
+
* bookkeeping was trimmed — the note is the summary. */
|
|
1017
|
+
interface RowNamesSummary {
|
|
1018
|
+
/** One line a reader can act on. */
|
|
1019
|
+
note: string;
|
|
1020
|
+
/** Picklist field -> why its `*Label` is null (the fieldCatalog honesty note / the value-not-served note). */
|
|
1021
|
+
reasons?: Record<string, string>;
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1027
1024
|
/** Resource description handed to `BaseResource` (one instance per resource). */
|
|
1028
1025
|
interface BaseResourceConfig {
|
|
1029
1026
|
/** Plan key / registry name, e.g. 'companies'. */
|
|
@@ -1094,16 +1091,15 @@ interface BoundedQueryParams extends QueryParams {
|
|
|
1094
1091
|
noteChars?: number;
|
|
1095
1092
|
/**
|
|
1096
1093
|
* Issue #287 (D6): the walk's TOTAL row cap — the bounded query SERVES
|
|
1097
|
-
* at most `maxRows` rows in total
|
|
1098
|
-
*
|
|
1094
|
+
* at most `maxRows` rows in total, independent of `limit`; the page
|
|
1095
|
+
* size stays `min(500, limit)`, so one vendor page
|
|
1099
1096
|
* may fetch more rows than `maxRows` and the surplus is sliced off
|
|
1100
1097
|
* (fetched, not served). Positive integer; absent = the `limit` cap
|
|
1101
1098
|
* alone (bit-for-bit the pre-`walk` result). The result carries the
|
|
1102
|
-
* `truncated` flag
|
|
1103
|
-
*
|
|
1104
|
-
*
|
|
1105
|
-
*
|
|
1106
|
-
* extra fetch either way). Not combinable with `latest` (the
|
|
1099
|
+
* `truncated` flag: `true` when the final page was sliced, a next cursor
|
|
1100
|
+
* remains, or the page guard stopped the walk; `false` for an exhausted
|
|
1101
|
+
* cursor with no surplus, even at exactly `maxRows`. No extra fetch
|
|
1102
|
+
* either way. Not combinable with `latest` (the
|
|
1107
1103
|
* count-anchored mechanism has its own walk window).
|
|
1108
1104
|
*/
|
|
1109
1105
|
walk?: {
|
|
@@ -1116,14 +1112,15 @@ interface BoundedQueryResult<T> {
|
|
|
1116
1112
|
/** Total records returned (= items.length). */
|
|
1117
1113
|
fetched: number;
|
|
1118
1114
|
/**
|
|
1119
|
-
* True when
|
|
1120
|
-
*
|
|
1121
|
-
*
|
|
1122
|
-
* stop, or the final page had to be sliced to meet the cap.
|
|
1115
|
+
* True when more records remain past the stop: a non-null next cursor
|
|
1116
|
+
* was seen, or the final page was sliced to meet the cap. Explicit walks
|
|
1117
|
+
* also report true whenever the 1000-page guard stops the walk.
|
|
1123
1118
|
*/
|
|
1124
1119
|
hasMore: boolean;
|
|
1125
1120
|
/** Pages fetched by the internal walk. */
|
|
1126
1121
|
pagesWalked: number;
|
|
1122
|
+
/** Explicit labelled walks: present only when a page left names or picklist labels unresolved. */
|
|
1123
|
+
names?: RowNamesSummary;
|
|
1127
1124
|
/**
|
|
1128
1125
|
* Deliberately always omitted: the vendor documents `pageDetails.count` as
|
|
1129
1126
|
* the CURRENT PAGE's record count (not a total), so it must never be
|
|
@@ -1232,7 +1229,7 @@ interface MutationOpts {
|
|
|
1232
1229
|
* written; a 429 is still retried per `Retry-After` on the pre-#105
|
|
1233
1230
|
* retriable set, GET/PUT/DELETE + flagged calls. The optional stale-object
|
|
1234
1231
|
* guard's verification read keeps the client budget. Compound ops
|
|
1235
|
-
* (`time_entries.
|
|
1232
|
+
* (e.g. `time_entries.moveToTicket`, `tickets.changeStatus`) apply the
|
|
1236
1233
|
* override to the op's mutation send only — their pre-wire resolution
|
|
1237
1234
|
* reads keep the client budget.)
|
|
1238
1235
|
*/
|
|
@@ -1341,10 +1338,13 @@ declare function toArray<T>(iter: AsyncIterable<T>): Promise<T[]>;
|
|
|
1341
1338
|
|
|
1342
1339
|
/** Query-walk layer of `BaseResource` (issue #165): paging, bounded query, blind count, latest probes. */
|
|
1343
1340
|
declare abstract class QueryBase<T = Record<string, unknown>> {
|
|
1344
|
-
|
|
1341
|
+
private readonly httpClient;
|
|
1345
1342
|
protected readonly config: BaseResourceConfig;
|
|
1346
1343
|
/** Default page size for query walks (the client's resolved `pageSize`). */
|
|
1347
1344
|
protected readonly defaultPageSize: number;
|
|
1345
|
+
/** The transport client behind this resource. Public: the hand-written special ops read
|
|
1346
|
+
* `resource.http` instead of taking a redundant `http` argument (issue #292). */
|
|
1347
|
+
get http(): HttpClient;
|
|
1348
1348
|
/** Versioned global URL segment (from the config), e.g. '/V1.0/Companies'. */
|
|
1349
1349
|
protected get resourcePath(): string;
|
|
1350
1350
|
/** The vendor entity this resource's ids identify (issue #116 — the `details.idRefs` label, e.g. `company`). */
|
|
@@ -1387,7 +1387,8 @@ declare abstract class QueryBase<T = Record<string, unknown>> {
|
|
|
1387
1387
|
* - `limit` = total records (default 500, hard max 2500 — above it throws
|
|
1388
1388
|
* AutotaskConfigError; it is NOT a page size). The page-1 request uses
|
|
1389
1389
|
* the internal page size min(500, limit) (the `latest` mechanism sizes
|
|
1390
|
-
* its walk from the matching count)
|
|
1390
|
+
* its walk from the matching count). Explicit `walk.maxRows` replaces
|
|
1391
|
+
* the total cap; `limit` then only sizes pages. Every follow-up page POSTs the
|
|
1391
1392
|
* SAME QueryModel body (`buildQueryBody`: MaxRecords, IncludeFields and
|
|
1392
1393
|
* the preserved filter) to the absolute cursor (issue #118 — the vendor
|
|
1393
1394
|
* honours IncludeFields there and ignores MaxRecords, serving its own
|
|
@@ -1860,17 +1861,6 @@ declare class BillingItemApprovalLevelsResource extends BaseResource<BillingItem
|
|
|
1860
1861
|
create(data: BillingItemApprovalLevelCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<BillingItemApprovalLevelCreate>>;
|
|
1861
1862
|
}
|
|
1862
1863
|
|
|
1863
|
-
/** The shared window opts shape (`TimeEntriesWindowOptions` is an alias of
|
|
1864
|
-
* this type — `tz` is the issue #66 addition). */
|
|
1865
|
-
interface DateWindowOptions {
|
|
1866
|
-
/** Window anchor (default: now) — tests pin it for determinism. */
|
|
1867
|
-
now?: Date;
|
|
1868
|
-
/** Max records (default 500 = the hard cap — a call without limit takes the first 500 rows in vendor id order; a window with more than 500 matching rows needs the bounded query op with the same date-window filter — its 2500-row walk cap, issue #128). */
|
|
1869
|
-
limit?: number;
|
|
1870
|
-
/** IANA timezone (e.g. 'Australia/Sydney') — the window's calendar day/period is computed in that zone's local calendar and converted to UTC for the wire; omitted = UTC (the current behaviour, bit-for-bit). `last24h` is rolling and TZ-invariant (a zone never changes it). For the date-only `time_entries.dateWorked` the zone only picks the calendar dates; the wire bounds are whole UTC days of them (see `dateOnlyWindowBounds`). */
|
|
1871
|
-
tz?: string;
|
|
1872
|
-
}
|
|
1873
|
-
|
|
1874
1864
|
/**
|
|
1875
1865
|
* BillingItemsResource — BillingItems resource (G5 batch B, plan key 'billing_items').
|
|
1876
1866
|
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
@@ -1911,30 +1901,6 @@ declare class BillingItemsResource extends BaseResource<BillingItems, BillingIte
|
|
|
1911
1901
|
resolve(identifier: number | string, opts?: {
|
|
1912
1902
|
expand?: boolean;
|
|
1913
1903
|
}): Promise<BillingItemsSummary | null>;
|
|
1914
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1915
|
-
customRange(from: string, to: string, opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1916
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1917
|
-
last14(opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1918
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1919
|
-
last24h(opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1920
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1921
|
-
last30(opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1922
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1923
|
-
last7(opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1924
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1925
|
-
last90(opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1926
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1927
|
-
lastFullFortnight(opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1928
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1929
|
-
lastFullMonth(opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1930
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1931
|
-
lastFullQuarter(opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1932
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1933
|
-
lastFullWeek(opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1934
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1935
|
-
today(opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1936
|
-
/** Node-parity special op (hand-written in src/resources/special/billing_items.ts). */
|
|
1937
|
-
yesterday(opts?: DateWindowOptions): Promise<BillingItems[]>;
|
|
1938
1904
|
}
|
|
1939
1905
|
|
|
1940
1906
|
/**
|
|
@@ -2114,14 +2080,6 @@ declare class ClassificationIconsResource extends BaseResource<ClassificationIco
|
|
|
2114
2080
|
}): Promise<ClassificationIconSummary[]>;
|
|
2115
2081
|
}
|
|
2116
2082
|
|
|
2117
|
-
interface CompaniesDomainSearchOptions {
|
|
2118
|
-
/** Node-parity knob: `'eq'` is mapped to `contains` (vendor has no exact
|
|
2119
|
-
* domain operator for URL fields). Both values behave identically. */
|
|
2120
|
-
searchType?: 'contains' | 'eq';
|
|
2121
|
-
/** Max companies to return (default 25, clamped to 1..500). */
|
|
2122
|
-
limit?: number;
|
|
2123
|
-
}
|
|
2124
|
-
|
|
2125
2083
|
interface CompanySearchOptions {
|
|
2126
2084
|
/** Max companies to return (default 25, clamped to 1..500). */
|
|
2127
2085
|
limit?: number;
|
|
@@ -2144,69 +2102,6 @@ interface CompanyFamilyRow extends Company {
|
|
|
2144
2102
|
family?: CompanyFamily;
|
|
2145
2103
|
}
|
|
2146
2104
|
|
|
2147
|
-
interface CompaniesUpsertByNameParams {
|
|
2148
|
-
/** The company phone (live-required on the ww29 create). */
|
|
2149
|
-
phone: string;
|
|
2150
|
-
/**
|
|
2151
|
-
* The owner resource (REQUIRED on the create path — an active NON-API-only
|
|
2152
|
-
* resource; the node cannot enumerate candidates: the resources table is
|
|
2153
|
-
* blind to the API user). Absent + a dedup miss → the typed
|
|
2154
|
-
* OWNER_RESOURCE_REQUIRED (zero wire, the remedy names the fixture-free fix).
|
|
2155
|
-
*/
|
|
2156
|
-
ownerResourceID?: number;
|
|
2157
|
-
/** The company type picklist (default 1 — the ww29-proven value). */
|
|
2158
|
-
companyType?: number;
|
|
2159
|
-
}
|
|
2160
|
-
/** The typed blindSurface caveat (both the EXISTS and the CREATED results). */
|
|
2161
|
-
interface CompaniesBlindSurfaceCaveat {
|
|
2162
|
-
companies: true;
|
|
2163
|
-
caveat: string;
|
|
2164
|
-
/**
|
|
2165
|
-
* The S12-C base-level typed sentinel (additive) — present when the dedup
|
|
2166
|
-
* read hit the plan-pinned blind shape (zero items on companies.query).
|
|
2167
|
-
*/
|
|
2168
|
-
sentinel?: BlindSurfaceInfo;
|
|
2169
|
-
}
|
|
2170
|
-
/** The typed EXISTS/CREATED result (blind-surface-aware). */
|
|
2171
|
-
interface CompaniesUpsertByNameResult {
|
|
2172
|
-
/** The company id (existing match or newly created). */
|
|
2173
|
-
id: number;
|
|
2174
|
-
/** False when the dedup match short-circuited the create. */
|
|
2175
|
-
created: boolean;
|
|
2176
|
-
/** The matched record (present when created is false). */
|
|
2177
|
-
existing?: Company;
|
|
2178
|
-
/** The dedup boundary carried IN the result (a query-miss is NOT proof of absence). */
|
|
2179
|
-
blindSurface: CompaniesBlindSurfaceCaveat;
|
|
2180
|
-
/** The vendor side effects reported on the created result (the V5 auto-location). */
|
|
2181
|
-
sideEffects?: string[];
|
|
2182
|
-
}
|
|
2183
|
-
|
|
2184
|
-
/** One hop's status: ok (record served), missing (the pointer is absent — or,
|
|
2185
|
-
* for a level hop, the parent association row did not resolve so the pointer
|
|
2186
|
-
* was never read), unresolved (the pointer exists but the vendor returned no
|
|
2187
|
-
* record), capped (the read budget ran out before this hop was read). */
|
|
2188
|
-
type LineOfBusinessMarker = 'ok' | 'missing' | 'unresolved' | 'capped';
|
|
2189
|
-
/** The dedicated Line of Business chain section (issue: LOB resolution). */
|
|
2190
|
-
interface LineOfBusinessNames {
|
|
2191
|
-
/** Where the association id came from: the ticket's own pointer, or its contract's
|
|
2192
|
-
* (the composite resolves the ticket -> contract fallback). Absent on other call sites. */
|
|
2193
|
-
source?: 'ticket' | 'contract';
|
|
2194
|
-
/** The contract consulted for the fallback, when `source` is 'contract'. */
|
|
2195
|
-
contractId?: Identifier;
|
|
2196
|
-
/** The association row when served, otherwise null. */
|
|
2197
|
-
association: OrganizationalLevelAssociation | null;
|
|
2198
|
-
/** The OrganizationalLevel2 row (the customizable "Line of Business" label), otherwise null. */
|
|
2199
|
-
organizationalLevel2: OrganizationalLevel2 | null;
|
|
2200
|
-
/** The OrganizationalLevel1 row (the division), otherwise null. */
|
|
2201
|
-
organizationalLevel1: OrganizationalLevel1 | null;
|
|
2202
|
-
/** Explicit per-hop markers — a broken chain is reported, never thrown. */
|
|
2203
|
-
markers: {
|
|
2204
|
-
association: LineOfBusinessMarker;
|
|
2205
|
-
organizationalLevel2: LineOfBusinessMarker;
|
|
2206
|
-
organizationalLevel1: LineOfBusinessMarker;
|
|
2207
|
-
};
|
|
2208
|
-
}
|
|
2209
|
-
|
|
2210
2105
|
/** One picklist entry of `TicketModel.status` (the vendor sends `value` as a string). */
|
|
2211
2106
|
interface TicketStatusPicklistValue {
|
|
2212
2107
|
id: number;
|
|
@@ -2401,6 +2296,14 @@ interface CrmPrepareResult {
|
|
|
2401
2296
|
caveats: string[];
|
|
2402
2297
|
}
|
|
2403
2298
|
|
|
2299
|
+
interface CompaniesDomainSearchOptions {
|
|
2300
|
+
/** Node-parity knob: `'eq'` is mapped to `contains` (vendor has no exact
|
|
2301
|
+
* domain operator for URL fields). Both values behave identically. */
|
|
2302
|
+
searchType?: 'contains' | 'eq';
|
|
2303
|
+
/** Max companies to return (default 25, clamped to 1..500). */
|
|
2304
|
+
limit?: number;
|
|
2305
|
+
}
|
|
2306
|
+
|
|
2404
2307
|
/** The closed `source` set for `companies.unbilledWork`. */
|
|
2405
2308
|
type UnbilledWorkSource = 'posted_uninvoiced' | 'invoice' | 'date_range' | 'tickets';
|
|
2406
2309
|
/** Options for `unbilledWork` (closed bag; the pinned defaults). */
|
|
@@ -2566,9 +2469,9 @@ declare class CompaniesResource extends BaseResource<Company, CompanyCreate, Com
|
|
|
2566
2469
|
/** Get the Company with its primary context records in one call (each part a single-record
|
|
2567
2470
|
* fetch; no sub-lists; absent/dangling references come back null). */
|
|
2568
2471
|
getContext(id: Identifier): Promise<CompanyContext>;
|
|
2569
|
-
/** Node-parity special op (hand-written in src/resources/special/companies.ts). */
|
|
2472
|
+
/** Node-parity special op (hand-written in src/resources/special/companies/search.ts). */
|
|
2570
2473
|
searchByDomain(domain: string, opts?: CompaniesDomainSearchOptions): Promise<Company[]>;
|
|
2571
|
-
/** Node-parity special op (hand-written in src/resources/special/companies.ts). */
|
|
2474
|
+
/** Node-parity special op (hand-written in src/resources/special/companies/search.ts). */
|
|
2572
2475
|
searchByIdentity(identity: {
|
|
2573
2476
|
companyName?: string;
|
|
2574
2477
|
email?: string;
|
|
@@ -2576,13 +2479,11 @@ declare class CompaniesResource extends BaseResource<Company, CompanyCreate, Com
|
|
|
2576
2479
|
}, opts?: {
|
|
2577
2480
|
limit?: number;
|
|
2578
2481
|
}): Promise<Company[]>;
|
|
2579
|
-
/** Node-parity special op (hand-written in src/resources/special/companies.ts). */
|
|
2580
|
-
upsertByName(companyName: string, params: CompaniesUpsertByNameParams, opts?: MutationOpts): Promise<CompaniesUpsertByNameResult | DryRunResult<Record<string, unknown>>>;
|
|
2581
|
-
/** Node-parity special op (hand-written in src/resources/special/companies.ts). */
|
|
2482
|
+
/** Node-parity special op (hand-written in src/resources/special/companies/fullProfile.ts). */
|
|
2582
2483
|
fullProfile(id: Identifier, opts?: CompanyFullProfileOptions): Promise<CompanyFullProfile>;
|
|
2583
|
-
/** Node-parity special op (hand-written in src/resources/special/companies.ts). */
|
|
2484
|
+
/** Node-parity special op (hand-written in src/resources/special/companies/unbilledWork.ts). */
|
|
2584
2485
|
unbilledWork(id: Identifier, opts?: UnbilledWorkOptions): Promise<UnbilledWorkResult>;
|
|
2585
|
-
/** Node-parity special op (hand-written in src/resources/special/companies.ts). */
|
|
2486
|
+
/** Node-parity special op (hand-written in src/resources/special/companies/prepareCrmWrite.ts). */
|
|
2586
2487
|
prepareCrmWrite(input: CrmPrepareInput): Promise<CrmPrepareResult>;
|
|
2587
2488
|
}
|
|
2588
2489
|
|
|
@@ -3491,14 +3392,17 @@ declare class ContactGroupsResource extends BaseResource<ContactGroups, ContactG
|
|
|
3491
3392
|
}): Promise<ContactGroupsSummary[]>;
|
|
3492
3393
|
}
|
|
3493
3394
|
|
|
3494
|
-
/**
|
|
3495
|
-
|
|
3496
|
-
|
|
3497
|
-
|
|
3498
|
-
|
|
3499
|
-
|
|
3500
|
-
|
|
3501
|
-
|
|
3395
|
+
/** One composite part\'s outcome: the value, or null + the typed absent reason. */
|
|
3396
|
+
interface CompositePartValue<TValue = unknown> {
|
|
3397
|
+
value: TValue | null;
|
|
3398
|
+
/** Present only when the part degraded (typed reason). */
|
|
3399
|
+
absent?: string;
|
|
3400
|
+
/** The tenant\'s closed-status set this part filtered on (the open-tickets parts only). */
|
|
3401
|
+
closedStatus?: {
|
|
3402
|
+
closedIds: number[];
|
|
3403
|
+
source: 'resolved';
|
|
3404
|
+
};
|
|
3405
|
+
}
|
|
3502
3406
|
|
|
3503
3407
|
/**
|
|
3504
3408
|
* `moveToCompany` options. Extends `MutationOpts` (G10b F1): `dryRun` and
|
|
@@ -3521,31 +3425,48 @@ interface MoveToCompanyResult {
|
|
|
3521
3425
|
created: true;
|
|
3522
3426
|
sourceDeleted: boolean;
|
|
3523
3427
|
}
|
|
3524
|
-
|
|
3525
|
-
|
|
3526
|
-
|
|
3527
|
-
|
|
3528
|
-
lastName?: string;
|
|
3529
|
-
/**
|
|
3530
|
-
* The zone quirk ABSORBED: a JSON boolean is ACCEPTED and mapped to the
|
|
3531
|
-
* zone-correct number (true→1 / false→0); a raw 0/1 number passes through.
|
|
3532
|
-
* Default: active (1).
|
|
3533
|
-
*/
|
|
3534
|
-
isActive?: boolean | number;
|
|
3428
|
+
/** Options for `fullProfile` (all optional; the pinned defaults). */
|
|
3429
|
+
interface ContactFullProfileOptions {
|
|
3430
|
+
/** Max open-ticket records (default 50, 1-2500 — the server's `ticket_limit` bound). */
|
|
3431
|
+
ticketLimit?: number;
|
|
3535
3432
|
}
|
|
3536
|
-
/**
|
|
3537
|
-
|
|
3538
|
-
|
|
3539
|
-
|
|
3540
|
-
|
|
3541
|
-
|
|
3542
|
-
|
|
3543
|
-
|
|
3544
|
-
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3433
|
+
/**
|
|
3434
|
+
* The contact with its company and its open tickets in ONE call (issue #313):
|
|
3435
|
+
* the composite the MCP server served as `autotask_contact_full_profile`.
|
|
3436
|
+
*
|
|
3437
|
+
* TWO-STAGE root: the vendor endpoint is parent-scoped
|
|
3438
|
+
* (GET /V1.0/Companies/{parentId}/Contacts/{id}) and the SDK's `contacts.get`
|
|
3439
|
+
* declares TWO required positional args (parentId, id) — a flat single-arg
|
|
3440
|
+
* call can never satisfy it. Stage 1 resolves the FK with a single-record
|
|
3441
|
+
* query (the root read is NOT caught: a vendor fault on it fails the call
|
|
3442
|
+
* with the typed error; no row -> the typed NOT_FOUND for the contact id).
|
|
3443
|
+
* A contact with no company FK: the contact row itself is the root and the
|
|
3444
|
+
* company part degrades to `absent: 'NO_FK'` (the op never hard-fails on a
|
|
3445
|
+
* missing company).
|
|
3446
|
+
*
|
|
3447
|
+
* Parts (bounded reads through the registry seam):
|
|
3448
|
+
* - `company`: `companies.get [fk]` (the typed absent degradation on a miss).
|
|
3449
|
+
* - `open_tickets`: the open tickets for the contact id — the closed set is
|
|
3450
|
+
* the tenant's live status picklist (`tickets.statusSemantics` with
|
|
3451
|
+
* `allowAssumed: false`), never a literal; a composite that cannot tell
|
|
3452
|
+
* open from closed degrades the part to `absent: 'CLOSED_STATUS_UNRESOLVED'`
|
|
3453
|
+
* (with the `closedStatus` disclosure).
|
|
3454
|
+
*
|
|
3455
|
+
* The result is the served pre-marking shape `{ root, parts }`: the server
|
|
3456
|
+
* keeps its per-part untrusted marking on top, so the tool output is
|
|
3457
|
+
* field-for-field the composite the server served today. Wire: 1 stage-1
|
|
3458
|
+
* query + 1 root read (2-3 with the company part) + the open-tickets
|
|
3459
|
+
* resolution (status catalog, field-cached) + 1 tickets query.
|
|
3460
|
+
*/
|
|
3461
|
+
interface ContactFullProfile {
|
|
3462
|
+
/** The contact (the parent-scoped root read, or the stage-1 row when the contact has no company FK). */
|
|
3463
|
+
root: Contact;
|
|
3464
|
+
parts: {
|
|
3465
|
+
/** The contact's company (the `companies.get` record), or the typed absent degradation (`NO_FK` when the contact has no company). */
|
|
3466
|
+
company: CompositePartValue<Company>;
|
|
3467
|
+
/** The contact's open tickets (the bounded `tickets.query` result envelope) + the `closedStatus` disclosure, or the typed absent degradation. */
|
|
3468
|
+
open_tickets: CompositePartValue<BoundedQueryResult<Ticket>>;
|
|
3469
|
+
};
|
|
3549
3470
|
}
|
|
3550
3471
|
|
|
3551
3472
|
/**
|
|
@@ -3605,7 +3526,7 @@ declare class ContactsResource extends BaseResource<Contact, ContactCreate, Cont
|
|
|
3605
3526
|
/** Node-parity special op (hand-written in src/resources/special/contacts.ts). */
|
|
3606
3527
|
moveToCompany(sourceContactId: Identifier, destinationCompanyId: Identifier, opts?: MoveToCompanyOptions): Promise<MoveToCompanyResult | DryRunResult<Record<string, unknown>>>;
|
|
3607
3528
|
/** Node-parity special op (hand-written in src/resources/special/contacts.ts). */
|
|
3608
|
-
|
|
3529
|
+
fullProfile(id: Identifier, opts?: ContactFullProfileOptions): Promise<ContactFullProfile>;
|
|
3609
3530
|
}
|
|
3610
3531
|
|
|
3611
3532
|
/**
|
|
@@ -4506,6 +4427,33 @@ declare class ContractServiceUnitsResource extends BaseResource<ContractServiceU
|
|
|
4506
4427
|
}): Promise<ContractServiceUnitSummary | null>;
|
|
4507
4428
|
}
|
|
4508
4429
|
|
|
4430
|
+
/** Options for `fullProfile` (all optional; the pinned defaults). */
|
|
4431
|
+
interface ContractFullProfileOptions {
|
|
4432
|
+
/** Max service records (default 50, 1-2500 — the server's `service_limit` bound). */
|
|
4433
|
+
serviceLimit?: number;
|
|
4434
|
+
/** Max billing-rule records (default 50, 1-2500 — the server's `billing_rule_limit` bound). */
|
|
4435
|
+
billingRuleLimit?: number;
|
|
4436
|
+
}
|
|
4437
|
+
/**
|
|
4438
|
+
* The contract with its services, billing rules, recent charges and service
|
|
4439
|
+
* units in ONE call (issue #313). See the module doc for the root/part
|
|
4440
|
+
* semantics, the fixed recent-N charges part and the fixed units cap.
|
|
4441
|
+
*/
|
|
4442
|
+
interface ContractFullProfile {
|
|
4443
|
+
/** The contract record (the root read). */
|
|
4444
|
+
root: Contract;
|
|
4445
|
+
parts: {
|
|
4446
|
+
/** The contract's services (the bounded `contract_services.query` result envelope), or the typed absent degradation. */
|
|
4447
|
+
services: CompositePartValue<BoundedQueryResult<ContractService>>;
|
|
4448
|
+
/** The contract's billing rules (the bounded `contract_billing_rules.query` result envelope), or the typed absent degradation. */
|
|
4449
|
+
billing_rules: CompositePartValue<BoundedQueryResult<ContractBillingRule>>;
|
|
4450
|
+
/** The N newest charges (the count-anchored `latest` CHARGES_RECENT_CAP envelope), or the typed absent degradation. */
|
|
4451
|
+
charges: CompositePartValue<BoundedQueryResult<ContractCharge>>;
|
|
4452
|
+
/** The service units (the bounded `contract_service_units.query` envelope at the fixed SERVICE_UNITS_CAP), or the typed absent degradation. */
|
|
4453
|
+
units: CompositePartValue<BoundedQueryResult<ContractServiceUnit>>;
|
|
4454
|
+
};
|
|
4455
|
+
}
|
|
4456
|
+
|
|
4509
4457
|
/** The full LOB chain for one contract. */
|
|
4510
4458
|
interface ContractLineOfBusinessResult {
|
|
4511
4459
|
contractId: Identifier;
|
|
@@ -4531,10 +4479,10 @@ type ProfitabilityLabourCostMethod = 'billing_item_our_cost' | 'contract_role_co
|
|
|
4531
4479
|
/** A ladder rung that actually carried rows (plus 'missing'). */
|
|
4532
4480
|
type ProfitRateSource = 'billing_item.ourCost' | 'contract_role_costs.rate' | 'resource.internalCost' | 'provided' | 'missing';
|
|
4533
4481
|
interface ProfitabilityOptions {
|
|
4534
|
-
/** Window start, YYYY-MM-DD (
|
|
4535
|
-
dateFrom
|
|
4536
|
-
/** Window end, YYYY-MM-DD, >= dateFrom (
|
|
4537
|
-
dateTo
|
|
4482
|
+
/** Window start, YYYY-MM-DD. Optional pair with dateTo: BOTH omitted → the window defaults to the last full calendar month (UTC) and the result's period carries defaulted + note; exactly ONE supplied → typed CONFIG_ERROR (a half window is never sent). */
|
|
4483
|
+
dateFrom?: string;
|
|
4484
|
+
/** Window end, YYYY-MM-DD, >= dateFrom. Optional pair with dateFrom (same contract). */
|
|
4485
|
+
dateTo?: string;
|
|
4538
4486
|
/** The ladder rung rows start from (default 'billing_item_our_cost'; row-level fallback walks down). */
|
|
4539
4487
|
labourCostMethod?: ProfitabilityLabourCostMethod;
|
|
4540
4488
|
/** The caller-supplied labour rate; REQUIRED when labourCostMethod is 'provided'; optional final-rung catch-all otherwise. */
|
|
@@ -4724,6 +4672,10 @@ interface ContractsProfitabilityResult {
|
|
|
4724
4672
|
dateTo: string;
|
|
4725
4673
|
months: string[];
|
|
4726
4674
|
asOf: string;
|
|
4675
|
+
/** true only when dateFrom/dateTo were both omitted and the window defaulted (to the last full calendar month, UTC). */
|
|
4676
|
+
defaulted?: boolean;
|
|
4677
|
+
/** Present only when defaulted: the windowDefaulted note (month label + UTC basis). */
|
|
4678
|
+
note?: string;
|
|
4727
4679
|
};
|
|
4728
4680
|
currency: {
|
|
4729
4681
|
companyCurrencyID: number | null;
|
|
@@ -4832,10 +4784,12 @@ declare class ContractsResource extends BaseResource<Contract, ContractCreate, C
|
|
|
4832
4784
|
search(query: string, opts?: {
|
|
4833
4785
|
limit?: number;
|
|
4834
4786
|
}): Promise<ContractSummary[]>;
|
|
4835
|
-
/** Node-parity special op (hand-written in src/resources/special/contracts.ts). */
|
|
4787
|
+
/** Node-parity special op (hand-written in src/resources/special/contracts/profitability.ts). */
|
|
4836
4788
|
profitability(id: Identifier, opts: ProfitabilityOptions): Promise<ContractsProfitabilityResult>;
|
|
4837
|
-
/** Node-parity special op (hand-written in src/resources/special/contracts.ts). */
|
|
4789
|
+
/** Node-parity special op (hand-written in src/resources/special/contracts/lineOfBusiness.ts). */
|
|
4838
4790
|
lineOfBusiness(contractId: Identifier, associationId?: Identifier): Promise<ContractLineOfBusinessResult>;
|
|
4791
|
+
/** Node-parity special op (hand-written in src/resources/special/contracts/fullProfile.ts). */
|
|
4792
|
+
fullProfile(id: Identifier, opts?: ContractFullProfileOptions): Promise<ContractFullProfile>;
|
|
4839
4793
|
}
|
|
4840
4794
|
|
|
4841
4795
|
/**
|
|
@@ -5414,35 +5368,11 @@ declare class InvoicesResource extends BaseResource<Invoice, InvoiceCreate, Invo
|
|
|
5414
5368
|
expand?: boolean;
|
|
5415
5369
|
}): Promise<InvoiceSummary | null>;
|
|
5416
5370
|
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5417
|
-
customRange(from: string, to: string, opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5418
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5419
|
-
last14(opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5420
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5421
|
-
last24h(opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5422
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5423
|
-
last30(opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5424
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5425
|
-
last7(opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5426
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5427
|
-
last90(opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5428
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5429
|
-
lastFullFortnight(opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5430
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5431
|
-
lastFullMonth(opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5432
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5433
|
-
lastFullQuarter(opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5434
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5435
|
-
lastFullWeek(opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5436
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5437
5371
|
markupHtml(id: Identifier): Promise<string>;
|
|
5438
5372
|
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5439
5373
|
markupXml(id: Identifier): Promise<string>;
|
|
5440
5374
|
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5441
5375
|
pdf(id: Identifier): Promise<Buffer>;
|
|
5442
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5443
|
-
today(opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5444
|
-
/** Node-parity special op (hand-written in src/resources/special/invoices.ts). */
|
|
5445
|
-
yesterday(opts?: DateWindowOptions): Promise<Invoice[]>;
|
|
5446
5376
|
}
|
|
5447
5377
|
|
|
5448
5378
|
/**
|
|
@@ -6325,6 +6255,33 @@ declare class QuoteLocationsResource extends BaseResource<QuoteLocation, QuoteLo
|
|
|
6325
6255
|
}): Promise<QuoteLocationSummary | null>;
|
|
6326
6256
|
}
|
|
6327
6257
|
|
|
6258
|
+
/** Options for `withItems` (all optional; the pinned defaults). */
|
|
6259
|
+
interface QuoteWithItemsOptions {
|
|
6260
|
+
/** Max line-item records (default 50, 1-2500 — the server's `item_limit` bound). */
|
|
6261
|
+
itemLimit?: number;
|
|
6262
|
+
}
|
|
6263
|
+
/**
|
|
6264
|
+
* The quote with its line items in ONE call (issue #313): the composite the
|
|
6265
|
+
* MCP server served as `autotask_quote_get` (the plain `quotes.get` stays the
|
|
6266
|
+
* vendor read). The quote is the ROOT (a missing quote fails the call with
|
|
6267
|
+
* the typed NOT_FOUND); the items PART is the bounded fan-out
|
|
6268
|
+
* (`quote_items.query` filtered on `quoteID eq`), degrading independently to
|
|
6269
|
+
* `{ value: null, absent: <code> }`.
|
|
6270
|
+
*
|
|
6271
|
+
* The result is the served pre-marking shape `{ root, parts }`: the server
|
|
6272
|
+
* keeps its per-part untrusted marking on top, so the tool output is
|
|
6273
|
+
* field-for-field the composite the server served today. Wire: 1 root read +
|
|
6274
|
+
* 1 bounded query (1 page common case).
|
|
6275
|
+
*/
|
|
6276
|
+
interface QuoteWithItems {
|
|
6277
|
+
/** The quote record (the root read). */
|
|
6278
|
+
root: Quote;
|
|
6279
|
+
parts: {
|
|
6280
|
+
/** The line items (the bounded `quote_items.query` result envelope), or the typed absent degradation. */
|
|
6281
|
+
items: CompositePartValue<BoundedQueryResult<QuoteItem>>;
|
|
6282
|
+
};
|
|
6283
|
+
}
|
|
6284
|
+
|
|
6328
6285
|
/**
|
|
6329
6286
|
* QuotesResource — Quote resource (G4 batch A, plan key 'quotes').
|
|
6330
6287
|
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
@@ -6374,6 +6331,8 @@ declare class QuotesResource extends BaseResource<Quote, QuoteCreate, QuoteUpdat
|
|
|
6374
6331
|
search(query: string, opts?: {
|
|
6375
6332
|
limit?: number;
|
|
6376
6333
|
}): Promise<QuoteSummary[]>;
|
|
6334
|
+
/** Node-parity special op (hand-written in src/resources/special/quotes.ts). */
|
|
6335
|
+
withItems(id: Identifier, opts?: QuoteWithItemsOptions): Promise<QuoteWithItems>;
|
|
6377
6336
|
}
|
|
6378
6337
|
|
|
6379
6338
|
/**
|
|
@@ -6529,213 +6488,248 @@ declare class ResourceSkillsResource extends BaseResource<ResourceSkill, Resourc
|
|
|
6529
6488
|
}): Promise<ResourceSkillSummary | null>;
|
|
6530
6489
|
}
|
|
6531
6490
|
|
|
6532
|
-
interface
|
|
6533
|
-
|
|
6534
|
-
|
|
6535
|
-
/**
|
|
6536
|
-
|
|
6537
|
-
|
|
6538
|
-
|
|
6539
|
-
|
|
6540
|
-
|
|
6541
|
-
|
|
6542
|
-
interface OwnershipChange {
|
|
6543
|
-
/** The company id being re-owned. */
|
|
6544
|
-
id: Identifier;
|
|
6545
|
-
/** Current owner (null when the vendor omits it). */
|
|
6546
|
-
fromOwnerResourceID: number | null;
|
|
6547
|
-
/** The destination resource id every change applies. */
|
|
6548
|
-
toOwnerResourceID: Identifier;
|
|
6491
|
+
interface TicketChangeStatusResult {
|
|
6492
|
+
ticketId: Identifier;
|
|
6493
|
+
previousStatus: number | null;
|
|
6494
|
+
/** The post-PUT read-back value (verified === targetStatus or the op throws). */
|
|
6495
|
+
status: number;
|
|
6496
|
+
changed: true;
|
|
6497
|
+
/** The map-required fields the node filled with proven-safe defaults. */
|
|
6498
|
+
filledFields: string[];
|
|
6499
|
+
/** Discovery-merge count applied on PUT 500s (0 = first-try PUT). */
|
|
6500
|
+
discoveryMerges: number;
|
|
6549
6501
|
}
|
|
6550
|
-
interface
|
|
6551
|
-
|
|
6552
|
-
|
|
6553
|
-
|
|
6554
|
-
|
|
6502
|
+
interface TicketChangeStatusNoChange {
|
|
6503
|
+
ticketId: Identifier;
|
|
6504
|
+
changed: false;
|
|
6505
|
+
status: number;
|
|
6506
|
+
reason: 'NO_CHANGE';
|
|
6555
6507
|
}
|
|
6508
|
+
|
|
6556
6509
|
/**
|
|
6557
|
-
*
|
|
6558
|
-
*
|
|
6559
|
-
* the
|
|
6510
|
+
* One route fact on a composite child part that the default global `/query`
|
|
6511
|
+
* route did not serve (issue #35): the route attempted, the path it
|
|
6512
|
+
* attempted, and the HTTP status that failed it (null when the failure was
|
|
6513
|
+
* not an HTTP status — a shape or transport fault).
|
|
6560
6514
|
*/
|
|
6561
|
-
interface
|
|
6562
|
-
/**
|
|
6563
|
-
|
|
6515
|
+
interface TicketChildRouteFact {
|
|
6516
|
+
/** The route that was attempted (the plan-declared scoped collection read is 'scoped'). */
|
|
6517
|
+
route: 'global' | 'scoped';
|
|
6518
|
+
/** The path the route attempted (e.g. '/V1.0/TicketNotes/query' or '/V1.0/Tickets/527119/Notes'). */
|
|
6519
|
+
path: string;
|
|
6520
|
+
/** The HTTP status that failed the route (null for a non-HTTP failure). */
|
|
6521
|
+
httpStatus: number | null;
|
|
6564
6522
|
}
|
|
6565
6523
|
|
|
6524
|
+
/** Options for `fullContext` (all optional; the pinned defaults). */
|
|
6525
|
+
interface TicketFullContextOptions {
|
|
6526
|
+
/** Max note records (default 50). */
|
|
6527
|
+
noteLimit?: number;
|
|
6528
|
+
/** Max time-entry records (default 50). */
|
|
6529
|
+
timeEntryLimit?: number;
|
|
6530
|
+
/** Include the attachments part (default true) — METADATA only (ids + names); data download stays a separate op. */
|
|
6531
|
+
includeAttachments?: boolean;
|
|
6532
|
+
/** Include the histories part (default false — budget control). */
|
|
6533
|
+
includeHistories?: boolean;
|
|
6534
|
+
/** Long note/history text is truncated to this many chars in the served copy and flagged (default 500). */
|
|
6535
|
+
textLimit?: number;
|
|
6536
|
+
/** Opt-in name/label siblings (issue #77; default OFF — the sibling keys are ABSENT, not null, and no name/label resolution runs: zero added wire, byte-identical output). ON: the ticket row and each time-entry row carry the closed-scope siblings (the ticket picklist labels — status / priority / ticketType / issueType / subIssueType / source / queue — plus the contract / billing-code / role record-FK names and the resource names — creator + the time-entry resource) and the top-level `names` section. */
|
|
6537
|
+
names?: boolean;
|
|
6538
|
+
/** May LOWER the composite's name-read budget (default 20 — the count of COLD wire reads issued for name resolution; cache hits are free of the budget). The caller may lower it, never raise it; over-budget ids serve `name: null` and the names section sets `truncated: true` (never an error). */
|
|
6539
|
+
maxNameReads?: number;
|
|
6540
|
+
}
|
|
6541
|
+
/** One capped list part (a full page sets `capped: true` — more may exist). */
|
|
6542
|
+
interface TicketFullContextPart<TItem = Record<string, unknown>> {
|
|
6543
|
+
items: TItem[];
|
|
6544
|
+
/** True when the part returned a full page (the vendor query has no sort — more may exist past the cap). */
|
|
6545
|
+
capped: boolean;
|
|
6546
|
+
/** Present only when the part was served by the plan-declared parent-scoped route (issue #35: the global /query route 404/500'd in this zone). Absent when the default global route served the part (working-zone shape unchanged). */
|
|
6547
|
+
route?: 'scoped';
|
|
6548
|
+
/** Present only when the part status is 'miss' (issue #35): every declared route attempted, in attempt order. The part serves no items; the call itself succeeds (a part miss never fails the op — the same rule as the FK 'absent' parts). */
|
|
6549
|
+
routeFacts?: TicketChildRouteFact[];
|
|
6550
|
+
}
|
|
6551
|
+
/** The attachments part is METADATA only (data download stays a separate op). */
|
|
6552
|
+
interface TicketFullContextAttachments {
|
|
6553
|
+
ids: number[];
|
|
6554
|
+
/** The attachment `title` (null when absent). */
|
|
6555
|
+
names: Array<string | null>;
|
|
6556
|
+
capped: boolean;
|
|
6557
|
+
route?: 'scoped';
|
|
6558
|
+
routeFacts?: TicketChildRouteFact[];
|
|
6559
|
+
}
|
|
6566
6560
|
/**
|
|
6567
|
-
*
|
|
6568
|
-
*
|
|
6569
|
-
*
|
|
6561
|
+
* The full ticket context in ONE call (plan T3): the ticket + its context
|
|
6562
|
+
* parts (the proven `getContext` 5-part composite — dangling FKs come back
|
|
6563
|
+
* null and are reported in `parts`, a part miss never fails the op) + its
|
|
6564
|
+
* notes, time entries, attachment metadata and (opt-in) histories via the
|
|
6565
|
+
* timeline's bounded query machinery. 8 bounded reads (10 with
|
|
6566
|
+
* `includeHistories`); zero mutating. The ticket itself missing → the
|
|
6567
|
+
* `getContext` NotFoundError propagates.
|
|
6570
6568
|
*/
|
|
6571
|
-
|
|
6572
|
-
|
|
6573
|
-
|
|
6574
|
-
|
|
6575
|
-
|
|
6576
|
-
|
|
6577
|
-
/**
|
|
6578
|
-
|
|
6579
|
-
/**
|
|
6580
|
-
|
|
6581
|
-
|
|
6582
|
-
|
|
6583
|
-
/**
|
|
6584
|
-
|
|
6585
|
-
|
|
6586
|
-
|
|
6587
|
-
/**
|
|
6588
|
-
|
|
6589
|
-
|
|
6590
|
-
|
|
6591
|
-
|
|
6592
|
-
|
|
6593
|
-
|
|
6594
|
-
|
|
6595
|
-
|
|
6596
|
-
|
|
6597
|
-
|
|
6598
|
-
|
|
6599
|
-
|
|
6600
|
-
|
|
6601
|
-
|
|
6602
|
-
|
|
6603
|
-
|
|
6604
|
-
expand?: boolean;
|
|
6605
|
-
}): Promise<ResourceSummary | null>;
|
|
6606
|
-
/** Search Resource records: bounded contains on firstName + lastName (no vendor free-text search exists);
|
|
6607
|
-
* limit defaults to 25, max 500. */
|
|
6608
|
-
search(query: string, opts?: {
|
|
6609
|
-
limit?: number;
|
|
6610
|
-
}): Promise<ResourceSummary[]>;
|
|
6611
|
-
/** Node-parity special op (hand-written in src/resources/special/resources.ts). */
|
|
6612
|
-
transferOwnership(sourceResourceIds: Identifier[], destinationResourceId: Identifier, opts?: TransferOwnershipOptions): Promise<TransferOwnershipResult | TransferOwnershipDryRunResult>;
|
|
6613
|
-
/** Node-parity special op (hand-written in src/resources/special/resources.ts). */
|
|
6614
|
-
whoAmI(): Promise<ResourceSummary | null>;
|
|
6569
|
+
interface TicketFullContext {
|
|
6570
|
+
ticket: Ticket;
|
|
6571
|
+
/** Null when the ticket carries no companyID (or the record misses). */
|
|
6572
|
+
company: Company | null;
|
|
6573
|
+
/** Null when the ticket carries no contactID (or the record misses). */
|
|
6574
|
+
contact: Contact | null;
|
|
6575
|
+
/** Null when the ticket carries no assignedResourceID (or the record misses). */
|
|
6576
|
+
assignedResource: Resource | null;
|
|
6577
|
+
/** Null when the ticket carries no projectID (or the record misses). */
|
|
6578
|
+
project: Project | null;
|
|
6579
|
+
notes: TicketFullContextPart;
|
|
6580
|
+
timeEntries: TicketFullContextPart;
|
|
6581
|
+
/** Present when `includeAttachments` is not false (default: present). */
|
|
6582
|
+
attachments: TicketFullContextAttachments;
|
|
6583
|
+
/** Present only when `includeHistories: true`. */
|
|
6584
|
+
histories?: TicketFullContextPart;
|
|
6585
|
+
/** True when ANY part hit its cap (more may exist past the cap) — or any name read hit the name-read budget (issue #77, `names: true`). */
|
|
6586
|
+
truncated: boolean;
|
|
6587
|
+
/** The opt-in name/label section (issue #77) — present EXACTLY when `names: true` (the sibling keys are absent from the rows otherwise). */
|
|
6588
|
+
names?: CompositeNamesSection;
|
|
6589
|
+
/** The Line of Business chain that applies to this ticket — present EXACTLY when `names: true`. Resolved from the ticket's own `organizationalLevelAssociationID` when set, otherwise from the ticket's CONTRACT's pointer (`source: 'contract'`, `contractId` says which; the association is maintained on contracts in practice, so this is the common path). The three hops: the OrganizationalLevelAssociation, the OrganizationalLevel2 (the customizable "Line of Business" label) and the OrganizationalLevel1 (the division). An absent pointer anywhere is reported with all-`missing` markers; a dangling record is `unresolved`; a broken chain is never an error. Costs 1 association + up to 2 level reads inside `maxNameReads`, plus one cached contract read when the fallback runs. */
|
|
6590
|
+
lineOfBusiness?: LineOfBusinessNames;
|
|
6591
|
+
/** Per-part status: FK parts 'ok' | 'absent' (dangling/missing FK); list parts 'ok' (served by the global /query route — a 0-row filtered query is a legitimate answer), 'ok-scoped' (issue #35: the plan-declared scoped route served the part because the global route 404/500'd in this zone — only where the plan declares a scoped route), or 'miss' (issue #35: every declared route failed; the part serves no items, recorded in the part's routeFacts). */
|
|
6592
|
+
parts: {
|
|
6593
|
+
company: 'ok' | 'absent';
|
|
6594
|
+
contact: 'ok' | 'absent';
|
|
6595
|
+
assignedResource: 'ok' | 'absent';
|
|
6596
|
+
project: 'ok' | 'absent';
|
|
6597
|
+
notes: 'ok' | 'ok-scoped' | 'miss';
|
|
6598
|
+
timeEntries: 'ok' | 'ok-scoped' | 'miss';
|
|
6599
|
+
attachments: 'ok' | 'ok-scoped' | 'miss';
|
|
6600
|
+
histories?: 'ok' | 'ok-scoped' | 'miss';
|
|
6601
|
+
};
|
|
6615
6602
|
}
|
|
6616
6603
|
|
|
6617
|
-
/**
|
|
6618
|
-
|
|
6619
|
-
|
|
6620
|
-
|
|
6621
|
-
|
|
6622
|
-
|
|
6623
|
-
|
|
6624
|
-
|
|
6625
|
-
|
|
6626
|
-
|
|
6627
|
-
|
|
6628
|
-
|
|
6629
|
-
|
|
6630
|
-
|
|
6631
|
-
*
|
|
6632
|
-
*
|
|
6633
|
-
|
|
6634
|
-
|
|
6635
|
-
|
|
6636
|
-
|
|
6637
|
-
|
|
6638
|
-
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
6639
|
-
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
6640
|
-
* type-level escape hatch. */
|
|
6641
|
-
resolve(identifier: number | string, opts?: {
|
|
6642
|
-
expand?: boolean;
|
|
6643
|
-
}): Promise<ResourceTimeOffAdditionalSummary | null>;
|
|
6644
|
-
/** Node-parity special op (hand-written in src/resources/special/resource_time_off_additional.ts). */
|
|
6645
|
-
getByResource(resourceId: Identifier): Promise<ResourceTimeOffAdditional[]>;
|
|
6604
|
+
/** The full LOB chain for one ticket. */
|
|
6605
|
+
interface TicketLineOfBusinessResult {
|
|
6606
|
+
ticketId: Identifier;
|
|
6607
|
+
/** Where the association id came from: the ticket's own pointer, its contract's, the caller's argument, or null when none was found. */
|
|
6608
|
+
associationSource: 'ticket' | 'contract' | 'argument' | null;
|
|
6609
|
+
/** The contract consulted for the fallback (null when the ticket pointer or the argument supplied the id). */
|
|
6610
|
+
contractId: Identifier | null;
|
|
6611
|
+
/** The association row when served, otherwise null. */
|
|
6612
|
+
association: OrganizationalLevelAssociation | null;
|
|
6613
|
+
/** The OrganizationalLevel2 row (the customizable "Line of Business" label), otherwise null. */
|
|
6614
|
+
organizationalLevel2: OrganizationalLevel2 | null;
|
|
6615
|
+
/** The OrganizationalLevel1 row (the division), otherwise null. */
|
|
6616
|
+
organizationalLevel1: OrganizationalLevel1 | null;
|
|
6617
|
+
/** Explicit per-hop markers — a broken chain is reported, never thrown.
|
|
6618
|
+
* `capped` cannot occur on this op: its fixed budget always covers the full
|
|
6619
|
+
* chain (1 association + up to 2 level reads). */
|
|
6620
|
+
markers: {
|
|
6621
|
+
association: LineOfBusinessMarker;
|
|
6622
|
+
organizationalLevel2: LineOfBusinessMarker;
|
|
6623
|
+
organizationalLevel1: LineOfBusinessMarker;
|
|
6624
|
+
};
|
|
6646
6625
|
}
|
|
6647
6626
|
|
|
6648
|
-
|
|
6649
|
-
|
|
6650
|
-
|
|
6651
|
-
|
|
6652
|
-
|
|
6653
|
-
|
|
6654
|
-
*/
|
|
6655
|
-
|
|
6656
|
-
|
|
6657
|
-
|
|
6658
|
-
|
|
6659
|
-
|
|
6660
|
-
|
|
6661
|
-
|
|
6662
|
-
|
|
6663
|
-
|
|
6664
|
-
|
|
6665
|
-
count(params?: ResourceTimeOffApproversResourceQueryParams): Promise<number>;
|
|
6666
|
-
/** Get one record by parent + id (/V1.0/Resources/{parentId}/TimeOffApprovers/{id} — vendor item envelope; item: null → NotFoundError). */
|
|
6667
|
-
get(parentId: Identifier, id: Identifier, opts?: {
|
|
6668
|
-
fresh?: boolean;
|
|
6669
|
-
} | null): Promise<ResourceTimeOffApprover>;
|
|
6670
|
-
/** Resolve a ResourceTimeOffApprover from a numeric id (or, where the vendor indexes a primary text field,
|
|
6671
|
-
* from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
|
|
6672
|
-
* a bare value rejects with a config error (ids only);
|
|
6673
|
-
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
6674
|
-
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
6675
|
-
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
6676
|
-
* type-level escape hatch. */
|
|
6677
|
-
resolve(identifier: number | string, opts?: {
|
|
6678
|
-
expand?: boolean;
|
|
6679
|
-
}): Promise<ResourceTimeOffApproverSummary | null>;
|
|
6627
|
+
interface TicketSlaHealth {
|
|
6628
|
+
ticketId: Identifier;
|
|
6629
|
+
/** SLA result rows found for the ticket. */
|
|
6630
|
+
slaCount: number;
|
|
6631
|
+
/** `true` when every milestone of every SLA is met (a ticket with no SLAs is healthy). */
|
|
6632
|
+
healthy: boolean;
|
|
6633
|
+
/** True when a full page of SLA rows came back (more may exist; `healthy` is a lower bound). */
|
|
6634
|
+
truncated: boolean;
|
|
6635
|
+
slas: Array<{
|
|
6636
|
+
id: number;
|
|
6637
|
+
name: string | null;
|
|
6638
|
+
milestones: Array<{
|
|
6639
|
+
name: 'firstResponse' | 'resolution' | 'resolutionPlan';
|
|
6640
|
+
met: boolean | null;
|
|
6641
|
+
elapsedHours: number | null;
|
|
6642
|
+
}>;
|
|
6643
|
+
}>;
|
|
6680
6644
|
}
|
|
6681
|
-
|
|
6682
|
-
|
|
6683
|
-
|
|
6684
|
-
|
|
6685
|
-
|
|
6686
|
-
|
|
6687
|
-
|
|
6688
|
-
|
|
6689
|
-
|
|
6690
|
-
|
|
6691
|
-
|
|
6692
|
-
|
|
6693
|
-
|
|
6694
|
-
|
|
6695
|
-
|
|
6696
|
-
|
|
6697
|
-
|
|
6698
|
-
/**
|
|
6699
|
-
|
|
6700
|
-
|
|
6701
|
-
|
|
6702
|
-
|
|
6703
|
-
|
|
6704
|
-
|
|
6705
|
-
|
|
6706
|
-
|
|
6707
|
-
|
|
6708
|
-
|
|
6709
|
-
|
|
6710
|
-
|
|
6711
|
-
|
|
6645
|
+
interface TicketSummaryResult {
|
|
6646
|
+
ticketId: Identifier;
|
|
6647
|
+
ticketNumber: string | null;
|
|
6648
|
+
title: string | null;
|
|
6649
|
+
/** `description` truncated to `summaryTextLimit` (default 500 chars, '…' suffix). */
|
|
6650
|
+
description: string;
|
|
6651
|
+
/** Length of the ORIGINAL description. */
|
|
6652
|
+
descriptionLength: number;
|
|
6653
|
+
descriptionTruncated: boolean;
|
|
6654
|
+
status: number | null;
|
|
6655
|
+
priority: number | null;
|
|
6656
|
+
companyID: number | null;
|
|
6657
|
+
contactID: number | null;
|
|
6658
|
+
assignedResourceID: number | null;
|
|
6659
|
+
projectID: number | null;
|
|
6660
|
+
createDate: string | null;
|
|
6661
|
+
dueDateTime: string | null;
|
|
6662
|
+
/** floor((now - createDate) / day) — null when createDate is absent. */
|
|
6663
|
+
ageDays: number | null;
|
|
6664
|
+
}
|
|
6665
|
+
interface TicketTimelineEvent {
|
|
6666
|
+
kind: 'note' | 'timeEntry' | 'history';
|
|
6667
|
+
id: number;
|
|
6668
|
+
date: string | null;
|
|
6669
|
+
/** `description`/`detail` truncated to `textLimit` (default 500 chars). */
|
|
6670
|
+
text: string | null;
|
|
6671
|
+
/** Notes only. */
|
|
6672
|
+
title: string | null;
|
|
6673
|
+
/** Time entries only. */
|
|
6674
|
+
hours: number | null;
|
|
6675
|
+
/** Histories only. */
|
|
6676
|
+
action: string | null;
|
|
6677
|
+
/** True when `text` was cut at `textLimit` (the full text is on the source record). */
|
|
6678
|
+
textTruncated: boolean;
|
|
6679
|
+
}
|
|
6680
|
+
interface TicketTimeline {
|
|
6681
|
+
ticketId: Identifier;
|
|
6682
|
+
count: number;
|
|
6683
|
+
/** Ascending by date (null dates last), bounded by `limit` (default 100, max 500). */
|
|
6684
|
+
events: TicketTimelineEvent[];
|
|
6685
|
+
/**
|
|
6686
|
+
* True when events were left out: a source returned `limit` rows (the
|
|
6687
|
+
* vendor query has no sort, so more may exist) or the merged list was cut
|
|
6688
|
+
* to `limit`. Narrow `since`/`until` to page through the rest.
|
|
6689
|
+
*/
|
|
6690
|
+
truncated: boolean;
|
|
6691
|
+
/** Which sources (`notes`, `timeEntries`, `histories`) returned a full page. */
|
|
6692
|
+
cappedSources: string[];
|
|
6693
|
+
/**
|
|
6694
|
+
* Present only when at least one source deviated from the default global
|
|
6695
|
+
* `/query` route (issue #35): per-source route status — 'ok' (the global
|
|
6696
|
+
* route served it), 'ok-scoped' (the plan-declared scoped route served it
|
|
6697
|
+
* because the global route 404/500'd in this zone), 'miss' (every declared
|
|
6698
|
+
* route failed; the source contributed no events). Absent in the working
|
|
6699
|
+
* zone (the shape is unchanged).
|
|
6700
|
+
*/
|
|
6701
|
+
sourceRoutes?: {
|
|
6702
|
+
notes: 'ok' | 'ok-scoped' | 'miss';
|
|
6703
|
+
timeEntries: 'ok' | 'ok-scoped' | 'miss';
|
|
6704
|
+
histories?: 'ok' | 'ok-scoped' | 'miss';
|
|
6705
|
+
};
|
|
6712
6706
|
}
|
|
6713
6707
|
|
|
6714
6708
|
/**
|
|
6715
|
-
*
|
|
6709
|
+
* TicketsResource — Ticket resource (G4 batch A, plan key 'tickets').
|
|
6716
6710
|
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
6717
6711
|
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
6718
6712
|
*/
|
|
6719
6713
|
|
|
6720
|
-
/** Query params for
|
|
6721
|
-
type
|
|
6722
|
-
declare class
|
|
6714
|
+
/** Query params for TicketsResource (the G3 filter surface; no per-resource invention). */
|
|
6715
|
+
type TicketsResourceQueryParams = QueryParams;
|
|
6716
|
+
declare class TicketsResource extends BaseResource<Ticket, TicketCreate, TicketUpdate> {
|
|
6723
6717
|
constructor(http: HttpClient, pageSize: number);
|
|
6724
|
-
/** Query
|
|
6725
|
-
query(params?:
|
|
6726
|
-
/** Get every
|
|
6727
|
-
queryAll(params?:
|
|
6718
|
+
/** Query Ticket records with the G3 filter surface (server-side JSON filter). */
|
|
6719
|
+
query(params?: TicketsResourceQueryParams): AsyncIterable<Ticket>;
|
|
6720
|
+
/** Get every Ticket record (the MCP-preferred read; 1000-page guarded). */
|
|
6721
|
+
queryAll(params?: TicketsResourceQueryParams): Promise<Ticket[]>;
|
|
6728
6722
|
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
6729
|
-
count(params?:
|
|
6723
|
+
count(params?: TicketsResourceQueryParams): Promise<number>;
|
|
6730
6724
|
/** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
|
|
6731
6725
|
get(id: Identifier, opts?: {
|
|
6732
6726
|
fresh?: boolean;
|
|
6733
|
-
} | null): Promise<
|
|
6727
|
+
} | null): Promise<Ticket>;
|
|
6734
6728
|
/** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
|
|
6735
6729
|
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
6736
6730
|
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
6737
6731
|
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
6738
|
-
create(data:
|
|
6732
|
+
create(data: TicketCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<TicketCreate>>;
|
|
6739
6733
|
/** Update a record (PUT on the COLLECTION — the vendored spec's item path is GET-only; the vendor
|
|
6740
6734
|
* keys the record by the id in the body). The vendor validates the FULL model on this route (V2), so a
|
|
6741
6735
|
* partial body is merged into the CURRENT record first: one fresh GET (which also serves the
|
|
@@ -6745,43 +6739,223 @@ declare class RolesResource extends BaseResource<Role, RoleCreate, RoleUpdate> {
|
|
|
6745
6739
|
* `dryRun: true` returns the pinned envelope whose `data` is the merged body (the exact confirmed
|
|
6746
6740
|
* wire) with the best-effort diff, from that same single read; a caller-supplied lastModifiedDate that
|
|
6747
6741
|
* mismatches the vendor's current value throws STALE_OBJECT before the mutation. */
|
|
6748
|
-
update(id: Identifier, data:
|
|
6749
|
-
/** Resolve a
|
|
6750
|
-
* from an exact match on
|
|
6742
|
+
update(id: Identifier, data: TicketUpdate, opts?: MutationOpts): Promise<OperationResult | DryRunResult<TicketUpdate>>;
|
|
6743
|
+
/** Resolve a Ticket from a numeric id (or, where the vendor indexes a primary text field,
|
|
6744
|
+
* from an exact match on title). A numeric id miss throws NOT_FOUND; a complete
|
|
6751
6745
|
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
6752
6746
|
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
6753
6747
|
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
6754
6748
|
* type-level escape hatch. */
|
|
6755
6749
|
resolve(identifier: number | string, opts?: {
|
|
6756
6750
|
expand?: boolean;
|
|
6757
|
-
}): Promise<
|
|
6758
|
-
/**
|
|
6759
|
-
|
|
6751
|
+
}): Promise<TicketSummary | null>;
|
|
6752
|
+
/** findByTicketNumber — exact 'ticketNumber' filter; ambiguity throws RESOLUTION_AMBIGUOUS with the candidate ids. */
|
|
6753
|
+
findByTicketNumber(value: string): Promise<TicketSummary | null>;
|
|
6754
|
+
/** Search Ticket records: bounded contains on title (no vendor free-text search exists);
|
|
6755
|
+
* limit defaults to 25, max 500. Optional companyID scopes the search to one company's tickets (and-joined
|
|
6756
|
+
* with the title match, server-side); includeFields projects the returned columns (id is always returned). */
|
|
6760
6757
|
search(query: string, opts?: {
|
|
6761
6758
|
limit?: number;
|
|
6762
|
-
|
|
6759
|
+
companyID?: Identifier;
|
|
6760
|
+
includeFields?: string[];
|
|
6761
|
+
}): Promise<TicketSummary[]>;
|
|
6762
|
+
/** Get the Ticket with its primary context records in one call (each part a single-record
|
|
6763
|
+
* fetch; no sub-lists; absent/dangling references come back null). */
|
|
6764
|
+
getContext(id: Identifier): Promise<TicketContext>;
|
|
6765
|
+
/** Node-parity special op (hand-written in src/resources/special/tickets/changeStatus.ts). */
|
|
6766
|
+
changeStatus(id: Identifier, targetStatus: number, fields?: Record<string, unknown>, opts?: MutationOpts): Promise<TicketChangeStatusResult | TicketChangeStatusNoChange | DryRunResult<Record<string, unknown>>>;
|
|
6767
|
+
/** Node-parity special op (hand-written in src/resources/special/tickets/sla.ts). */
|
|
6768
|
+
slaHealthCheck(id: Identifier, opts?: {
|
|
6769
|
+
now?: Date;
|
|
6770
|
+
}): Promise<TicketSlaHealth>;
|
|
6771
|
+
/** Node-parity special op (hand-written in src/resources/special/tickets/sla.ts). */
|
|
6772
|
+
summary(id: Identifier, opts?: {
|
|
6773
|
+
summaryTextLimit?: number;
|
|
6774
|
+
now?: Date;
|
|
6775
|
+
}): Promise<TicketSummaryResult>;
|
|
6776
|
+
/** Node-parity special op (hand-written in src/resources/special/tickets/timeline.ts). */
|
|
6777
|
+
timeline(id: Identifier, opts?: {
|
|
6778
|
+
since?: string;
|
|
6779
|
+
until?: string;
|
|
6780
|
+
limit?: number;
|
|
6781
|
+
textLimit?: number;
|
|
6782
|
+
includeHistories?: boolean;
|
|
6783
|
+
}): Promise<TicketTimeline>;
|
|
6784
|
+
/** Node-parity special op (hand-written in src/resources/special/tickets/fullContext.ts). */
|
|
6785
|
+
fullContext(id: Identifier, opts?: TicketFullContextOptions): Promise<TicketFullContext>;
|
|
6786
|
+
/** Node-parity special op (hand-written in src/resources/special/tickets/statusSemantics.ts). */
|
|
6787
|
+
statusSemantics(opts?: TicketStatusOptions): Promise<TicketStatusSemantics>;
|
|
6788
|
+
/** Node-parity special op (hand-written in src/resources/special/tickets/forResource.ts). */
|
|
6789
|
+
forResource(resourceID: Identifier, opts?: TicketsForResourceListOptions): Promise<TicketsForResourceResult>;
|
|
6790
|
+
forResource(resourceID: Identifier, opts: TicketsForResourceCountOptions): Promise<TicketsForResourceCountResult>;
|
|
6791
|
+
forResource(resourceID: Identifier, opts?: TicketsForResourceOptions): Promise<TicketsForResourceResult | TicketsForResourceCountResult>;
|
|
6792
|
+
/** Node-parity special op (hand-written in src/resources/special/tickets/lineOfBusiness.ts). */
|
|
6793
|
+
lineOfBusiness(ticketId: Identifier, associationId?: Identifier): Promise<TicketLineOfBusinessResult>;
|
|
6794
|
+
}
|
|
6795
|
+
|
|
6796
|
+
type TicketAssignmentScope = 'primary' | 'secondary' | 'both';
|
|
6797
|
+
interface TicketsForResourceOptions {
|
|
6798
|
+
/** Which assignments to include (default 'both'). */
|
|
6799
|
+
scope?: TicketAssignmentScope;
|
|
6800
|
+
/** Keep only open tickets (default false) — the closed set is the tenant's picklist, see `closedStatus` in the result. */
|
|
6801
|
+
openOnly?: boolean;
|
|
6802
|
+
/** Explicit closed ids, overriding the resolved picklist (a caller decision, reported as source 'picklist'). */
|
|
6803
|
+
excludeStatusIds?: number[];
|
|
6804
|
+
/** Total ticket cap (1-500, default 100); `capped` is true when anything was dropped. */
|
|
6805
|
+
limit?: number;
|
|
6806
|
+
/** Extra Ticket fields on top of the pinned projection (id, ticketNumber, title, status, assignedResourceID, companyID). */
|
|
6807
|
+
includeFields?: string[];
|
|
6808
|
+
/** `false` (default true, unchanged): throw `STATUS_SEMANTICS_UNRESOLVED` instead of falling back to the assumed closed id 5 when the tenant picklist cannot be resolved (issue #244). */
|
|
6809
|
+
allowAssumed?: boolean;
|
|
6810
|
+
/** `true` (issue #248): return only the OPEN-ticket counts (`TicketsForResourceCountResult`, no ticket rows). `openOnly` and `limit` do not apply (`limit` is not validated): the open filter is always on and no rows are returned. The secondary link read follows next-page links (ids only) up to 20 pages, so `capped` is true only past 10,000 links. */
|
|
6811
|
+
countOnly?: boolean;
|
|
6812
|
+
}
|
|
6813
|
+
/** Options that select the rows result (`countOnly` absent or false). */
|
|
6814
|
+
type TicketsForResourceListOptions = Omit<TicketsForResourceOptions, 'countOnly'> & {
|
|
6815
|
+
countOnly?: false;
|
|
6816
|
+
};
|
|
6817
|
+
/** Options that select the count-only result. */
|
|
6818
|
+
type TicketsForResourceCountOptions = Omit<TicketsForResourceOptions, 'countOnly'> & {
|
|
6819
|
+
countOnly: true;
|
|
6820
|
+
};
|
|
6821
|
+
/**
|
|
6822
|
+
* The count-only result (issue #248). All figures count OPEN tickets (the same
|
|
6823
|
+
* filter as `tickets.count` with `status` not in the closed set): `primary`
|
|
6824
|
+
* equals `tickets.count({ filter: [assignedResourceID eq R, open leaf] })`,
|
|
6825
|
+
* `secondary` is the de-duplicated open secondary ticket ids, `both` their
|
|
6826
|
+
* overlap, `open` the union (primary + secondary - both).
|
|
6827
|
+
*/
|
|
6828
|
+
interface TicketsForResourceCountResult {
|
|
6829
|
+
resourceID: number;
|
|
6830
|
+
scope: TicketAssignmentScope;
|
|
6831
|
+
primary: number;
|
|
6832
|
+
secondary: number;
|
|
6833
|
+
both: number;
|
|
6834
|
+
open: number;
|
|
6835
|
+
/** True only when the secondary link read had more pages than it read, so `secondary`/`both`/`open` may undercount. */
|
|
6836
|
+
capped: boolean;
|
|
6837
|
+
closedStatus: TicketStatusDisclosure;
|
|
6838
|
+
}
|
|
6839
|
+
interface TicketsForResourceResult {
|
|
6840
|
+
resourceID: number;
|
|
6841
|
+
scope: TicketAssignmentScope;
|
|
6842
|
+
openOnly: boolean;
|
|
6843
|
+
/** The union, de-duplicated by id, ascending. */
|
|
6844
|
+
tickets: Ticket[];
|
|
6845
|
+
/** Ids returned for the primary read. */
|
|
6846
|
+
primaryIds: number[];
|
|
6847
|
+
/** Ticket ids the secondary link rows point at (and the ticket read returned). */
|
|
6848
|
+
secondaryIds: number[];
|
|
6849
|
+
/** The de-duplicated intersection: primary AND secondary. */
|
|
6850
|
+
bothIds: number[];
|
|
6851
|
+
/** `open` counts the OPEN tickets among those returned (a closed ticket rides the set when openOnly is false); `primary`/`secondary`/`both` count ids in the union. All four describe the returned, possibly capped, set. */
|
|
6852
|
+
counts: {
|
|
6853
|
+
primary: number;
|
|
6854
|
+
secondary: number;
|
|
6855
|
+
both: number;
|
|
6856
|
+
open: number;
|
|
6857
|
+
};
|
|
6858
|
+
/** True when a link page, the primary page or the total cap cut the answer. */
|
|
6859
|
+
capped: boolean;
|
|
6860
|
+
/** Ticket ids the link rows named that the ticket read did not return (deleted or invisible to this API user). */
|
|
6861
|
+
unresolvedIds: number[];
|
|
6862
|
+
/** The closed set this call filtered on, and its provenance (issue #226 disclosure). */
|
|
6863
|
+
closedStatus: TicketStatusDisclosure;
|
|
6763
6864
|
}
|
|
6764
6865
|
|
|
6866
|
+
/** Options for `workload` (all optional; the pinned defaults). */
|
|
6867
|
+
interface ResourceWorkloadOptions {
|
|
6868
|
+
/** Max open-ticket records in the rows part (default 50, 1-2500 — the server's `ticket_limit` bound; the join itself is additionally capped at 500 by `tickets.forResource`). */
|
|
6869
|
+
ticketLimit?: number;
|
|
6870
|
+
/** Max assignment / task-detail records (default 50, 1-2500 — the server's `task_limit` bound). */
|
|
6871
|
+
taskLimit?: number;
|
|
6872
|
+
/** Max time-off-request records (default 50, 1-2500 — the server's `time_off_limit` bound). */
|
|
6873
|
+
timeOffLimit?: number;
|
|
6874
|
+
}
|
|
6875
|
+
/** The exact open totals beside the rows (the countOnly read's figures). */
|
|
6876
|
+
interface WorkloadOpenTotals {
|
|
6877
|
+
primary: unknown;
|
|
6878
|
+
secondary: unknown;
|
|
6879
|
+
both: unknown;
|
|
6880
|
+
open: unknown;
|
|
6881
|
+
capped: unknown;
|
|
6882
|
+
}
|
|
6883
|
+
/** The open-tickets part value: the forResource rows + the exact totals beside them (or the typed reason the count read failed). */
|
|
6884
|
+
type WorkloadOpenTicketsValue = TicketsForResourceResult & {
|
|
6885
|
+
/** The exact open totals from the countOnly read (no row cap). */
|
|
6886
|
+
totals?: WorkloadOpenTotals;
|
|
6887
|
+
/** Present only when the countOnly read degraded: the part's typed code (the rows stand, the totals do not). */
|
|
6888
|
+
totalsAbsent?: string;
|
|
6889
|
+
};
|
|
6765
6890
|
/**
|
|
6766
|
-
*
|
|
6891
|
+
* The resource's workload in ONE call (issue #313): the composite the MCP
|
|
6892
|
+
* server served as `autotask_resource_workload` — open tickets, assignments,
|
|
6893
|
+
* balances, time off.
|
|
6894
|
+
*
|
|
6895
|
+
* The resource is the ROOT (a missing resource fails the call with the typed
|
|
6896
|
+
* NOT_FOUND); the five PARTS are bounded reads through the registry seam
|
|
6897
|
+
* (then the task-details join), degrading independently to `{ value: null, absent:
|
|
6898
|
+
* <code> }`.
|
|
6899
|
+
*
|
|
6900
|
+
* - `open_tickets`: the SDK's `tickets.forResource` rows (primary OR
|
|
6901
|
+
* secondary assignments, de-duplicated, open-only on the tenant's closed
|
|
6902
|
+
* set, the join capped at 500) MERGED with a second `tickets.forResource`
|
|
6903
|
+
* countOnly read for the exact totals `{ primary, secondary, both, open,
|
|
6904
|
+
* capped }` beside the rows (`counts` on the rows describe only the
|
|
6905
|
+
* returned, possibly capped, set). A failed count read says why
|
|
6906
|
+
* (`totalsAbsent: <code>`) instead of vanishing. `allowAssumed: false` on
|
|
6907
|
+
* both reads: the answer never rests on a guessed closed id; the part
|
|
6908
|
+
* degrades instead.
|
|
6909
|
+
* - `task_assignments`: `service_call_task_resources.query { resourceID eq }`.
|
|
6910
|
+
* - `task_details`: the tasks behind the assignments — joined through the
|
|
6911
|
+
* assignment task ids (`taskID in`, bounded by IN_FILTER_CAP); no
|
|
6912
|
+
* assignments (or the assignments part degraded) -> `absent: 'NO_ASSIGNMENTS'`.
|
|
6913
|
+
* - `time_off_balances`: `resource_time_off_balances.getByResource [id]`.
|
|
6914
|
+
* - `time_off_requests`: `time_off_requests.query { resourceID eq }`.
|
|
6915
|
+
*
|
|
6916
|
+
* The result is the served pre-marking shape `{ root, parts }`: the server
|
|
6917
|
+
* keeps its per-part untrusted marking on top, so the tool output is
|
|
6918
|
+
* field-for-field the composite the server served today. Wire: 1 root read +
|
|
6919
|
+
* 5 parts (incl. the two forResource reads), then 0-1 (the task-details join).
|
|
6920
|
+
*/
|
|
6921
|
+
interface ResourceWorkload {
|
|
6922
|
+
/** The resource record (the root read). */
|
|
6923
|
+
root: Resource;
|
|
6924
|
+
parts: {
|
|
6925
|
+
/** The open tickets (the forResource rows + the exact `totals` beside them, or `totalsAbsent` when the count read degraded), or the typed absent degradation. */
|
|
6926
|
+
open_tickets: CompositePartValue<WorkloadOpenTicketsValue>;
|
|
6927
|
+
/** The resource's task assignments (the bounded `service_call_task_resources.query` result envelope), or the typed absent degradation. */
|
|
6928
|
+
task_assignments: CompositePartValue<BoundedQueryResult<ServiceCallTaskResource>>;
|
|
6929
|
+
/** The tasks behind the assignments (the bounded `service_call_tasks.query` result envelope), or the typed absent degradation (`NO_ASSIGNMENTS` when there are no assignment task ids). */
|
|
6930
|
+
task_details: CompositePartValue<BoundedQueryResult<ServiceCallTask>>;
|
|
6931
|
+
/** The time-off balances (the `resource_time_off_balances.getByResource` record list), or the typed absent degradation. */
|
|
6932
|
+
time_off_balances: CompositePartValue<ResourceTimeOffBalance[]>;
|
|
6933
|
+
/** The time-off requests (the bounded `time_off_requests.query` result envelope), or the typed absent degradation. */
|
|
6934
|
+
time_off_requests: CompositePartValue<BoundedQueryResult<TimeOffRequest>>;
|
|
6935
|
+
};
|
|
6936
|
+
}
|
|
6937
|
+
|
|
6938
|
+
/**
|
|
6939
|
+
* ResourcesResource — Resource resource (G5 batch B, plan key 'resources').
|
|
6767
6940
|
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
6768
6941
|
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
6769
6942
|
*/
|
|
6770
6943
|
|
|
6771
|
-
/** Query params for
|
|
6772
|
-
type
|
|
6773
|
-
declare class
|
|
6774
|
-
|
|
6775
|
-
|
|
6776
|
-
|
|
6777
|
-
|
|
6778
|
-
|
|
6944
|
+
/** Query params for ResourcesResource (the G3 filter surface; no per-resource invention). */
|
|
6945
|
+
type ResourcesResourceQueryParams = QueryParams;
|
|
6946
|
+
declare class ResourcesResource extends BaseResource<Resource, ResourceCreate, ResourceUpdate> {
|
|
6947
|
+
private readonly clientConfig;
|
|
6948
|
+
constructor(http: HttpClient, clientConfig: ResolvedAutotaskConfig, pageSize: number);
|
|
6949
|
+
/** Query Resource records with the G3 filter surface (server-side JSON filter). */
|
|
6950
|
+
query(params?: ResourcesResourceQueryParams): AsyncIterable<Resource>;
|
|
6951
|
+
/** Get every Resource record (the MCP-preferred read; 1000-page guarded). */
|
|
6952
|
+
queryAll(params?: ResourcesResourceQueryParams): Promise<Resource[]>;
|
|
6779
6953
|
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
6780
|
-
count(params?:
|
|
6954
|
+
count(params?: ResourcesResourceQueryParams): Promise<number>;
|
|
6781
6955
|
/** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
|
|
6782
6956
|
get(id: Identifier, opts?: {
|
|
6783
6957
|
fresh?: boolean;
|
|
6784
|
-
} | null): Promise<
|
|
6958
|
+
} | null): Promise<Resource>;
|
|
6785
6959
|
/** Update a record (PUT on the COLLECTION — the vendored spec's item path is GET-only; the vendor
|
|
6786
6960
|
* keys the record by the id in the body). The vendor validates the FULL model on this route (V2), so a
|
|
6787
6961
|
* partial body is merged into the CURRENT record first: one fresh GET (which also serves the
|
|
@@ -6791,48 +6965,45 @@ declare class SalesOrdersResource extends BaseResource<SalesOrder, SalesOrderCre
|
|
|
6791
6965
|
* `dryRun: true` returns the pinned envelope whose `data` is the merged body (the exact confirmed
|
|
6792
6966
|
* wire) with the best-effort diff, from that same single read; a caller-supplied lastModifiedDate that
|
|
6793
6967
|
* mismatches the vendor's current value throws STALE_OBJECT before the mutation. */
|
|
6794
|
-
update(id: Identifier, data:
|
|
6968
|
+
update(id: Identifier, data: ResourceUpdate, opts?: MutationOpts): Promise<OperationResult | DryRunResult<ResourceUpdate>>;
|
|
6969
|
+
/** Resolve a Resource from a numeric id (or, where the vendor indexes a primary text field,
|
|
6970
|
+
* from an exact match on firstName / lastName). A numeric id miss throws NOT_FOUND; a complete
|
|
6971
|
+
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
6972
|
+
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
6973
|
+
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
6974
|
+
* type-level escape hatch. */
|
|
6975
|
+
resolve(identifier: number | string, opts?: {
|
|
6976
|
+
expand?: boolean;
|
|
6977
|
+
}): Promise<ResourceSummary | null>;
|
|
6978
|
+
/** Search Resource records: bounded contains on firstName + lastName (no vendor free-text search exists);
|
|
6979
|
+
* limit defaults to 25, max 500. */
|
|
6980
|
+
search(query: string, opts?: {
|
|
6981
|
+
limit?: number;
|
|
6982
|
+
}): Promise<ResourceSummary[]>;
|
|
6983
|
+
/** Node-parity special op (hand-written in src/resources/special/resources.ts). */
|
|
6984
|
+
whoAmI(): Promise<ResourceSummary | null>;
|
|
6985
|
+
/** Node-parity special op (hand-written in src/resources/special/resources.ts). */
|
|
6986
|
+
workload(id: Identifier, opts?: ResourceWorkloadOptions): Promise<ResourceWorkload>;
|
|
6795
6987
|
}
|
|
6796
6988
|
|
|
6797
6989
|
/**
|
|
6798
|
-
*
|
|
6990
|
+
* ResourceTimeOffAdditionalResource — ResourceTimeOffAdditional resource (G5 batch B, plan key 'resource_time_off_additional').
|
|
6799
6991
|
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
6800
6992
|
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
6993
|
+
* Parent-scoped child of 'resources': CRUD under /V1.0/Resources/{parentId}/TimeOffAdditional —
|
|
6994
|
+
* the global query/count stay unscoped (narrow with the 'resourceID' filter).
|
|
6801
6995
|
*/
|
|
6802
6996
|
|
|
6803
|
-
/** Query params for
|
|
6804
|
-
type
|
|
6805
|
-
declare class
|
|
6997
|
+
/** Query params for ResourceTimeOffAdditionalResource (the G3 filter surface; no per-resource invention). */
|
|
6998
|
+
type ResourceTimeOffAdditionalResourceQueryParams = QueryParams;
|
|
6999
|
+
declare class ResourceTimeOffAdditionalResource extends BaseResource<ResourceTimeOffAdditional, ResourceTimeOffAdditionalCreate, ResourceTimeOffAdditionalUpdate> {
|
|
6806
7000
|
constructor(http: HttpClient, pageSize: number);
|
|
6807
|
-
/**
|
|
6808
|
-
|
|
6809
|
-
|
|
6810
|
-
queryAll(params?: ServiceCallsResourceQueryParams): Promise<ServiceCall[]>;
|
|
6811
|
-
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
6812
|
-
count(params?: ServiceCallsResourceQueryParams): Promise<number>;
|
|
6813
|
-
/** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
|
|
6814
|
-
get(id: Identifier, opts?: {
|
|
6815
|
-
fresh?: boolean;
|
|
6816
|
-
} | null): Promise<ServiceCall>;
|
|
6817
|
-
/** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
|
|
6818
|
-
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
6819
|
-
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
6820
|
-
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
6821
|
-
create(data: ServiceCallCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<ServiceCallCreate>>;
|
|
6822
|
-
/** Update a record (PUT on the COLLECTION — the vendored spec's item path is GET-only; the vendor
|
|
6823
|
-
* keys the record by the id in the body). The vendor validates the FULL model on this route (V2), so a
|
|
6824
|
-
* partial body is merged into the CURRENT record first: one fresh GET (which also serves the
|
|
6825
|
-
* stale-object guard's read) then the collection PUT of the merged model — an explicit null in the
|
|
6826
|
-
* caller body sends null; an omitted field keeps the current value. `raw: true` in the opts bag sends
|
|
6827
|
-
* the body as-is (full model or intentional partial — the compatibility escape hatch; no merge read).
|
|
6828
|
-
* `dryRun: true` returns the pinned envelope whose `data` is the merged body (the exact confirmed
|
|
6829
|
-
* wire) with the best-effort diff, from that same single read; a caller-supplied lastModifiedDate that
|
|
7001
|
+
/** Update a record under the parent (PATCH on the collection — swagger documents put+patch there;
|
|
7002
|
+
* the vendor keys the record by the id in the body; OperationResultModel → { id}). `dryRun: true` returns
|
|
7003
|
+
* the pinned envelope with the best-effort diff; a caller-supplied lastModifiedDate that
|
|
6830
7004
|
* mismatches the vendor's current value throws STALE_OBJECT before the mutation. */
|
|
6831
|
-
update(id: Identifier, data:
|
|
6832
|
-
/**
|
|
6833
|
-
* envelope and never issues the delete. */
|
|
6834
|
-
delete(id: Identifier, opts?: MutationOpts): Promise<OperationResult | DryRunResult<Record<string, unknown>>>;
|
|
6835
|
-
/** Resolve a ServiceCall from a numeric id (or, where the vendor indexes a primary text field,
|
|
7005
|
+
update(parentId: Identifier, id: Identifier, data: ResourceTimeOffAdditionalUpdate, opts?: MutationOpts): Promise<OperationResult | DryRunResult<ResourceTimeOffAdditionalUpdate>>;
|
|
7006
|
+
/** Resolve a ResourceTimeOffAdditional from a numeric id (or, where the vendor indexes a primary text field,
|
|
6836
7007
|
* from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
|
|
6837
7008
|
* a bare value rejects with a config error (ids only);
|
|
6838
7009
|
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
@@ -6841,40 +7012,34 @@ declare class ServiceCallsResource extends BaseResource<ServiceCall, ServiceCall
|
|
|
6841
7012
|
* type-level escape hatch. */
|
|
6842
7013
|
resolve(identifier: number | string, opts?: {
|
|
6843
7014
|
expand?: boolean;
|
|
6844
|
-
}): Promise<
|
|
7015
|
+
}): Promise<ResourceTimeOffAdditionalSummary | null>;
|
|
7016
|
+
/** Node-parity special op (hand-written in src/resources/special/resource_time_off_additional.ts). */
|
|
7017
|
+
getByResource(resourceId: Identifier): Promise<ResourceTimeOffAdditional[]>;
|
|
6845
7018
|
}
|
|
6846
7019
|
|
|
6847
7020
|
/**
|
|
6848
|
-
*
|
|
7021
|
+
* ResourceTimeOffApproversResource — ResourceTimeOffApprover resource (G5 batch B, plan key 'resource_time_off_approvers').
|
|
6849
7022
|
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
6850
7023
|
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
6851
|
-
* Parent-scoped child of '
|
|
6852
|
-
* the global query/count stay unscoped (narrow with the '
|
|
7024
|
+
* Parent-scoped child of 'resources': CRUD under /V1.0/Resources/{parentId}/TimeOffApprovers —
|
|
7025
|
+
* the global query/count stay unscoped (narrow with the 'resourceID' filter).
|
|
6853
7026
|
*/
|
|
6854
7027
|
|
|
6855
|
-
/** Query params for
|
|
6856
|
-
type
|
|
6857
|
-
declare class
|
|
7028
|
+
/** Query params for ResourceTimeOffApproversResource (the G3 filter surface; no per-resource invention). */
|
|
7029
|
+
type ResourceTimeOffApproversResourceQueryParams = QueryParams;
|
|
7030
|
+
declare class ResourceTimeOffApproversResource extends BaseResource<ResourceTimeOffApprover, ResourceTimeOffApproverCreate, ResourceTimeOffApproverUpdate> {
|
|
6858
7031
|
constructor(http: HttpClient, pageSize: number);
|
|
6859
|
-
/** Query
|
|
6860
|
-
query(params?:
|
|
6861
|
-
/** Get every
|
|
6862
|
-
queryAll(params?:
|
|
7032
|
+
/** Query ResourceTimeOffApprover records (global; narrow with the resourceID filter). */
|
|
7033
|
+
query(params?: ResourceTimeOffApproversResourceQueryParams): AsyncIterable<ResourceTimeOffApprover>;
|
|
7034
|
+
/** Get every ResourceTimeOffApprover record (the MCP-preferred read; 1000-page guarded). */
|
|
7035
|
+
queryAll(params?: ResourceTimeOffApproversResourceQueryParams): Promise<ResourceTimeOffApprover[]>;
|
|
6863
7036
|
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
6864
|
-
count(params?:
|
|
6865
|
-
/** Get one record by parent + id (/V1.0/
|
|
7037
|
+
count(params?: ResourceTimeOffApproversResourceQueryParams): Promise<number>;
|
|
7038
|
+
/** Get one record by parent + id (/V1.0/Resources/{parentId}/TimeOffApprovers/{id} — vendor item envelope; item: null → NotFoundError). */
|
|
6866
7039
|
get(parentId: Identifier, id: Identifier, opts?: {
|
|
6867
7040
|
fresh?: boolean;
|
|
6868
|
-
} | null): Promise<
|
|
6869
|
-
/**
|
|
6870
|
-
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
6871
|
-
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
6872
|
-
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
6873
|
-
create(parentId: Identifier, data: ServiceCallTaskResourceCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<ServiceCallTaskResourceCreate>>;
|
|
6874
|
-
/** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
|
|
6875
|
-
* envelope and never issues the delete. */
|
|
6876
|
-
delete(parentId: Identifier, id: Identifier, opts?: MutationOpts): Promise<OperationResult | DryRunResult<Record<string, unknown>>>;
|
|
6877
|
-
/** Resolve a ServiceCallTaskResource from a numeric id (or, where the vendor indexes a primary text field,
|
|
7041
|
+
} | null): Promise<ResourceTimeOffApprover>;
|
|
7042
|
+
/** Resolve a ResourceTimeOffApprover from a numeric id (or, where the vendor indexes a primary text field,
|
|
6878
7043
|
* from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
|
|
6879
7044
|
* a bare value rejects with a config error (ids only);
|
|
6880
7045
|
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
@@ -6883,16 +7048,264 @@ declare class ServiceCallTaskResourcesResource extends BaseResource<ServiceCallT
|
|
|
6883
7048
|
* type-level escape hatch. */
|
|
6884
7049
|
resolve(identifier: number | string, opts?: {
|
|
6885
7050
|
expand?: boolean;
|
|
6886
|
-
}): Promise<
|
|
7051
|
+
}): Promise<ResourceTimeOffApproverSummary | null>;
|
|
6887
7052
|
}
|
|
6888
7053
|
|
|
6889
7054
|
/**
|
|
6890
|
-
*
|
|
7055
|
+
* ResourceTimeOffBalancesResource — ResourceTimeOffBalance resource (G5 batch B, plan key 'resource_time_off_balances').
|
|
6891
7056
|
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
6892
7057
|
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
6893
|
-
* Parent-scoped child of '
|
|
6894
|
-
* the global query/count stay unscoped (narrow with the '
|
|
6895
|
-
*/
|
|
7058
|
+
* Parent-scoped child of 'resources': CRUD under /V1.0/Resources/{parentId}/TimeOffBalances —
|
|
7059
|
+
* the global query/count stay unscoped (narrow with the 'resourceID' filter).
|
|
7060
|
+
*/
|
|
7061
|
+
|
|
7062
|
+
/** Query params for ResourceTimeOffBalancesResource (the G3 filter surface; no per-resource invention). */
|
|
7063
|
+
type ResourceTimeOffBalancesResourceQueryParams = QueryParams;
|
|
7064
|
+
declare class ResourceTimeOffBalancesResource extends BaseResource<ResourceTimeOffBalance, ResourceTimeOffBalanceCreate, ResourceTimeOffBalanceUpdate> {
|
|
7065
|
+
constructor(http: HttpClient, pageSize: number);
|
|
7066
|
+
/** Get one record by parent + id (/V1.0/Resources/{parentId}/TimeOffBalances/{id} — vendor item envelope; item: null → NotFoundError). */
|
|
7067
|
+
get(parentId: Identifier, id: Identifier, opts?: {
|
|
7068
|
+
fresh?: boolean;
|
|
7069
|
+
} | null): Promise<ResourceTimeOffBalance>;
|
|
7070
|
+
/** Resolve a ResourceTimeOffBalance from a numeric id (or, where the vendor indexes a primary text field,
|
|
7071
|
+
* from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
|
|
7072
|
+
* a bare value rejects with a config error (ids only);
|
|
7073
|
+
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
7074
|
+
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
7075
|
+
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
7076
|
+
* type-level escape hatch. */
|
|
7077
|
+
resolve(identifier: number | string, opts?: {
|
|
7078
|
+
expand?: boolean;
|
|
7079
|
+
}): Promise<ResourceTimeOffBalanceSummary | null>;
|
|
7080
|
+
/** Node-parity special op (hand-written in src/resources/special/resource_time_off_balances.ts). */
|
|
7081
|
+
getByResource(resourceId: Identifier): Promise<ResourceTimeOffBalance[]>;
|
|
7082
|
+
/** Node-parity special op (hand-written in src/resources/special/resource_time_off_balances.ts). */
|
|
7083
|
+
getByYear(resourceId: Identifier, year: number): Promise<ResourceTimeOffBalance>;
|
|
7084
|
+
}
|
|
7085
|
+
|
|
7086
|
+
/**
|
|
7087
|
+
* RolesResource — Role resource (G5 batch B, plan key 'roles').
|
|
7088
|
+
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
7089
|
+
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
7090
|
+
*/
|
|
7091
|
+
|
|
7092
|
+
/** Query params for RolesResource (the G3 filter surface; no per-resource invention). */
|
|
7093
|
+
type RolesResourceQueryParams = QueryParams;
|
|
7094
|
+
declare class RolesResource extends BaseResource<Role, RoleCreate, RoleUpdate> {
|
|
7095
|
+
constructor(http: HttpClient, pageSize: number);
|
|
7096
|
+
/** Query Role records with the G3 filter surface (server-side JSON filter). */
|
|
7097
|
+
query(params?: RolesResourceQueryParams): AsyncIterable<Role>;
|
|
7098
|
+
/** Get every Role record (the MCP-preferred read; 1000-page guarded). */
|
|
7099
|
+
queryAll(params?: RolesResourceQueryParams): Promise<Role[]>;
|
|
7100
|
+
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
7101
|
+
count(params?: RolesResourceQueryParams): Promise<number>;
|
|
7102
|
+
/** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
|
|
7103
|
+
get(id: Identifier, opts?: {
|
|
7104
|
+
fresh?: boolean;
|
|
7105
|
+
} | null): Promise<Role>;
|
|
7106
|
+
/** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
|
|
7107
|
+
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
7108
|
+
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
7109
|
+
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
7110
|
+
create(data: RoleCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<RoleCreate>>;
|
|
7111
|
+
/** Update a record (PUT on the COLLECTION — the vendored spec's item path is GET-only; the vendor
|
|
7112
|
+
* keys the record by the id in the body). The vendor validates the FULL model on this route (V2), so a
|
|
7113
|
+
* partial body is merged into the CURRENT record first: one fresh GET (which also serves the
|
|
7114
|
+
* stale-object guard's read) then the collection PUT of the merged model — an explicit null in the
|
|
7115
|
+
* caller body sends null; an omitted field keeps the current value. `raw: true` in the opts bag sends
|
|
7116
|
+
* the body as-is (full model or intentional partial — the compatibility escape hatch; no merge read).
|
|
7117
|
+
* `dryRun: true` returns the pinned envelope whose `data` is the merged body (the exact confirmed
|
|
7118
|
+
* wire) with the best-effort diff, from that same single read; a caller-supplied lastModifiedDate that
|
|
7119
|
+
* mismatches the vendor's current value throws STALE_OBJECT before the mutation. */
|
|
7120
|
+
update(id: Identifier, data: RoleUpdate, opts?: MutationOpts): Promise<OperationResult | DryRunResult<RoleUpdate>>;
|
|
7121
|
+
/** Resolve a Role from a numeric id (or, where the vendor indexes a primary text field,
|
|
7122
|
+
* from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
|
|
7123
|
+
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
7124
|
+
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
7125
|
+
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
7126
|
+
* type-level escape hatch. */
|
|
7127
|
+
resolve(identifier: number | string, opts?: {
|
|
7128
|
+
expand?: boolean;
|
|
7129
|
+
}): Promise<RoleSummary | null>;
|
|
7130
|
+
/** Search Role records: bounded contains on name (no vendor free-text search exists);
|
|
7131
|
+
* limit defaults to 25, max 500. */
|
|
7132
|
+
search(query: string, opts?: {
|
|
7133
|
+
limit?: number;
|
|
7134
|
+
}): Promise<RoleSummary[]>;
|
|
7135
|
+
}
|
|
7136
|
+
|
|
7137
|
+
/**
|
|
7138
|
+
* SalesOrdersResource — SalesOrder resource (G5 batch B, plan key 'sales_orders').
|
|
7139
|
+
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
7140
|
+
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
7141
|
+
*/
|
|
7142
|
+
|
|
7143
|
+
/** Query params for SalesOrdersResource (the G3 filter surface; no per-resource invention). */
|
|
7144
|
+
type SalesOrdersResourceQueryParams = QueryParams;
|
|
7145
|
+
declare class SalesOrdersResource extends BaseResource<SalesOrder, SalesOrderCreate, SalesOrderUpdate> {
|
|
7146
|
+
constructor(http: HttpClient, pageSize: number);
|
|
7147
|
+
/** Query SalesOrder records with the G3 filter surface (server-side JSON filter). */
|
|
7148
|
+
query(params?: SalesOrdersResourceQueryParams): AsyncIterable<SalesOrder>;
|
|
7149
|
+
/** Get every SalesOrder record (the MCP-preferred read; 1000-page guarded). */
|
|
7150
|
+
queryAll(params?: SalesOrdersResourceQueryParams): Promise<SalesOrder[]>;
|
|
7151
|
+
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
7152
|
+
count(params?: SalesOrdersResourceQueryParams): Promise<number>;
|
|
7153
|
+
/** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
|
|
7154
|
+
get(id: Identifier, opts?: {
|
|
7155
|
+
fresh?: boolean;
|
|
7156
|
+
} | null): Promise<SalesOrder>;
|
|
7157
|
+
/** Update a record (PUT on the COLLECTION — the vendored spec's item path is GET-only; the vendor
|
|
7158
|
+
* keys the record by the id in the body). The vendor validates the FULL model on this route (V2), so a
|
|
7159
|
+
* partial body is merged into the CURRENT record first: one fresh GET (which also serves the
|
|
7160
|
+
* stale-object guard's read) then the collection PUT of the merged model — an explicit null in the
|
|
7161
|
+
* caller body sends null; an omitted field keeps the current value. `raw: true` in the opts bag sends
|
|
7162
|
+
* the body as-is (full model or intentional partial — the compatibility escape hatch; no merge read).
|
|
7163
|
+
* `dryRun: true` returns the pinned envelope whose `data` is the merged body (the exact confirmed
|
|
7164
|
+
* wire) with the best-effort diff, from that same single read; a caller-supplied lastModifiedDate that
|
|
7165
|
+
* mismatches the vendor's current value throws STALE_OBJECT before the mutation. */
|
|
7166
|
+
update(id: Identifier, data: SalesOrderUpdate, opts?: MutationOpts): Promise<OperationResult | DryRunResult<SalesOrderUpdate>>;
|
|
7167
|
+
}
|
|
7168
|
+
|
|
7169
|
+
/** Options for `fullProfile` (all optional; the pinned defaults). */
|
|
7170
|
+
interface ServiceCallFullProfileOptions {
|
|
7171
|
+
/** Max ticket records (default 50, 1-2500 — the server's `ticket_limit` bound). */
|
|
7172
|
+
ticketLimit?: number;
|
|
7173
|
+
/** Max task records (default 50, 1-2500 — the server's `task_limit` bound); also bounds the assignments read. */
|
|
7174
|
+
taskLimit?: number;
|
|
7175
|
+
}
|
|
7176
|
+
/**
|
|
7177
|
+
* The service call with its tickets, tasks and resource assignments in ONE
|
|
7178
|
+
* call (issue #313): the composite the MCP server served as
|
|
7179
|
+
* `autotask_service_call_full_profile`. The service call is the ROOT (a
|
|
7180
|
+
* missing call fails the call with the typed NOT_FOUND); the three PARTS are
|
|
7181
|
+
* bounded reads, degrading independently to `{ value: null, absent:
|
|
7182
|
+
* <code> }`.
|
|
7183
|
+
*
|
|
7184
|
+
* The resource assignments join through the task ids (the assignment model
|
|
7185
|
+
* keys on `serviceCallTaskID` + `resourceID`, not `serviceCallID`): the
|
|
7186
|
+
* `in` filter is bounded by `IN_FILTER_CAP` (100 task ids); no task ids
|
|
7187
|
+
* (no tasks, or the tasks part degraded) -> the part degrades to
|
|
7188
|
+
* `absent: 'NO_TASKS'`.
|
|
7189
|
+
*
|
|
7190
|
+
* The result is the served pre-marking shape `{ root, parts }`: the server
|
|
7191
|
+
* keeps its per-part untrusted marking on top, so the tool output is
|
|
7192
|
+
* field-for-field the composite the server served today. Wire: 1 root read +
|
|
7193
|
+
* 2 bounded queries, then 0-1 (the assignments join).
|
|
7194
|
+
*/
|
|
7195
|
+
interface ServiceCallFullProfile {
|
|
7196
|
+
/** The service call record (the root read). */
|
|
7197
|
+
root: ServiceCall;
|
|
7198
|
+
parts: {
|
|
7199
|
+
/** The call's tickets (the bounded `service_call_tickets.query` result envelope), or the typed absent degradation. */
|
|
7200
|
+
tickets: CompositePartValue<BoundedQueryResult<ServiceCallTicket>>;
|
|
7201
|
+
/** The call's tasks (the bounded `service_call_tasks.query` result envelope), or the typed absent degradation. */
|
|
7202
|
+
tasks: CompositePartValue<BoundedQueryResult<ServiceCallTask>>;
|
|
7203
|
+
/** The resource assignments behind the call's tasks (the bounded `service_call_task_resources.query` result envelope), or the typed absent degradation (`NO_TASKS` when there are no task ids). */
|
|
7204
|
+
resource_assignments: CompositePartValue<BoundedQueryResult<ServiceCallTaskResource>>;
|
|
7205
|
+
};
|
|
7206
|
+
}
|
|
7207
|
+
|
|
7208
|
+
/**
|
|
7209
|
+
* ServiceCallsResource — ServiceCall resource (G5 batch B, plan key 'service_calls').
|
|
7210
|
+
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
7211
|
+
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
7212
|
+
*/
|
|
7213
|
+
|
|
7214
|
+
/** Query params for ServiceCallsResource (the G3 filter surface; no per-resource invention). */
|
|
7215
|
+
type ServiceCallsResourceQueryParams = QueryParams;
|
|
7216
|
+
declare class ServiceCallsResource extends BaseResource<ServiceCall, ServiceCallCreate, ServiceCallUpdate> {
|
|
7217
|
+
constructor(http: HttpClient, pageSize: number);
|
|
7218
|
+
/** Query ServiceCall records with the G3 filter surface (server-side JSON filter). */
|
|
7219
|
+
query(params?: ServiceCallsResourceQueryParams): AsyncIterable<ServiceCall>;
|
|
7220
|
+
/** Get every ServiceCall record (the MCP-preferred read; 1000-page guarded). */
|
|
7221
|
+
queryAll(params?: ServiceCallsResourceQueryParams): Promise<ServiceCall[]>;
|
|
7222
|
+
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
7223
|
+
count(params?: ServiceCallsResourceQueryParams): Promise<number>;
|
|
7224
|
+
/** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
|
|
7225
|
+
get(id: Identifier, opts?: {
|
|
7226
|
+
fresh?: boolean;
|
|
7227
|
+
} | null): Promise<ServiceCall>;
|
|
7228
|
+
/** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
|
|
7229
|
+
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
7230
|
+
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
7231
|
+
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
7232
|
+
create(data: ServiceCallCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<ServiceCallCreate>>;
|
|
7233
|
+
/** Update a record (PUT on the COLLECTION — the vendored spec's item path is GET-only; the vendor
|
|
7234
|
+
* keys the record by the id in the body). The vendor validates the FULL model on this route (V2), so a
|
|
7235
|
+
* partial body is merged into the CURRENT record first: one fresh GET (which also serves the
|
|
7236
|
+
* stale-object guard's read) then the collection PUT of the merged model — an explicit null in the
|
|
7237
|
+
* caller body sends null; an omitted field keeps the current value. `raw: true` in the opts bag sends
|
|
7238
|
+
* the body as-is (full model or intentional partial — the compatibility escape hatch; no merge read).
|
|
7239
|
+
* `dryRun: true` returns the pinned envelope whose `data` is the merged body (the exact confirmed
|
|
7240
|
+
* wire) with the best-effort diff, from that same single read; a caller-supplied lastModifiedDate that
|
|
7241
|
+
* mismatches the vendor's current value throws STALE_OBJECT before the mutation. */
|
|
7242
|
+
update(id: Identifier, data: ServiceCallUpdate, opts?: MutationOpts): Promise<OperationResult | DryRunResult<ServiceCallUpdate>>;
|
|
7243
|
+
/** Delete a record (OperationResultModel → { id}). `dryRun: true` returns the pinned
|
|
7244
|
+
* envelope and never issues the delete. */
|
|
7245
|
+
delete(id: Identifier, opts?: MutationOpts): Promise<OperationResult | DryRunResult<Record<string, unknown>>>;
|
|
7246
|
+
/** Resolve a ServiceCall from a numeric id (or, where the vendor indexes a primary text field,
|
|
7247
|
+
* from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
|
|
7248
|
+
* a bare value rejects with a config error (ids only);
|
|
7249
|
+
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
7250
|
+
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
7251
|
+
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
7252
|
+
* type-level escape hatch. */
|
|
7253
|
+
resolve(identifier: number | string, opts?: {
|
|
7254
|
+
expand?: boolean;
|
|
7255
|
+
}): Promise<ServiceCallSummary | null>;
|
|
7256
|
+
/** Node-parity special op (hand-written in src/resources/special/service_calls.ts). */
|
|
7257
|
+
fullProfile(id: Identifier, opts?: ServiceCallFullProfileOptions): Promise<ServiceCallFullProfile>;
|
|
7258
|
+
}
|
|
7259
|
+
|
|
7260
|
+
/**
|
|
7261
|
+
* ServiceCallTaskResourcesResource — ServiceCallTaskResource resource (G5 batch B, plan key 'service_call_task_resources').
|
|
7262
|
+
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
7263
|
+
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
7264
|
+
* Parent-scoped child of 'service_call_tasks': CRUD under /V1.0/ServiceCallTasks/{parentId}/Resources —
|
|
7265
|
+
* the global query/count stay unscoped (narrow with the 'serviceCallTaskID' filter).
|
|
7266
|
+
*/
|
|
7267
|
+
|
|
7268
|
+
/** Query params for ServiceCallTaskResourcesResource (the G3 filter surface; no per-resource invention). */
|
|
7269
|
+
type ServiceCallTaskResourcesResourceQueryParams = QueryParams;
|
|
7270
|
+
declare class ServiceCallTaskResourcesResource extends BaseResource<ServiceCallTaskResource, ServiceCallTaskResourceCreate, ServiceCallTaskResourceUpdate> {
|
|
7271
|
+
constructor(http: HttpClient, pageSize: number);
|
|
7272
|
+
/** Query ServiceCallTaskResource records (global; narrow with the serviceCallTaskID filter). */
|
|
7273
|
+
query(params?: ServiceCallTaskResourcesResourceQueryParams): AsyncIterable<ServiceCallTaskResource>;
|
|
7274
|
+
/** Get every ServiceCallTaskResource record (the MCP-preferred read; 1000-page guarded). */
|
|
7275
|
+
queryAll(params?: ServiceCallTaskResourcesResourceQueryParams): Promise<ServiceCallTaskResource[]>;
|
|
7276
|
+
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
7277
|
+
count(params?: ServiceCallTaskResourcesResourceQueryParams): Promise<number>;
|
|
7278
|
+
/** Get one record by parent + id (/V1.0/ServiceCallTasks/{parentId}/Resources/{id} — vendor item envelope; item: null → NotFoundError). */
|
|
7279
|
+
get(parentId: Identifier, id: Identifier, opts?: {
|
|
7280
|
+
fresh?: boolean;
|
|
7281
|
+
} | null): Promise<ServiceCallTaskResource>;
|
|
7282
|
+
/** Create a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the
|
|
7283
|
+
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
7284
|
+
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
7285
|
+
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
7286
|
+
create(parentId: Identifier, data: ServiceCallTaskResourceCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<ServiceCallTaskResourceCreate>>;
|
|
7287
|
+
/** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
|
|
7288
|
+
* envelope and never issues the delete. */
|
|
7289
|
+
delete(parentId: Identifier, id: Identifier, opts?: MutationOpts): Promise<OperationResult | DryRunResult<Record<string, unknown>>>;
|
|
7290
|
+
/** Resolve a ServiceCallTaskResource from a numeric id (or, where the vendor indexes a primary text field,
|
|
7291
|
+
* from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
|
|
7292
|
+
* a bare value rejects with a config error (ids only);
|
|
7293
|
+
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
7294
|
+
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
7295
|
+
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
7296
|
+
* type-level escape hatch. */
|
|
7297
|
+
resolve(identifier: number | string, opts?: {
|
|
7298
|
+
expand?: boolean;
|
|
7299
|
+
}): Promise<ServiceCallTaskResourceSummary | null>;
|
|
7300
|
+
}
|
|
7301
|
+
|
|
7302
|
+
/**
|
|
7303
|
+
* ServiceCallTasksResource — ServiceCallTask resource (G5 batch B, plan key 'service_call_tasks').
|
|
7304
|
+
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
7305
|
+
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
7306
|
+
* Parent-scoped child of 'service_calls': CRUD under /V1.0/ServiceCalls/{parentId}/Tasks —
|
|
7307
|
+
* the global query/count stay unscoped (narrow with the 'serviceCallID' filter).
|
|
7308
|
+
*/
|
|
6896
7309
|
|
|
6897
7310
|
/** Query params for ServiceCallTasksResource (the G3 filter surface; no per-resource invention). */
|
|
6898
7311
|
type ServiceCallTasksResourceQueryParams = QueryParams;
|
|
@@ -8083,536 +8496,81 @@ declare class TicketNoteAttachmentsResource extends BaseResource<TicketNoteAttac
|
|
|
8083
8496
|
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
8084
8497
|
* type-level escape hatch. */
|
|
8085
8498
|
resolve(identifier: number | string, opts?: {
|
|
8086
|
-
expand?: boolean;
|
|
8087
|
-
}): Promise<TicketNoteAttachmentSummary | null>;
|
|
8088
|
-
}
|
|
8089
|
-
|
|
8090
|
-
/**
|
|
8091
|
-
* TicketNotesResource — TicketNote resource (G4 batch A, plan key 'ticket_notes').
|
|
8092
|
-
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
8093
|
-
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
8094
|
-
* Parent-scoped child of 'tickets': CRUD under /V1.0/Tickets/{parentId}/Notes —
|
|
8095
|
-
* the global query/count stay unscoped (narrow with the 'ticketID' filter).
|
|
8096
|
-
*/
|
|
8097
|
-
|
|
8098
|
-
/** Query params for TicketNotesResource (the G3 filter surface; no per-resource invention). */
|
|
8099
|
-
type TicketNotesResourceQueryParams = QueryParams;
|
|
8100
|
-
declare class TicketNotesResource extends BaseResource<TicketNote, TicketNoteCreate, TicketNoteUpdate> {
|
|
8101
|
-
constructor(http: HttpClient, pageSize: number);
|
|
8102
|
-
/** Query TicketNote records (global; narrow with the ticketID filter). */
|
|
8103
|
-
query(params?: TicketNotesResourceQueryParams): AsyncIterable<TicketNote>;
|
|
8104
|
-
/** Get every TicketNote record (the MCP-preferred read; 1000-page guarded). */
|
|
8105
|
-
queryAll(params?: TicketNotesResourceQueryParams): Promise<TicketNote[]>;
|
|
8106
|
-
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
8107
|
-
count(params?: TicketNotesResourceQueryParams): Promise<number>;
|
|
8108
|
-
/** Get one record by parent + id (/V1.0/Tickets/{parentId}/Notes/{id} — vendor item envelope; item: null → NotFoundError). */
|
|
8109
|
-
get(parentId: Identifier, id: Identifier, opts?: {
|
|
8110
|
-
fresh?: boolean;
|
|
8111
|
-
} | null): Promise<TicketNote>;
|
|
8112
|
-
/** Create a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the
|
|
8113
|
-
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
8114
|
-
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
8115
|
-
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
8116
|
-
create(parentId: Identifier, data: TicketNoteCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<TicketNoteCreate>>;
|
|
8117
|
-
/** Update a record under the parent (PATCH on the collection — swagger documents put+patch there;
|
|
8118
|
-
* the vendor keys the record by the id in the body; OperationResultModel → { id}). `dryRun: true` returns
|
|
8119
|
-
* the pinned envelope with the best-effort diff; a caller-supplied lastModifiedDate that
|
|
8120
|
-
* mismatches the vendor's current value throws STALE_OBJECT before the mutation. */
|
|
8121
|
-
update(parentId: Identifier, id: Identifier, data: TicketNoteUpdate, opts?: MutationOpts): Promise<OperationResult | DryRunResult<TicketNoteUpdate>>;
|
|
8122
|
-
/** Resolve a TicketNote from a numeric id (or, where the vendor indexes a primary text field,
|
|
8123
|
-
* from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
|
|
8124
|
-
* a bare value rejects with a config error (ids only);
|
|
8125
|
-
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
8126
|
-
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
8127
|
-
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
8128
|
-
* type-level escape hatch. */
|
|
8129
|
-
resolve(identifier: number | string, opts?: {
|
|
8130
|
-
expand?: boolean;
|
|
8131
|
-
}): Promise<TicketNoteSummary | null>;
|
|
8132
|
-
}
|
|
8133
|
-
|
|
8134
|
-
/**
|
|
8135
|
-
* TicketNoteWebhooksResource — TicketNoteWebhook resource (G5 batch B, plan key 'ticket_note_webhooks').
|
|
8136
|
-
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
8137
|
-
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
8138
|
-
* Parent-scoped child of 'ticket_notes': CRUD under /V1.0/TicketNotes/{parentId}/Webhook —
|
|
8139
|
-
* the global query/count stay unscoped (narrow with the 'parent' filter).
|
|
8140
|
-
*/
|
|
8141
|
-
|
|
8142
|
-
/** Query params for TicketNoteWebhooksResource (the G3 filter surface; no per-resource invention). */
|
|
8143
|
-
type TicketNoteWebhooksResourceQueryParams = QueryParams;
|
|
8144
|
-
declare class TicketNoteWebhooksResource extends BaseResource<TicketNoteWebhook, TicketNoteWebhookCreate, TicketNoteWebhookUpdate> {
|
|
8145
|
-
constructor(http: HttpClient, pageSize: number);
|
|
8146
|
-
/** Query TicketNoteWebhook records (global; narrow with the parent filter). */
|
|
8147
|
-
query(params?: TicketNoteWebhooksResourceQueryParams): AsyncIterable<TicketNoteWebhook>;
|
|
8148
|
-
/** Get every TicketNoteWebhook record (the MCP-preferred read; 1000-page guarded). */
|
|
8149
|
-
queryAll(params?: TicketNoteWebhooksResourceQueryParams): Promise<TicketNoteWebhook[]>;
|
|
8150
|
-
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
8151
|
-
count(params?: TicketNoteWebhooksResourceQueryParams): Promise<number>;
|
|
8152
|
-
/** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
|
|
8153
|
-
get(id: Identifier, opts?: {
|
|
8154
|
-
fresh?: boolean;
|
|
8155
|
-
} | null): Promise<TicketNoteWebhook>;
|
|
8156
|
-
/** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
|
|
8157
|
-
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
8158
|
-
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
8159
|
-
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
8160
|
-
create(data: TicketNoteWebhookCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<TicketNoteWebhookCreate>>;
|
|
8161
|
-
/** Update a record (PUT on the COLLECTION — the vendored spec's item path is GET-only; the vendor
|
|
8162
|
-
* keys the record by the id in the body). The vendor validates the FULL model on this route (V2), so a
|
|
8163
|
-
* partial body is merged into the CURRENT record first: one fresh GET (which also serves the
|
|
8164
|
-
* stale-object guard's read) then the collection PUT of the merged model — an explicit null in the
|
|
8165
|
-
* caller body sends null; an omitted field keeps the current value. `raw: true` in the opts bag sends
|
|
8166
|
-
* the body as-is (full model or intentional partial — the compatibility escape hatch; no merge read).
|
|
8167
|
-
* `dryRun: true` returns the pinned envelope whose `data` is the merged body (the exact confirmed
|
|
8168
|
-
* wire) with the best-effort diff, from that same single read; a caller-supplied lastModifiedDate that
|
|
8169
|
-
* mismatches the vendor's current value throws STALE_OBJECT before the mutation. */
|
|
8170
|
-
update(id: Identifier, data: TicketNoteWebhookUpdate, opts?: MutationOpts): Promise<OperationResult | DryRunResult<TicketNoteWebhookUpdate>>;
|
|
8171
|
-
/** Delete a record (OperationResultModel → { id}). `dryRun: true` returns the pinned
|
|
8172
|
-
* envelope and never issues the delete. */
|
|
8173
|
-
delete(id: Identifier, opts?: MutationOpts): Promise<OperationResult | DryRunResult<Record<string, unknown>>>;
|
|
8174
|
-
/** Resolve a TicketNoteWebhook from a numeric id (or, where the vendor indexes a primary text field,
|
|
8175
|
-
* from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
|
|
8176
|
-
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
8177
|
-
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
8178
|
-
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
8179
|
-
* type-level escape hatch. */
|
|
8180
|
-
resolve(identifier: number | string, opts?: {
|
|
8181
|
-
expand?: boolean;
|
|
8182
|
-
}): Promise<TicketNoteWebhookSummary | null>;
|
|
8183
|
-
/** Search TicketNoteWebhook records: bounded contains on name (no vendor free-text search exists);
|
|
8184
|
-
* limit defaults to 25, max 500. */
|
|
8185
|
-
search(query: string, opts?: {
|
|
8186
|
-
limit?: number;
|
|
8187
|
-
}): Promise<TicketNoteWebhookSummary[]>;
|
|
8188
|
-
}
|
|
8189
|
-
|
|
8190
|
-
/**
|
|
8191
|
-
* TicketSecondaryResourcesResource — TicketSecondaryResource resource (G4 batch A, plan key 'ticket_secondary_resources').
|
|
8192
|
-
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
8193
|
-
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
8194
|
-
* Parent-scoped child of 'tickets': CRUD under /V1.0/Tickets/{parentId}/SecondaryResources —
|
|
8195
|
-
* the global query/count stay unscoped (narrow with the 'ticketID' filter).
|
|
8196
|
-
*/
|
|
8197
|
-
|
|
8198
|
-
/** Query params for TicketSecondaryResourcesResource (the G3 filter surface; no per-resource invention). */
|
|
8199
|
-
type TicketSecondaryResourcesResourceQueryParams = QueryParams;
|
|
8200
|
-
declare class TicketSecondaryResourcesResource extends BaseResource<TicketSecondaryResource, TicketSecondaryResourceCreate, TicketSecondaryResourceUpdate> {
|
|
8201
|
-
constructor(http: HttpClient, pageSize: number);
|
|
8202
|
-
/** Query TicketSecondaryResource records (global; narrow with the ticketID filter). */
|
|
8203
|
-
query(params?: TicketSecondaryResourcesResourceQueryParams): AsyncIterable<TicketSecondaryResource>;
|
|
8204
|
-
/** Get every TicketSecondaryResource record (the MCP-preferred read; 1000-page guarded). */
|
|
8205
|
-
queryAll(params?: TicketSecondaryResourcesResourceQueryParams): Promise<TicketSecondaryResource[]>;
|
|
8206
|
-
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
8207
|
-
count(params?: TicketSecondaryResourcesResourceQueryParams): Promise<number>;
|
|
8208
|
-
/** Get one record by parent + id (/V1.0/Tickets/{parentId}/SecondaryResources/{id} — vendor item envelope; item: null → NotFoundError). */
|
|
8209
|
-
get(parentId: Identifier, id: Identifier, opts?: {
|
|
8210
|
-
fresh?: boolean;
|
|
8211
|
-
} | null): Promise<TicketSecondaryResource>;
|
|
8212
|
-
/** Create a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the
|
|
8213
|
-
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
8214
|
-
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
8215
|
-
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
8216
|
-
create(parentId: Identifier, data: TicketSecondaryResourceCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<TicketSecondaryResourceCreate>>;
|
|
8217
|
-
/** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
|
|
8218
|
-
* envelope and never issues the delete. */
|
|
8219
|
-
delete(parentId: Identifier, id: Identifier, opts?: MutationOpts): Promise<OperationResult | DryRunResult<Record<string, unknown>>>;
|
|
8220
|
-
/** Resolve a TicketSecondaryResource from a numeric id (or, where the vendor indexes a primary text field,
|
|
8221
|
-
* from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
|
|
8222
|
-
* a bare value rejects with a config error (ids only);
|
|
8223
|
-
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
8224
|
-
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
8225
|
-
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
8226
|
-
* type-level escape hatch. */
|
|
8227
|
-
resolve(identifier: number | string, opts?: {
|
|
8228
|
-
expand?: boolean;
|
|
8229
|
-
}): Promise<TicketSecondaryResourceSummary | null>;
|
|
8230
|
-
}
|
|
8231
|
-
|
|
8232
|
-
/**
|
|
8233
|
-
* One route fact on a composite child part that the default global `/query`
|
|
8234
|
-
* route did not serve (issue #35): the route attempted, the path it
|
|
8235
|
-
* attempted, and the HTTP status that failed it (null when the failure was
|
|
8236
|
-
* not an HTTP status — a shape or transport fault).
|
|
8237
|
-
*/
|
|
8238
|
-
interface TicketChildRouteFact {
|
|
8239
|
-
/** The route that was attempted (the plan-declared scoped collection read is 'scoped'). */
|
|
8240
|
-
route: 'global' | 'scoped';
|
|
8241
|
-
/** The path the route attempted (e.g. '/V1.0/TicketNotes/query' or '/V1.0/Tickets/527119/Notes'). */
|
|
8242
|
-
path: string;
|
|
8243
|
-
/** The HTTP status that failed the route (null for a non-HTTP failure). */
|
|
8244
|
-
httpStatus: number | null;
|
|
8245
|
-
}
|
|
8246
|
-
|
|
8247
|
-
interface TicketSlaHealth {
|
|
8248
|
-
ticketId: Identifier;
|
|
8249
|
-
/** SLA result rows found for the ticket. */
|
|
8250
|
-
slaCount: number;
|
|
8251
|
-
/** `true` when every milestone of every SLA is met (a ticket with no SLAs is healthy). */
|
|
8252
|
-
healthy: boolean;
|
|
8253
|
-
/** True when a full page of SLA rows came back (more may exist; `healthy` is a lower bound). */
|
|
8254
|
-
truncated: boolean;
|
|
8255
|
-
slas: Array<{
|
|
8256
|
-
id: number;
|
|
8257
|
-
name: string | null;
|
|
8258
|
-
milestones: Array<{
|
|
8259
|
-
name: 'firstResponse' | 'resolution' | 'resolutionPlan';
|
|
8260
|
-
met: boolean | null;
|
|
8261
|
-
elapsedHours: number | null;
|
|
8262
|
-
}>;
|
|
8263
|
-
}>;
|
|
8264
|
-
}
|
|
8265
|
-
interface TicketSummaryResult {
|
|
8266
|
-
ticketId: Identifier;
|
|
8267
|
-
ticketNumber: string | null;
|
|
8268
|
-
title: string | null;
|
|
8269
|
-
/** `description` truncated to `summaryTextLimit` (default 500 chars, '…' suffix). */
|
|
8270
|
-
description: string;
|
|
8271
|
-
/** Length of the ORIGINAL description. */
|
|
8272
|
-
descriptionLength: number;
|
|
8273
|
-
descriptionTruncated: boolean;
|
|
8274
|
-
status: number | null;
|
|
8275
|
-
priority: number | null;
|
|
8276
|
-
companyID: number | null;
|
|
8277
|
-
contactID: number | null;
|
|
8278
|
-
assignedResourceID: number | null;
|
|
8279
|
-
projectID: number | null;
|
|
8280
|
-
createDate: string | null;
|
|
8281
|
-
dueDateTime: string | null;
|
|
8282
|
-
/** floor((now - createDate) / day) — null when createDate is absent. */
|
|
8283
|
-
ageDays: number | null;
|
|
8284
|
-
}
|
|
8285
|
-
interface TicketTimelineEvent {
|
|
8286
|
-
kind: 'note' | 'timeEntry' | 'history';
|
|
8287
|
-
id: number;
|
|
8288
|
-
date: string | null;
|
|
8289
|
-
/** `description`/`detail` truncated to `textLimit` (default 500 chars). */
|
|
8290
|
-
text: string | null;
|
|
8291
|
-
/** Notes only. */
|
|
8292
|
-
title: string | null;
|
|
8293
|
-
/** Time entries only. */
|
|
8294
|
-
hours: number | null;
|
|
8295
|
-
/** Histories only. */
|
|
8296
|
-
action: string | null;
|
|
8297
|
-
/** True when `text` was cut at `textLimit` (the full text is on the source record). */
|
|
8298
|
-
textTruncated: boolean;
|
|
8299
|
-
}
|
|
8300
|
-
interface TicketTimeline {
|
|
8301
|
-
ticketId: Identifier;
|
|
8302
|
-
count: number;
|
|
8303
|
-
/** Ascending by date (null dates last), bounded by `limit` (default 100, max 500). */
|
|
8304
|
-
events: TicketTimelineEvent[];
|
|
8305
|
-
/**
|
|
8306
|
-
* True when events were left out: a source returned `limit` rows (the
|
|
8307
|
-
* vendor query has no sort, so more may exist) or the merged list was cut
|
|
8308
|
-
* to `limit`. Narrow `since`/`until` to page through the rest.
|
|
8309
|
-
*/
|
|
8310
|
-
truncated: boolean;
|
|
8311
|
-
/** Which sources (`notes`, `timeEntries`, `histories`) returned a full page. */
|
|
8312
|
-
cappedSources: string[];
|
|
8313
|
-
/**
|
|
8314
|
-
* Present only when at least one source deviated from the default global
|
|
8315
|
-
* `/query` route (issue #35): per-source route status — 'ok' (the global
|
|
8316
|
-
* route served it), 'ok-scoped' (the plan-declared scoped route served it
|
|
8317
|
-
* because the global route 404/500'd in this zone), 'miss' (every declared
|
|
8318
|
-
* route failed; the source contributed no events). Absent in the working
|
|
8319
|
-
* zone (the shape is unchanged).
|
|
8320
|
-
*/
|
|
8321
|
-
sourceRoutes?: {
|
|
8322
|
-
notes: 'ok' | 'ok-scoped' | 'miss';
|
|
8323
|
-
timeEntries: 'ok' | 'ok-scoped' | 'miss';
|
|
8324
|
-
histories?: 'ok' | 'ok-scoped' | 'miss';
|
|
8325
|
-
};
|
|
8326
|
-
}
|
|
8327
|
-
|
|
8328
|
-
interface OpenWithNoteAndAssignParams {
|
|
8329
|
-
/** The company the ticket opens under (the vendor field companyID). */
|
|
8330
|
-
companyID: number;
|
|
8331
|
-
/** The ticket title (required). */
|
|
8332
|
-
title: string;
|
|
8333
|
-
/** Priority picklist (default 3 — the ww29-proven Low). */
|
|
8334
|
-
priority?: number;
|
|
8335
|
-
/** Status picklist (default 1 — New). */
|
|
8336
|
-
status?: number;
|
|
8337
|
-
/**
|
|
8338
|
-
* The queue (the vendor field queueID). The node NEVER guesses a queue:
|
|
8339
|
-
* omitted + the vendor 500 names it → the typed QUEUE_REQUIRED error
|
|
8340
|
-
* (vendor message + suggestedAction: discover via autotask_describe(tickets.create)).
|
|
8341
|
-
*/
|
|
8342
|
-
queueID?: number;
|
|
8343
|
-
}
|
|
8344
|
-
interface OpenWithNoteAndAssignNote {
|
|
8345
|
-
/** The note text (required). */
|
|
8346
|
-
description: string;
|
|
8347
|
-
/**
|
|
8348
|
-
* The note title (REQUIRED — S12-A live-verified on ww29: the vendor 500s
|
|
8349
|
-
* the scoped note create without it — `Missing Required Field: title.`;
|
|
8350
|
-
* the S11-B proven note body is { title, description, noteType: 1,
|
|
8351
|
-
* publish: 1 }, ticketID supplied by the scoped path).
|
|
8352
|
-
*/
|
|
8353
|
-
title: string;
|
|
8354
|
-
/** The note type integer picklist (default 1). */
|
|
8355
|
-
noteType?: number;
|
|
8356
|
-
/** The publish integer picklist 1/2/4 (default 1 — NOT a boolean). */
|
|
8357
|
-
publish?: number;
|
|
8358
|
-
}
|
|
8359
|
-
interface OpenWithNoteAndAssignAssign {
|
|
8360
|
-
/** The resource to assign (prechecked via resources.get — RESOURCE_INVALID on missing/inactive; number, or a canonical integer string for ids above 2^53). */
|
|
8361
|
-
resourceID: Identifier;
|
|
8362
|
-
/**
|
|
8363
|
-
* The resource role to assign (REQUIRED — S12-A live-verified on ww29:
|
|
8364
|
-
* the vendor REQUIRES both ids when assigning a resource —
|
|
8365
|
-
* `Data violation: When assigning a Resource, you must assign both a
|
|
8366
|
-
* assignedResourceID and assignedResourceRoleID.` — a roleID without a
|
|
8367
|
-
* resourceID (or vice versa) is a zero-wire config fault, never a
|
|
8368
|
-
* half-assignment on the wire).
|
|
8369
|
-
*/
|
|
8370
|
-
roleID: number;
|
|
8371
|
-
}
|
|
8372
|
-
/** One step of the partial-failure contract (create/note/assign). */
|
|
8373
|
-
interface OpenStepResult {
|
|
8374
|
-
name: 'create' | 'note' | 'assign';
|
|
8375
|
-
ok: boolean;
|
|
8376
|
-
/** The typed failure (code + vendor detail) when ok is false. */
|
|
8377
|
-
error?: string;
|
|
8378
|
-
}
|
|
8379
|
-
interface OpenWithNoteAndAssignResult {
|
|
8380
|
-
/** The created ticket id (always present once the create settled). */
|
|
8381
|
-
ticketId: number;
|
|
8382
|
-
/** The vendor ticket number (from the assign merge read when assign ran; null otherwise). */
|
|
8383
|
-
ticketNumber: string | null;
|
|
8384
|
-
/** The created note id (null when no note was requested or the step failed). */
|
|
8385
|
-
noteId: number | null;
|
|
8386
|
-
/** True when the assignment was applied (the merge PUT settled 200). */
|
|
8387
|
-
assigned: boolean;
|
|
8388
|
-
/** The partial-failure contract: every step's outcome (a failure never throws — it lands here). */
|
|
8389
|
-
steps: OpenStepResult[];
|
|
8390
|
-
/**
|
|
8391
|
-
* Present when the assign precheck touched the resources surface (blind to
|
|
8392
|
-
* the API user — count/query return 0; get is the authority; docs/API.md §11).
|
|
8393
|
-
*/
|
|
8394
|
-
blind?: {
|
|
8395
|
-
resources: true;
|
|
8396
|
-
note: string;
|
|
8397
|
-
};
|
|
8398
|
-
}
|
|
8399
|
-
|
|
8400
|
-
interface TicketChangeStatusResult {
|
|
8401
|
-
ticketId: Identifier;
|
|
8402
|
-
previousStatus: number | null;
|
|
8403
|
-
/** The post-PUT read-back value (verified === targetStatus or the op throws). */
|
|
8404
|
-
status: number;
|
|
8405
|
-
changed: true;
|
|
8406
|
-
/** The map-required fields the node filled with proven-safe defaults. */
|
|
8407
|
-
filledFields: string[];
|
|
8408
|
-
/** Discovery-merge count applied on PUT 500s (0 = first-try PUT). */
|
|
8409
|
-
discoveryMerges: number;
|
|
8410
|
-
}
|
|
8411
|
-
interface TicketChangeStatusNoChange {
|
|
8412
|
-
ticketId: Identifier;
|
|
8413
|
-
changed: false;
|
|
8414
|
-
status: number;
|
|
8415
|
-
reason: 'NO_CHANGE';
|
|
8416
|
-
}
|
|
8417
|
-
|
|
8418
|
-
/** Options for `fullContext` (all optional; the pinned defaults). */
|
|
8419
|
-
interface TicketFullContextOptions {
|
|
8420
|
-
/** Max note records (default 50). */
|
|
8421
|
-
noteLimit?: number;
|
|
8422
|
-
/** Max time-entry records (default 50). */
|
|
8423
|
-
timeEntryLimit?: number;
|
|
8424
|
-
/** Include the attachments part (default true) — METADATA only (ids + names); data download stays a separate op. */
|
|
8425
|
-
includeAttachments?: boolean;
|
|
8426
|
-
/** Include the histories part (default false — budget control). */
|
|
8427
|
-
includeHistories?: boolean;
|
|
8428
|
-
/** Long note/history text is truncated to this many chars in the served copy and flagged (default 500). */
|
|
8429
|
-
textLimit?: number;
|
|
8430
|
-
/** Opt-in name/label siblings (issue #77; default OFF — the sibling keys are ABSENT, not null, and no name/label resolution runs: zero added wire, byte-identical output). ON: the ticket row and each time-entry row carry the closed-scope siblings (the ticket picklist labels — status / priority / ticketType / issueType / subIssueType / source / queue — plus the contract / billing-code / role record-FK names and the resource names — creator + the time-entry resource) and the top-level `names` section. */
|
|
8431
|
-
names?: boolean;
|
|
8432
|
-
/** May LOWER the composite's name-read budget (default 20 — the count of COLD wire reads issued for name resolution; cache hits are free of the budget). The caller may lower it, never raise it; over-budget ids serve `name: null` and the names section sets `truncated: true` (never an error). */
|
|
8433
|
-
maxNameReads?: number;
|
|
8434
|
-
}
|
|
8435
|
-
/** One capped list part (a full page sets `capped: true` — more may exist). */
|
|
8436
|
-
interface TicketFullContextPart<TItem = Record<string, unknown>> {
|
|
8437
|
-
items: TItem[];
|
|
8438
|
-
/** True when the part returned a full page (the vendor query has no sort — more may exist past the cap). */
|
|
8439
|
-
capped: boolean;
|
|
8440
|
-
/** Present only when the part was served by the plan-declared parent-scoped route (issue #35: the global /query route 404/500'd in this zone). Absent when the default global route served the part (working-zone shape unchanged). */
|
|
8441
|
-
route?: 'scoped';
|
|
8442
|
-
/** Present only when the part status is 'miss' (issue #35): every declared route attempted, in attempt order. The part serves no items; the call itself succeeds (a part miss never fails the op — the same rule as the FK 'absent' parts). */
|
|
8443
|
-
routeFacts?: TicketChildRouteFact[];
|
|
8444
|
-
}
|
|
8445
|
-
/** The attachments part is METADATA only (data download stays a separate op). */
|
|
8446
|
-
interface TicketFullContextAttachments {
|
|
8447
|
-
ids: number[];
|
|
8448
|
-
/** The attachment `title` (null when absent). */
|
|
8449
|
-
names: Array<string | null>;
|
|
8450
|
-
capped: boolean;
|
|
8451
|
-
route?: 'scoped';
|
|
8452
|
-
routeFacts?: TicketChildRouteFact[];
|
|
8453
|
-
}
|
|
8454
|
-
/**
|
|
8455
|
-
* The full ticket context in ONE call (plan T3): the ticket + its context
|
|
8456
|
-
* parts (the proven `getContext` 5-part composite — dangling FKs come back
|
|
8457
|
-
* null and are reported in `parts`, a part miss never fails the op) + its
|
|
8458
|
-
* notes, time entries, attachment metadata and (opt-in) histories via the
|
|
8459
|
-
* timeline's bounded query machinery. 8 bounded reads (10 with
|
|
8460
|
-
* `includeHistories`); zero mutating. The ticket itself missing → the
|
|
8461
|
-
* `getContext` NotFoundError propagates.
|
|
8462
|
-
*/
|
|
8463
|
-
interface TicketFullContext {
|
|
8464
|
-
ticket: Ticket;
|
|
8465
|
-
/** Null when the ticket carries no companyID (or the record misses). */
|
|
8466
|
-
company: Company | null;
|
|
8467
|
-
/** Null when the ticket carries no contactID (or the record misses). */
|
|
8468
|
-
contact: Contact | null;
|
|
8469
|
-
/** Null when the ticket carries no assignedResourceID (or the record misses). */
|
|
8470
|
-
assignedResource: Resource | null;
|
|
8471
|
-
/** Null when the ticket carries no projectID (or the record misses). */
|
|
8472
|
-
project: Project | null;
|
|
8473
|
-
notes: TicketFullContextPart;
|
|
8474
|
-
timeEntries: TicketFullContextPart;
|
|
8475
|
-
/** Present when `includeAttachments` is not false (default: present). */
|
|
8476
|
-
attachments: TicketFullContextAttachments;
|
|
8477
|
-
/** Present only when `includeHistories: true`. */
|
|
8478
|
-
histories?: TicketFullContextPart;
|
|
8479
|
-
/** True when ANY part hit its cap (more may exist past the cap) — or any name read hit the name-read budget (issue #77, `names: true`). */
|
|
8480
|
-
truncated: boolean;
|
|
8481
|
-
/** The opt-in name/label section (issue #77) — present EXACTLY when `names: true` (the sibling keys are absent from the rows otherwise). */
|
|
8482
|
-
names?: CompositeNamesSection;
|
|
8483
|
-
/** The Line of Business chain that applies to this ticket — present EXACTLY when `names: true`. Resolved from the ticket's own `organizationalLevelAssociationID` when set, otherwise from the ticket's CONTRACT's pointer (`source: 'contract'`, `contractId` says which; the association is maintained on contracts in practice, so this is the common path). The three hops: the OrganizationalLevelAssociation, the OrganizationalLevel2 (the customizable "Line of Business" label) and the OrganizationalLevel1 (the division). An absent pointer anywhere is reported with all-`missing` markers; a dangling record is `unresolved`; a broken chain is never an error. Costs 1 association + up to 2 level reads inside `maxNameReads`, plus one cached contract read when the fallback runs. */
|
|
8484
|
-
lineOfBusiness?: LineOfBusinessNames;
|
|
8485
|
-
/** Per-part status: FK parts 'ok' | 'absent' (dangling/missing FK); list parts 'ok' (served by the global /query route — a 0-row filtered query is a legitimate answer), 'ok-scoped' (issue #35: the plan-declared scoped route served the part because the global route 404/500'd in this zone — only where the plan declares a scoped route), or 'miss' (issue #35: every declared route failed; the part serves no items, recorded in the part's routeFacts). */
|
|
8486
|
-
parts: {
|
|
8487
|
-
company: 'ok' | 'absent';
|
|
8488
|
-
contact: 'ok' | 'absent';
|
|
8489
|
-
assignedResource: 'ok' | 'absent';
|
|
8490
|
-
project: 'ok' | 'absent';
|
|
8491
|
-
notes: 'ok' | 'ok-scoped' | 'miss';
|
|
8492
|
-
timeEntries: 'ok' | 'ok-scoped' | 'miss';
|
|
8493
|
-
attachments: 'ok' | 'ok-scoped' | 'miss';
|
|
8494
|
-
histories?: 'ok' | 'ok-scoped' | 'miss';
|
|
8495
|
-
};
|
|
8496
|
-
}
|
|
8497
|
-
|
|
8498
|
-
type TicketAssignmentScope = 'primary' | 'secondary' | 'both';
|
|
8499
|
-
interface TicketsForResourceOptions {
|
|
8500
|
-
/** Which assignments to include (default 'both'). */
|
|
8501
|
-
scope?: TicketAssignmentScope;
|
|
8502
|
-
/** Keep only open tickets (default false) — the closed set is the tenant's picklist, see `closedStatus` in the result. */
|
|
8503
|
-
openOnly?: boolean;
|
|
8504
|
-
/** Explicit closed ids, overriding the resolved picklist (a caller decision, reported as source 'picklist'). */
|
|
8505
|
-
excludeStatusIds?: number[];
|
|
8506
|
-
/** Total ticket cap (1-500, default 100); `capped` is true when anything was dropped. */
|
|
8507
|
-
limit?: number;
|
|
8508
|
-
/** Extra Ticket fields on top of the pinned projection (id, ticketNumber, title, status, assignedResourceID, companyID). */
|
|
8509
|
-
includeFields?: string[];
|
|
8510
|
-
/** `false` (default true, unchanged): throw `STATUS_SEMANTICS_UNRESOLVED` instead of falling back to the assumed closed id 5 when the tenant picklist cannot be resolved (issue #244). */
|
|
8511
|
-
allowAssumed?: boolean;
|
|
8512
|
-
/** `true` (issue #248): return only the OPEN-ticket counts (`TicketsForResourceCountResult`, no ticket rows). `openOnly` and `limit` do not apply (`limit` is not validated): the open filter is always on and no rows are returned. The secondary link read follows next-page links (ids only) up to 20 pages, so `capped` is true only past 10,000 links. */
|
|
8513
|
-
countOnly?: boolean;
|
|
8514
|
-
}
|
|
8515
|
-
/** Options that select the rows result (`countOnly` absent or false). */
|
|
8516
|
-
type TicketsForResourceListOptions = Omit<TicketsForResourceOptions, 'countOnly'> & {
|
|
8517
|
-
countOnly?: false;
|
|
8518
|
-
};
|
|
8519
|
-
/** Options that select the count-only result. */
|
|
8520
|
-
type TicketsForResourceCountOptions = Omit<TicketsForResourceOptions, 'countOnly'> & {
|
|
8521
|
-
countOnly: true;
|
|
8522
|
-
};
|
|
8523
|
-
/**
|
|
8524
|
-
* The count-only result (issue #248). All figures count OPEN tickets (the same
|
|
8525
|
-
* filter as `tickets.count` with `status` not in the closed set): `primary`
|
|
8526
|
-
* equals `tickets.count({ filter: [assignedResourceID eq R, open leaf] })`,
|
|
8527
|
-
* `secondary` is the de-duplicated open secondary ticket ids, `both` their
|
|
8528
|
-
* overlap, `open` the union (primary + secondary - both).
|
|
8529
|
-
*/
|
|
8530
|
-
interface TicketsForResourceCountResult {
|
|
8531
|
-
resourceID: number;
|
|
8532
|
-
scope: TicketAssignmentScope;
|
|
8533
|
-
primary: number;
|
|
8534
|
-
secondary: number;
|
|
8535
|
-
both: number;
|
|
8536
|
-
open: number;
|
|
8537
|
-
/** True only when the secondary link read had more pages than it read, so `secondary`/`both`/`open` may undercount. */
|
|
8538
|
-
capped: boolean;
|
|
8539
|
-
closedStatus: TicketStatusDisclosure;
|
|
8540
|
-
}
|
|
8541
|
-
interface TicketsForResourceResult {
|
|
8542
|
-
resourceID: number;
|
|
8543
|
-
scope: TicketAssignmentScope;
|
|
8544
|
-
openOnly: boolean;
|
|
8545
|
-
/** The union, de-duplicated by id, ascending. */
|
|
8546
|
-
tickets: Ticket[];
|
|
8547
|
-
/** Ids returned for the primary read. */
|
|
8548
|
-
primaryIds: number[];
|
|
8549
|
-
/** Ticket ids the secondary link rows point at (and the ticket read returned). */
|
|
8550
|
-
secondaryIds: number[];
|
|
8551
|
-
/** The de-duplicated intersection: primary AND secondary. */
|
|
8552
|
-
bothIds: number[];
|
|
8553
|
-
/** `open` counts the OPEN tickets among those returned (a closed ticket rides the set when openOnly is false); `primary`/`secondary`/`both` count ids in the union. All four describe the returned, possibly capped, set. */
|
|
8554
|
-
counts: {
|
|
8555
|
-
primary: number;
|
|
8556
|
-
secondary: number;
|
|
8557
|
-
both: number;
|
|
8558
|
-
open: number;
|
|
8559
|
-
};
|
|
8560
|
-
/** True when a link page, the primary page or the total cap cut the answer. */
|
|
8561
|
-
capped: boolean;
|
|
8562
|
-
/** Ticket ids the link rows named that the ticket read did not return (deleted or invisible to this API user). */
|
|
8563
|
-
unresolvedIds: number[];
|
|
8564
|
-
/** The closed set this call filtered on, and its provenance (issue #226 disclosure). */
|
|
8565
|
-
closedStatus: TicketStatusDisclosure;
|
|
8566
|
-
}
|
|
8567
|
-
|
|
8568
|
-
/** The full LOB chain for one ticket. */
|
|
8569
|
-
interface TicketLineOfBusinessResult {
|
|
8570
|
-
ticketId: Identifier;
|
|
8571
|
-
/** Where the association id came from: the ticket's own pointer, its contract's, the caller's argument, or null when none was found. */
|
|
8572
|
-
associationSource: 'ticket' | 'contract' | 'argument' | null;
|
|
8573
|
-
/** The contract consulted for the fallback (null when the ticket pointer or the argument supplied the id). */
|
|
8574
|
-
contractId: Identifier | null;
|
|
8575
|
-
/** The association row when served, otherwise null. */
|
|
8576
|
-
association: OrganizationalLevelAssociation | null;
|
|
8577
|
-
/** The OrganizationalLevel2 row (the customizable "Line of Business" label), otherwise null. */
|
|
8578
|
-
organizationalLevel2: OrganizationalLevel2 | null;
|
|
8579
|
-
/** The OrganizationalLevel1 row (the division), otherwise null. */
|
|
8580
|
-
organizationalLevel1: OrganizationalLevel1 | null;
|
|
8581
|
-
/** Explicit per-hop markers — a broken chain is reported, never thrown.
|
|
8582
|
-
* `capped` cannot occur on this op: its fixed budget always covers the full
|
|
8583
|
-
* chain (1 association + up to 2 level reads). */
|
|
8584
|
-
markers: {
|
|
8585
|
-
association: LineOfBusinessMarker;
|
|
8586
|
-
organizationalLevel2: LineOfBusinessMarker;
|
|
8587
|
-
organizationalLevel1: LineOfBusinessMarker;
|
|
8588
|
-
};
|
|
8499
|
+
expand?: boolean;
|
|
8500
|
+
}): Promise<TicketNoteAttachmentSummary | null>;
|
|
8589
8501
|
}
|
|
8590
8502
|
|
|
8591
8503
|
/**
|
|
8592
|
-
*
|
|
8504
|
+
* TicketNotesResource — TicketNote resource (G4 batch A, plan key 'ticket_notes').
|
|
8593
8505
|
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
8594
8506
|
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
8507
|
+
* Parent-scoped child of 'tickets': CRUD under /V1.0/Tickets/{parentId}/Notes —
|
|
8508
|
+
* the global query/count stay unscoped (narrow with the 'ticketID' filter).
|
|
8595
8509
|
*/
|
|
8596
8510
|
|
|
8597
|
-
/** Query params for
|
|
8598
|
-
type
|
|
8599
|
-
declare class
|
|
8511
|
+
/** Query params for TicketNotesResource (the G3 filter surface; no per-resource invention). */
|
|
8512
|
+
type TicketNotesResourceQueryParams = QueryParams;
|
|
8513
|
+
declare class TicketNotesResource extends BaseResource<TicketNote, TicketNoteCreate, TicketNoteUpdate> {
|
|
8600
8514
|
constructor(http: HttpClient, pageSize: number);
|
|
8601
|
-
/** Query
|
|
8602
|
-
query(params?:
|
|
8603
|
-
/** Get every
|
|
8604
|
-
queryAll(params?:
|
|
8515
|
+
/** Query TicketNote records (global; narrow with the ticketID filter). */
|
|
8516
|
+
query(params?: TicketNotesResourceQueryParams): AsyncIterable<TicketNote>;
|
|
8517
|
+
/** Get every TicketNote record (the MCP-preferred read; 1000-page guarded). */
|
|
8518
|
+
queryAll(params?: TicketNotesResourceQueryParams): Promise<TicketNote[]>;
|
|
8605
8519
|
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
8606
|
-
count(params?:
|
|
8520
|
+
count(params?: TicketNotesResourceQueryParams): Promise<number>;
|
|
8521
|
+
/** Get one record by parent + id (/V1.0/Tickets/{parentId}/Notes/{id} — vendor item envelope; item: null → NotFoundError). */
|
|
8522
|
+
get(parentId: Identifier, id: Identifier, opts?: {
|
|
8523
|
+
fresh?: boolean;
|
|
8524
|
+
} | null): Promise<TicketNote>;
|
|
8525
|
+
/** Create a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the
|
|
8526
|
+
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
8527
|
+
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
8528
|
+
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
8529
|
+
create(parentId: Identifier, data: TicketNoteCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<TicketNoteCreate>>;
|
|
8530
|
+
/** Update a record under the parent (PATCH on the collection — swagger documents put+patch there;
|
|
8531
|
+
* the vendor keys the record by the id in the body; OperationResultModel → { id}). `dryRun: true` returns
|
|
8532
|
+
* the pinned envelope with the best-effort diff; a caller-supplied lastModifiedDate that
|
|
8533
|
+
* mismatches the vendor's current value throws STALE_OBJECT before the mutation. */
|
|
8534
|
+
update(parentId: Identifier, id: Identifier, data: TicketNoteUpdate, opts?: MutationOpts): Promise<OperationResult | DryRunResult<TicketNoteUpdate>>;
|
|
8535
|
+
/** Resolve a TicketNote from a numeric id (or, where the vendor indexes a primary text field,
|
|
8536
|
+
* from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
|
|
8537
|
+
* a bare value rejects with a config error (ids only);
|
|
8538
|
+
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
8539
|
+
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
8540
|
+
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
8541
|
+
* type-level escape hatch. */
|
|
8542
|
+
resolve(identifier: number | string, opts?: {
|
|
8543
|
+
expand?: boolean;
|
|
8544
|
+
}): Promise<TicketNoteSummary | null>;
|
|
8545
|
+
}
|
|
8546
|
+
|
|
8547
|
+
/**
|
|
8548
|
+
* TicketNoteWebhooksResource — TicketNoteWebhook resource (G5 batch B, plan key 'ticket_note_webhooks').
|
|
8549
|
+
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
8550
|
+
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
8551
|
+
* Parent-scoped child of 'ticket_notes': CRUD under /V1.0/TicketNotes/{parentId}/Webhook —
|
|
8552
|
+
* the global query/count stay unscoped (narrow with the 'parent' filter).
|
|
8553
|
+
*/
|
|
8554
|
+
|
|
8555
|
+
/** Query params for TicketNoteWebhooksResource (the G3 filter surface; no per-resource invention). */
|
|
8556
|
+
type TicketNoteWebhooksResourceQueryParams = QueryParams;
|
|
8557
|
+
declare class TicketNoteWebhooksResource extends BaseResource<TicketNoteWebhook, TicketNoteWebhookCreate, TicketNoteWebhookUpdate> {
|
|
8558
|
+
constructor(http: HttpClient, pageSize: number);
|
|
8559
|
+
/** Query TicketNoteWebhook records (global; narrow with the parent filter). */
|
|
8560
|
+
query(params?: TicketNoteWebhooksResourceQueryParams): AsyncIterable<TicketNoteWebhook>;
|
|
8561
|
+
/** Get every TicketNoteWebhook record (the MCP-preferred read; 1000-page guarded). */
|
|
8562
|
+
queryAll(params?: TicketNoteWebhooksResourceQueryParams): Promise<TicketNoteWebhook[]>;
|
|
8563
|
+
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
8564
|
+
count(params?: TicketNoteWebhooksResourceQueryParams): Promise<number>;
|
|
8607
8565
|
/** Get one record by id (item envelope; item: null → NotFoundError). `fresh: true` bypasses the read-cache lookup and refreshes the entry (issue #250). */
|
|
8608
8566
|
get(id: Identifier, opts?: {
|
|
8609
8567
|
fresh?: boolean;
|
|
8610
|
-
} | null): Promise<
|
|
8568
|
+
} | null): Promise<TicketNoteWebhook>;
|
|
8611
8569
|
/** Create a record (OperationResultModel → { id}). `dryRun: true` returns the
|
|
8612
8570
|
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
8613
8571
|
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
8614
8572
|
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
8615
|
-
create(data:
|
|
8573
|
+
create(data: TicketNoteWebhookCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<TicketNoteWebhookCreate>>;
|
|
8616
8574
|
/** Update a record (PUT on the COLLECTION — the vendored spec's item path is GET-only; the vendor
|
|
8617
8575
|
* keys the record by the id in the body). The vendor validates the FULL model on this route (V2), so a
|
|
8618
8576
|
* partial body is merged into the CURRENT record first: one fresh GET (which also serves the
|
|
@@ -8622,60 +8580,66 @@ declare class TicketsResource extends BaseResource<Ticket, TicketCreate, TicketU
|
|
|
8622
8580
|
* `dryRun: true` returns the pinned envelope whose `data` is the merged body (the exact confirmed
|
|
8623
8581
|
* wire) with the best-effort diff, from that same single read; a caller-supplied lastModifiedDate that
|
|
8624
8582
|
* mismatches the vendor's current value throws STALE_OBJECT before the mutation. */
|
|
8625
|
-
update(id: Identifier, data:
|
|
8626
|
-
/**
|
|
8627
|
-
*
|
|
8583
|
+
update(id: Identifier, data: TicketNoteWebhookUpdate, opts?: MutationOpts): Promise<OperationResult | DryRunResult<TicketNoteWebhookUpdate>>;
|
|
8584
|
+
/** Delete a record (OperationResultModel → { id}). `dryRun: true` returns the pinned
|
|
8585
|
+
* envelope and never issues the delete. */
|
|
8586
|
+
delete(id: Identifier, opts?: MutationOpts): Promise<OperationResult | DryRunResult<Record<string, unknown>>>;
|
|
8587
|
+
/** Resolve a TicketNoteWebhook from a numeric id (or, where the vendor indexes a primary text field,
|
|
8588
|
+
* from an exact match on name). A numeric id miss throws NOT_FOUND; a complete
|
|
8628
8589
|
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
8629
8590
|
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
8630
8591
|
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
8631
8592
|
* type-level escape hatch. */
|
|
8632
8593
|
resolve(identifier: number | string, opts?: {
|
|
8633
8594
|
expand?: boolean;
|
|
8634
|
-
}): Promise<
|
|
8635
|
-
/**
|
|
8636
|
-
|
|
8637
|
-
/** Search Ticket records: bounded contains on title (no vendor free-text search exists);
|
|
8638
|
-
* limit defaults to 25, max 500. Optional companyID scopes the search to one company's tickets (and-joined
|
|
8639
|
-
* with the title match, server-side); includeFields projects the returned columns (id is always returned). */
|
|
8595
|
+
}): Promise<TicketNoteWebhookSummary | null>;
|
|
8596
|
+
/** Search TicketNoteWebhook records: bounded contains on name (no vendor free-text search exists);
|
|
8597
|
+
* limit defaults to 25, max 500. */
|
|
8640
8598
|
search(query: string, opts?: {
|
|
8641
8599
|
limit?: number;
|
|
8642
|
-
|
|
8643
|
-
|
|
8644
|
-
|
|
8645
|
-
|
|
8646
|
-
|
|
8647
|
-
|
|
8648
|
-
|
|
8649
|
-
|
|
8650
|
-
|
|
8651
|
-
|
|
8652
|
-
|
|
8653
|
-
|
|
8654
|
-
|
|
8655
|
-
|
|
8656
|
-
|
|
8657
|
-
|
|
8658
|
-
|
|
8659
|
-
|
|
8660
|
-
|
|
8661
|
-
/**
|
|
8662
|
-
|
|
8663
|
-
|
|
8664
|
-
|
|
8665
|
-
|
|
8666
|
-
|
|
8667
|
-
|
|
8668
|
-
|
|
8669
|
-
|
|
8670
|
-
|
|
8671
|
-
|
|
8672
|
-
|
|
8673
|
-
|
|
8674
|
-
|
|
8675
|
-
|
|
8676
|
-
|
|
8677
|
-
|
|
8678
|
-
|
|
8600
|
+
}): Promise<TicketNoteWebhookSummary[]>;
|
|
8601
|
+
}
|
|
8602
|
+
|
|
8603
|
+
/**
|
|
8604
|
+
* TicketSecondaryResourcesResource — TicketSecondaryResource resource (G4 batch A, plan key 'ticket_secondary_resources').
|
|
8605
|
+
* GENERATED by scripts/generate-batch.mjs from capabilities.plan.json + api-docs.json.
|
|
8606
|
+
* Do not hand-edit; re-run the generator (the plan is the source of truth).
|
|
8607
|
+
* Parent-scoped child of 'tickets': CRUD under /V1.0/Tickets/{parentId}/SecondaryResources —
|
|
8608
|
+
* the global query/count stay unscoped (narrow with the 'ticketID' filter).
|
|
8609
|
+
*/
|
|
8610
|
+
|
|
8611
|
+
/** Query params for TicketSecondaryResourcesResource (the G3 filter surface; no per-resource invention). */
|
|
8612
|
+
type TicketSecondaryResourcesResourceQueryParams = QueryParams;
|
|
8613
|
+
declare class TicketSecondaryResourcesResource extends BaseResource<TicketSecondaryResource, TicketSecondaryResourceCreate, TicketSecondaryResourceUpdate> {
|
|
8614
|
+
constructor(http: HttpClient, pageSize: number);
|
|
8615
|
+
/** Query TicketSecondaryResource records (global; narrow with the ticketID filter). */
|
|
8616
|
+
query(params?: TicketSecondaryResourcesResourceQueryParams): AsyncIterable<TicketSecondaryResource>;
|
|
8617
|
+
/** Get every TicketSecondaryResource record (the MCP-preferred read; 1000-page guarded). */
|
|
8618
|
+
queryAll(params?: TicketSecondaryResourcesResourceQueryParams): Promise<TicketSecondaryResource[]>;
|
|
8619
|
+
/** Count matching records (queryCount envelope unwrapped to a plain number). */
|
|
8620
|
+
count(params?: TicketSecondaryResourcesResourceQueryParams): Promise<number>;
|
|
8621
|
+
/** Get one record by parent + id (/V1.0/Tickets/{parentId}/SecondaryResources/{id} — vendor item envelope; item: null → NotFoundError). */
|
|
8622
|
+
get(parentId: Identifier, id: Identifier, opts?: {
|
|
8623
|
+
fresh?: boolean;
|
|
8624
|
+
} | null): Promise<TicketSecondaryResource>;
|
|
8625
|
+
/** Create a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the
|
|
8626
|
+
* pinned envelope (section 19.3) and never issues the create. A 2xx that is not the
|
|
8627
|
+
* specced envelope runs the plan-pinned marker recovery (issue #13 — one bounded read;
|
|
8628
|
+
* `recoverIdFromMarker: false` restores the pre-recovery behaviour). */
|
|
8629
|
+
create(parentId: Identifier, data: TicketSecondaryResourceCreate, opts?: CreateOpts): Promise<OperationResult | DryRunResult<TicketSecondaryResourceCreate>>;
|
|
8630
|
+
/** Delete a record under the parent (OperationResultModel → { id}). `dryRun: true` returns the pinned
|
|
8631
|
+
* envelope and never issues the delete. */
|
|
8632
|
+
delete(parentId: Identifier, id: Identifier, opts?: MutationOpts): Promise<OperationResult | DryRunResult<Record<string, unknown>>>;
|
|
8633
|
+
/** Resolve a TicketSecondaryResource from a numeric id (or, where the vendor indexes a primary text field,
|
|
8634
|
+
* from a numeric id — this resource has no primary text field). A numeric id miss throws NOT_FOUND;
|
|
8635
|
+
* a bare value rejects with a config error (ids only);
|
|
8636
|
+
* non-match returns null; ambiguity throws RESOLUTION_AMBIGUOUS (candidate ids) and a
|
|
8637
|
+
* cap-tripped bounded client scan throws RESOLUTION_TRUNCATED (never a silent null).
|
|
8638
|
+
* The compact shape is the structural alias of the full record; `expand: true` is the
|
|
8639
|
+
* type-level escape hatch. */
|
|
8640
|
+
resolve(identifier: number | string, opts?: {
|
|
8641
|
+
expand?: boolean;
|
|
8642
|
+
}): Promise<TicketSecondaryResourceSummary | null>;
|
|
8679
8643
|
}
|
|
8680
8644
|
|
|
8681
8645
|
/**
|
|
@@ -8734,70 +8698,85 @@ declare class TicketWebhooksResource extends BaseResource<TicketWebhook, TicketW
|
|
|
8734
8698
|
}): Promise<TicketWebhookSummary[]>;
|
|
8735
8699
|
}
|
|
8736
8700
|
|
|
8737
|
-
/**
|
|
8738
|
-
|
|
8739
|
-
|
|
8740
|
-
|
|
8701
|
+
/** time_entries.moveToTicket (issue #197): create -> verify -> delete on the shared move engine. */
|
|
8702
|
+
type TimeEntriesMoveToTicketOptions = MoveToTicketOptions;
|
|
8703
|
+
type TimeEntriesMoveToTicketResult = MoveResult;
|
|
8704
|
+
|
|
8705
|
+
/**
|
|
8706
|
+
* Posted state of time entries, derived from `billing_items.timeEntryID`.
|
|
8707
|
+
*
|
|
8708
|
+
* This zone's TimeEntry entity has no `postedDate`/`postedOnTime` (reads omit
|
|
8709
|
+
* them, `postedDate` filters 500: W-D3), so the join is the authority: an entry
|
|
8710
|
+
* is posted when a billing item references it. Approval is NOT consulted:
|
|
8711
|
+
* live ww29 2026-10-27 showed `billingApprovalDateTime` is never populated while
|
|
8712
|
+
* billing items DO reference those entries.
|
|
8713
|
+
*
|
|
8714
|
+
* Cost: one `BillingItems/query` per {@link FETCH_BY_IDS_CHUNK_SIZE} ids; the
|
|
8715
|
+
* entry read is capped at 500, so at most 2 joins (250 safe-integer ids serialise
|
|
8716
|
+
* to <= ~4.3k chars, under the 8,000-char filter cap). A 429 (or any other fault)
|
|
8717
|
+
* propagates: no swallow, no per-id fallback.
|
|
8718
|
+
*/
|
|
8719
|
+
|
|
8720
|
+
type PostedState = 'posted' | 'unposted';
|
|
8721
|
+
|
|
8741
8722
|
/**
|
|
8742
|
-
* Paging past the 500-entry cap (issue #242)
|
|
8743
|
-
*
|
|
8744
|
-
*
|
|
8745
|
-
* honest totals in one budgeted call.
|
|
8723
|
+
* Paging past the 500-entry cap (issue #242). `cursor` pages a busy window
|
|
8724
|
+
* across calls (each call stays one entry page + at most 2 joins); `countOnly`
|
|
8725
|
+
* returns the window's honest totals in one budgeted call.
|
|
8746
8726
|
*/
|
|
8747
8727
|
interface TimeEntriesPostedPagingOptions {
|
|
8748
8728
|
/** Continue the window: the `nextCursor` of the previous call made with the SAME window and filters. The page is the vendor's continuation page (up to 500 entries; `limit` sizes the first page only), joined the same way. Not with `countOnly`. */
|
|
8749
8729
|
cursor?: string;
|
|
8750
|
-
/** `true`: return only the window's totals (`TimeEntriesPostedCountResult`, no rows). One count call sizes the window, then EVERY entry page is read (ids only) and joined, under `maxVendorCalls`; complete or a typed refusal, never a short total (the distinct-id total must equal the count before or after the walk, else INVALID_RESPONSE). `limit` and `
|
|
8730
|
+
/** `true`: return only the window's totals (`TimeEntriesPostedCountResult`, no rows). One count call sizes the window, then EVERY entry page is read (ids only) and joined, under `maxVendorCalls`; complete or a typed refusal, never a short total (the distinct-id total must equal the count before or after the walk, else INVALID_RESPONSE). `limit` and `state` do not apply. */
|
|
8751
8731
|
countOnly?: boolean;
|
|
8752
8732
|
/** The countOnly wire budget (integer 1-200, default 30). An estimate (1 count + 1 per 500 entries + 1 per 250 entries + 1 re-count after the walk) over it refuses with BUDGET_EXCEEDED before any page is read. */
|
|
8753
8733
|
maxVendorCalls?: number;
|
|
8754
8734
|
}
|
|
8755
|
-
|
|
8756
|
-
|
|
8735
|
+
/** dateWorkedWindow options: the state narrowing + the eq narrowings + the shared paging bag. */
|
|
8736
|
+
interface TimeEntriesPostedWindowOptions extends TimeEntriesPostedPagingOptions {
|
|
8737
|
+
/** Posted-state narrowing, applied CLIENT-side after the billing-item join: 'posted' = rows a billing item references, 'unposted' = rows none references, omitted = both. No postedDate condition is ever sent. */
|
|
8738
|
+
state?: PostedState;
|
|
8739
|
+
/** Max records (default 500 = the hard cap — a window with more than 500 matching rows: the bounded query op (time_entries.query) with the same dateWorked filter, its 2500-row walk cap; issue #128). */
|
|
8757
8740
|
limit?: number;
|
|
8758
|
-
/** Optional ticketID eq narrowing
|
|
8741
|
+
/** Optional ticketID eq narrowing. */
|
|
8759
8742
|
ticketID?: number;
|
|
8760
|
-
/**
|
|
8761
|
-
|
|
8762
|
-
dateFrom?: string;
|
|
8763
|
-
/** Inclusive `dateWorked` window end, 'YYYY-MM-DD'. */
|
|
8764
|
-
/** OPTIONAL, but pass it together with `dateFrom` (see there). */
|
|
8765
|
-
dateTo?: string;
|
|
8743
|
+
/** Optional resourceID eq narrowing. */
|
|
8744
|
+
resourceID?: number;
|
|
8766
8745
|
}
|
|
8767
|
-
/**
|
|
8768
|
-
|
|
8769
|
-
|
|
8746
|
+
/** Options that select the rows result (`countOnly` absent or false). */
|
|
8747
|
+
type TimeEntriesPostedWindowListOptions = Omit<TimeEntriesPostedWindowOptions, 'countOnly'> & {
|
|
8748
|
+
countOnly?: false;
|
|
8749
|
+
};
|
|
8750
|
+
/** Options that select the count-only result. */
|
|
8751
|
+
type TimeEntriesPostedWindowCountOptions = Omit<TimeEntriesPostedWindowOptions, 'countOnly'> & {
|
|
8752
|
+
countOnly: true;
|
|
8753
|
+
};
|
|
8754
|
+
/** The posted-window read result (issue #10): the window's items + the two-direction count in one pass. */
|
|
8755
|
+
interface TimeEntriesPostedWindowResult {
|
|
8756
|
+
/** The window's entries read, narrowed by `state` when set (bounded by `limit`). */
|
|
8770
8757
|
items: TimeEntry[];
|
|
8771
|
-
/**
|
|
8772
|
-
|
|
8773
|
-
/**
|
|
8758
|
+
/** Of EVERY entry read (before the `state` narrowing), those a billing item references (the join — never a `postedDate` read). With `state` set, `items.length` can differ from postedCount + unpostedCount. */
|
|
8759
|
+
postedCount: number;
|
|
8760
|
+
/** Of EVERY entry read (before the `state` narrowing), those no billing item references — non-zero even with `state: 'posted'` (entries whose join page was truncated are in neither count). */
|
|
8761
|
+
unpostedCount: number;
|
|
8762
|
+
/** The inclusive UTC window actually queried (wire bounds, second precision). */
|
|
8774
8763
|
window: {
|
|
8775
|
-
from: string
|
|
8776
|
-
to: string
|
|
8764
|
+
from: string;
|
|
8765
|
+
to: string;
|
|
8777
8766
|
};
|
|
8778
8767
|
/** The vendor's next-page cursor for the entry read: pass it back as `opts.cursor` (same window and filters) to read the next page. null on the last page. */
|
|
8779
8768
|
nextCursor: string | null;
|
|
8780
|
-
/** Entries read
|
|
8769
|
+
/** Entries read whose billing-item join page was truncated: in neither count nor a `state`-narrowed `items` (a cursor loop does not see them). 0 normally; > 0 also sets `truncated`. */
|
|
8781
8770
|
unconfirmed: number;
|
|
8782
|
-
/**
|
|
8783
|
-
|
|
8784
|
-
/** INFORMATIONAL only, not posted state: items without `billingApprovalDateTime`. */
|
|
8785
|
-
unapprovedCount: number;
|
|
8771
|
+
/** True when the entry read has a live `pageDetails.nextPageUrl` cursor (more matching records than the bounded read returned) OR a billing-item join page was truncated (those entries are in neither count) — the posted/unposted counts then cover the returned rows ONLY (at most `limit`); re-query with a wider window or a narrowing filter to reconcile the totals. */
|
|
8772
|
+
truncated: boolean;
|
|
8786
8773
|
}
|
|
8787
|
-
/** Options that select the rows result (`countOnly` absent or false). */
|
|
8788
|
-
type TimeEntriesStatusListOptions = Omit<TimeEntriesStatusOptions, 'countOnly'> & {
|
|
8789
|
-
countOnly?: false;
|
|
8790
|
-
};
|
|
8791
|
-
/** Options that select the count-only result. */
|
|
8792
|
-
type TimeEntriesStatusCountOptions = Omit<TimeEntriesStatusOptions, 'countOnly'> & {
|
|
8793
|
-
countOnly: true;
|
|
8794
|
-
};
|
|
8795
8774
|
/** The countOnly result (issue #242): the whole window, every entry page read and joined. */
|
|
8796
8775
|
interface TimeEntriesPostedCountResult {
|
|
8797
|
-
/** The inclusive dateWorked window counted
|
|
8776
|
+
/** The inclusive dateWorked window counted. */
|
|
8798
8777
|
window: {
|
|
8799
|
-
from: string
|
|
8800
|
-
to: string
|
|
8778
|
+
from: string;
|
|
8779
|
+
to: string;
|
|
8801
8780
|
};
|
|
8802
8781
|
/** Entries in the window (every page read; de-duplicated by id). Always postedCount + unpostedCount. */
|
|
8803
8782
|
total: number;
|
|
@@ -8812,154 +8791,6 @@ interface TimeEntriesPostedCountResult {
|
|
|
8812
8791
|
/** The budget in force (`maxVendorCalls`). */
|
|
8813
8792
|
budget: number;
|
|
8814
8793
|
}
|
|
8815
|
-
/** postedWithin options: the optional narrowing + the shared limit bound. */
|
|
8816
|
-
interface TimeEntriesPostedWindowOptions extends TimeEntriesPostedPagingOptions {
|
|
8817
|
-
/** Posted narrowing, applied CLIENT-side after the billing-item join: `true` = posted rows only, `false` = unposted rows only (entries no billing item references), omitted = both. No postedDate condition is ever sent. */
|
|
8818
|
-
posted?: boolean;
|
|
8819
|
-
/** Max records (default 500 = the hard cap — a window with more than 500 matching rows: the bounded query op (time_entries.query) with the same dateWorked filter, its 2500-row walk cap; issue #128). */
|
|
8820
|
-
limit?: number;
|
|
8821
|
-
/** Optional ticketID eq narrowing. */
|
|
8822
|
-
ticketID?: number;
|
|
8823
|
-
/** Optional resourceID eq narrowing. */
|
|
8824
|
-
resourceID?: number;
|
|
8825
|
-
/** IANA timezone — accepted and validated, but it never shifts `from`/`to`: `dateWorked` is a date-only value at 00:00 UTC, so those calendar days ARE the bounds (a zone-converted window picked the wrong day behind UTC). */
|
|
8826
|
-
tz?: string;
|
|
8827
|
-
}
|
|
8828
|
-
/** The posted-window read result (issue #10): the window's items + the two-direction count in one pass. */
|
|
8829
|
-
interface TimeEntriesPostedWindowResult {
|
|
8830
|
-
/** The window's entries read, narrowed by `posted` when set (bounded by `limit`). */
|
|
8831
|
-
items: TimeEntry[];
|
|
8832
|
-
/** Of EVERY entry read (before the `posted` narrowing), those a billing item references (the join — never a `postedDate` read). With `posted` set, `items.length` can differ from postedCount + unpostedCount. */
|
|
8833
|
-
postedCount: number;
|
|
8834
|
-
/** Of EVERY entry read (before the `posted` narrowing), those no billing item references — non-zero even with `posted: true` (entries whose join page was truncated are in neither count). */
|
|
8835
|
-
unpostedCount: number;
|
|
8836
|
-
/** The inclusive UTC window actually queried (wire bounds, second precision). */
|
|
8837
|
-
window: {
|
|
8838
|
-
from: string;
|
|
8839
|
-
to: string;
|
|
8840
|
-
};
|
|
8841
|
-
/** The vendor's next-page cursor for the entry read: pass it back as `opts.cursor` (same window and filters) to read the next page. null on the last page. */
|
|
8842
|
-
nextCursor: string | null;
|
|
8843
|
-
/** Entries read whose billing-item join page was truncated: in neither count nor a `posted`-narrowed `items` (a cursor loop does not see them). 0 normally; > 0 also sets `truncated`. */
|
|
8844
|
-
unconfirmed: number;
|
|
8845
|
-
/** True when the entry read has a live `pageDetails.nextPageUrl` cursor (more matching records than the bounded read returned) OR a billing-item join page was truncated (those entries are in neither count) — the posted/unposted counts then cover the returned rows ONLY (at most `limit`); re-query with a wider window or a narrowing filter to reconcile the totals. */
|
|
8846
|
-
truncated: boolean;
|
|
8847
|
-
}
|
|
8848
|
-
/** Options that select the rows result (`countOnly` absent or false). */
|
|
8849
|
-
type TimeEntriesPostedWindowListOptions = Omit<TimeEntriesPostedWindowOptions, 'countOnly'> & {
|
|
8850
|
-
countOnly?: false;
|
|
8851
|
-
};
|
|
8852
|
-
/** Options that select the count-only result. */
|
|
8853
|
-
type TimeEntriesPostedWindowCountOptions = Omit<TimeEntriesPostedWindowOptions, 'countOnly'> & {
|
|
8854
|
-
countOnly: true;
|
|
8855
|
-
};
|
|
8856
|
-
|
|
8857
|
-
/**
|
|
8858
|
-
* `createForResource` params. The typed linkage pins + the time window are
|
|
8859
|
-
* first-class; anything else passes through as a vendor TimeEntry field
|
|
8860
|
-
* (read-only + resolver-owned fields are stripped before the wire).
|
|
8861
|
-
*/
|
|
8862
|
-
interface TimeEntriesCreateForResourceParams {
|
|
8863
|
-
/**
|
|
8864
|
-
* Pin the INTERNAL linkage: an EXISTING active internal allocation code
|
|
8865
|
-
* (useType 3). Verified by get (active / family / applicable) — typed
|
|
8866
|
-
* failures, never a silent substitute, and never a create.
|
|
8867
|
-
*/
|
|
8868
|
-
internallAllocationCodeID?: number;
|
|
8869
|
-
/** Pin the TICKET linkage (vendor gate: roleID is also required — validated as an allocation code). */
|
|
8870
|
-
ticketID?: number;
|
|
8871
|
-
/** Pin the TASK linkage (vendor gate: roleID is also required — validated as an allocation code). */
|
|
8872
|
-
taskID?: number;
|
|
8873
|
-
/**
|
|
8874
|
-
* TASK/TICKET linkage: pin the roleID value. The vendor validates it as an
|
|
8875
|
-
* ALLOCATION CODE (gate 3) — it must be an active general code applicable
|
|
8876
|
-
* to the resource. Omit and the resolver picks one.
|
|
8877
|
-
*/
|
|
8878
|
-
roleID?: number;
|
|
8879
|
-
/** Date worked, UTC `YYYY-MM-DD` (default: today). */
|
|
8880
|
-
dateWorked?: string;
|
|
8881
|
-
/** Window start, UTC ISO (default: today `T09:00:00.000Z`). */
|
|
8882
|
-
startDateTime?: string;
|
|
8883
|
-
/** Window end, UTC ISO (default: today `T18:00:00.000Z`). */
|
|
8884
|
-
endDateTime?: string;
|
|
8885
|
-
/** Hours worked (default: 8). */
|
|
8886
|
-
hoursWorked?: number;
|
|
8887
|
-
/** Clock for the window defaults (tests pin it for determinism; stripped before the wire — never sent). */
|
|
8888
|
-
now?: Date;
|
|
8889
|
-
/**
|
|
8890
|
-
* Any other vendor TimeEntry field (summaryNotes, internalNotes,
|
|
8891
|
-
* isNonBillable, offsetHours, showOnInvoice, …). Read-only and
|
|
8892
|
-
* resolver-owned fields are stripped and never sent.
|
|
8893
|
-
*/
|
|
8894
|
-
[field: string]: unknown;
|
|
8895
|
-
}
|
|
8896
|
-
/** The allocation code the entry bills against (the resolver's pick or the caller pin). */
|
|
8897
|
-
interface TimeEntriesAllocationCodeInfo {
|
|
8898
|
-
id: number;
|
|
8899
|
-
name: string | null;
|
|
8900
|
-
department: number | null;
|
|
8901
|
-
billingCodeType: number | null;
|
|
8902
|
-
}
|
|
8903
|
-
/** Normalised `createForResource` result (the applied path). */
|
|
8904
|
-
interface TimeEntriesCreateForResourceResult {
|
|
8905
|
-
/** The created TimeEntry id (the vendor OperationResultModel itemId). */
|
|
8906
|
-
id: number;
|
|
8907
|
-
/** The linkage actually sent: 'internal' | 'task' | 'ticket'. */
|
|
8908
|
-
linkage: 'internal' | 'task' | 'ticket';
|
|
8909
|
-
/** The allocation code the entry bills against. */
|
|
8910
|
-
allocationCode: TimeEntriesAllocationCodeInfo;
|
|
8911
|
-
/** TASK/TICKET only: the roleID value actually sent (the H2 code id, or the demoted H1 role id). */
|
|
8912
|
-
roleID?: number;
|
|
8913
|
-
/** TASK/TICKET only: the 1-based role-ladder position of the successful attempt. */
|
|
8914
|
-
roleAttempts?: number;
|
|
8915
|
-
/** Discovery-loop field merges applied before success (0 = first-try create). */
|
|
8916
|
-
discoveryMerges: number;
|
|
8917
|
-
}
|
|
8918
|
-
|
|
8919
|
-
/** time_entries.moveToTicket (issue #197): create -> verify -> delete on the shared move engine. */
|
|
8920
|
-
type TimeEntriesMoveToTicketOptions = MoveToTicketOptions;
|
|
8921
|
-
type TimeEntriesMoveToTicketResult = MoveResult;
|
|
8922
|
-
|
|
8923
|
-
/** Options for `time_entries.approve` (the shared mutation bag + the approval pins). */
|
|
8924
|
-
interface TimeEntriesApproveOptions extends MutationOpts {
|
|
8925
|
-
/** The approving resource id (default: the time entry's own resourceID). */
|
|
8926
|
-
approvalResourceID?: Identifier;
|
|
8927
|
-
/** The approval level (1-based integer, default 1). */
|
|
8928
|
-
approvalLevel?: number;
|
|
8929
|
-
/** The approval instant (ISO string or Date, default: now). */
|
|
8930
|
-
approvalDateTime?: string | Date;
|
|
8931
|
-
}
|
|
8932
|
-
/**
|
|
8933
|
-
* `approved`: the approval level was created AND the follow-up update
|
|
8934
|
-
* persisted both time-entry fields (verified by the read-back).
|
|
8935
|
-
* `approval_fields_not_persisted`: the approval level was created but the
|
|
8936
|
-
* read-back shows the vendor kept the old billingApprovalDateTime /
|
|
8937
|
-
* billingApprovalResourceID — re-apply, or set them in the Autotask UI.
|
|
8938
|
-
*/
|
|
8939
|
-
type TimeEntriesApproveStatus = 'approved' | 'approval_fields_not_persisted';
|
|
8940
|
-
/** What `time_entries.approve` returns on the applied path. */
|
|
8941
|
-
interface TimeEntriesApproveResult {
|
|
8942
|
-
/** The approved time entry. */
|
|
8943
|
-
timeEntryID: number;
|
|
8944
|
-
/** The id of the created BillingItemApprovalLevels record. */
|
|
8945
|
-
billingItemApprovalLevelID: number;
|
|
8946
|
-
/** The approval level sent (1-based). */
|
|
8947
|
-
approvalLevel: number;
|
|
8948
|
-
/** The approving resource id sent. */
|
|
8949
|
-
approvalResourceID: number;
|
|
8950
|
-
/** The approval instant sent (ISO 8601). */
|
|
8951
|
-
approvalDateTime: string;
|
|
8952
|
-
/** Read back from the time entry: the vendor's most-recent level (null when unset). */
|
|
8953
|
-
billingApprovalLevelMostRecent: number | null;
|
|
8954
|
-
/** Read back from the time entry: the persisted approval instant (null when unset). */
|
|
8955
|
-
billingApprovalDateTime: string | null;
|
|
8956
|
-
/** Read back from the time entry: the persisted approving resource (null when unset). */
|
|
8957
|
-
billingApprovalResourceID: number | null;
|
|
8958
|
-
/** Honest outcome of the two-call sequence. */
|
|
8959
|
-
status: TimeEntriesApproveStatus;
|
|
8960
|
-
/** `status === 'approved'` (true only when the read-back matched what was sent). */
|
|
8961
|
-
persisted: boolean;
|
|
8962
|
-
}
|
|
8963
8794
|
|
|
8964
8795
|
/**
|
|
8965
8796
|
* TimeEntriesResource — TimeEntry resource (G5 batch B, plan key 'time_entries').
|
|
@@ -9009,52 +8840,12 @@ declare class TimeEntriesResource extends BaseResource<TimeEntry, TimeEntryCreat
|
|
|
9009
8840
|
resolve(identifier: number | string, opts?: {
|
|
9010
8841
|
expand?: boolean;
|
|
9011
8842
|
}): Promise<TimeEntrySummary | null>;
|
|
9012
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9013
|
-
approve(id: Identifier, opts?: TimeEntriesApproveOptions): Promise<TimeEntriesApproveResult | DryRunResult<Record<string, unknown>>>;
|
|
9014
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9015
|
-
createForResource(resourceID: Identifier, params: TimeEntriesCreateForResourceParams, opts?: MutationOpts): Promise<TimeEntriesCreateForResourceResult | DryRunResult<Record<string, unknown>>>;
|
|
9016
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9017
|
-
customRange(from: string, to: string, opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9018
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
8843
|
+
/** Node-parity special op (hand-written in src/resources/special/time_entries/windows.ts). */
|
|
9019
8844
|
dateWorkedWindow(from: string, to: string, opts?: TimeEntriesPostedWindowListOptions): Promise<TimeEntriesPostedWindowResult>;
|
|
9020
8845
|
dateWorkedWindow(from: string, to: string, opts: TimeEntriesPostedWindowCountOptions): Promise<TimeEntriesPostedCountResult>;
|
|
9021
8846
|
dateWorkedWindow(from: string, to: string, opts?: TimeEntriesPostedWindowOptions): Promise<TimeEntriesPostedWindowResult | TimeEntriesPostedCountResult>;
|
|
9022
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9023
|
-
getPosted(opts?: TimeEntriesStatusListOptions): Promise<TimeEntriesPostedStateResult>;
|
|
9024
|
-
getPosted(opts: TimeEntriesStatusCountOptions): Promise<TimeEntriesPostedCountResult>;
|
|
9025
|
-
getPosted(opts?: TimeEntriesStatusOptions): Promise<TimeEntriesPostedStateResult | TimeEntriesPostedCountResult>;
|
|
9026
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9027
|
-
getUnposted(opts?: TimeEntriesStatusListOptions): Promise<TimeEntriesPostedStateResult>;
|
|
9028
|
-
getUnposted(opts: TimeEntriesStatusCountOptions): Promise<TimeEntriesPostedCountResult>;
|
|
9029
|
-
getUnposted(opts?: TimeEntriesStatusOptions): Promise<TimeEntriesPostedStateResult | TimeEntriesPostedCountResult>;
|
|
9030
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9031
|
-
last14(opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9032
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9033
|
-
last24h(opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9034
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9035
|
-
last30(opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9036
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9037
|
-
last7(opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9038
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9039
|
-
last90(opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9040
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9041
|
-
lastFullFortnight(opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9042
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9043
|
-
lastFullMonth(opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9044
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9045
|
-
lastFullQuarter(opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9046
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9047
|
-
lastFullWeek(opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9048
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
8847
|
+
/** Node-parity special op (hand-written in src/resources/special/time_entries/move.ts). */
|
|
9049
8848
|
moveToTicket(sourceId: Identifier, toTicketId: Identifier, opts?: TimeEntriesMoveToTicketOptions): Promise<TimeEntriesMoveToTicketResult | DryRunResult<Record<string, unknown>>>;
|
|
9050
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9051
|
-
postedWithin(from: string, to: string, opts?: TimeEntriesPostedWindowListOptions): Promise<TimeEntriesPostedWindowResult>;
|
|
9052
|
-
postedWithin(from: string, to: string, opts: TimeEntriesPostedWindowCountOptions): Promise<TimeEntriesPostedCountResult>;
|
|
9053
|
-
postedWithin(from: string, to: string, opts?: TimeEntriesPostedWindowOptions): Promise<TimeEntriesPostedWindowResult | TimeEntriesPostedCountResult>;
|
|
9054
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9055
|
-
today(opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9056
|
-
/** Node-parity special op (hand-written in src/resources/special/time_entries.ts). */
|
|
9057
|
-
yesterday(opts?: TimeEntriesWindowOptions): Promise<TimeEntry[]>;
|
|
9058
8849
|
}
|
|
9059
8850
|
|
|
9060
8851
|
/**
|
|
@@ -9399,4 +9190,5 @@ declare class AutotaskClient {
|
|
|
9399
9190
|
}): Promise<PromiseSettledResult<R>[]>;
|
|
9400
9191
|
}
|
|
9401
9192
|
|
|
9402
|
-
export { ConfigurationItemSslSubjectAlternativeNamesResource as $, type AutotaskConfig as A, BillingCodesResource as B, type CreateIfNotExistsResult as C, CompanyLocationsResource as D, type CompanyLocationsResourceQueryParams as E, CompanyNotesResource as F, type CompanyNotesResourceQueryParams as G, CompanySiteConfigurationsResource as H, type CompanySiteConfigurationsResourceQueryParams as I, CompanyWebhooksResource as J, type CompanyWebhooksResourceQueryParams as K, type ConfigProfile as L, ConfigurationItemBillingProductAssociationsResource as M, type ConfigurationItemBillingProductAssociationsResourceQueryParams as N, ConfigurationItemCategoriesResource as O, type ConfigurationItemCategoriesResourceQueryParams as P, ConfigurationItemCategoryUdfAssociationsResource as Q, type ResolvedAutotaskConfig as R, type ConfigurationItemCategoryUdfAssociationsResourceQueryParams as S, TtlCache as T, ConfigurationItemDnsRecordsResource as U, type ConfigurationItemDnsRecordsResourceQueryParams as V, ConfigurationItemNotesResource as W, type ConfigurationItemNotesResourceQueryParams as X, ConfigurationItemRelatedItemsResource as Y, type ZoneName as Z, type ConfigurationItemRelatedItemsResourceQueryParams as _, AutotaskClient as a, CurrenciesResource as a$, type ConfigurationItemSslSubjectAlternativeNamesResourceQueryParams as a0, ConfigurationItemTypesResource as a1, type ConfigurationItemTypesResourceQueryParams as a2, ConfigurationItemWebhooksResource as a3, type ConfigurationItemWebhooksResourceQueryParams as a4, ConfigurationItemsResource as a5, type ConfigurationItemsResourceQueryParams as a6, ContactGroupContactsResource as a7, type ContactGroupContactsResourceQueryParams as a8, ContactGroupsResource as a9, type ContractNotesResourceQueryParams as aA, ContractRatesResource as aB, type ContractRatesResourceQueryParams as aC, ContractRetainersResource as aD, type ContractRetainersResourceQueryParams as aE, ContractRoleCostsResource as aF, type ContractRoleCostsResourceQueryParams as aG, ContractServiceAdjustmentsResource as aH, type ContractServiceAdjustmentsResourceQueryParams as aI, ContractServiceBundleAdjustmentsResource as aJ, type ContractServiceBundleAdjustmentsResourceQueryParams as aK, ContractServiceBundleUnitsResource as aL, type ContractServiceBundleUnitsResourceQueryParams as aM, ContractServiceBundlesResource as aN, type ContractServiceBundlesResourceQueryParams as aO, ContractServiceUnitsResource as aP, type ContractServiceUnitsResourceQueryParams as aQ, ContractServicesResource as aR, type ContractServicesResourceQueryParams as aS, ContractTicketPurchasesResource as aT, type ContractTicketPurchasesResourceQueryParams as aU, type ContractsProfitabilityResult as aV, ContractsResource as aW, type ContractsResourceQueryParams as aX, type CostRateResolution as aY, CountriesResource as aZ, type CountriesResourceQueryParams as a_, type ContactGroupsResourceQueryParams as aa, ContactWebhooksResource as ab, type ContactWebhooksResourceQueryParams as ac, ContactsResource as ad, type ContactsResourceQueryParams as ae, ContractBillingRulesResource as af, type ContractBillingRulesResourceQueryParams as ag, ContractBlockHourFactorsResource as ah, type ContractBlockHourFactorsResourceQueryParams as ai, ContractBlocksResource as aj, type ContractBlocksResourceQueryParams as ak, ContractChargesResource as al, type ContractChargesResourceQueryParams as am, ContractExclusionBillingCodesResource as an, type ContractExclusionBillingCodesResourceQueryParams as ao, ContractExclusionRolesResource as ap, type ContractExclusionRolesResourceQueryParams as aq, ContractExclusionSetExcludedRolesResource as ar, type ContractExclusionSetExcludedRolesResourceQueryParams as as, ContractExclusionSetExcludedWorkTypesResource as at, type ContractExclusionSetExcludedWorkTypesResourceQueryParams as au, ContractExclusionSetsResource as av, type ContractExclusionSetsResourceQueryParams as aw, ContractMilestonesResource as ax, type ContractMilestonesResourceQueryParams as ay, ContractNotesResource as az, type RequestOptions as b, type ProfitabilityPartDigest as b$, type CurrenciesResourceQueryParams as b0, DEFAULT_ZONE as b1, DepartmentsResource as b2, type DepartmentsResourceQueryParams as b3, DomainRegistrarsResource as b4, type DomainRegistrarsResourceQueryParams as b5, EntityInformationResource as b6, ExpenseItemAttachmentsResource as b7, type ExpenseItemAttachmentsResourceQueryParams as b8, ExpenseItemsResource as b9, type OpportunityAttachmentsResourceQueryParams as bA, OpportunityCategoriesResource as bB, type OpportunityCategoriesResourceQueryParams as bC, OrganizationalLevel1sResource as bD, type OrganizationalLevel1sResourceQueryParams as bE, OrganizationalLevel2sResource as bF, type OrganizationalLevel2sResourceQueryParams as bG, OrganizationalLevelAssociationsResource as bH, type OrganizationalLevelAssociationsResourceQueryParams as bI, type PageFetcher as bJ, type PaginateOptions as bK, PhasesResource as bL, type PhasesResourceQueryParams as bM, ProductVendorsResource as bN, type ProductVendorsResourceQueryParams as bO, ProductsResource as bP, type ProductsResourceQueryParams as bQ, type ProfitRateSource as bR, type ProfitabilityActivityCategory as bS, type ProfitabilityDataQualityWarning as bT, type ProfitabilityHighestCostTicket as bU, type ProfitabilityLabourCostMethod as bV, type ProfitabilityMiscoding as bW, type ProfitabilityMonthlyRow as bX, type ProfitabilityOpenRenewalItem as bY, type ProfitabilityOptions as bZ, type ProfitabilityPart as b_, type ExpenseItemsResourceQueryParams as ba, ExpenseReportsResource as bb, type ExpenseReportsResourceQueryParams as bc, FIELD_CACHE_KINDS as bd, type FieldCacheKind as be, HolidaySetsResource as bf, type HolidaySetsResourceQueryParams as bg, HolidaysResource as bh, type HolidaysResourceQueryParams as bi, HttpClient as bj, IDEMPOTENT_METHODS as bk, InventoryProductsResource as bl, type InventoryProductsResourceQueryParams as bm, InvoiceTemplatesResource as bn, type InvoiceTemplatesResourceQueryParams as bo, InvoicesResource as bp, type InvoicesResourceQueryParams as bq, type Logger as br, MAX_PAGES as bs, ModulesResource as bt, NoopLogger as bu, NotificationHistoryResource as bv, type NotificationHistoryResourceQueryParams as bw, OpportunitiesResource as bx, type OpportunitiesResourceQueryParams as by, OpportunityAttachmentsResource as bz, type TicketChangeStatusResult as c, SubscriptionsResource as c$, type ProfitabilityRevenueByType as c0, ProjectChargesResource as c1, type ProjectChargesResourceQueryParams as c2, ProjectNotesResource as c3, type ProjectNotesResourceQueryParams as c4, ProjectsResource as c5, type ProjectsResourceQueryParams as c6, PurchaseApprovalsResource as c7, type PurchaseApprovalsResourceQueryParams as c8, PurchaseOrderItemReceivingResource as c9, type ResourceTimeOffApproversResourceQueryParams as cA, ResourceTimeOffBalancesResource as cB, type ResourceTimeOffBalancesResourceQueryParams as cC, ResourcesResource as cD, type ResourcesResourceQueryParams as cE, RolesResource as cF, type RolesResourceQueryParams as cG, SalesOrdersResource as cH, type SalesOrdersResourceQueryParams as cI, ServiceCallTaskResourcesResource as cJ, type ServiceCallTaskResourcesResourceQueryParams as cK, ServiceCallTasksResource as cL, type ServiceCallTasksResourceQueryParams as cM, ServiceCallTicketResourcesResource as cN, type ServiceCallTicketResourcesResourceQueryParams as cO, ServiceCallTicketsResource as cP, type ServiceCallTicketsResourceQueryParams as cQ, ServiceCallsResource as cR, type ServiceCallsResourceQueryParams as cS, ServiceLevelAgreementResultsResource as cT, type ServiceLevelAgreementResultsResourceQueryParams as cU, ServicesResource as cV, type ServicesResourceQueryParams as cW, SkillsResource as cX, type SkillsResourceQueryParams as cY, SubscriptionPeriodsResource as cZ, type SubscriptionPeriodsResourceQueryParams as c_, type PurchaseOrderItemReceivingResourceQueryParams as ca, PurchaseOrderItemsResource as cb, type PurchaseOrderItemsResourceQueryParams as cc, PurchaseOrdersResource as cd, type PurchaseOrdersResourceQueryParams as ce, QuoteItemsResource as cf, type QuoteItemsResourceQueryParams as cg, QuoteLocationsResource as ch, type QuoteLocationsResourceQueryParams as ci, QuoteTemplatesResource as cj, type QuoteTemplatesResourceQueryParams as ck, QuotesResource as cl, type QuotesResourceQueryParams as cm, READ_CACHE_MAX_ENTRIES as cn, REDACTED as co, REFERENCE_ENTITIES as cp, REFERENCE_TTL_MS as cq, ResourceRoleQueuesResource as cr, type ResourceRoleQueuesResourceQueryParams as cs, ResourceRolesResource as ct, type ResourceRolesResourceQueryParams as cu, ResourceSkillsResource as cv, type ResourceSkillsResourceQueryParams as cw, ResourceTimeOffAdditionalResource as cx, type ResourceTimeOffAdditionalResourceQueryParams as cy, ResourceTimeOffApproversResource as cz, type TicketChangeStatusNoChange as d, TimeEntryAttachmentsResource as d$, type SubscriptionsResourceQueryParams as d0, SurveyResultsResource as d1, type SurveyResultsResourceQueryParams as d2, SurveysResource as d3, type SurveysResourceQueryParams as d4, TagAliasesResource as d5, type TagAliasesResourceQueryParams as d6, TagGroupsResource as d7, type TagGroupsResourceQueryParams as d8, TagsResource as d9, type TicketChecklistLibrariesResourceQueryParams as dA, TicketHistoryResource as dB, type TicketHistoryResourceQueryParams as dC, TicketNoteAttachmentsResource as dD, type TicketNoteAttachmentsResourceQueryParams as dE, TicketNoteWebhooksResource as dF, type TicketNoteWebhooksResourceQueryParams as dG, TicketNotesResource as dH, type TicketNotesResourceQueryParams as dI, TicketSecondaryResourcesResource as dJ, type TicketSecondaryResourcesResourceQueryParams as dK, TicketWebhooksResource as dL, type TicketWebhooksResourceQueryParams as dM, TicketsResource as dN, type TicketsResourceQueryParams as dO, type TimeEntriesPostedCountResult as dP, type TimeEntriesPostedPagingOptions as dQ, type TimeEntriesPostedStateResult as dR, type TimeEntriesPostedWindowCountOptions as dS, type TimeEntriesPostedWindowListOptions as dT, type TimeEntriesPostedWindowOptions as dU, type TimeEntriesPostedWindowResult as dV, TimeEntriesResource as dW, type TimeEntriesResourceQueryParams as dX, type TimeEntriesStatusCountOptions as dY, type TimeEntriesStatusListOptions as dZ, type TimeEntriesStatusOptions as d_, type TagsResourceQueryParams as da, TaskSecondaryResourcesResource as db, type TaskSecondaryResourcesResourceQueryParams as dc, TasksResource as dd, type TasksResourceQueryParams as de, TaxRegionsResource as df, type TaxRegionsResourceQueryParams as dg, ThresholdInformationResource as dh, TicketAdditionalConfigurationItemsResource as di, type TicketAdditionalConfigurationItemsResourceQueryParams as dj, TicketAdditionalContactsResource as dk, type TicketAdditionalContactsResourceQueryParams as dl, TicketAttachmentsResource as dm, type TicketAttachmentsResourceQueryParams as dn, TicketCategoriesResource as dp, type TicketCategoriesResourceQueryParams as dq, TicketCategoryFieldDefaultsResource as dr, type TicketCategoryFieldDefaultsResourceQueryParams as ds, TicketChangeRequestApprovalsResource as dt, type TicketChangeRequestApprovalsResourceQueryParams as du, TicketChargesResource as dv, type TicketChargesResourceQueryParams as dw, TicketChecklistItemsResource as dx, type TicketChecklistItemsResourceQueryParams as dy, TicketChecklistLibrariesResource as dz, AGENT_PROFILE as e, type TimeEntryAttachmentsResourceQueryParams as e0, TimeOffRequestsResource as e1, type TimeOffRequestsResourceQueryParams as e2, type TtlCacheOptions as e3, VersionInformationResource as e4, VersionResource as e5, ZONES as e6, ZONE_CATALOG as e7, ZoneInformationResource as e8, clampPageSize as e9, collectAll as ea, fieldKey as eb, isCredentialHeaderName as ec, paginate as ed, paginateItems as ee, readTtlFor as ef, redactRecord as eg, resolveBaseUrl as eh, toArray as ei, totalPagesFor as ej, zoneUrl as ek, type BlindSurfaceInfo as el, type RelationshipResource as em, type BlindSurfaceInventory as en, type BlindSurfaceRow as eo, type CreateGuidanceValueRequirement as ep, type CreateGuidanceRow as eq, type CreateBlockerKind as er, type CreateGuidanceReport as es, AppointmentsResource as f, type AppointmentsResourceQueryParams as g, AuthenticateResource as h, type BillingCodesResourceQueryParams as i, BillingItemApprovalLevelsResource as j, type BillingItemApprovalLevelsResourceQueryParams as k, BillingItemsResource as l, type BillingItemsResourceQueryParams as m, CREDENTIAL_HEADER_NAMES as n, ChangeRequestLinksResource as o, type ChangeRequestLinksResourceQueryParams as p, ChecklistLibrariesResource as q, type ChecklistLibrariesResourceQueryParams as r, ChecklistLibraryChecklistItemsResource as s, type ChecklistLibraryChecklistItemsResourceQueryParams as t, ClassificationIconsResource as u, type ClassificationIconsResourceQueryParams as v, CompaniesResource as w, type CompaniesResourceQueryParams as x, CompanyAlertsResource as y, type CompanyAlertsResourceQueryParams as z };
|
|
9193
|
+
export { ConfigurationItemCategoryUdfAssociationsResource as $, ClassificationIconsResource as E, CompaniesResource as H, CompanyAlertsResource as J, CompanyLocationsResource as L, CompanyNotesResource as N, CompanySiteConfigurationsResource as P, CompanyWebhooksResource as S, TtlCache as T, ConfigurationItemBillingProductAssociationsResource as W, ConfigurationItemCategoriesResource as Y, AutotaskClient as a, ContractTicketPurchasesResource as a$, ConfigurationItemDnsRecordsResource as a1, ConfigurationItemNotesResource as a3, ConfigurationItemRelatedItemsResource as a5, ConfigurationItemSslSubjectAlternativeNamesResource as a7, ConfigurationItemTypesResource as a9, ContractExclusionSetExcludedWorkTypesResource as aB, ContractExclusionSetsResource as aD, ContractMilestonesResource as aF, ContractNotesResource as aH, ContractRatesResource as aJ, ContractRetainersResource as aL, ContractRoleCostsResource as aN, ContractServiceAdjustmentsResource as aP, ContractServiceBundleAdjustmentsResource as aR, ContractServiceBundleUnitsResource as aT, ContractServiceBundlesResource as aV, ContractServiceUnitsResource as aX, ContractServicesResource as aZ, ConfigurationItemWebhooksResource as ab, ConfigurationItemsResource as ad, ContactGroupContactsResource as af, ContactGroupsResource as ah, ContactWebhooksResource as aj, ContactsResource as al, ContractBillingRulesResource as an, ContractBlockHourFactorsResource as ap, ContractBlocksResource as ar, ContractChargesResource as at, ContractExclusionBillingCodesResource as av, ContractExclusionRolesResource as ax, ContractExclusionSetExcludedRolesResource as az, ContractsResource as b2, CountriesResource as b5, CurrenciesResource as b7, DEFAULT_ZONE as b9, NoopLogger as bA, NotificationHistoryResource as bB, OpportunitiesResource as bD, OpportunityAttachmentsResource as bF, OpportunityCategoriesResource as bH, OrganizationalLevel1sResource as bJ, OrganizationalLevel2sResource as bL, OrganizationalLevelAssociationsResource as bN, PhasesResource as bR, ProductVendorsResource as bT, ProductsResource as bV, DepartmentsResource as ba, DomainRegistrarsResource as bc, EntityInformationResource as be, ExpenseItemAttachmentsResource as bf, ExpenseItemsResource as bh, ExpenseReportsResource as bj, HolidaySetsResource as bl, HolidaysResource as bn, HttpClient as bp, IDEMPOTENT_METHODS as bq, InventoryProductsResource as br, InvoiceTemplatesResource as bt, InvoicesResource as bv, MAX_PAGES as by, ModulesResource as bz, ServicesResource as c$, ProjectChargesResource as c7, ProjectNotesResource as c9, ResourceSkillsResource as cB, ResourceTimeOffAdditionalResource as cD, ResourceTimeOffApproversResource as cF, ResourceTimeOffBalancesResource as cH, ResourcesResource as cJ, RolesResource as cL, SalesOrdersResource as cN, ServiceCallTaskResourcesResource as cP, ServiceCallTasksResource as cR, ServiceCallTicketResourcesResource as cT, ServiceCallTicketsResource as cV, ServiceCallsResource as cX, ServiceLevelAgreementResultsResource as cZ, ProjectsResource as cb, PurchaseApprovalsResource as cd, PurchaseOrderItemReceivingResource as cf, PurchaseOrderItemsResource as ch, PurchaseOrdersResource as cj, QuoteItemsResource as cl, QuoteLocationsResource as cn, QuoteTemplatesResource as cp, QuotesResource as cr, READ_CACHE_MAX_ENTRIES as ct, REDACTED as cu, REFERENCE_ENTITIES as cv, REFERENCE_TTL_MS as cw, ResourceRoleQueuesResource as cx, ResourceRolesResource as cz, TimeEntriesResource as d$, SkillsResource as d1, SubscriptionPeriodsResource as d3, SubscriptionsResource as d5, SurveyResultsResource as d7, SurveysResource as d9, TicketChargesResource as dB, TicketChecklistItemsResource as dD, TicketChecklistLibrariesResource as dF, TicketHistoryResource as dH, TicketNoteAttachmentsResource as dJ, TicketNoteWebhooksResource as dL, TicketNotesResource as dN, TicketSecondaryResourcesResource as dP, TicketWebhooksResource as dR, TicketsResource as dT, TagAliasesResource as db, TagGroupsResource as dd, TagsResource as df, TaskSecondaryResourcesResource as dh, TasksResource as dj, TaxRegionsResource as dl, ThresholdInformationResource as dn, TicketAdditionalConfigurationItemsResource as dp, TicketAdditionalContactsResource as dr, TicketAttachmentsResource as dt, TicketCategoriesResource as dv, TicketCategoryFieldDefaultsResource as dx, TicketChangeRequestApprovalsResource as dz, TimeEntryAttachmentsResource as e1, TimeOffRequestsResource as e3, VersionInformationResource as e6, VersionResource as e7, ZONES as e8, ZONE_CATALOG as e9, ZoneInformationResource as ea, clampPageSize as eb, collectAll as ec, fieldKey as ed, isCredentialHeaderName as ee, paginate as ef, paginateItems as eg, readTtlFor as eh, redactRecord as ei, resolveBaseUrl as ej, toArray as ek, totalPagesFor as el, zoneUrl as em, FIELD_CACHE_KINDS as f, AGENT_PROFILE as k, AppointmentsResource as l, AuthenticateResource as n, BillingCodesResource as o, BillingItemApprovalLevelsResource as q, BillingItemsResource as s, CREDENTIAL_HEADER_NAMES as u, ChangeRequestLinksResource as v, ChecklistLibrariesResource as x, ChecklistLibraryChecklistItemsResource as z };
|
|
9194
|
+
export type { AutotaskConfig as A, BlindSurfaceInfo as B, CreateGuidanceValueRequirement as C, ChecklistLibraryChecklistItemsResourceQueryParams as D, FieldCacheKind as F, ClassificationIconsResourceQueryParams as G, CompaniesResourceQueryParams as I, CompanyAlertsResourceQueryParams as K, CompanyLocationsResourceQueryParams as M, CompanyNotesResourceQueryParams as O, CompanySiteConfigurationsResourceQueryParams as Q, RowNamesSummary as R, CompanyWebhooksResourceQueryParams as U, ConfigProfile as V, ConfigurationItemBillingProductAssociationsResourceQueryParams as X, ZoneName as Z, ConfigurationItemCategoriesResourceQueryParams as _, ConfigurationItemCategoryUdfAssociationsResourceQueryParams as a0, ConfigurationItemDnsRecordsResourceQueryParams as a2, ConfigurationItemNotesResourceQueryParams as a4, ConfigurationItemRelatedItemsResourceQueryParams as a6, ConfigurationItemSslSubjectAlternativeNamesResourceQueryParams as a8, ContractExclusionSetExcludedRolesResourceQueryParams as aA, ContractExclusionSetExcludedWorkTypesResourceQueryParams as aC, ContractExclusionSetsResourceQueryParams as aE, ContractMilestonesResourceQueryParams as aG, ContractNotesResourceQueryParams as aI, ContractRatesResourceQueryParams as aK, ContractRetainersResourceQueryParams as aM, ContractRoleCostsResourceQueryParams as aO, ContractServiceAdjustmentsResourceQueryParams as aQ, ContractServiceBundleAdjustmentsResourceQueryParams as aS, ContractServiceBundleUnitsResourceQueryParams as aU, ContractServiceBundlesResourceQueryParams as aW, ContractServiceUnitsResourceQueryParams as aY, ContractServicesResourceQueryParams as a_, ConfigurationItemTypesResourceQueryParams as aa, ConfigurationItemWebhooksResourceQueryParams as ac, ConfigurationItemsResourceQueryParams as ae, ContactGroupContactsResourceQueryParams as ag, ContactGroupsResourceQueryParams as ai, ContactWebhooksResourceQueryParams as ak, ContactsResourceQueryParams as am, ContractBillingRulesResourceQueryParams as ao, ContractBlockHourFactorsResourceQueryParams as aq, ContractBlocksResourceQueryParams as as, ContractChargesResourceQueryParams as au, ContractExclusionBillingCodesResourceQueryParams as aw, ContractExclusionRolesResourceQueryParams as ay, RelationshipResource as b, ProfitabilityLabourCostMethod as b$, ContractTicketPurchasesResourceQueryParams as b0, ContractsProfitabilityResult as b1, ContractsResourceQueryParams as b3, CostRateResolution as b4, CountriesResourceQueryParams as b6, CurrenciesResourceQueryParams as b8, NotificationHistoryResourceQueryParams as bC, OpportunitiesResourceQueryParams as bE, OpportunityAttachmentsResourceQueryParams as bG, OpportunityCategoriesResourceQueryParams as bI, OrganizationalLevel1sResourceQueryParams as bK, OrganizationalLevel2sResourceQueryParams as bM, OrganizationalLevelAssociationsResourceQueryParams as bO, PageFetcher as bP, PaginateOptions as bQ, PhasesResourceQueryParams as bS, ProductVendorsResourceQueryParams as bU, ProductsResourceQueryParams as bW, ProfitRateSource as bX, ProfitabilityActivityCategory as bY, ProfitabilityDataQualityWarning as bZ, ProfitabilityHighestCostTicket as b_, DepartmentsResourceQueryParams as bb, DomainRegistrarsResourceQueryParams as bd, ExpenseItemAttachmentsResourceQueryParams as bg, ExpenseItemsResourceQueryParams as bi, ExpenseReportsResourceQueryParams as bk, HolidaySetsResourceQueryParams as bm, HolidaysResourceQueryParams as bo, InventoryProductsResourceQueryParams as bs, InvoiceTemplatesResourceQueryParams as bu, InvoicesResourceQueryParams as bw, Logger as bx, CreateGuidanceRow as c, ProfitabilityMiscoding as c0, ProfitabilityMonthlyRow as c1, ProfitabilityOpenRenewalItem as c2, ProfitabilityOptions as c3, ProfitabilityPart as c4, ProfitabilityPartDigest as c5, ProfitabilityRevenueByType as c6, ProjectChargesResourceQueryParams as c8, ResourceRolesResourceQueryParams as cA, ResourceSkillsResourceQueryParams as cC, ResourceTimeOffAdditionalResourceQueryParams as cE, ResourceTimeOffApproversResourceQueryParams as cG, ResourceTimeOffBalancesResourceQueryParams as cI, ResourcesResourceQueryParams as cK, RolesResourceQueryParams as cM, SalesOrdersResourceQueryParams as cO, ServiceCallTaskResourcesResourceQueryParams as cQ, ServiceCallTasksResourceQueryParams as cS, ServiceCallTicketResourcesResourceQueryParams as cU, ServiceCallTicketsResourceQueryParams as cW, ServiceCallsResourceQueryParams as cY, ServiceLevelAgreementResultsResourceQueryParams as c_, ProjectNotesResourceQueryParams as ca, ProjectsResourceQueryParams as cc, PurchaseApprovalsResourceQueryParams as ce, PurchaseOrderItemReceivingResourceQueryParams as cg, PurchaseOrderItemsResourceQueryParams as ci, PurchaseOrdersResourceQueryParams as ck, QuoteItemsResourceQueryParams as cm, QuoteLocationsResourceQueryParams as co, QuoteTemplatesResourceQueryParams as cq, QuotesResourceQueryParams as cs, ResourceRoleQueuesResourceQueryParams as cy, CreateBlockerKind as d, ServicesResourceQueryParams as d0, SkillsResourceQueryParams as d2, SubscriptionPeriodsResourceQueryParams as d4, SubscriptionsResourceQueryParams as d6, SurveyResultsResourceQueryParams as d8, TicketChangeRequestApprovalsResourceQueryParams as dA, TicketChargesResourceQueryParams as dC, TicketChecklistItemsResourceQueryParams as dE, TicketChecklistLibrariesResourceQueryParams as dG, TicketHistoryResourceQueryParams as dI, TicketNoteAttachmentsResourceQueryParams as dK, TicketNoteWebhooksResourceQueryParams as dM, TicketNotesResourceQueryParams as dO, TicketSecondaryResourcesResourceQueryParams as dQ, TicketWebhooksResourceQueryParams as dS, TicketsResourceQueryParams as dU, TimeEntriesPostedCountResult as dV, TimeEntriesPostedPagingOptions as dW, TimeEntriesPostedWindowCountOptions as dX, TimeEntriesPostedWindowListOptions as dY, TimeEntriesPostedWindowOptions as dZ, TimeEntriesPostedWindowResult as d_, SurveysResourceQueryParams as da, TagAliasesResourceQueryParams as dc, TagGroupsResourceQueryParams as de, TagsResourceQueryParams as dg, TaskSecondaryResourcesResourceQueryParams as di, TasksResourceQueryParams as dk, TaxRegionsResourceQueryParams as dm, TicketAdditionalConfigurationItemsResourceQueryParams as dq, TicketAdditionalContactsResourceQueryParams as ds, TicketAttachmentsResourceQueryParams as du, TicketCategoriesResourceQueryParams as dw, TicketCategoryFieldDefaultsResourceQueryParams as dy, CreateGuidanceReport as e, TimeEntriesResourceQueryParams as e0, TimeEntryAttachmentsResourceQueryParams as e2, TimeOffRequestsResourceQueryParams as e4, TtlCacheOptions as e5, ResolvedAutotaskConfig as g, RequestOptions as h, TicketChangeStatusResult as i, TicketChangeStatusNoChange as j, AppointmentsResourceQueryParams as m, BillingCodesResourceQueryParams as p, BillingItemApprovalLevelsResourceQueryParams as r, BillingItemsResourceQueryParams as t, ChangeRequestLinksResourceQueryParams as w, ChecklistLibrariesResourceQueryParams as y };
|