generated: '2026-08-16' method: generated source: openapi/foxglove-technologies-openapi-original.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: 73 by_action_class: connected: 34 acting: 39 by_consequence: read: 34 write: 39 human_in_the_loop_required: 0 operations: - path: /devices method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - devices.list token: max-ttl: 3600 audit: none - path: /devices method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - devices.create audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recordings method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - recordings.list token: max-ttl: 3600 audit: none - path: /recordings/{keyOrId} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - recordings.list token: max-ttl: 3600 audit: none - path: /recordings/{keyOrId} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - recordings.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /recordings/{keyOrId}/import method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - data.upload audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /sessions method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - sessions.list token: max-ttl: 3600 audit: none - path: /sessions method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - sessions.create audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /sessions/{keyOrId} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - sessions.list token: max-ttl: 3600 audit: none - path: /sessions/{keyOrId} method: patch x-agentic-access: action-class: acting consequence: write subject: required scope: - sessions.update audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /sessions/{keyOrId} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - sessions.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /actions/devices/{nameOrId}/update-property-time-interval method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - devices.update audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /data/imports method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - data.imports.list token: max-ttl: 3600 audit: none - path: /data/imports method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - data.imports.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /data/imports/{importId} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - data.imports.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /data/pending-imports method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - data.imports.pending.list token: max-ttl: 3600 audit: none - path: /recording-attachments method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - recordings.list token: max-ttl: 3600 audit: none - path: /recording-attachments/{id} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - recordings.list token: max-ttl: 3600 audit: none - path: /recording-attachments/{id}/download method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - recordings.list token: max-ttl: 3600 audit: none - path: /data/coverage method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - data.coverage.list token: max-ttl: 3600 audit: none - path: /data/import-errors method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - data.imports.pending.list token: max-ttl: 3600 audit: none - path: /data/stream method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - data.stream audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /data/upload method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - data.upload audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /data/topics method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - data.topics.list token: max-ttl: 3600 audit: none - path: /devices/{nameOrId} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - devices.list token: max-ttl: 3600 audit: none - path: /devices/{nameOrId} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - devices.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /devices/{nameOrId} method: patch x-agentic-access: action-class: acting consequence: write subject: required scope: - devices.update audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /devices/{nameOrId}/property-time-intervals method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - devices.list token: max-ttl: 3600 audit: none - path: /devices/{nameOrId}/property-time-intervals/{id} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - devices.list token: max-ttl: 3600 audit: none - path: /extension-upload method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - extensions.create audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /extensions method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - extensions.list token: max-ttl: 3600 audit: none - path: /extensions/{id} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - extensions.list token: max-ttl: 3600 audit: none - path: /extensions/{id} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - extensions.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /events method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - events.list token: max-ttl: 3600 audit: none - path: /events method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - events.create audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /events/{id} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - events.list token: max-ttl: 3600 audit: none - path: /events/{id} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - events.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /events/{id} method: patch x-agentic-access: action-class: acting consequence: write subject: required scope: - events.update audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /event-types method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - eventTypes.list token: max-ttl: 3600 audit: none - path: /event-types method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - eventTypes.create audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /event-types/{id} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - eventTypes.list token: max-ttl: 3600 audit: none - path: /event-types/{id} method: patch x-agentic-access: action-class: acting consequence: write subject: required scope: - eventTypes.update audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /event-types/{id} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - eventTypes.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /lake-files method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - data.stream token: max-ttl: 3600 audit: none - path: /layouts method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - layouts.list token: max-ttl: 3600 audit: none - path: /layouts method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - layouts.create audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /layouts/{id} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - layouts.list token: max-ttl: 3600 audit: none - path: /layouts/{id} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - layouts.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /layouts/{id} method: patch x-agentic-access: action-class: acting consequence: write subject: required scope: - layouts.update audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /layouts/{id}/restore method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - layouts.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /custom-properties method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - properties.list token: max-ttl: 3600 audit: none - path: /custom-properties method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - properties.create audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /custom-properties/{id} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - properties.list token: max-ttl: 3600 audit: none - path: /custom-properties/{id} method: patch x-agentic-access: action-class: acting consequence: write subject: required scope: - properties.update audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /custom-properties/{id} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - properties.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /sites method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - sites.list token: max-ttl: 3600 audit: none - path: /sites method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - sites.create audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /sites/{id} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - sites.list token: max-ttl: 3600 audit: none - path: /sites/{id} method: patch x-agentic-access: action-class: acting consequence: write subject: required scope: - sites.update audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /sites/{id} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - sites.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /site-inbox-notification-tokens method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - sites.list token: max-ttl: 3600 audit: none - path: /site-inbox-notification-tokens method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - sites.create audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /site-inbox-notification-tokens/{id} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - sites.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /device-tokens method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - deviceTokens.list token: max-ttl: 3600 audit: none - path: /device-tokens method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - deviceTokens.create audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /device-tokens/{id} method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - deviceTokens.list token: max-ttl: 3600 audit: none - path: /device-tokens/{id} method: patch x-agentic-access: action-class: acting consequence: write subject: required scope: - deviceTokens.update audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /device-tokens/{id} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - deviceTokens.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /site-tokens method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - siteTokens.list token: max-ttl: 3600 audit: none - path: /site-tokens method: post x-agentic-access: action-class: acting consequence: write subject: required scope: - siteTokens.create audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /site-tokens/{id} method: delete x-agentic-access: action-class: acting consequence: write subject: required scope: - siteTokens.delete audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /site-bucket-notifications method: 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: /projects method: get x-agentic-access: action-class: connected consequence: read subject: optional scope: - projects.list token: max-ttl: 3600 audit: none