generated: '2026-07-15' method: generated source: openapi/sap-concur-expense-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: 27 by_action_class: acting: 15 connected: 12 by_consequence: write: 14 read: 12 physical: 1 human_in_the_loop_required: 0 operations: - path: /expensereports/v4/users/{userID}/context/{contextType}/reports method: post operationId: createReport 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: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId} method: get operationId: getReport x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId} method: patch operationId: updateReport 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: /expensereports/v4/reports/{reportId} method: patch operationId: updateSubmittedReport 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: /expensereports/v4/reports/{reportId} method: delete operationId: deleteReport 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: /expensereports/v4/reports/{reportId}/formFields method: get operationId: getReportFormFields x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expensereports/v4/users/{userId}/context/{contextType}/reportsToApprove method: get operationId: getReportsToApprove x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/expenses method: get operationId: getExpenses x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/expenses/{expenseId} method: get operationId: getExpense x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/expenses/{expenseId}/itemizations method: get operationId: getExpenseItemizations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expensereports/v4/reports/{reportId}/expenses/{expenseId} method: patch operationId: updateSubmittedExpense 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: /expensereports/v4/reports/{reportId}/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: /expensereports/v4/reports/{reportId}/expenses/{expenseId}/formFields method: get operationId: getExpenseFormFields x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/expenses/{expenseId}/allocations method: get operationId: getAllocations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/allocations/{allocationId} method: get operationId: getAllocation x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/allocations/{allocationId} method: patch operationId: updateAllocation 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: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/comments method: get operationId: getReportComments x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/comments method: post operationId: createReportComment 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: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/comments method: put operationId: updateReportComment 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: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/comments method: delete operationId: deleteReportComment 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: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/expenses/{expenseId}/comments method: get operationId: getExpenseComments x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/expenses/{expenseId}/comments method: post operationId: createExpenseComment 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: /expensereports/v4/users/{userId}/reports/{reportId}/submit method: patch operationId: submitReport 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: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/approve method: patch operationId: approveReport 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: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/sendBack method: patch operationId: sendBackReport 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: /expensereports/v4/users/{userID}/context/{contextType}/reports/{reportId}/recall method: patch operationId: recallReport 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: /expensereports/v4/users/{userId}/reports/{reportId}/costObjectsForApprover method: get operationId: getCostObjectsForApprover x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none