generated: '2026-08-02' method: generated source: openapi/afero-authentication-api-openapi.yml, openapi/afero-devices-api-openapi.yml, openapi/afero-ota-api-openapi.yml, openapi/afero-users-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: 25 by_action_class: acting: 12 connected: 13 by_consequence: write: 12 read: 13 human_in_the_loop_required: 0 operations: - path: /oauth/token method: post operationId: createAccessToken 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: /v1/accounts/{accountId}/devices method: get operationId: listDevices x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/accounts/{accountId}/devices/{deviceId} method: get operationId: getDevice x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/accounts/{accountId}/devices/{deviceId}/actions method: post operationId: executeDeviceAction 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: /v1/accounts/{accountId}/devices/{deviceId}/friendlyName method: put operationId: updateDeviceFriendlyName 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: /v1/ota/partners/{partnerId}/types method: post operationId: createFirmwareType 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: /v1/ota/partners/{partnerId}/types method: get operationId: listFirmwareTypes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/ota/partners/{partnerId}/types/{type} method: get operationId: getFirmwareType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/ota/partners/{partnerId}/types/{type} method: put operationId: updateFirmwareType 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: /v1/ota/partners/{partnerId}/pool method: post operationId: createPoolFirmwareImage 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: /v1/ota/partners/{partnerId}/pool method: get operationId: listPoolFirmwareImages x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/ota/partners/{partnerId}/binaries method: post operationId: uploadFirmwareBinary 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: /v1/ota/partners/{partnerId}/binaries/moveToRepository method: post operationId: moveBinaryToRepository 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: /v1/ota/partners/{partnerId}/pool/types/{type} method: get operationId: listPoolFirmwareImagesByType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/ota/partners/{partnerId}/pool/types/{type}/names/{name}/versions/{version}/exists method: get operationId: poolFirmwareImageExists x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/ota/partners/{partnerId}/pool/types/{type}/versionNumbers/{versionNumber}/associations method: get operationId: listPoolFirmwareImageAssociations x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/ota/partners/{partnerId}/pool/types/{type}/versionNumbers/{versionNumber} method: put operationId: updatePoolFirmwareImage 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: /v1/ota/partners/{partnerId}/deviceTypes/{deviceTypeId}/firmwareImages method: post operationId: createDeviceTypeFirmwareImage 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: /v1/ota/partners/{partnerId}/deviceTypes/{deviceTypeId}/firmwareImages method: get operationId: listDeviceTypeFirmwareImages x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/ota/partners/{partnerId}/deviceTypes/{deviceTypeId}/firmwareImages/types/{type} method: get operationId: listDeviceTypeFirmwareImagesByType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/ota/partners/{partnerId}/deviceTypes/{deviceTypeId}/firmwareImages/types/{type}/versionNumbers/{versionNumber} method: get operationId: getDeviceTypeFirmwareImage x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/ota/partners/{partnerId}/deviceTypes/{deviceTypeId}/firmwareImages/types/{type}/versionNumbers/{versionNumber} method: delete operationId: deleteDeviceTypeFirmwareImage 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: /v1/ota/partners/{partnerId}/deviceTypes/{deviceTypeId}/firmwareImages/{firmwareImageId}/push method: put operationId: pushFirmwareImageToDevice 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: /v1/ota/partners/{partnerId}/tags method: get operationId: listFirmwareTags x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/users/me method: get operationId: getCurrentUser x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none