Asana Agentic Access
Asana exposes 316 API operations that an AI agent could call, of which 169 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: 147 read, 155 write, and 14 physical.
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.
By consequence
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.
| Method | Path | Consequence | Human-in-loop |
|---|---|---|---|
| POST | /custom_fields/{custom_field_gid}/enum_options/insert | physical | conditional |
| POST | /custom_fields/{custom_field_gid}/enum_options/insert | physical | conditional |
| PUT | /goal_relationships/{goal_relationship_gid} | physical | conditional |
| PUT | /goal_relationships/{goal_relationship_gid} | physical | conditional |
| POST | /goals/{goal_gid}/addSupportingRelationship | physical | conditional |
| POST | /goals/{goal_gid}/addSupportingRelationship | physical | conditional |
| POST | /goals/{goal_gid}/removeSupportingRelationship | physical | conditional |
| POST | /goals/{goal_gid}/removeSupportingRelationship | physical | conditional |
| POST | /memberships | physical | conditional |
| POST | /memberships | physical | conditional |
| PUT | /memberships/{membership_gid} | physical | conditional |
| DELETE | /memberships/{membership_gid} | physical | conditional |
| PUT | /memberships/{membership_gid} | physical | conditional |
| DELETE | /memberships/{membership_gid} | physical | conditional |
Source
Agentic Access
generated: '2026-07-15'
method: generated
source: openapi/asana-allocations-api-openapi.yml, openapi/asana-attachments-api-openapi.yml,
openapi/asana-batch-api-openapi.yml, openapi/asana-custom-fields-api-openapi.yml, openapi/asana-enum-options-api-openapi.yml,
openapi/asana-events-api-openapi.yml, openapi/asana-goal-relationships-api-openapi.yml, openapi/asana-goals-api-openapi.yml,
openapi/asana-jobs-api-openapi.yml, openapi/asana-memberships-api-openapi.yml, openapi/asana-openapi.yml,
openapi/asana-organization-exports-api-openapi.yml, openapi/asana-portfolios-api-openapi.yml,
openapi/asana-project-templates-api-openapi.yml, openapi/asana-projects-api-openapi.yml, openapi/asana-rule-triggers-api-openapi.yml,
openapi/asana-sections-api-openapi.yml, openapi/asana-status-updates-api-openapi.yml, openapi/asana-tags-api-openapi.yml,
openapi/asana-task-templates-api-openapi.yml, openapi/asana-tasks-api-openapi.yml, openapi/asana-teams-api-openapi.yml,
openapi/asana-time-periods-api-openapi.yml, openapi/asana-time-tracking-entries-api-openapi.yml,
openapi/asana-user-task-lists-api-openapi.yml, openapi/asana-users-api-openapi.yml, openapi/asana-webhooks-api-openapi.yml,
openapi/asana-workspaces-api-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: 316
by_action_class:
connected: 147
acting: 169
by_consequence:
read: 147
write: 155
physical: 14
human_in_the_loop_required: 0
operations:
- path: /allocations/{allocation_gid}
method: get
operationId: getAllocation
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /allocations/{allocation_gid}
method: put
operationId: updateAllocation
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: /allocations/{allocation_gid}
method: delete
operationId: deleteAllocation
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: /allocations
method: get
operationId: getAllocations
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /allocations
method: post
operationId: createAllocation
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: /attachments/{attachment_gid}
method: get
operationId: getAttachment
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /attachments/{attachment_gid}
method: delete
operationId: deleteAttachment
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: /attachments
method: get
operationId: getAttachmentsForObject
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /attachments
method: post
operationId: createAttachmentForObject
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: /batch
method: post
operationId: createBatchRequest
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
method: post
operationId: createCustomField
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_gid}
method: get
operationId: getCustomField
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /custom_fields/{custom_field_gid}
method: put
operationId: updateCustomField
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_gid}
method: delete
operationId: deleteCustomField
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: /workspaces/{workspace_gid}/custom_fields
method: get
operationId: getCustomFieldsForWorkspace
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /custom_fields/{custom_field_gid}/enum_options
method: post
operationId: createEnumOptionForCustomField
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_gid}/enum_options/insert
method: post
operationId: insertEnumOptionForCustomField
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: /enum_options/{enum_option_gid}
method: put
operationId: updateEnumOption
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: /events
method: get
operationId: getEvents
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /goal_relationships/{goal_relationship_gid}
method: get
operationId: getGoalRelationship
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /goal_relationships/{goal_relationship_gid}
method: put
operationId: updateGoalRelationship
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: /goal_relationships
method: get
operationId: getGoalRelationships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /goals/{goal_gid}/addSupportingRelationship
method: post
operationId: addSupportingRelationship
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: /goals/{goal_gid}/removeSupportingRelationship
method: post
operationId: removeSupportingRelationship
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: /goals
method: get
operationId: getGoals
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /goals
method: post
operationId: createGoal
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: /goals/{goal_gid}
method: get
operationId: getGoal
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /goals/{goal_gid}
method: put
operationId: updateGoal
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: /goals/{goal_gid}
method: delete
operationId: deleteGoal
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: /goals/{goal_gid}/addFollowers
method: post
operationId: addFollowersForGoal
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: /goals/{goal_gid}/removeFollowers
method: post
operationId: removeFollowersForGoal
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: /goals/{goal_gid}/parentGoals
method: get
operationId: getParentGoalsForGoal
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /jobs/{job_gid}
method: get
operationId: getJob
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /memberships
method: get
operationId: getMemberships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /memberships
method: post
operationId: createMembership
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: /memberships/{membership_gid}
method: get
operationId: getMembership
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /memberships/{membership_gid}
method: put
operationId: updateMembership
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: /memberships/{membership_gid}
method: delete
operationId: deleteMembership
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: /allocations/{allocation_gid}
method: get
operationId: getAllocation
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /allocations/{allocation_gid}
method: put
operationId: updateAllocation
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: /allocations/{allocation_gid}
method: delete
operationId: deleteAllocation
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: /allocations
method: get
operationId: getAllocations
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /allocations
method: post
operationId: createAllocation
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: /attachments/{attachment_gid}
method: get
operationId: getAttachment
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /attachments/{attachment_gid}
method: delete
operationId: deleteAttachment
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: /attachments
method: get
operationId: getAttachmentsForObject
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /attachments
method: post
operationId: createAttachmentForObject
x-agentic-access:
action-class: acting
consequence: write
subject: required
scope:
- attachments:write
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /workspaces/{workspace_gid}/audit_log_events
method: get
operationId: getAuditLogEvents
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /batch
method: post
operationId: createBatchRequest
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: /projects/{project_gid}/custom_field_settings
method: get
operationId: getCustomFieldSettingsForProject
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /portfolios/{portfolio_gid}/custom_field_settings
method: get
operationId: getCustomFieldSettingsForPortfolio
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /custom_fields
method: post
operationId: createCustomField
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_gid}
method: get
operationId: getCustomField
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /custom_fields/{custom_field_gid}
method: put
operationId: updateCustomField
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_gid}
method: delete
operationId: deleteCustomField
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: /workspaces/{workspace_gid}/custom_fields
method: get
operationId: getCustomFieldsForWorkspace
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /custom_fields/{custom_field_gid}/enum_options
method: post
operationId: createEnumOptionForCustomField
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_gid}/enum_options/insert
method: post
operationId: insertEnumOptionForCustomField
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: /enum_options/{enum_option_gid}
method: put
operationId: updateEnumOption
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: /events
method: get
operationId: getEvents
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /goal_relationships/{goal_relationship_gid}
method: get
operationId: getGoalRelationship
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /goal_relationships/{goal_relationship_gid}
method: put
operationId: updateGoalRelationship
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: /goal_relationships
method: get
operationId: getGoalRelationships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /goals/{goal_gid}/addSupportingRelationship
method: post
operationId: addSupportingRelationship
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: /goals/{goal_gid}/removeSupportingRelationship
method: post
operationId: removeSupportingRelationship
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: /goals/{goal_gid}
method: get
operationId: getGoal
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- goals:read
token:
max-ttl: 3600
audit: none
- path: /goals/{goal_gid}
method: put
operationId: updateGoal
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: /goals/{goal_gid}
method: delete
operationId: deleteGoal
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: /goals
method: get
operationId: getGoals
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- goals:read
token:
max-ttl: 3600
audit: none
- path: /goals
method: post
operationId: createGoal
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: /goals/{goal_gid}/setMetric
method: post
operationId: createGoalMetric
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: /goals/{goal_gid}/setMetricCurrentValue
method: post
operationId: updateGoalMetric
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: /goals/{goal_gid}/addFollowers
method: post
operationId: addFollowers
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: /goals/{goal_gid}/removeFollowers
method: post
operationId: removeFollowers
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: /goals/{goal_gid}/parentGoals
method: get
operationId: getParentGoalsForGoal
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- goals:read
token:
max-ttl: 3600
audit: none
- path: /jobs/{job_gid}
method: get
operationId: getJob
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /memberships
method: get
operationId: getMemberships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /memberships
method: post
operationId: createMembership
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: /memberships/{membership_gid}
method: get
operationId: getMembership
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /memberships/{membership_gid}
method: put
operationId: updateMembership
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: /memberships/{membership_gid}
method: delete
operationId: deleteMembership
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: /organization_exports
method: post
operationId: createOrganizationExport
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: /organization_exports/{organization_export_gid}
method: get
operationId: getOrganizationExport
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /portfolio_memberships
method: get
operationId: getPortfolioMemberships
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /portfolio_memberships/{portfolio_membership_gid}
method: get
operationId: getPortfolioMembership
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /portfolios/{portfolio_gid}/portfolio_memberships
method: get
operationId: getPortfolioMembershipsForPortfolio
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /portfolios
method: get
operationId: getPortfolios
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- portfolios:read
token:
max-ttl: 3600
audit: none
- path: /portfolios
method: post
operationId: createPortfolio
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: /portfolios/{portfolio_gid}
method: get
operationId: getPortfolio
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- portfolios:read
token:
max-ttl: 3600
audit: none
- path: /portfolios/{portfolio_gid}
method: put
operationId: updatePortfolio
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: /portfolios/{portfolio_gid}
method: delete
operationId: deletePortfolio
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: /portfolios/{portfolio_gid}/items
method: get
operationId: getItemsForPortfolio
x-agentic-access:
action-class: connected
consequence: read
subject: optional
scope:
- portfolios:read
token:
max-ttl: 3600
audit: none
- path: /portfolios/{portfolio_gid}/addItem
method: post
operationId: addItemForPortfolio
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: /portfolios/{portfolio_gid}/removeItem
method: post
operationId: removeItemForPortfolio
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: /portfolios/{portfolio_gid}/addCustomFieldSetting
method: post
operationId: addCustomFieldSettingForPortfolio
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: /portfolios/{portfolio_gid}/removeCustomFieldSetting
method: post
operationId: removeCustomFieldSettingForPortfolio
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: /portfolios/{portfolio_gid}/addMembers
method: post
operationId: addMembersForPortfolio
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: /portfolios/{portfolio_gid}/removeMembers
method: post
operationId: removeMembersForPortfolio
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: /project_briefs/{project_brief_gid}
method: get
operationId: getProjectBrief
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /project_briefs/{project_brief_gid}
method: put
operationId: updateProjectBrief
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: /project_briefs/{project_brief_gid}
method: delete
operationId: deleteProjectBrief
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
# --- truncated at 32 KB (94 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/asana/refs/heads/main/agentic-access/asana-agentic-access.yml