Soracom · Agentic Access

Soracom Agentic Access

x-agentic-access generated

Soracom exposes 960 API operations that an AI agent could call, of which 616 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: 344 read, 473 write, 71 physical, and 72 safety-critical.

72 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.

IoTCellularLPWANSIMLoRaWANSigfoxMVNOConnectivityEdgeJapan
Operations: 960 Acting: 616 Human-in-the-loop: 72 Method: generated

By consequence

read 344 write 473 physical 71 safety-critical 72

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
POST /auth/logout safety-critical required
POST /auth/logout safety-critical required
POST /auth/password_reset_token/issue safety-critical required
POST /auth/password_reset_token/issue safety-critical required
POST /auth/password_reset_token/verify safety-critical required
POST /auth/password_reset_token/verify safety-critical required
POST /devices/{device_id}/{object}/{instance}/unobserve safety-critical required
POST /devices/{device_id}/{object}/{instance}/unobserve safety-critical required
POST /devices/{device_id}/{object}/{instance}/{resource}/unobserve safety-critical required
POST /devices/{device_id}/{object}/{instance}/{resource}/unobserve safety-critical required
POST /gadgets/{product_id}/{serial_number}/disable_termination safety-critical required
POST /gadgets/{product_id}/{serial_number}/disable_termination safety-critical required
POST /gadgets/{product_id}/{serial_number}/terminate safety-critical required
POST /gadgets/{product_id}/{serial_number}/terminate safety-critical required
POST /lagoon/terminate safety-critical required
POST /lagoon/terminate safety-critical required
POST /lora_devices/{device_id}/disable_termination safety-critical required
POST /lora_devices/{device_id}/disable_termination safety-critical required
POST /lora_devices/{device_id}/terminate safety-critical required
POST /lora_devices/{device_id}/terminate safety-critical required
POST /lora_gateways/{gateway_id}/disable_termination safety-critical required
POST /lora_gateways/{gateway_id}/disable_termination safety-critical required
POST /lora_gateways/{gateway_id}/terminate safety-critical required
POST /lora_gateways/{gateway_id}/terminate safety-critical required
POST /lora_network_sets/{ns_id}/revoke_permission safety-critical required

Source

Agentic Access

Raw ↑
generated: '2026-07-15'
method: generated
source: openapi/soracom-analysis-query-api-openapi.yml, openapi/soracom-auth-api-openapi.yml,
  openapi/soracom-batch-api-openapi.yml, openapi/soracom-billing-api-openapi.yml, openapi/soracom-event-handler-api-openapi.yml,
  openapi/soracom-group-api-openapi.yml, openapi/soracom-harvest-api-openapi.yml, openapi/soracom-inventory-api-openapi.yml,
  openapi/soracom-lagoon-api-openapi.yml, openapi/soracom-lorawan-api-openapi.yml, openapi/soracom-napter-api-openapi.yml,
  openapi/soracom-platform-api-openapi.yml, openapi/soracom-sandbox-api-openapi.yml, openapi/soracom-sigfox-api-openapi.yml,
  openapi/soracom-sim-api-openapi.yml, openapi/soracom-soracam-api-openapi.yml, openapi/soracom-stats-api-openapi.yml,
  openapi/soracom-vpg-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: 960
  by_action_class:
    acting: 616
    connected: 344
  by_consequence:
    write: 473
    read: 344
    safety-critical: 72
    physical: 71
  human_in_the_loop_required: 72
operations:
- path: /analysis/queries
  method: post
  operationId: startAnalysisQueries
  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: /analysis/queries/{query_id}
  method: get
  operationId: getAnalysisQueries
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /analysis/schemas
  method: get
  operationId: getAnalysisSchemas
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /query/devices
  method: get
  operationId: searchDevices
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /query/sigfox_devices
  method: get
  operationId: searchSigfoxDevices
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /query/sims
  method: get
  operationId: searchSims
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /query/subscribers
  method: get
  operationId: searchSubscribers
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /query/subscribers/traffic_volume/ranking
  method: get
  operationId: searchSubscriberTrafficVolumeRanking
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /resource_summaries/{resource_summary_type}
  method: get
  operationId: getResourceSummary
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /auth
  method: post
  operationId: auth
  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: /auth/logout
  method: post
  operationId: logout
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /auth/password_reset_token/issue
  method: post
  operationId: issuePasswordResetToken
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /auth/password_reset_token/verify
  method: post
  operationId: verifyPasswordResetToken
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /auth/switch_user
  method: post
  operationId: switchUser
  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: /operators/{operator_id}
  method: get
  operationId: getOperator
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/auth_keys
  method: get
  operationId: listOperatorAuthKeys
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/auth_keys
  method: post
  operationId: generateOperatorAuthKey
  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: /operators/{operator_id}/auth_keys/{auth_key_id}
  method: delete
  operationId: deleteOperatorAuthKey
  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: /operators/{operator_id}/company_information
  method: get
  operationId: getCompanyInformation
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/company_information
  method: post
  operationId: createCompanyInformation
  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: /operators/{operator_id}/company_information
  method: put
  operationId: updateCompanyInformation
  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: /operators/{operator_id}/configuration/{namespace}
  method: delete
  operationId: deleteOperatorConfigurationNamespace
  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: /operators/{operator_id}/configuration/{namespace}
  method: get
  operationId: getOperatorConfigurationNamespace
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/configuration/{namespace}
  method: post
  operationId: setOperatorConfigurationNamespace
  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: /operators/{operator_id}/contracts
  method: post
  operationId: addOperatorContract
  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: /operators/{operator_id}/contracts/{contract_name}
  method: delete
  operationId: deleteOperatorContract
  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: /operators/{operator_id}/coverage_type/{coverage_type}
  method: post
  operationId: addCoverageType
  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: /operators/{operator_id}/individual_information
  method: get
  operationId: getIndividualInformation
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/individual_information
  method: post
  operationId: createIndividualInformation
  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: /operators/{operator_id}/individual_information
  method: put
  operationId: updateIndividualInformation
  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: /operators/{operator_id}/mfa
  method: delete
  operationId: revokeMFA
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /operators/{operator_id}/mfa
  method: get
  operationId: getMFAStatus
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/mfa
  method: post
  operationId: enableMFA
  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: /operators/{operator_id}/mfa/verify
  method: post
  operationId: verifyMFA
  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: /operators/{operator_id}/password
  method: post
  operationId: updateOperatorPassword
  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: /operators/{operator_id}/support/token
  method: post
  operationId: generateSupportToken
  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: /operators/{operator_id}/token
  method: post
  operationId: generateAuthToken
  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: /operators/{operator_id}/tokens
  method: delete
  operationId: revokeOperatorAuthTokens
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /operators/mfa_revoke_token/issue
  method: post
  operationId: issueMFARevokingToken
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /operators/mfa_revoke_token/verify
  method: post
  operationId: verifyMFARevokingToken
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /operators/{operator_id}/users
  method: get
  operationId: listUsers
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/users/{user_name}
  method: delete
  operationId: deleteUser
  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: /operators/{operator_id}/users/{user_name}
  method: get
  operationId: getUser
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/users/{user_name}
  method: post
  operationId: createUser
  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: /operators/{operator_id}/users/{user_name}
  method: put
  operationId: updateUser
  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: /operators/{operator_id}/users/{user_name}/auth_keys
  method: get
  operationId: listUserAuthKeys
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/users/{user_name}/auth_keys
  method: post
  operationId: generateUserAuthKey
  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: /operators/{operator_id}/users/{user_name}/auth_keys/{auth_key_id}
  method: delete
  operationId: deleteUserAuthKey
  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: /operators/{operator_id}/users/{user_name}/auth_keys/{auth_key_id}
  method: get
  operationId: getUserAuthKey
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/users/{user_name}/mfa
  method: delete
  operationId: revokeUserMFA
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /operators/{operator_id}/users/{user_name}/mfa
  method: get
  operationId: getUserMFAStatus
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/users/{user_name}/mfa
  method: post
  operationId: enableUserMFA
  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: /operators/{operator_id}/users/{user_name}/mfa/verify
  method: post
  operationId: verifyUserMFA
  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: /operators/{operator_id}/users/{user_name}/password
  method: delete
  operationId: deleteUserPassword
  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: /operators/{operator_id}/users/{user_name}/password
  method: get
  operationId: hasUserPassword
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/users/{user_name}/password
  method: post
  operationId: createUserPassword
  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: /operators/{operator_id}/users/{user_name}/password
  method: put
  operationId: updateUserPassword
  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: /operators/{operator_id}/users/{user_name}/permission
  method: delete
  operationId: deleteUserPermission
  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: /operators/{operator_id}/users/{user_name}/permission
  method: get
  operationId: getUserPermission
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/users/{user_name}/permission
  method: put
  operationId: updateUserPermission
  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: /operators/{operator_id}/users/{user_name}/tokens
  method: delete
  operationId: revokeUserAuthTokens
  x-agentic-access:
    action-class: acting
    consequence: safety-critical
    subject: required
    audience: null
    token:
      max-ttl: 120
      exchange: true
      purpose-required: true
      proof-of-possession: true
    escalation:
      human-in-the-loop: required
    audit: required
- path: /operators/{operator_id}/users/{user_name}/trust_policy
  method: delete
  operationId: deleteUserTrustPolicy
  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: /operators/{operator_id}/users/{user_name}/trust_policy
  method: get
  operationId: getUserTrustPolicy
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/users/{user_name}/trust_policy
  method: put
  operationId: updateUserTrustPolicy
  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: /operators/{operator_id}/users/default_permissions
  method: delete
  operationId: deleteDefaultPermissions
  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: /operators/{operator_id}/users/default_permissions
  method: get
  operationId: getDefaultPermissions
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/users/default_permissions
  method: put
  operationId: updateDefaultPermissions
  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: /operators/{operator_id}/roles
  method: get
  operationId: listRoles
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/roles/{role_id}
  method: delete
  operationId: deleteRole
  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: /operators/{operator_id}/roles/{role_id}
  method: get
  operationId: getRole
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/roles/{role_id}
  method: post
  operationId: createRole
  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: /operators/{operator_id}/roles/{role_id}
  method: put
  operationId: updateRole
  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: /operators/{operator_id}/roles/{role_id}/users
  method: get
  operationId: listRoleAttachedUsers
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/roles/{role_id}/versions
  method: get
  operationId: listRoleVersions
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/users/{user_name}/roles
  method: get
  operationId: listUserRoles
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/users/{user_name}/roles
  method: post
  operationId: attachRole
  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: /operators/{operator_id}/users/{user_name}/roles/{role_id}
  method: delete
  operationId: detachRole
  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: /operators/{operator_id}/emails
  method: get
  operationId: listEmails
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/emails/{email_id}
  method: delete
  operationId: deleteEmail
  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: /operators/{operator_id}/emails/{email_id}
  method: get
  operationId: getEmail
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/add_email_token/issue
  method: post
  operationId: issueAddEmailToken
  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: /operators/add_email_token/verify
  method: post
  operationId: verifyAddEmailToken
  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: /operators/{operator_id}/system_notifications
  method: get
  operationId: listSystemNotifications
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/system_notifications/{type}
  method: delete
  operationId: deleteSystemNotification
  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: /operators/{operator_id}/system_notifications/{type}
  method: get
  operationId: getSystemNotification
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /operators/{operator_id}/system_notifications/{type}
  method: post
  operationId: setSystemNotification
  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_groups
  method: get
  operationId: listBatchGroups
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /batch_groups
  method: post
  operationId: createBatchGroup
  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_groups/{batch_group_id}
  method: delete
  operationId: deleteBatchGroup
  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_groups/{batch_group_id}
  method: get
  operationId: getBatchGroup
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /batch_groups/{batch_group_id}
  method: put
  operationId: updateBatchGroup
  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_groups/{batch_group_id}/jobs
  method: get
  operationId: listBatchJobs
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /batch_groups/{batch_group_id}/jobs
  method: post
  operationId: createBatchJob
  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_groups/{batch_group_id}/jobs/{job_id}
  method: get
  operationId: getBatchJob
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /batch_groups/{batch_group_id}/jobs/{job_id}/tasks
  method: get
  operationId: listTasksOfBatchJob
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /bills
  method: get
  operationId: getBillingHistory
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /bills/{yyyyMM}
  method: get
  operationId: getBilling
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /bills/{yyyyMM}/daily
  method: get
  operationId: getBillingPerDay
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /bills/{yyyyMM}/export
  method: post
  operationId: exportBilling
  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: /bills/latest
  method: get
  operationId: getLatestBilling
  x-agentic-access:
    action-class: connected
    consequence: read
    subject: optional
    token:
      max-ttl: 3600
    audit: none
- path: /bills/latest/export
  method: post
  operationId: exportLatestBilling
  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:

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