generated: '2026-07-15' method: generated source: openapi/clockify-openapi.json 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: 166 by_action_class: acting: 116 connected: 50 by_consequence: write: 99 read: 50 physical: 15 safety-critical: 2 human_in_the_loop_required: 2 operations: - path: /v1/file/image method: post operationId: uploadImage 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: /v1/user method: get operationId: getLoggedUser x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces method: get operationId: getWorkspacesOfUser x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces method: post operationId: createWorkspace 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: /v1/workspaces/{workspaceId} method: get operationId: getWorkspaceOfUser x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/addons/{addonId}/webhooks method: get operationId: getAddonWebhooks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/approval-requests method: get operationId: getApprovalRequests x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/approval-requests method: post operationId: createApprrovalRequest 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: /v1/workspaces/{workspaceId}/approval-requests/resubmit-entries-for-approval method: post operationId: resubmitApprovalRequest 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: /v1/workspaces/{workspaceId}/approval-requests/users/{userId} method: post operationId: createApprovalForOther 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: /v1/workspaces/{workspaceId}/approval-requests/users/{userId}/resubmit-entries-for-approval method: post operationId: resubmitApprovalRequestForOther 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: /v1/workspaces/{workspaceId}/approval-requests/{approvalRequestId} method: patch operationId: updateApprovalStatus 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: /v1/workspaces/{workspaceId}/clients method: get operationId: getClients x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/clients method: post operationId: createClient 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: /v1/workspaces/{workspaceId}/clients/{id} method: delete operationId: deleteClient 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: /v1/workspaces/{workspaceId}/clients/{id} method: get operationId: getClient x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/clients/{id} method: put operationId: updateClient 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: /v1/workspaces/{workspaceId}/cost-rate method: put operationId: setWorkspaceCostRate 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: /v1/workspaces/{workspaceId}/custom-fields method: get operationId: ofWorkspace x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/custom-fields method: post operationId: create 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: /v1/workspaces/{workspaceId}/custom-fields/{customFieldId} method: delete operationId: delete 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: /v1/workspaces/{workspaceId}/custom-fields/{customFieldId} method: put operationId: editCustomField 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: /v1/workspaces/{workspaceId}/entities/created method: get operationId: getCreatedEntityInfo x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/entities/deleted method: get operationId: getDeletedEntityInfo x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/entities/updated method: get operationId: getUpdatedEntityInfo x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/expenses method: get operationId: getExpenses x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/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: /v1/workspaces/{workspaceId}/expenses/categories method: get operationId: getCategories x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/expenses/categories method: post operationId: createExpenseCategory 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: /v1/workspaces/{workspaceId}/expenses/categories/{categoryId} method: delete operationId: deleteCategory 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: /v1/workspaces/{workspaceId}/expenses/categories/{categoryId} method: put operationId: updateCategory 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: /v1/workspaces/{workspaceId}/expenses/categories/{categoryId}/status method: patch operationId: updateExpenseCategoryStatus 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: /v1/workspaces/{workspaceId}/expenses/{expenseId} method: delete operationId: deleteExpense 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: /v1/workspaces/{workspaceId}/expenses/{expenseId} method: get operationId: getExpense x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/expenses/{expenseId} method: put operationId: updateExpense 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: /v1/workspaces/{workspaceId}/expenses/{expenseId}/files/{fileId} method: get operationId: downloadFile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/holidays method: get operationId: getHolidays x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/holidays method: post operationId: createHoliday 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: /v1/workspaces/{workspaceId}/holidays/in-period method: get operationId: getHolidaysInPeriod x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/holidays/{holidayId} method: delete operationId: deleteHoliday 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: /v1/workspaces/{workspaceId}/holidays/{holidayId} method: put operationId: updateHoliday 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: /v1/workspaces/{workspaceId}/hourly-rate method: put operationId: setWorkspaceHourlyRate 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: /v1/workspaces/{workspaceId}/invoices method: get operationId: getInvoices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/invoices method: post operationId: createInvoice 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: /v1/workspaces/{workspaceId}/invoices/info method: post operationId: getInvoicesInfo 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: /v1/workspaces/{workspaceId}/invoices/settings method: get operationId: getInvoiceSettings x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/invoices/settings method: put operationId: updateInvoiceSettings 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: /v1/workspaces/{workspaceId}/invoices/{invoiceId} method: delete operationId: deleteInvoice 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: /v1/workspaces/{workspaceId}/invoices/{invoiceId} method: get operationId: getInvoice x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/invoices/{invoiceId} method: put operationId: updateInvoice 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: /v1/workspaces/{workspaceId}/invoices/{invoiceId}/duplicate method: post operationId: duplicateInvoice 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: /v1/workspaces/{workspaceId}/invoices/{invoiceId}/export method: get operationId: exportInvoice x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/invoices/{invoiceId}/items method: post operationId: addInvoiceItem 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: /v1/workspaces/{workspaceId}/invoices/{invoiceId}/items/import method: post operationId: importTimeEntriesAndExpenses 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: /v1/workspaces/{workspaceId}/invoices/{invoiceId}/items/{order} method: delete operationId: removeInvoiceItem 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: /v1/workspaces/{workspaceId}/invoices/{invoiceId}/payments method: get operationId: getPaymentsForInvoice x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/invoices/{invoiceId}/payments method: post operationId: createInvoicePayment 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: /v1/workspaces/{workspaceId}/invoices/{invoiceId}/payments/{paymentId} method: delete operationId: deletePaymentById 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: /v1/workspaces/{workspaceId}/invoices/{invoiceId}/status method: patch operationId: changeInvoiceStatus 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: /v1/workspaces/{workspaceId}/member-profile/{userId} method: get operationId: getMemberProfile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/member-profile/{userId} method: patch operationId: updateMemberProfileWithAdditionalData 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: /v1/workspaces/{workspaceId}/projects method: get operationId: getProjects x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/projects method: post operationId: createNewProject 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: /v1/workspaces/{workspaceId}/projects/from-template method: post operationId: createProjectFromTemplate 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: /v1/workspaces/{workspaceId}/projects/{projectId} method: delete operationId: deleteProject 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: /v1/workspaces/{workspaceId}/projects/{projectId} method: get operationId: getProject x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/projects/{projectId} method: put operationId: updateProject 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: /v1/workspaces/{workspaceId}/projects/{projectId}/custom-fields method: get operationId: getCustomFieldsOfProject x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/projects/{projectId}/custom-fields/{customFieldId} method: delete operationId: removeDefaultValueOfProject 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: /v1/workspaces/{workspaceId}/projects/{projectId}/custom-fields/{customFieldId} method: patch operationId: editProjectCustomFieldDefaultValue 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: /v1/workspaces/{workspaceId}/projects/{projectId}/estimate method: patch operationId: updateEstimate 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: /v1/workspaces/{workspaceId}/projects/{projectId}/memberships method: patch operationId: updateMemberships 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: /v1/workspaces/{workspaceId}/projects/{projectId}/memberships method: post operationId: addUsersToProject x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /v1/workspaces/{workspaceId}/projects/{projectId}/tasks method: get operationId: getTasks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/projects/{projectId}/tasks method: post operationId: createTask 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: /v1/workspaces/{workspaceId}/projects/{projectId}/tasks/{id}/cost-rate method: put operationId: setTaskCostRate 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: /v1/workspaces/{workspaceId}/projects/{projectId}/tasks/{id}/hourly-rate method: put operationId: setTaskHourlyRate 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: /v1/workspaces/{workspaceId}/projects/{projectId}/tasks/{taskId} method: delete operationId: deleteTask 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: /v1/workspaces/{workspaceId}/projects/{projectId}/tasks/{taskId} method: get operationId: getTask x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/projects/{projectId}/tasks/{taskId} method: put operationId: updateTask 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: /v1/workspaces/{workspaceId}/projects/{projectId}/template method: patch operationId: updateIsProjectTemplate 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: /v1/workspaces/{workspaceId}/projects/{projectId}/users/{userId}/cost-rate method: put operationId: addUsersCostRate 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: /v1/workspaces/{workspaceId}/projects/{projectId}/users/{userId}/hourly-rate method: put operationId: addUsersHourlyRate 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: /v1/workspaces/{workspaceId}/scheduling/assignments/all method: get operationId: getAllAssignments x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/scheduling/assignments/projects/totals method: get operationId: getProjectTotals x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/scheduling/assignments/projects/totals method: post operationId: getFilteredProjectTotals 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: /v1/workspaces/{workspaceId}/scheduling/assignments/projects/totals/{projectId} method: get operationId: getProjectTotalsForSingleProject x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/scheduling/assignments/publish method: put operationId: publishAssignments 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: /v1/workspaces/{workspaceId}/scheduling/assignments/recurring method: post operationId: createRecurring 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: /v1/workspaces/{workspaceId}/scheduling/assignments/recurring/{assignmentId} method: delete operationId: deleteRRecurringAssignment 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: /v1/workspaces/{workspaceId}/scheduling/assignments/recurring/{assignmentId} method: patch operationId: editRecurring 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: /v1/workspaces/{workspaceId}/scheduling/assignments/series/{assignmentId} method: put operationId: editRecurringPeriod 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: /v1/workspaces/{workspaceId}/scheduling/assignments/user-filter/totals method: post operationId: getUserTotals 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: /v1/workspaces/{workspaceId}/scheduling/assignments/users/{userId}/totals method: get operationId: getUserTotalsForSingleUser x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/scheduling/assignments/{assignmentId}/copy method: post operationId: copyAssignment 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: /v1/workspaces/{workspaceId}/tags method: get operationId: getTags x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/tags method: post operationId: createNewTag 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: /v1/workspaces/{workspaceId}/tags/{id} method: delete operationId: deleteTag 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: /v1/workspaces/{workspaceId}/tags/{id} method: get operationId: getTag x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/tags/{id} method: put operationId: updateTag 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: /v1/workspaces/{workspaceId}/templates method: get operationId: getTemplates x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/templates method: post operationId: createMany 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: /v1/workspaces/{workspaceId}/templates/{templateId} method: delete operationId: delete_1 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: /v1/workspaces/{workspaceId}/templates/{templateId} method: get operationId: getTemplate x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/templates/{templateId} method: patch operationId: update 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: /v1/workspaces/{workspaceId}/time-entries method: post operationId: createTimeEntry 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: /v1/workspaces/{workspaceId}/time-entries/invoiced method: patch operationId: updateInvoicedStatus 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: /v1/workspaces/{workspaceId}/time-entries/status/in-progress method: get operationId: getInProgressTimeEntries x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/time-entries/{id} method: delete operationId: deleteTimeEntry 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: /v1/workspaces/{workspaceId}/time-entries/{id} method: get operationId: getTimeEntry x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/time-entries/{id} method: put operationId: updateTimeEntry 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: /v1/workspaces/{workspaceId}/time-off/balance/policy/{policyId} method: get operationId: getBalancesForPolicy x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/time-off/balance/policy/{policyId} method: patch operationId: updateBalance 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: /v1/workspaces/{workspaceId}/time-off/balance/user/{userId} method: get operationId: getBalancesForUser x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/time-off/policies method: get operationId: findPoliciesForWorkspace x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/time-off/policies method: post operationId: createPolicy 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: /v1/workspaces/{workspaceId}/time-off/policies/{id} method: delete operationId: deletePolicy 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: /v1/workspaces/{workspaceId}/time-off/policies/{id} method: get operationId: getPolicy x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/time-off/policies/{id} method: patch operationId: updatePolicyStatus 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: /v1/workspaces/{workspaceId}/time-off/policies/{id} method: put operationId: updatePolicy 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: /v1/workspaces/{workspaceId}/time-off/policies/{policyId}/requests method: post operationId: createTimeOffRequest 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: /v1/workspaces/{workspaceId}/time-off/policies/{policyId}/requests/{requestId} method: delete operationId: deleteTimeOffRequest 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: /v1/workspaces/{workspaceId}/time-off/policies/{policyId}/requests/{requestId} method: patch operationId: changeTimeOffRequestStatus 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: /v1/workspaces/{workspaceId}/time-off/policies/{policyId}/users/{userId}/requests method: post operationId: createTimeOffRequestForOther 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: /v1/workspaces/{workspaceId}/time-off/requests method: post operationId: getTimeOffRequest 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: /v1/workspaces/{workspaceId}/user-groups method: get operationId: getUserGroups x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/user-groups method: post operationId: createUserGroup 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: /v1/workspaces/{workspaceId}/user-groups/{id} method: delete operationId: deleteUserGroup 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: /v1/workspaces/{workspaceId}/user-groups/{id} method: put operationId: updateUserGroup 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: /v1/workspaces/{workspaceId}/user-groups/{userGroupId}/users method: post operationId: addUser 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: /v1/workspaces/{workspaceId}/user-groups/{userGroupId}/users/{userId} method: delete operationId: deleteUser 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: /v1/workspaces/{workspaceId}/user/{userId}/time-entries method: delete operationId: deleteMany 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: /v1/workspaces/{workspaceId}/user/{userId}/time-entries method: get operationId: getTimeEntries x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/user/{userId}/time-entries method: patch operationId: stopRunningTimeEntry x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /v1/workspaces/{workspaceId}/user/{userId}/time-entries method: post operationId: createForOthers 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: /v1/workspaces/{workspaceId}/user/{userId}/time-entries method: put operationId: replaceMany 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: /v1/workspaces/{workspaceId}/user/{userId}/time-entries/{id}/duplicate method: post operationId: duplicateTimeEntry 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: /v1/workspaces/{workspaceId}/users method: get operationId: getUsersOfWorkspace x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/users method: post operationId: addUsers 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: /v1/workspaces/{workspaceId}/users/info method: post operationId: filterUsersOfWorkspace 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: /v1/workspaces/{workspaceId}/users/{userId} method: delete operationId: removeMember 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: /v1/workspaces/{workspaceId}/users/{userId} method: put operationId: updateUserStatus 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: /v1/workspaces/{workspaceId}/users/{userId}/cost-rate method: put operationId: setCostRateForUser 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: /v1/workspaces/{workspaceId}/users/{userId}/custom-field/{customFieldId}/value method: put operationId: upsertUserCustomFieldValue 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: /v1/workspaces/{workspaceId}/users/{userId}/hourly-rate method: put operationId: setHourlyRateForUser 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: /v1/workspaces/{workspaceId}/users/{userId}/managers method: get operationId: getManagersOfUser x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/users/{userId}/roles method: delete operationId: deleteUserRole 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: /v1/workspaces/{workspaceId}/users/{userId}/roles method: post operationId: createUserRole 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: /v1/workspaces/{workspaceId}/webhooks method: get operationId: getWebhooks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/webhooks method: post operationId: createWebhook 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: /v1/workspaces/{workspaceId}/webhooks/{webhookId} method: delete operationId: deleteWebhook 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: /v1/workspaces/{workspaceId}/webhooks/{webhookId} method: get operationId: getWebhook x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/webhooks/{webhookId} method: put operationId: updateWebhook 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: /v1/workspaces/{workspaceId}/webhooks/{webhookId}/logs method: post operationId: getLogsForWebhook 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: /v1/workspaces/{workspaceId}/webhooks/{webhookId}/token method: patch operationId: generateNewToken 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: /v1/shared-reports/{id} method: get operationId: generateSharedReportV1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/reports/attendance method: post operationId: generateAttendanceReport 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: /v1/workspaces/{workspaceId}/reports/detailed method: post operationId: generateDetailedReport 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: /v1/workspaces/{workspaceId}/reports/expenses/detailed method: post operationId: generateDetailedReportV1 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: /v1/workspaces/{workspaceId}/reports/summary method: post operationId: generateSummaryReport 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: /v1/workspaces/{workspaceId}/reports/weekly method: post operationId: generateWeeklyReport 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: /v1/workspaces/{workspaceId}/shared-reports method: get operationId: getSharedReportsV1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/workspaces/{workspaceId}/shared-reports method: post operationId: saveSharedReportV1 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: /v1/workspaces/{workspaceId}/shared-reports/{id} method: delete operationId: deleteSharedReportV1 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: /v1/workspaces/{workspaceId}/shared-reports/{id} method: put operationId: updateSharedReportV1 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: /v1/workspaces/{workspaceId}/audit-log method: post operationId: getAuditLogs 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