generated: '2026-10-09' method: generated source: openapi/karbonhq-openapi.yml description: Recommended x-agentic-access execution contracts, classified heuristically from the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind audience per deployment. See research/curity/agentic-governance/. summary: operations: 77 by_action_class: connected: 43 acting: 34 by_consequence: read: 43 write: 31 physical: 3 human_in_the_loop_required: 0 operations: - path: /v3/IntegrationTaskDefinitions method: get operationId: ListIntegrationTaskDefintions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/IntegrationTasks method: get operationId: ListIntegrationTasks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/IntegrationTasks/{IntegrationTaskKey} method: get operationId: GetIntegrationTask x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/IntegrationTasks/{IntegrationTaskKey} method: put operationId: UpdateIntegrationTask x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Invoices method: get operationId: getInvoices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Invoices/{InvoiceKey} method: get operationId: getInvoiceByKey x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Payments method: get operationId: getPayments x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/ManualPayments method: post operationId: createManualPayment x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/ManualPayments/{ManualPaymentKey} method: delete operationId: deleteManualPayment x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/ReverseManualPayment method: post operationId: reverseManualPayment x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Payments/{PaymentKey} method: get operationId: getPaymentByPaymentKey x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/BusinessCards/{BusinessCardKey} method: get operationId: getBusinessCardByKey x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/BusinessCards/{BusinessCardKey} method: put operationId: updateBusinessCardByKey x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/ClientGroups method: get operationId: getClientGroups x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/ClientGroups method: post operationId: createClientGroup x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/ClientGroups/GetClientGroupByUserDefinedIdentifier(UserDefinedIdentifier='{UserDefinedIdentifier}') method: get operationId: getClientGroupByUDI x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/ClientGroups/{ClientGroupkey} method: get operationId: getClientGroupByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/ClientGroups/{ClientGroupkey} method: put operationId: putClientGroupByID x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/ClientGroups/{ClientGroupkey} method: patch operationId: patchClientGroupByID x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Comments('{Commentkey}') method: get operationId: getComment x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Contacts method: get operationId: getAllContacts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Contacts method: post operationId: createContact x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Contacts/GetContactByUserDefinedIdentifier(UserDefinedIdentifier='{UserDefinedIdentifier}') method: get operationId: getContactByUDI x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Contacts/{Contactkey} method: get operationId: getContactByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Contacts/{Contactkey} method: put operationId: putContactByID x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Contacts/{Contactkey} method: patch operationId: patchContactsByID x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/CustomFields method: get operationId: GetCustomFieldDefinitions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/CustomFields method: post operationId: CreateCustomFieldDefinition x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/CustomFields/{CustomFieldDefinitionKey} method: delete operationId: DeleteCustomFieldDefinition x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/CustomFieldValues/{EntityKey} method: get operationId: GetCustomFieldValues x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/CustomFieldValues/{EntityKey} method: put operationId: UpdateCustomFieldValues x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/EstimateSummaries/{WorkItemKey} method: get operationId: getEstimateSummariesByWorkItemKey x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/WorkItems/{WorkItemKey}/EstimateSummaries/{EstimateSummaryKey} method: get operationId: getEstimateSummaryByKey x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/WorkItems/{WorkItemKey}/EstimateSummaries/{EstimateSummaryKey} method: patch operationId: updateEstimateSummary x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Expenses method: post operationId: createExpense x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Files method: post operationId: createFile x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Files method: get operationId: downloadFile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/FileDetails/{key} method: get operationId: getFileDetailsByKey x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/FileDetails/{key}/Download method: get operationId: downloadFileDetailsByKey x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/FileList/{EntityType} method: get operationId: listFiles x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Notes/{NoteID} method: get operationId: getNoteByNoteKey x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Notes method: post operationId: createNote x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Organizations method: get operationId: getAllOrganizations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Organizations method: post operationId: createOrganization x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Organizations/GetOrganizationByUserDefinedIdentifier(UserDefinedIdentifier='{UserDefinedIdentifier}') method: get operationId: getOrganizationByUDI x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Organizations/{Organizationkey} method: get operationId: getOrganizationByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Organizations/{Organizationkey} method: put operationId: putOrganizationByID x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Organizations/{Organizationkey} method: patch operationId: patchOrganizationByID x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Roles method: get operationId: getAllRoles x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Teams method: get operationId: getAllTeams x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Teams/{TeamKey} method: get operationId: getTeamByKey x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Teams/{TeamKey}/AddMembers method: post operationId: addTeamMembers x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Teams/{TeamKey}/RemoveMember method: post operationId: removeTeamMember x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/TenantSettings method: get operationId: getTenantSettings x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Timesheets method: get operationId: getAllTimesheets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Timesheets/{Timesheetkey} method: get operationId: getTimesheetByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/IndividualTimeEntries method: get operationId: getAllIndividualTimeEntries x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/IndividualTimeEntries/{IndividualTimeEntryKey} method: get operationId: GetIndividualTimeEntryByKey x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Users method: get operationId: getAllUsers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/Users method: post operationId: createUser x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/Users/{UserId} method: get operationId: getUserById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/WebhookSubscriptions/{WebhookType} method: get operationId: getWebhookSubscriptionsByWebhookType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/WebhookSubscriptions/{WebhookType} method: delete operationId: delWebhookSubscriptionsByWebhookType x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/WebhookSubscriptions/{WebhookType} method: patch operationId: patchWebhookSubscription x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/WebhookSubscriptions method: post operationId: createWebhookSubscription x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/WebhookSubscriptions method: delete operationId: delAllWebhookSubscriptions x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/WorkItems method: get operationId: getAllWorkItems x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/WorkItems method: post operationId: createWorkItem x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/WorkItems/{WorkItemKey} method: get operationId: getWorkItemByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/WorkItems/{WorkItemKey} method: put operationId: putWorkItemByID x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/WorkItems/{WorkItemKey} method: patch operationId: patchWorkItemByID x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/WorkSchedules method: post operationId: createWorkSchedule x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/WorkSchedules/{WorkSchedulekey} method: get operationId: getWorkScheduleByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/WorkSchedules/{WorkSchedulekey} method: put operationId: putWorkScheduleByID x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/WorkSchedules/{WorkSchedulekey} method: patch operationId: patchWorkScheduleByID x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v3/WorkTemplates method: get operationId: getAllWorkTemplates x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/WorkTemplates/{WorkTemplatekey} method: get operationId: getWorkTemplateByID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none