generated: '2026-07-15' method: generated source: openapi/pydantic-ai-discovery-openapi.yml, openapi/pydantic-ai-logfire-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: 83 by_action_class: connected: 41 acting: 42 by_consequence: read: 41 write: 39 safety-critical: 3 human_in_the_loop_required: 3 operations: - path: /specs method: get operationId: listApiSpecs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/api-keys/ method: get operationId: list_organization_api_keys_v1_api_keys__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:read_api_key token: max-ttl: 3600 audit: none - path: /v1/api-keys/ method: post operationId: create_organization_api_key_v1_api_keys__post x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:create_api_key audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/api-keys/{api_key_id}/ method: patch operationId: update_organization_api_key_v1_api_keys__api_key_id___patch x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:write_api_key audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/api-keys/{api_key_id}/ method: delete operationId: revoke_organization_api_key_v1_api_keys__api_key_id___delete x-agentic-access: action-class: acting consequence: safety-critical subject: required scope: - organization:write_api_key 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/audit-logs/ method: get operationId: list_audit_logs_v1_audit_logs__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:auditlog token: max-ttl: 3600 audit: none - path: /v1/audit-logs/{audit_log_id}/ method: get operationId: get_audit_log_v1_audit_logs__audit_log_id___get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:auditlog token: max-ttl: 3600 audit: none - path: /v1/billing/usage/ method: get operationId: get_billing_usage_v1_billing_usage__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:payment token: max-ttl: 3600 audit: none - path: /v1/channels/ method: get operationId: list_channels_v1_channels__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:read_channel token: max-ttl: 3600 audit: none - path: /v1/channels/ method: post operationId: create_channel_v1_channels__post x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:write_channel audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/channels/{channel_id}/ method: get operationId: get_channel_v1_channels__channel_id___get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:read_channel token: max-ttl: 3600 audit: none - path: /v1/channels/{channel_id}/ method: put operationId: update_channel_v1_channels__channel_id___put x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:write_channel audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/channels/{channel_id}/ method: delete operationId: delete_channel_v1_channels__channel_id___delete x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:write_channel audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/group-mappings/ method: get operationId: get_group_mappings_v1_group_mappings__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - instance:admin token: max-ttl: 3600 audit: none - path: /v1/group-mappings/ method: put operationId: update_group_mappings_v1_group_mappings__put x-agentic-access: action-class: acting consequence: write subject: required scope: - instance:admin audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/instance/organizations/ method: get operationId: list_instance_organizations_v1_instance_organizations__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - instance:admin token: max-ttl: 3600 audit: none - path: /v1/instance/organizations/ method: post operationId: create_instance_organization_v1_instance_organizations__post x-agentic-access: action-class: acting consequence: write subject: required scope: - instance:admin audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/instance/usage-report/ method: get operationId: list_instance_usage_report_v1_instance_usage_report__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - instance:billing token: max-ttl: 3600 audit: none - path: /v1/instance/group-mappings/ method: get operationId: get_group_mappings_v1_instance_group_mappings__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - instance:admin token: max-ttl: 3600 audit: none - path: /v1/instance/group-mappings/ method: put operationId: update_group_mappings_v1_instance_group_mappings__put x-agentic-access: action-class: acting consequence: write subject: required scope: - instance:admin audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/invitations/ method: get operationId: list_organization_invitations_v1_invitations__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:read_invitation token: max-ttl: 3600 audit: none - path: /v1/invitations/ method: post operationId: create_organization_invitation_v1_invitations__post x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:write_invitation audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/members/ method: get operationId: list_members_v1_members__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:read_member token: max-ttl: 3600 audit: none - path: /v1/members/{user_id}/ method: patch operationId: update_member_v1_members__user_id___patch x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:write_member audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/members/{user_id}/ method: delete operationId: delete_member_v1_members__user_id___delete x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:write_member audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/organizations/ method: get operationId: list_organizations_v1_organizations__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:admin token: max-ttl: 3600 audit: none - path: /v1/organizations/ method: post operationId: create_organization_v1_organizations__post x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:admin audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/organizations/{organization_id}/ method: get operationId: get_organization_v1_organizations__organization_id___get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:admin token: max-ttl: 3600 audit: none - path: /v1/organizations/{organization_id}/ method: put operationId: update_organization_v1_organizations__organization_id___put x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:admin audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/organizations/{organization_id}/ method: delete operationId: delete_organization_v1_organizations__organization_id___delete x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:admin audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/organizations/{organization_id}/invitations/ method: post operationId: create_self_hosted_organization_invitation_v1_organizations__organization_id__invitations__post x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:admin audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/ method: get operationId: list_projects_v1_projects__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - project:read token: max-ttl: 3600 audit: none - path: /v1/projects/ method: post operationId: create_project_v1_projects__post x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:create_project audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/ method: get operationId: get_project_info_v1_projects__project_id___get x-agentic-access: action-class: connected consequence: read subject: optional scope: - project:read token: max-ttl: 3600 audit: none - path: /v1/projects/{project_id}/ method: put operationId: update_project_v1_projects__project_id___put x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/ method: delete operationId: delete_project_v1_projects__project_id___delete x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/dashboards/ method: get operationId: list_dashboards_v1_projects__project_id__dashboards__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - project:read_dashboard token: max-ttl: 3600 audit: none - path: /v1/projects/{project_id}/dashboards/ method: post operationId: create_dashboard_v1_projects__project_id__dashboards__post x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write_dashboard audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/dashboards/{dashboard_id}/ method: get operationId: get_dashboard_v1_projects__project_id__dashboards__dashboard_id___get x-agentic-access: action-class: connected consequence: read subject: optional scope: - project:read_dashboard token: max-ttl: 3600 audit: none - path: /v1/projects/{project_id}/dashboards/{dashboard_id}/ method: put operationId: update_dashboard_v1_projects__project_id__dashboards__dashboard_id___put x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write_dashboard audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/dashboards/{dashboard_id}/ method: delete operationId: delete_dashboard_v1_projects__project_id__dashboards__dashboard_id___delete x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write_dashboard audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/alerts/ method: get operationId: list_alerts_v1_projects__project_id__alerts__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - project:read_alert token: max-ttl: 3600 audit: none - path: /v1/projects/{project_id}/alerts/ method: post operationId: create_alert_v1_projects__project_id__alerts__post x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write_alert audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/alerts/{alert_id}/ method: get operationId: get_alert_v1_projects__project_id__alerts__alert_id___get x-agentic-access: action-class: connected consequence: read subject: optional scope: - project:read_alert token: max-ttl: 3600 audit: none - path: /v1/projects/{project_id}/alerts/{alert_id}/ method: put operationId: update_alert_v1_projects__project_id__alerts__alert_id___put x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write_alert audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/alerts/{alert_id}/ method: delete operationId: delete_alert_v1_projects__project_id__alerts__alert_id___delete x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write_alert audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/write-tokens/ method: post operationId: create_write_token_v1_projects__project_id__write_tokens__post x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write_token audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/write-tokens/ method: get operationId: list_write_tokens_v1_projects__project_id__write_tokens__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - project:write_token token: max-ttl: 3600 audit: none - path: /v1/projects/{project_id}/write-tokens/{token_id}/rotate/ method: post operationId: rotate_write_token_v1_projects__project_id__write_tokens__token_id__rotate__post x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write_token audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/write-tokens/{token_id}/expire/ method: patch operationId: expire_write_token_v1_projects__project_id__write_tokens__token_id__expire__patch x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write_token audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/write-tokens/{token_id}/ method: delete operationId: revoke_write_token_v1_projects__project_id__write_tokens__token_id___delete x-agentic-access: action-class: acting consequence: safety-critical subject: required scope: - project:write_token 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/projects/{project_id}/read-tokens/ method: post operationId: create_read_token_v1_projects__project_id__read_tokens__post x-agentic-access: action-class: acting consequence: write subject: required scope: - project:read_token audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/read-tokens/ method: get operationId: list_read_tokens_v1_projects__project_id__read_tokens__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - project:read_token token: max-ttl: 3600 audit: none - path: /v1/projects/{project_id}/read-tokens/{token_id}/rotate/ method: post operationId: rotate_read_token_v1_projects__project_id__read_tokens__token_id__rotate__post x-agentic-access: action-class: acting consequence: write subject: required scope: - project:read_token audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/read-tokens/{token_id}/expire/ method: patch operationId: expire_read_token_v1_projects__project_id__read_tokens__token_id__expire__patch x-agentic-access: action-class: acting consequence: write subject: required scope: - project:read_token audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/read-tokens/{token_id}/ method: delete operationId: revoke_read_token_v1_projects__project_id__read_tokens__token_id___delete x-agentic-access: action-class: acting consequence: safety-critical subject: required scope: - project:read_token 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/projects/{project_id}/variables/ method: get operationId: get_variables_config_v1_projects__project_id__variables__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - project:read_variables token: max-ttl: 3600 audit: none - path: /v1/projects/{project_id}/variables/ method: post operationId: create_variable_v1_projects__project_id__variables__post x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write_variables audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/projects/{project_id}/variables/{name}/ method: get operationId: get_variable_by_name_v1_projects__project_id__variables__name___get x-agentic-access: action-class: connected consequence: read subject: optional scope: - project:read_variables token: max-ttl: 3600 audit: none - path: /v1/projects/{project_id}/variables/{name}/ method: put operationId: update_variable_v1_projects__project_id__variables__name___put x-agentic-access: action-class: acting consequence: write subject: required scope: - project:write_variables audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/usage/daily/ method: get operationId: get_organization_daily_usage_v1_usage_daily__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:payment token: max-ttl: 3600 audit: none - path: /v1/usage/monthly/ method: get operationId: get_organization_monthly_usage_v1_usage_monthly__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:payment token: max-ttl: 3600 audit: none - path: /v1/usage/projects/daily/ method: get operationId: get_all_projects_daily_usage_v1_usage_projects_daily__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:payment token: max-ttl: 3600 audit: none - path: /v1/usage/projects/monthly/ method: get operationId: get_all_projects_monthly_usage_v1_usage_projects_monthly__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:payment token: max-ttl: 3600 audit: none - path: /v1/usage/projects/{project_id}/daily/ method: get operationId: get_project_daily_usage_v1_usage_projects__project_id__daily__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:payment token: max-ttl: 3600 audit: none - path: /v1/usage/projects/{project_id}/monthly/ method: get operationId: get_project_monthly_usage_v1_usage_projects__project_id__monthly__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:payment token: max-ttl: 3600 audit: none - path: /scim/Users method: get operationId: get_users_on_prem_scim_Users_get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:scim token: max-ttl: 3600 audit: none - path: /scim/Users/{user_email} method: get operationId: get_user_on_prem_scim_Users__user_email__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:scim token: max-ttl: 3600 audit: none - path: /scim/Groups method: get operationId: get_groups_on_prem_scim_Groups_get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:scim token: max-ttl: 3600 audit: none - path: /scim/Groups/{group_id} method: get operationId: get_group_on_prem_scim_Groups__group_id__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:scim token: max-ttl: 3600 audit: none - path: /scim/Groups/{group_id} method: patch operationId: update_group_on_prem_scim_Groups__group_id__patch x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:scim audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /scim/{provider_name}/Users method: get operationId: get_users_cloud_scim__provider_name__Users_get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:scim token: max-ttl: 3600 audit: none - path: /scim/{provider_name}/Users/{user_email} method: get operationId: get_user_cloud_scim__provider_name__Users__user_email__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:scim token: max-ttl: 3600 audit: none - path: /scim/{provider_name}/Groups method: get operationId: get_groups_cloud_scim__provider_name__Groups_get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:scim token: max-ttl: 3600 audit: none - path: /scim/{provider_name}/Groups/{group_id} method: get operationId: get_group_cloud_scim__provider_name__Groups__group_id__get x-agentic-access: action-class: connected consequence: read subject: optional scope: - organization:scim token: max-ttl: 3600 audit: none - path: /scim/{provider_name}/Groups/{group_id} method: patch operationId: update_group_cloud_scim__provider_name__Groups__group_id__patch x-agentic-access: action-class: acting consequence: write subject: required scope: - organization:scim audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /oauth/authorize method: get operationId: oauth_authorize_get_oauth_authorize_get x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /oauth/authorize method: post operationId: oauth_authorize_post_oauth_authorize_post 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/grantable-scopes method: get operationId: oauth_grantable_scopes_oauth_grantable_scopes_get x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /oauth/token method: post operationId: oauth_token_oauth_token_post 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/device/code method: post operationId: device_authorization_oauth_device_code_post 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/register method: post operationId: oauth_register_oauth_register_post 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/register/{client_id} method: delete operationId: oauth_deregister_oauth_register__client_id__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