Permit.io · Agentic Access

Permit.io Agentic Access

x-agentic-access generated

Permit.io exposes 258 API operations that an AI agent could call, of which 146 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.

By consequence: 112 read, 137 write, 6 physical, and 3 safety-critical.

3 operations are classed safety-critical and should require human-in-the-loop approval at runtime.

Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.

Access ControlAuthorizationIdentityPolicySecurity
Operations: 258 Acting: 146 Human-in-the-loop: 3 Method: generated

By consequence

read 112 write 137 physical 6 safety-critical 3

Highest-consequence actions

The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.

MethodPathConsequenceHuman-in-loop
PUT /v2/pdps/{proj_id}/{env_id}/configs/{pdp_id}/debug-audit-logs/disable safety-critical required
PUT /v2/projects/{proj_id}/repos/disable safety-critical required
DELETE /v2/projects/{proj_id}/{env_id}/opal_scope safety-critical required
POST /v2/facts/{proj_id}/{env_id}/email_configurations/send_test_email physical conditional
POST /v2/facts/{proj_id}/{env_id}/email_templates/{template_type}/send_test_email physical conditional
POST /v2/facts/{proj_id}/{env_id}/relationship_tuples physical conditional
DELETE /v2/facts/{proj_id}/{env_id}/relationship_tuples physical conditional
POST /v2/facts/{proj_id}/{env_id}/relationship_tuples/bulk physical conditional
DELETE /v2/facts/{proj_id}/{env_id}/relationship_tuples/bulk physical conditional

Source

Agentic Access

Raw ↑
generated: '2026-07-15'
method: generated
source: openapi/permit-io-openapi.json
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: 258
  by_action_class:
    connected: 112
    acting: 146
  by_consequence:
    read: 112
    write: 137
    physical: 6
    safety-critical: 3
  human_in_the_loop_required: 3
operations:
- path: /v2/members/me
  method: get
  operationId: get_authenticated_member
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/members
  method: get
  operationId: list_organization_members
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/members
  method: post
  operationId: create_organization_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: /v2/members
  method: delete
  operationId: delete_organization_permissions
  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/members/{member_id}
  method: get
  operationId: get_organization_member
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/members/{member_id}
  method: delete
  operationId: delete_organization_member
  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/members/{member_id}
  method: patch
  operationId: update_organization_member
  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/api-key/{proj_id}/{env_id}
  method: get
  operationId: get_environment_api_key
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/api-key/scope
  method: get
  operationId: get_api_key_scope
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/api-key
  method: get
  operationId: list_api_keys
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/api-key
  method: post
  operationId: create_api_key
  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/api-key/{api_key_id}
  method: get
  operationId: get_api_key
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/api-key/{api_key_id}
  method: delete
  operationId: delete_api_key
  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/api-key/{api_key_id}/rotate-secret
  method: post
  operationId: rotate_api_key
  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/orgs
  method: get
  operationId: list_organizations
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/orgs
  method: post
  operationId: create_organization
  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/orgs/{org_id}
  method: get
  operationId: get_organization
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/orgs/{org_id}
  method: delete
  operationId: delete_organization
  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/orgs/{org_id}
  method: patch
  operationId: update_organization
  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/orgs/active/org
  method: get
  operationId: get_active_organization
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/orgs/{org_id}/stats
  method: get
  operationId: stats_organization
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/orgs/{org_id}/invites
  method: get
  operationId: list_organization_invites
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/orgs/{org_id}/invites
  method: post
  operationId: invite_members_to_organization
  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/orgs/{org_id}/invites/{invite_id}
  method: delete
  operationId: cancel_invite
  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/projects
  method: get
  operationId: list_projects
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/projects
  method: post
  operationId: create_project
  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/projects/{proj_id}
  method: get
  operationId: get_project
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/projects/{proj_id}
  method: delete
  operationId: delete_project
  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/projects/{proj_id}
  method: patch
  operationId: update_project
  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/projects/{proj_id}/envs/{env_id}/stats
  method: get
  operationId: stats_environments
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/projects/{proj_id}/envs
  method: get
  operationId: list_environments
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/projects/{proj_id}/envs
  method: post
  operationId: create_environment
  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/projects/{proj_id}/envs/{env_id}
  method: get
  operationId: get_environment
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/projects/{proj_id}/envs/{env_id}
  method: delete
  operationId: delete_environment
  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/projects/{proj_id}/envs/{env_id}
  method: patch
  operationId: update_environment
  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/projects/{proj_id}/envs/{env_id}/copy
  method: post
  operationId: copy_environment
  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/projects/{proj_id}/envs/{env_id}/copy/async
  method: post
  operationId: copy_environment_async
  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/projects/{proj_id}/envs/{env_id}/copy/async/{task_id}/result
  method: get
  operationId: get_copy_environment_async_result
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/projects/{proj_id}/envs/{env_id}/test_jwks
  method: post
  operationId: test_jwks_by_url
  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/schema/{proj_id}/{env_id}/bulk/roles
  method: put
  operationId: bulk_create_or_replace_roles
  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/schema/{proj_id}/{env_id}/condition_sets
  method: get
  operationId: list_condition_sets
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/condition_sets
  method: post
  operationId: create_condition_set
  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/schema/{proj_id}/{env_id}/condition_sets/{condition_set_id}
  method: get
  operationId: get_condition_set
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/condition_sets/{condition_set_id}
  method: delete
  operationId: delete_condition_set
  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/schema/{proj_id}/{env_id}/condition_sets/{condition_set_id}
  method: patch
  operationId: update_condition_set
  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/schema/{proj_id}/{env_id}/condition_sets/{condition_set_id}/ancestors
  method: get
  operationId: get_condition_set_ancestors
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/condition_sets/{condition_set_id}/descendants
  method: get
  operationId: get_condition_set_descendants
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}/implicit_grants
  method: post
  operationId: create_implicit_grant
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}/implicit_grants
  method: delete
  operationId: delete_implicit_grant
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}/implicit_grants/conditions
  method: put
  operationId: update_implicit_grants_conditions
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/action_groups
  method: get
  operationId: list_resource_action_groups
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/action_groups
  method: post
  operationId: create_resource_action_group
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/action_groups/{action_group_id}
  method: get
  operationId: get_resource_action_group
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/action_groups/{action_group_id}
  method: delete
  operationId: delete_resource_action_group
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/action_groups/{action_group_id}
  method: patch
  operationId: update_resource_action_group
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/actions
  method: get
  operationId: list_resource_actions
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/actions
  method: post
  operationId: create_resource_action
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/actions/{action_id}
  method: get
  operationId: get_resource_action
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/actions/{action_id}
  method: delete
  operationId: delete_resource_action
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/actions/{action_id}
  method: patch
  operationId: update_resource_action
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/attributes
  method: get
  operationId: list_resource_attributes
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/attributes
  method: post
  operationId: create_resource_attribute
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/attributes/{attribute_id}
  method: get
  operationId: get_resource_attribute
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/attributes/{attribute_id}
  method: delete
  operationId: delete_resource_attribute
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/attributes/{attribute_id}
  method: patch
  operationId: update_resource_attribute
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/relations
  method: get
  operationId: list_resource_relations
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/relations
  method: post
  operationId: create_resource_relation
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/relations/{relation_id}
  method: get
  operationId: get_resource_relation
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/relations/{relation_id}
  method: delete
  operationId: delete_resource_relation
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/roles
  method: get
  operationId: list_resource_roles
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/roles
  method: post
  operationId: create_resource_role
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}
  method: get
  operationId: get_resource_role
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}
  method: delete
  operationId: delete_resource_role
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}
  method: patch
  operationId: update_resource_role
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}/permissions
  method: post
  operationId: assign_permissions_to_resource_role
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}/permissions
  method: delete
  operationId: remove_permissions_from_resource_role
  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/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}/ancestors
  method: get
  operationId: get_resource_role_ancestors
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}/roles/{role_id}/descendants
  method: get
  operationId: get_resource_role_descendants
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources
  method: get
  operationId: list_resources
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources
  method: post
  operationId: create_resource
  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/schema/{proj_id}/{env_id}/resources/{resource_id}
  method: get
  operationId: get_resource
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/resources/{resource_id}
  method: put
  operationId: replace_resource
  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/schema/{proj_id}/{env_id}/resources/{resource_id}
  method: delete
  operationId: delete_resource
  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/schema/{proj_id}/{env_id}/resources/{resource_id}
  method: patch
  operationId: update_resource
  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/schema/{proj_id}/{env_id}/roles
  method: get
  operationId: list_roles
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/roles
  method: post
  operationId: create_role
  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/schema/{proj_id}/{env_id}/roles/{role_id}
  method: get
  operationId: get_role
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/roles/{role_id}
  method: delete
  operationId: delete_role
  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/schema/{proj_id}/{env_id}/roles/{role_id}
  method: patch
  operationId: update_role
  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/schema/{proj_id}/{env_id}/roles/{role_id}/permissions
  method: post
  operationId: assign_permissions_to_role
  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/schema/{proj_id}/{env_id}/roles/{role_id}/permissions
  method: delete
  operationId: remove_permissions_from_role
  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/schema/{proj_id}/{env_id}/roles/{role_id}/ancestors
  method: get
  operationId: get_role_ancestors
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/roles/{role_id}/descendants
  method: get
  operationId: get_role_descendants
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/users/attributes
  method: get
  operationId: list_user_attributes
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/users/attributes
  method: post
  operationId: create_user_attribute
  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/schema/{proj_id}/{env_id}/users/attributes/{attribute_id}
  method: get
  operationId: get_user_attribute
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/users/attributes/{attribute_id}
  method: delete
  operationId: delete_user_attribute
  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/schema/{proj_id}/{env_id}/users/attributes/{attribute_id}
  method: patch
  operationId: update_user_attribute
  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/schema/{proj_id}/{env_id}/groups/direct
  method: get
  operationId: list_direct_group
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/groups/direct/{group_instance_key}
  method: get
  operationId: get_direct_group
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/groups/{group_instance_key}/children
  method: get
  operationId: list_group_children
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /v2/schema/{proj_id}/{env_id}/groups/{group_instance_key}/parents
  method: get
  operationId: list_group_parents
  x-agentic-access:
    action-class: connected
    consequence: read
 

# --- truncated at 32 KB (83 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/permit-io/refs/heads/main/agentic-access/permit-io-agentic-access.yml