generated: '2026-07-15' method: generated source: openapi/emburse-enterprise-allocation-openapi.yml, openapi/emburse-enterprise-contacts-openapi.yml, openapi/emburse-enterprise-entity-openapi.yml, openapi/emburse-enterprise-expense-image-openapi.yml, openapi/emburse-enterprise-expense-openapi.yml, openapi/emburse-enterprise-exported-reports-openapi.yml, openapi/emburse-enterprise-invoice-openapi.yml, openapi/emburse-enterprise-paid-expense-openapi.yml, openapi/emburse-enterprise-person-openapi.yml, openapi/emburse-enterprise-preapproval-openapi.yml, openapi/emburse-enterprise-purchase-order-openapi.yml, openapi/emburse-enterprise-vendor-openapi.yml, openapi/emburse-virtual-cards-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: 213 by_action_class: connected: 95 acting: 118 by_consequence: read: 95 safety-critical: 77 write: 38 physical: 3 human_in_the_loop_required: 77 operations: - path: /v1/allocations method: get operationId: getAllocationUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/allocations method: post operationId: createAllocationV1UsingPOST 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/allocations method: put operationId: updateAllocationV1UsingPUT 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/allocations method: delete operationId: deleteAllocationV1UsingDELETE 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: /v2/allocations method: get operationId: getAllocationsUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/allocations method: post operationId: bulkUpsertAllocationsUsingPOST 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: /v3/allocations method: get operationId: getAllocationsUsingGET_1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/allocations method: post operationId: bulkUpsertAllocationsUsingPOST_1 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: /v3/allocations/entity method: post operationId: createMatterOnSelectUsingPOST 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: /v3/allocations/entity method: put operationId: updateMatterOnSelectUsingPUT 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: /v3/allocations/matterFilter method: post operationId: updateMatterFilterUsingPOST 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: /v3/allocations/search method: get operationId: searchAllocationsUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/contacts method: post operationId: createContacts 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/entities method: get operationId: getUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/entities method: post operationId: upsertEntitiesUsingPOST 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/entities method: delete operationId: deleteEntitiesUsingDELETE 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/entity-types method: get operationId: getEntityTypesUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/entity-types method: post operationId: createEntityTypeUsingPOST 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/entity-types/{code} method: get operationId: getEntityTypeByCodeUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/entity-types/{code} method: put operationId: replaceEntityTypeByCodeUsingPUT 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/entity-types/{entityTypeCode} method: delete operationId: deleteEntityTypeByCodeUsingDELETE 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/entity-types/{entityTypeCode}/languages method: get operationId: getLanguagesUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/entity-types/{entityTypeCode}/languages method: post operationId: addLanguageUsingPOST 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/entity-types/{entityTypeCode}/languages/{languageCode} method: put operationId: updateLanguageUsingPUT 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/entity-types/{entityTypeCode}/languages/{languageCode} method: delete operationId: deleteLanguageUsingDELETE 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: /v2/entities method: get operationId: getUsingGET_1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/entities/search method: get operationId: searchUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expense-image-api/getVoucherInvoices method: get operationId: getByDateRange x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expense-image-api/getVoucherInvoicesForXML method: get operationId: getVoucherInvoicesForXml x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expense-image-api/getVoucherInvoicesForOFD method: get operationId: getVoucherInvoicesForOFD x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expense-image-api/getReceipts method: get operationId: getReceipts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expense-image-api/getReceiptsWithCoverPage method: get operationId: getReceiptsWithCoverPage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expense-image-api/getReceiptsForXml method: get operationId: getReceiptsForXml x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expense-image-api/getReceiptsForOFD method: get operationId: getReceiptsForOFD x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expense-image-api/getLineItemVoucherInvoices method: get operationId: getLineItemVoucherInvoices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expense-image-api/getLineItemReceipts method: get operationId: getLineItemReceipts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expense-image-api/getLineItemReceiptsWithMileageDetails method: get operationId: getLineItemReceiptsWithMileageDetails x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /expense-image-api/getLineItemReceiptsFromLineItemId method: get operationId: getLineItemReceiptsFromLineItemId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/expense-receipts/{reportId} method: get operationId: getExpenseReceiptsUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/expense-report-approvals method: get operationId: getApprovalsUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/expense-report-approvals/count method: get operationId: getExpenseReportCountUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/expense-report-approvals/{reportId} method: get operationId: getExpenseReportUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/expense-report-approvals/{reportId}/submit method: post operationId: submitExpenseReportForApprovalUsingPOST 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/expense-report-line-item-search method: get operationId: getLineItemsUsingGET_1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/expense-reports method: get operationId: getExpenseReportsUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/expense-reports method: post operationId: createExpenseReportUsingPOST 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/expense-reports/{report-id}/line-items/{report-line-item-id}/approve method: post operationId: approveExpenseReportLineItemUsingPOST 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/expense-reports/{report-id}/line-items/{report-line-item-id}/reassign method: post operationId: reassignExpenseReportLineItemUsingPOST 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/expense-reports/{report-id}/line-items/{report-line-item-id}/return method: post operationId: returnExpenseReportLineItemUsingPOST 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/expense-reports/{reportId} method: get operationId: getExpenseReportUsingGET_2 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/expense-reports/{reportId} method: delete operationId: deleteExpenseReportUsingDELETE 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/expense-reports/{reportId}/approve method: post operationId: approveExpenseReportUsingPOST 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/expense-reports/{reportId}/line-items method: delete operationId: deleteExpenseReportLineItemUsingDELETE 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/expense-reports/{reportId}/notes method: post operationId: createExpenseHeaderNoteUsingPOST 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/expense-reports/{reportId}/reassign method: post operationId: reassignExpenseReportUsingPOST 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/expense-reports/{reportId}/return method: post operationId: returnExpenseReportUsingPOST 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/expense-reports/{reportId}/submit method: post operationId: submitExpenseReportUsingPOST 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/expense-reports/{reportId}/tracking method: get operationId: getReportForTrackingUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/expense-types method: get operationId: getExpenseTypesUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/open-expense-reports method: get operationId: getOpenExpenseReportsUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/returned-payment-expense-reports/lite method: get operationId: getReturnedPaymentExpenseReportHeaderIdsUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/trip-reports-summary method: get operationId: getTripReportsSummaryUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/expense-report-approvals method: get operationId: getApprovalsUsingGET_1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/expense-report-approvals/count method: get operationId: getExpenseReportCountUsingGET_1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/expense-report-approvals/{reportId} method: get operationId: getExpenseReportUsingGET_1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/expense-reports/{reportId}/approve method: post operationId: approveExpenseReportUsingPOST_1 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: /v2/expense-reports/{reportId}/reassign method: post operationId: reassignExpenseReportUsingPOST_1 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: /v2/expense-reports/{reportId}/return method: post operationId: returnExpenseReportUsingPOST_1 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: /v2/expense-reports/{reportId}/submit method: post operationId: submitExpenseReportUsingPOST_1 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: /v3/expense-reports method: get operationId: getExpenseReportsUsingGET_1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/expense-reports/{reportId} method: get operationId: getExpenseReportUsingGET_3 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/expense-reports/{reportId}/line-items method: get operationId: getLineItemsUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/export-status method: post operationId: updateExpenseExportStatusUsingPOST 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/export-status/re-post method: patch operationId: repostExternalExportStatusByExportIdsUsingPATCH 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/exports method: get operationId: getExportIdsUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/export-status method: post operationId: updateExportStatusUsingPOST 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: /v2/export-status/re-post method: patch operationId: repostExternalExportStatusByExportIdsUsingPATCH_1 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: /v2/exports method: get operationId: getExportIdsUsingGET_1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/invoice-api/invoices method: put operationId: getInvoicesUsingPUT 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/invoice-api/invoices/images/pdf method: get operationId: getImagesInPdfUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/invoice-api/invoices/payments method: put operationId: getInvoicePaymentsUsingPUT 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/invoice-api/invoices/sdi/xml method: post operationId: postInvoicePaymentStatusUsingPOST 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/invoice-api/invoices/{invoiceId}/approve method: post operationId: approveInvoiceUsingPOST 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/invoice-api/invoices/{invoiceId}/assign method: post operationId: assignInvoiceUsingPOST 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/invoice-api/invoices/{invoiceId}/ocr/images method: get operationId: getInvoiceOcrImagesReportUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/invoice-api/invoices/{invoiceId}/payment method: post operationId: postInvoicePaymentStatusExternalUsingPOST 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/invoice-api/invoices/{invoiceId}/return method: post operationId: returnInvoiceUsingPOST 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/paid-expense method: post operationId: createPaidExpenseUsingPOST 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/paid-expenses method: post operationId: createPaidExpensesUsingPOST 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: /v4/persons/{personUniqueId}/person-entities/{person-entity-id} method: get operationId: getPersonEntityById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/persons/{personUniqueId}/person-entities/{person-entity-id} method: put operationId: modifyPersonEntityById 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: /v4/persons/{personUniqueId}/person-entities/{person-entity-id} method: delete operationId: deletePersonEntityById 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: /v4/sap-persons method: post operationId: sapPatchyPostBecauseReasons 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: /v4/persons method: get operationId: getPersons x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/persons method: post operationId: createPerson 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: /v4/persons/{toPersonUniqueId}/assists/{fromPersonUniqueId} method: post operationId: addPersonDelegate 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: /v4/persons/{toPersonUniqueId}/assists/{fromPersonUniqueId} method: delete operationId: deletePersonDelegate 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: /v4/persons/{personUniqueId}/udas method: get operationId: getPersonUdas x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/persons/{personUniqueId}/udas method: post operationId: createPersonUda 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: /v4/persons/{personUniqueId}/person-entities method: get operationId: getPersonEntities x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/persons/{personUniqueId}/person-entities method: post operationId: addEntityToPerson 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: /v4/persons/reprocess-depersonalization method: post operationId: reprocessDepersonalization 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: /v4/persons/batch method: post operationId: upsertPersons 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: /v3/persons method: get operationId: getPersons_1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/persons method: post operationId: bulkUpsertPersonsForSAPConnector 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: /v2/persons method: get operationId: getPerson x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/persons method: post operationId: bulkUpsertPersonsForSAPConnector_1 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: /v2/persons/{personUniqueId}/sanitize method: post operationId: sanitizePersonPII 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: /v2/persons/{person-unique-id}/subscriptions/{subscription-type} method: post operationId: processPersonNotifications 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: /v4/persons/{personUniqueId} method: get operationId: getPersonByUniqueId x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/persons/{personUniqueId} method: patch operationId: patch 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: /v4/persons/search method: get operationId: searchPersons x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/persons/{person-unique-id}/subscriptions method: get operationId: getPersonSubscriptions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/preapproval-reports/{reportId}/notes method: post operationId: addNote 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/preapproval-reports method: post operationId: createPreApproval 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/preapproval-reports/{reportId}/return method: post operationId: returnPreApproval 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/preapproval-reports/{reportId}/reassign method: post operationId: reassignPreApproval 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/preapproval-reports/{reportId}/approve method: post operationId: approvePreApproval 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/preapproval-exports method: post operationId: createPreApprovalExport 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/preapproval-exports/{exportId}/close-export-request method: post operationId: completePreApprovalExport 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/preapproval-exports/export-request method: post operationId: getNextAvailablePreApprovalExport 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: /v2/preapproval-reports/{reportId} method: get operationId: getPreapprovalReport x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/preapproval-report-approvals/{reportId} method: get operationId: getPreApproval x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/preapproval-reports/itemType method: get operationId: getPreApprovalLineItemType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/preapproval-report-approved method: get operationId: getPreApprovalsApprovedDBPagination x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/preapproval-report-approvals method: get operationId: getPreApprovalApprovals x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/preapproval-report-approvals/{reportId} method: get operationId: getPreApproval_1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/preapproval-report-approvals/count method: get operationId: getPreApprovalCount x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/preapproval-exports/{exportId} method: get operationId: getPreApprovalHeadersByExport x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/preapproval-reports/{reportId} method: delete operationId: deletePreApproval 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: /po-api method: post operationId: createPOUsingPOST 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: /po-api/create-or-update method: post operationId: upsertPOUsingPOST 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: /po-api/delete method: patch operationId: deletePoUsingPATCH 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: /po-api/item/catalog/create-or-update method: post operationId: createItemCatalogsUsingPOST 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: /po-api/poNumber/search method: put operationId: getExternalApprovedPOByPoNumberUsingPUT 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: /po-api/poNumber/{poNumber} method: get operationId: getExternalPoByPoNumberUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /po-api/poReqId/{poReqId} method: get operationId: getExternalPoByPoReqIdUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /po-api/receipts method: post operationId: createReceiptUsingPOST 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: /po-api/receipts/create-or-update method: post operationId: upsertReceiptUsingPOST 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: /po-api/receipts/{receiptNumber} method: delete operationId: deleteReceiptByReceiptNumberUsingDELETE 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: /po-api/receipts/{receiptNumber} method: patch operationId: updateReceiptUsingPATCH 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: /po-api/requestNumber/search method: put operationId: getExternalPOByRequestNumberUsingPUT 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: /po-api/requestNumber/{requestNumber} method: get operationId: getExternalPOUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /po-api/{poNumber} method: delete operationId: deletePoByPoNumberUsingDELETE 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: /po-api/{requestNumber} method: patch operationId: updatePOUsingPATCH 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: /vendor-api/ method: post operationId: createVendorUsingPOST 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: /vendor-api/create-or-update method: post operationId: upsertVendorUsingPOST 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: /vendor-api/{vendorUniqueId} method: get operationId: getVendorUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /vendor-api/{vendorUniqueId} method: patch operationId: updateVendorUsingPATCH 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: /vendor-api/{vendorUniqueId}/addresses/{vendorAddressUniqueId} method: get operationId: getVendorAddressUsingGET x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /accounts method: get operationId: get_accounts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /accounts/{id} method: get operationId: get_accounts_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /allowances/{id} method: get operationId: get_allowances_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /allowances/{id} method: put operationId: put_allowances_by_id 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: /cards method: get operationId: get_cards x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /cards method: post operationId: post_cards 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: /cards/{id} method: get operationId: get_cards_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /cards/{id} method: put operationId: put_cards_by_id 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: /cards/{id} method: delete operationId: delete_cards_by_id 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: /cards/{id}/pan method: get operationId: get_cards_by_id_pan x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /members method: get operationId: get_members x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /members method: post operationId: post_members 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: /members/{id} method: get operationId: get_members_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /members/{id} method: put operationId: put_members_by_id 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: /members/{id} method: delete operationId: delete_members_by_id 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: /transactions method: get operationId: get_transactions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /transactions/{id} method: get operationId: get_transactions_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /transactions/{id} method: put operationId: put_transactions_by_id 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: /shipping-addresses method: get operationId: get_shipping_addresses x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /shipping-addresses method: post operationId: post_shipping_addresses 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: /shipping-addresses/{id} method: get operationId: get_shipping_addresses_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /shipping-addresses/{id} method: put operationId: put_shipping_addresses_by_id 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: /shipping-addresses/{id} method: delete operationId: delete_shipping_addresses_by_id 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: /categories method: get operationId: get_categories x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /categories method: post operationId: post_categories 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: /categories/{id} method: get operationId: get_categories_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /categories/{id} method: put operationId: put_categories_by_id 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: /categories/{id} method: delete operationId: delete_categories_by_id 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: /departments method: get operationId: get_departments x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /departments method: post operationId: post_departments 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: /departments/{id} method: get operationId: get_departments_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /departments/{id} method: put operationId: put_departments_by_id 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: /departments/{id} method: delete operationId: delete_departments_by_id 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: /labels method: get operationId: get_labels x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /labels method: post operationId: post_labels 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: /labels/{id} method: get operationId: get_labels_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /labels/{id} method: put operationId: put_labels_by_id 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: /labels/{id} method: delete operationId: delete_labels_by_id 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: /locations method: get operationId: get_locations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /locations method: post operationId: post_locations 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: /locations/{id} method: get operationId: get_locations_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /locations/{id} method: put operationId: put_locations_by_id 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: /locations/{id} method: delete operationId: delete_locations_by_id 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: /company method: get operationId: get_company x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /company/{id} method: get operationId: get_company_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /shared-links method: get operationId: get_shared_links x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /shared-links method: post operationId: post_shared_links 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: /shared-links/{id} method: get operationId: get_shared_links_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /shared-links/{id} method: put operationId: put_shared_links_by_id 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: /shared-links/{id} method: delete operationId: delete_shared_links_by_id 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: /requisitions method: get operationId: get_requisitions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /requisitions method: post operationId: post_requisitions 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: /requisitions/{id} method: get operationId: get_requisitions_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /requisitions/{id} method: put operationId: put_requisitions_by_id 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: /requisitions/{id} method: delete operationId: delete_requisitions_by_id 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: /accounts/{account_pk}/statement-lines method: get operationId: get_accounts_by_account_pk_statement_lines x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /accounts/{account_pk}/statement-lines/{id} method: get operationId: get_accounts_by_account_pk_statement_lines_by_id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /merchant-categories method: get operationId: get_merchant_categories x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /oauth/token/challenge method: get operationId: get_oauth_token_challenge x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /oauth/token/challenge method: post operationId: post_oauth_token_challenge 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: /members/{member_pk}/terms-of-service method: post operationId: post_members_by_member_pk_terms_of_service 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: /oauth/token method: post operationId: post_oauth_token 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: /oauth/token/revoke method: post operationId: post_oauth_token_revoke 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