generated: '2026-10-14' method: generated source: openapi/perk-cost-centers-api-openapi.yml, openapi/perk-custom-fields-api-openapi.yml, openapi/perk-custom-fields-openapi.yml, openapi/perk-scim-server-openapi.yml, openapi/perk-travelperk-api-v1-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: 42 by_action_class: connected: 27 acting: 15 by_consequence: read: 27 write: 15 human_in_the_loop_required: 0 operations: - path: /cost_centers method: get operationId: list-cost-centers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /cost_centers method: post operationId: create-cost-center 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: /cost_centers/bulk_update method: patch operationId: bulk-update-cost-centers 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: /cost_centers/{id} method: get operationId: get-cost-center x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /cost_centers/{id} method: patch operationId: update-cost-center 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: /cost_centers/{id}/access method: put operationId: set-cost-center-access 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: /cost_centers/{id}/users method: put operationId: set-cost-center-users 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: /custom-fields/{custom_field_id}/select-options method: get operationId: list-custom-field-select-options x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /custom-fields/{custom_field_id}/select-options method: post operationId: create-custom-field-select-options 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: /custom-fields/{custom_field_id}/select-options/{option_id}/{archive_action} method: post operationId: archive-custom-field-select-option 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: /ResourceTypes method: get operationId: list-resource-types x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /Schemas method: get operationId: list-all-schemas x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /Schemas/urn:ietf:params:scim:schemas:core:2.0:User method: get operationId: get-user-schema x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /Schemas/urn:ietf:params:scim:schemas:extension:enterprise:2.0:User method: get operationId: retrieve-an-enterprise-user x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /Schemas/urn:ietf:params:scim:schemas:extension:perkcustomfields:2.0:User method: get operationId: get_schemas-urn-ietf-params-scim-schemas-extension-perkcustomfields-2-0-user x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /Schemas/urn:ietf:params:scim:schemas:extension:travelperk:2.0:User method: get operationId: custom-user-schema-details x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /ServiceProviderConfig method: get operationId: service-provider-configuration x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /Users method: post operationId: create-a-new-user 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: /Users method: get operationId: list-all-users x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /Users/{id} method: patch operationId: update-a-user 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: /Users/{id} method: put operationId: replace-a-user 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: /Users/{id} method: get operationId: retrieve-a-user-1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /Users/{id} method: delete operationId: deactivate-a-user 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: /bookings method: get operationId: list-all-bookings x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /companies method: get operationId: list-invoice-profiles-1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /invoices method: get operationId: list-invoice x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /invoices/lines method: get operationId: list-invoice-lines-1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /invoices/{serial_number} method: get operationId: get-invoice x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /invoices/{serial_number}/pdf method: get operationId: download-pdf x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /profiles method: get operationId: list-invoice-profiles x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /suppliers method: get operationId: list-all-suppliers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /trips method: get operationId: list-all-trips x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /trips/{id} method: get operationId: retrieve-a-trip-by-id x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /trips/{trip_id}/custom-fields method: get operationId: retrieve-custom-fields x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /users method: get operationId: list-all-users-1 x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /webhooks method: post operationId: subscribe-to-event 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: /webhooks method: get operationId: list-webhooks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /webhooks/events method: get operationId: list-events x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /webhooks/{id} method: patch operationId: update-subscription 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: /webhooks/{id} method: get operationId: get-subscription-details x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /webhooks/{id} method: delete operationId: delete-webhook-subscription 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: /webhooks/{id}/test method: post operationId: test-webhook 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