ThousandEyes Agents API

Manage Cloud and Enterprise Agents available to your account in ThousandEyes.

OpenAPI Specification

thousandeyes-agents-openapi.yml Raw ↑
openapi: 3.0.1
security:
- BearerAuth: []
servers:
- description: ThousandEyes API production URL
  url: https://api.thousandeyes.com/v7
info:
  title: Agents API
  version: 7.0.100
  description: '

    ## Overview

    Manage Cloud and Enterprise Agents available to your account in ThousandEyes.'
  x-provenance:
    method: harvested
    authored_by: Cisco ThousandEyes
    harvested_by: API Evangelist
    harvested_on: '2026-08-19'
    first_party: true
    provider_published: true
    source_host: pubhub.devnetcloud.com
    note: 27 OpenAPI 3.0 documents (26 per-area plus a unified 326-operation document) served anonymously from Cisco's DevNet
      CDN. api.thousandeyes.com itself 401s every path, so the contract is public while the API host is gated.
  x-evidence:
  - type: source
    url: https://pubhub.devnetcloud.com/media/000-v7-apis/docs/reference/
  - type: source
    url: https://developer.cisco.com/docs/thousandeyes/
externalDocs:
  description: Find out more about Agents & Monitors
  url: https://docs.thousandeyes.com/product-documentation/global-vantage-points/working-with-agent-settings
tags:
- name: Cloud and Enterprise Agents
- name: Local Problems
- name: Enterprise Agent Cluster
- name: Cloud and Enterprise Agent Notification Rules
- name: Agent Proxies
paths:
  /agents:
    get:
      tags:
      - Cloud and Enterprise Agents
      summary: List Cloud and Enterprise Agents
      operationId: getAgents
      description: 'List the Cloud and Enterprise Agents available to your account in ThousandEyes.


        If an agent is an Enterprise Agent, this operation returns the agent’s public and private IP addresses, as well as
        the public network where the agent is located.

        '
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/ExpandAgent'
      - $ref: '#/components/parameters/AgentTypes'
      - $ref: '#/components/parameters/Labels'
      - $ref: '#/components/parameters/TagKeys'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/CloudEnterpriseAgents'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
  /agents/local-problems:
    get:
      tags:
      - Local Problems
      summary: List Cloud agents with local problems
      operationId: getAgentsLocalProblems
      description: 'Returns local problem intervals for Cloud Agents available to your account in ThousandEyes. FedRAMP Cloud
        Agents are not included. Local problems indicate agent-side impairment detected by ThousandEyes and do not indicate
        that a monitored target or service was down.


        If no time range is specified, this operation returns active local problems.

        '
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/Window'
      - $ref: '#/components/parameters/StartDateParameter'
      - $ref: '#/components/parameters/EndDateParameter'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/LocalProblemAgentResults'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
  /agents/{agentId}:
    get:
      tags:
      - Cloud and Enterprise Agents
      summary: Retrieve Cloud and Enterprise Agent
      operationId: getAgent
      description: 'Returns details for an agent, including assigned tests.


        For Enterprise Agents, this operation returns additional details, including utilization data, assigned accounts, a
        list of account groups the agent is assigned to, and utilization details.

        '
      parameters:
      - $ref: '#/components/parameters/AgentId'
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/ExpandAgentDetails'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentDetails'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
    put:
      tags:
      - Cloud and Enterprise Agents
      summary: Update Enterprise Agent
      operationId: updateAgent
      description: 'Updates details for an Enterprise Agent. This operation can only be used for Enterprise Agents, and only
        for users in a role that permits modification of Enterprise Agents.


        Important notes related to agent modification on tests:

        * if an agent is removed from a test, the modification date for tests using that agent at the time it was removed
        will be changed.

        * If an agent is removed from an entire account group, then all tests using this agent in the removed account group
        will be updated to reflect the removed agent.

        * If a removed agent is the final remaining agent on a test, then the test will be disabled when the agent is removed.


        Users can update the following fields:

        * `agentName`: String representation of an agent. No two agents can have the same display name.

        * `enabled`: Boolean representation of agent state.

        * `accountGroups`: An array of account group ids. See `v7/account-groups` to pull a list of account IDs.

        * `tests`: An array of test Is. See `v7/tests` to retrieve a list tests available in the current account context.

        * `ipv6Policy`: Enum representation of the IP version policy.

        * `keepBrowserCache`: Boolean representation of the Keep browser cache state.

        * `targetForTests`: String representation of the target IP address or domain name. This represents the test destination
        when agent is acting as a test target in an agent-to-agent test.

        * `localResolutionPrefixes`: This array of strings represents the public IP ranges where the Enterprise Agent performs
        rDNS (Reverse DNS) lookups. The range should be in CIDR notation, such as `10.1.1.0/24`. Please note that a maximum
        of 5 prefixes is allowed. This only applies to Enterprise Agents and Enterprise Agent clusters.'
      parameters:
      - $ref: '#/components/parameters/AgentId'
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/ExpandAgentDetails'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentDetails'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
    delete:
      tags:
      - Cloud and Enterprise Agents
      summary: Delete Enterprise Agent
      operationId: deleteAgent
      description: 'Deletes an Enterprise Agent.


        Important notes related to agent removal:

        * If an agent is deleted, the modification date for tests using that agent at the time it was deleted will be changed.

        * If a deleted agent is the final remaining agent on a test, then the test will be disabled when the agent is removed.

        * If an agent is removed, it must be re-initialized to use the same machine again in different context. Virtual Appliances
        can be updated using the Reset State button in the Advanced tab of the agent management interface. Users running packaged
        versions of Linux will need to remove /var/lib/te-agent/\*.sqlite in order to reinitialize an agent.'
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/AgentId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
  /agents/{agentId}/cluster/assign:
    post:
      tags:
      - Enterprise Agent Cluster
      summary: Add member to Enterprise Agent cluster
      operationId: assignAgentToCluster
      description: "Assigns agents to an Enterprise Agent cluster. If the agent specified by `agentId` in the URL path is\
        \ not already part of a cluster, this operation creates a new cluster with that agent as the base member.\n\nThis\
        \ operation requires the `Edit agents in account group` permission.\n\nA JSON request body is required for this operation,\
        \ even when creating a cluster with a single agent. To create a cluster from a single standalone agent, pass an empty\
        \ `agents` array in the request body:\n\n```\n{ \"agents\": [] }\n```\n\nIf no body is provided, the server returns\
        \ a 400 Bad Request error.\n\nThe response is a single Enterprise Agent Cluster. The assigned agents become cluster\
        \ members and can be returned using the `?expand=cluster-member` parameter.\n\nUpon successful cluster creation, the\
        \ response includes:\n\n* Information about the new or updated cluster.\n\n* Each cluster member receives a unique\
        \ `memberId` within the cluster.\n\n* The `memberId` is not linked to the original `agentId` used in the request URL\
        \ or POST body.\n\n* The cluster name is based on the agent whose `agentId` is specified in the request URL.\n\n**Example:\
        \ Creating a cluster from a single agent**\n\n```\ncurl -X POST https://api.thousandeyes.com/v7/agents/64965/cluster/assign\
        \ \\\n'{\"agents\":[]}' \\\n-H \"content-type:application/json\" \\\n-H \"Authorization: Bearer $Bearer_token\" \n\
        ````\n\n**Example: Adding multiple agents to a cluster**\n\nWhen adding multiple agents, the `{agentId}` specified\
        \ in the URL path must not be included in the `agents` array. Only include additional agent IDs in the array.\n\n\
        ```\ncurl https://api.thousandeyes.com/v7/agents/64965/cluster/assign \\\n'{\"agents\":[\n  \"2277\",\n  \"1234\"\n\
        ]}' \\\n-H \"content-type:application/json\" \\\n-H \"Authorization: Bearer $Bearer_token\" \n````"
      parameters:
      - $ref: '#/components/parameters/AssignAgentId'
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/ExpandAgentDetails'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentClusterAssignRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentDetails'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
  /agents/{agentId}/cluster/unassign:
    post:
      tags:
      - Enterprise Agent Cluster
      summary: Remove member from Enterprise Agent cluster
      operationId: unassignAgentFromCluster
      description: "Converts a cluster with a single or multiple Enterprise Agent members back to a standalone Enterprise\
        \ Agent(s). This operation can also be used to remove one or more members from an Enterprise Agent cluster. Removed\
        \ members revert to being standalone Enterprise Agents. If all members are removed from the cluster, the Enterprise\
        \ Agent Cluster is deleted.\n\nThe response is an list of agents, containing both the Enterprise Agent Cluster (if\
        \ it still exists), and the removed members, now as standalone Enterprise Agents. This operation is exclusive to Enterprise\
        \ Agent clusters and can be accessed only by users with the `Edit agents in account group` permission.\n\nOn successful\
        \ completion, the response contains the following information:\n\n* The updated cluster information is provided in\
        \ the response body, unless all members are removed from the cluster.\n\n* Information about each removed member,\
        \ now a standalone agent.\n\n* When a non-last member is removed from the cluster, it receives a new `agentId` value.\
        \ This new `agentId` is different from the `agentId` the agent had before joining the cluster, and it is also unrelated\
        \ to the `memberId` value the agent had while being a part of the cluster.\n\n* If all members are removed from the\
        \ cluster, the cluster itself is converted back to a standalone Enterprise Agent too. Such standalone agent inherits\
        \ the old cluster’s `agentId` value. The last `memberId` listed in the POST body inherits the cluster’s `agentId`\
        \ value.\n\n**Example - removing a single member**\n```\ncurl -X POST https://api.thousandeyes.com/v7/agents/64965/cluster/unassign\
        \   \\\n'{\"members\":[\"55974\"]}' \\\n-H \"content-type:application/json\" \\\n-H \"Authorization: Bearer $Bearer_token\"\
        \ \n```\n\n**Example - removing multiple members**\n```\ncurl https://api.thousandeyes.com/v7/agents/64965/cluster/unassign\
        \ \\\n'{\"members\":[\n    \"55974\",\n    \"12313\"]\n }' \\\n-H \"content-type:application/json\" \\\n-H \"Authorization:\
        \ Bearer $Bearer_token\" \n```"
      parameters:
      - $ref: '#/components/parameters/UnassignAgentId'
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/ExpandAgentDetails'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentClusterUnassignRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/CloudEnterpriseAgents'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
  /agents/notification-rules:
    get:
      tags:
      - Cloud and Enterprise Agent Notification Rules
      summary: List agent notification rules
      operationId: getAgentsNotificationRules
      description: Returns a list of all agent notification rules configured under the account.
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ListNotificationRulesResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
  /agents/notification-rules/{notificationRuleId}:
    get:
      tags:
      - Cloud and Enterprise Agent Notification Rules
      summary: Retrieve agent notification rule
      operationId: getAgentsNotificationRule
      description: 'Returns details of an agent notification rule, including agents it is assigned to.

        '
      parameters:
      - $ref: '#/components/parameters/NotificationRuleId'
      - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/NotificationRuleDetail'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
  /agents/proxies:
    get:
      tags:
      - Agent Proxies
      summary: List Enterprise Agent Proxies
      operationId: getAgentsProxies
      description: 'List all enterprise agent proxies available under the account group.

        '
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentProxies'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
  /agents/{agentId}/tests/assign:
    post:
      tags:
      - Tests Assignment on Agents
      summary: Assign tests to an agent
      operationId: assignTests
      description: "Assign tests to a specific Agent. Existing assigned tests are not removed.\n\n**Important notes:**\n\n\
        \  * The operation fails if the specified agent does not exist.\n\n  * If any provided test ID is invalid, the entire\
        \ operation is canceled.\n\n  * Already assigned tests are ignored; other valid tests will be assigned.\n\n  * This\
        \ operation does not overwrite existing assignments."
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/AssignAgentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentTestsAssignRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentDetails'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
  /agents/{agentId}/tests/override:
    post:
      tags:
      - Tests Assignment on Agents
      summary: Overwrite tests assigned to an agent
      operationId: overwriteTests
      description: "Replaces all tests assigned to a specific agent with the new set of test IDs provided.\n\n**Important\
        \ notes:**\n\n  * The operation fails if the specified agent does not exist.\n\n  * If any test ID is invalid, the\
        \ operation is canceled and no changes are made.\n\n  * Already assigned tests that are also in the request are ignored.\n\
        \n  * Previously assigned tests not included in the request will be removed."
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/AssignAgentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentTestsAssignRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentDetails'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
  /agents/{agentId}/tests/unassign:
    post:
      tags:
      - Tests Assignment on Agents
      summary: Unassign tests from an agent
      operationId: unassignTests
      description: "Unassigns the specified tests from a specific agent.\n\n**Important notes:**\n\n  * The operation fails\
        \ if the specified agent does not exist.\n\n  * If any test ID is invalid, the operation is canceled and no changes\
        \ are made."
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/AssignAgentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentTestsAssignRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentDetails'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Bearer authentication token
  schemas:
    CloudEnterpriseAgents:
      type: object
      properties:
        agents:
          type: array
          items:
            $ref: '#/components/schemas/CloudEnterpriseAgent'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    CloudEnterpriseAgent:
      anyOf:
      - $ref: '#/components/schemas/AgentResponse'
      - $ref: '#/components/schemas/EnterpriseAgent'
    LocalProblemAgentResults:
      type: object
      properties:
        localProblems:
          type: array
          items:
            $ref: '#/components/schemas/LocalProblem'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    LocalProblem:
      type: object
      required:
      - agent
      - startDate
      - duration
      - active
      properties:
        agent:
          $ref: '#/components/schemas/LocalProblemAgent'
        startDate:
          $ref: '#/components/schemas/LocalProblemStartDate'
        endDate:
          $ref: '#/components/schemas/LocalProblemEndDate'
        duration:
          $ref: '#/components/schemas/LocalProblemDuration'
        active:
          $ref: '#/components/schemas/LocalProblemActive'
    LocalProblemAgent:
      type: object
      properties:
        agentId:
          $ref: '#/components/schemas/LocalProblemAgentId'
        agentName:
          $ref: '#/components/schemas/LocalProblemAgentName'
        countryId:
          $ref: '#/components/schemas/LocalProblemAgentCountryId'
        location:
          $ref: '#/components/schemas/LocalProblemAgentLocation'
    LocalProblemStartDate:
      type: string
      description: Date and time when the local problem interval started, in UTC.
      format: date-time
      example: '2026-05-18T03:14:00Z'
      readOnly: true
    LocalProblemEndDate:
      type: string
      description: Date and time when the local problem interval ended, in UTC. This value is `null` when the local problem
        is active.
      format: date-time
      nullable: true
      example: '2026-05-18T03:22:00Z'
      readOnly: true
    LocalProblemDuration:
      type: integer
      description: Duration of the local problem interval in seconds.
      example: 480
      readOnly: true
    LocalProblemActive:
      type: boolean
      description: Indicates whether the local problem is active.
      example: false
      readOnly: true
    LocalProblemAgentId:
      type: string
      description: Agent ID.
      example: '281474976710706'
      readOnly: true
    LocalProblemAgentName:
      type: string
      description: Agent name.
      example: thousandeyes-stg-va-254
      readOnly: true
    LocalProblemAgentCountryId:
      type: string
      description: Two-letter ISO country code where the agent is located.
      example: US
      readOnly: true
    LocalProblemAgentLocation:
      type: string
      description: Agent location.
      nullable: true
      example: San Francisco Bay Area
      readOnly: true
    CloudAgentType:
      type: string
      description: Cloud agent type.
      example: cloud
      pattern: ^cloud$
    EnterpriseAgentType:
      type: string
      description: Enterprise agent type.
      example: enterprise
      pattern: ^enterprise$
    EnterpriseClusterAgentType:
      type: string
      description: Enterprise Cluster agent type.
      example: enterprise-cluster
      pattern: ^enterprise-cluster$
    AgentClusterAssignRequest:
      type: object
      properties:
        agents:
          type: array
          description: Contains list of agent IDs (get `agentId` from `/agents` operation)
          items:
            type: string
            description: Agent ID
          example:
          - '281474976710706'
    AgentClusterUnassignRequest:
      type: object
      properties:
        members:
          type: array
          description: Contains list of member IDs. (get `memberId` from `/agents/{agentId}` operation)
          items:
            type: string
            description: member ID
          example:
          - '281474976710706'
    AgentTestsAssignRequest:
      type: object
      properties:
        testIds:
          type: array
          description: 'List of test IDs to assign.   You can retrieve available `testIds` using the `/agents` endpoint with
            the `expand=testIds` query parameter.

            '
          items:
            type: string
            description: Test ID
          example:
          - '281474976710706'
    AgentDetails:
      oneOf:
      - $ref: '#/components/schemas/CloudAgentDetail'
      - $ref: '#/components/schemas/EnterpriseAgentDetail'
      - $ref: '#/components/schemas/EnterpriseAgentClusterDetail'
      discriminator:
        propertyName: agentType
        mapping:
          cloud: '#/components/schemas/CloudAgentDetail'
          enterprise: '#/components/schemas/EnterpriseAgentDetail'
          enterprise-cluster: '#/components/schemas/EnterpriseAgentClusterDetail'
    CloudAgentDetail:
      type: object
      allOf:
      - $ref: '#/components/schemas/SimpleAgent'
      - type: object
        required:
        - agentType
        properties:
          agentType:
            $ref: '#/components/schemas/CloudAgentType'
          tests:
            type: array
            description: List of tests. See `/tests` for more information.
            items:
              $ref: '#/components/schemas/SimpleTest'
          labels:
            type: array
            description: List of labels - see `/labels` for more information.
            items:
              $ref: '#/components/schemas/AgentLabel'
            readOnly: true
          tags:
            type: array
            description: List of tags. See `/tags` for more information.
            items:
              $ref: '#/components/schemas/AgentTag'
            readOnly: true
          _links:
            $ref: '#/components/schemas/SelfLinks'
    EnterpriseAgentDetail:
      allOf:
      - type: object
        required:
        - agentType
        properties:
          agentType:
            $ref: '#/components/schemas/EnterpriseAgentType'
          _links:
            $ref: '#/components/schemas/SelfLinks'
      - $ref: '#/components/schemas/SimpleEnterpriseAgent'
      - $ref: '#/components/schemas/EnterpriseAgentResponseExpands'
    EnterpriseAgentClusterDetail:
      allOf:
      - type: object
        required:
        - agentType
        properties:
          agentType:
            $ref: '#/components/schemas/EnterpriseClusterAgentType'
          _links:
            $ref: '#/components/schemas/SelfLinks'
      - $ref: '#/components/schemas/SimpleEnterpriseAgent'
      - $ref: '#/components/schemas/EnterpriseAgentResponseExpands'
    EnterpriseAgentResponseExpands:
      type: object
      properties:
        testIds:
          $ref: '#/components/schemas/TestIds'
        tests:
          type: array
          description: List of tests. See `/tests` for more information.
          items:
            $ref: '#/components/schemas/SimpleTest'
        notificationRules:
          type: array
          description: List of notification rule objects configured on agent
          items:
            $ref: '#/components/schemas/NotificationRules'
        labels:
          type: array
          description: List of labels. See `/labels` for more information.
          items:
            $ref: '#/components/schemas/AgentLabel'
          readOnly: true
        tags:
          type: array
          description: List of tags. See `/tags` for more information.
          items:
            $ref: '#/components/schemas/AgentTag'
          readOnly: true
    AgentRequest:
      type: object
      properties:
        agentName:
          type: string
          description: Name of the agent.
          example: thousandeyes-stg-va-254
        enabled:
          type: boolean
          description: Flag indicating if the agent is enabled.
          example: true
        accountGroups:
          type: array
          description: Contains a list of account groups IDs. See `/accounts-groups` for a list of account IDs
          items:
            type: string
          example:
          - '1234'
          - '1'
        ipv6Polic

# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/thousandeyes/refs/heads/main/openapi/thousandeyes-agents-openapi.yml