generated: '2026-07-19' method: generated source: openapi/frameio-v4-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: 90 by_action_class: acting: 53 connected: 37 by_consequence: write: 53 read: 37 human_in_the_loop_required: 0 operations: - path: /v4/accounts/{account_id}/search method: post operationId: search.search 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: /v4/accounts/{account_id}/comments/{comment_id}/attachments/{attachment_id} method: delete operationId: comments.delete_attachment 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: /v4/accounts/{account_id}/shares/{share_id}/assets method: post operationId: shares.add_asset 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: /v4/accounts/{account_id}/comments/{comment_id}/attachments method: post operationId: comments.create_attachment 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: /v4/me method: get operationId: users.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/shares/{share_id}/assets/{asset_id} method: delete operationId: shares.remove_asset 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: /v4/accounts/{account_id}/projects/{project_id}/collections method: get operationId: collections.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/folders/{folder_id}/files/remote_upload method: post operationId: files.create_remote_upload 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: /v4/accounts/{account_id}/metadata/field_definitions/{field_definition_id} method: delete operationId: metadata.field_definitions.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 - path: /v4/accounts/{account_id}/metadata/field_definitions/{field_definition_id} method: patch operationId: metadata.field_definitions.update 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: /v4/accounts/{account_id}/actions/{action_id} method: delete operationId: actions.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 - path: /v4/accounts/{account_id}/actions/{action_id} method: get operationId: actions.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/actions/{action_id} method: patch operationId: actions.update 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: /v4/accounts/{account_id}/workspaces/{workspace_id}/users/{user_id} method: delete operationId: workspace_user_roles.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 - path: /v4/accounts/{account_id}/workspaces/{workspace_id}/users/{user_id} method: patch operationId: workspace_user_roles.update 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: /v4/accounts/{account_id}/version_stacks/{version_stack_id}/move method: patch operationId: version_stacks.move 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: /v4/accounts/{account_id}/comments/{comment_id} method: delete operationId: comments.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 - path: /v4/accounts/{account_id}/comments/{comment_id} method: get operationId: comments.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/comments/{comment_id} method: patch operationId: comments.update 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: /v4/accounts/{account_id}/shares/{share_id} method: delete operationId: shares.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 - path: /v4/accounts/{account_id}/shares/{share_id} method: get operationId: shares.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/shares/{share_id} method: patch operationId: shares.update 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: /v4/accounts/{account_id}/folders/{folder_id}/users method: get operationId: folder_user_roles.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/folders/{folder_id}/files/local_upload method: post operationId: files.create_local_upload 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: /v4/accounts/{account_id}/files/{file_id}/metadata method: get operationId: metadata.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/files/{file_id}/status method: get operationId: files.show_file_upload_status x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/folders/{folder_id}/version_stacks method: get operationId: version_stacks.list x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/folders/{folder_id}/version_stacks method: post operationId: version_stacks.create 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: /v4/accounts/{account_id}/groups method: get operationId: groups.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/groups method: post operationId: groups.create 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: /v4/accounts/{account_id}/shares/{share_id}/reviewers method: delete operationId: shares.remove_reviewers 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: /v4/accounts/{account_id}/shares/{share_id}/reviewers method: get operationId: shares.list_reviewers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/shares/{share_id}/reviewers method: post operationId: shares.add_reviewers 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: /v4/accounts/{account_id}/workspaces/{workspace_id}/actions method: get operationId: actions.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/workspaces/{workspace_id}/actions method: post operationId: actions.create 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: /v4/accounts/{account_id}/files/{file_id}/move method: patch operationId: files.move 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: /v4/accounts/{account_id}/projects/{project_id} method: delete operationId: projects.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 - path: /v4/accounts/{account_id}/projects/{project_id} method: get operationId: projects.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/projects/{project_id} method: patch operationId: projects.update 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: /v4/accounts/{account_id}/folders/{folder_id}/files/import method: post operationId: files.import_file 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: /v4/accounts/{account_id}/workspaces method: get operationId: workspaces.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/workspaces method: post operationId: workspaces.create 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: /v4/accounts/{account_id}/files/{file_id} method: delete operationId: files.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 - path: /v4/accounts/{account_id}/files/{file_id} method: get operationId: files.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/files/{file_id} method: patch operationId: files.update 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: /v4/accounts/{account_id}/folders/{folder_id}/files method: get operationId: files.list x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/folders/{folder_id}/files method: post operationId: files.create 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: /v4/accounts/{account_id}/metadata/field_definitions method: get operationId: metadata.field_definitions.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/metadata/field_definitions method: post operationId: metadata.field_definitions.create 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: /v4/accounts method: get operationId: accounts.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/collections/{collection_id} method: get operationId: collections.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/folders/{folder_id}/users/{user_id} method: delete operationId: folder_permissions.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 - path: /v4/accounts/{account_id}/folders/{folder_id}/users/{user_id} method: patch operationId: folder_user_roles.update 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: /v4/accounts/{account_id}/groups/{group_id} method: get operationId: groups.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/groups/{group_id} method: patch operationId: groups.update 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: /v4/accounts/{account_id}/projects/{project_id}/shares method: get operationId: shares.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/projects/{project_id}/shares method: post operationId: shares.create 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: /v4/accounts/{account_id}/workspaces/{workspace_id}/webhooks method: get operationId: webhooks.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/workspaces/{workspace_id}/webhooks method: post operationId: webhooks.create 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: /v4/accounts/{account_id}/version_stacks/{version_stack_id} method: get operationId: version_stacks.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/folders/{folder_id} method: delete operationId: folders.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 - path: /v4/accounts/{account_id}/folders/{folder_id} method: get operationId: folders.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/folders/{folder_id} method: patch operationId: folders.update 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: /v4/accounts/{account_id}/workspaces/{workspace_id} method: delete operationId: workspaces.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 - path: /v4/accounts/{account_id}/workspaces/{workspace_id} method: get operationId: workspaces.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/workspaces/{workspace_id} method: patch operationId: workspaces.update 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: /v4/accounts/{account_id}/folders/{folder_id}/children method: get operationId: folders.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/audit_logs method: get operationId: auditlog.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/users method: get operationId: account_user_roles.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/version_stacks/{version_stack_id}/children method: get operationId: version_stacks.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/workspaces/{workspace_id}/users method: get operationId: workspace_user_roles.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/webhooks/{webhook_id} method: delete operationId: webhooks.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 - path: /v4/accounts/{account_id}/webhooks/{webhook_id} method: get operationId: webhooks.show x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/webhooks/{webhook_id} method: patch operationId: webhooks.update 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: /v4/accounts/{account_id}/folders/{folder_id}/move method: patch operationId: folders.move 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: /v4/accounts/{account_id}/projects method: get operationId: account_projects.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/projects/{project_id}/users/{user_id} method: delete operationId: project_permissions.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 - path: /v4/accounts/{account_id}/projects/{project_id}/users/{user_id} method: patch operationId: project_user_roles.update 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: /v4/accounts/{account_id}/files/{file_id}/comments method: get operationId: comments.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/files/{file_id}/comments method: post operationId: comments.create 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: /v4/accounts/{account_id}/files/{file_id}/copy method: post operationId: files.copy 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: /v4/accounts/{account_id}/folders/{folder_id}/folders method: get operationId: folders.list x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/folders/{folder_id}/folders method: post operationId: folders.create 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: /v4/accounts/{account_id}/folders/{folder_id}/copy method: post operationId: folders.copy 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: /v4/accounts/{account_id}/projects/{project_id}/users method: get operationId: project_user_roles.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/workspaces/{workspace_id}/projects method: get operationId: projects.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/workspaces/{workspace_id}/projects method: post operationId: projects.create 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: /v4/accounts/{account_id}/projects/{project_id}/metadata/values method: patch operationId: metadata.bulk_update 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: /v4/accounts/{account_id}/invited_projects method: get operationId: invited_projects.index x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v4/accounts/{account_id}/version_stacks/{version_stack_id}/copy method: post operationId: version_stacks.copy 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