generated: '2026-07-17' method: generated source: openapi/pennylane-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. Financial write operations (invoices, transactions, mandates, exports) are treated as high-value and default to human-in-the-loop escalation. See research/curity/agentic-governance/. summary: operations: 46 by_action_class: acting: 27 connected: 19 by_consequence: write: 27 read: 19 human_in_the_loop_required: 0 operations: - path: /me method: get operationId: getMe x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /journals method: get operationId: getJournals x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /journals method: post operationId: postJournals 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: /journals/{id} method: get operationId: getJournal x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /ledger_accounts method: get operationId: getLedgerAccounts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /ledger_accounts method: post operationId: postLedgerAccounts 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: /ledger_accounts/{id} method: get operationId: getLedgerAccount x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /ledger_accounts/{id} method: put operationId: updateLedgerAccount 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: /ledger_entries method: get operationId: getLedgerEntries x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /ledger_entries method: post operationId: postLedgerEntries 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: /ledger_entries/{id} method: get operationId: getLedgerEntry x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /ledger_entries/{id} method: put operationId: putLedgerEntries 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: /trial_balance method: get operationId: getTrialBalance x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /fiscal_years method: get operationId: getFiscalYears x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /exports/general_ledger method: post operationId: exportGeneralLedger 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: /exports/fec method: post operationId: exportFec 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 method: get operationId: getCategories x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /categories method: post operationId: postCategories 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: /category_groups method: get operationId: getCategoryGroups x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /customer_invoices method: get operationId: getCustomerInvoices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /customer_invoices method: post operationId: postCustomerInvoices 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: /customer_invoices/import method: post operationId: importCustomerInvoices 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: /customer_invoices/{id} method: get operationId: getCustomerInvoice x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /customer_invoices/{id} method: put operationId: updateCustomerInvoice 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: /customer_invoices/{id}/finalize method: put operationId: finalizeCustomerInvoice x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: required triggers: - irreversible - high-value audit: required - path: /customer_invoices/{id}/mark_as_paid method: put operationId: markAsPaidCustomerInvoice 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: /customer_invoices/{id}/send_by_email method: post operationId: sendByEmailCustomerInvoice x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - external-communication audit: required - path: /customer_invoices/{id}/matched_transactions method: post operationId: postCustomerInvoiceMatchedTransactions 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: /supplier_invoices method: get operationId: getSupplierInvoices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /supplier_invoices/import method: post operationId: importSupplierInvoice 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: /supplier_invoices/{id} method: get operationId: getSupplierInvoice x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /supplier_invoices/{id} method: put operationId: putSupplierInvoice 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: /supplier_invoices/{id}/validate_accounting method: put operationId: validateAccountingSupplierInvoice x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: required triggers: - irreversible - high-value audit: required - path: /quotes method: get operationId: listQuotes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /quotes method: post operationId: postQuotes 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: /quotes/{id} method: get operationId: getQuote x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /billing_subscriptions method: get operationId: getBillingSubscriptions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /billing_subscriptions method: post operationId: postBillingSubscriptions 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: /products method: get operationId: getProducts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /products method: post operationId: postProducts 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: /products/{id} method: put operationId: putProduct 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: /customers method: get operationId: getCustomers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /company_customers method: post operationId: postCompanyCustomer 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: /suppliers method: get operationId: getSuppliers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /suppliers method: post operationId: postSupplier 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: /bank_accounts method: get operationId: getBankAccounts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /transactions method: get operationId: getTransactions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /transactions method: post operationId: createTransaction 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/{id} method: put operationId: updateTransaction 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: /sepa_mandates method: get operationId: getSepaMandates x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /sepa_mandates method: post operationId: postSepaMandates x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: required triggers: - irreversible - high-value audit: required - path: /file_attachments method: post operationId: postFileAttachments 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: /customer_invoices/changes method: get operationId: getCustomerInvoicesChanges x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /pa_registrations method: get operationId: getPaRegistrations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none