openapi: 3.0.1
info:
  description: "Manage ThousandEyes Endpoint Agents using this API. \n\nFor more information\
    \ about Endpoint Agents, see [Endpoint Agents](https://docs.thousandeyes.com/product-documentation/global-vantage-points/endpoint-agents)."
  title: Endpoint Agents API
  version: 7.0.42
servers:
- description: ThousandEyes API production URL
  url: https://api.thousandeyes.com/v7
security:
- BearerAuth: []
tags:
- name: Endpoint Agents
- name: Endpoint Agents Transfer
paths:
  /endpoint/agents:
    get:
      description: |
        Retrieves a list of endpoint agents in a given account group.

        If there are no agents in the specified account group, it returns an empty array.
      operationId: getEndpointAgents
      parameters:
      - description: (Optional) Maximum number of objects to return.
        in: query
        name: max
        schema:
          example: 5
          type: integer
      - description: (Optional) Opaque cursor used for pagination. Clients should
          use `next` value from `_links` instead of this parameter.
        in: query
        name: cursor
        schema:
          type: string
          example: null
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      - description: "This optional parameter allows you to control the expansion\
          \ of test resources associated with the agent. By default, no expansion\
          \ occurs when this query parameter is omitted.\nTo expand the \"clients\"\
          \ resource, include the query parameter `?expand=clients`.\n\nFor multiple\
          \ expansions, you have two options:\n  \n* Separate the values with commas.\
          \ For example, `?expandAgent=clients,tasks`.\n* Specify the parameter multiple\
          \ times. For example, `?expandAgent=clients&expandAgent=tasks`.\n\nThis\
          \ parameter offers flexibility for users to customize the expansion of specific\
          \ resources related to the agent.\n"
        example:
        - clients
        - vpnProfiles
        - networkInterfaceProfiles
        explode: false
        in: query
        name: expand
        required: false
        schema:
          items:
            $ref: '#/components/schemas/ExpandEndpointAgentOptions'
          type: array
        style: form
      - description: "When requesting entities, set to `true` if you want to see deleted\
          \ entities."
        example: false
        explode: true
        in: query
        name: includeDeleted
        required: false
        schema:
          type: boolean
        style: form
      - description: Set to `true` to load data from all accounts the user has access
          to.
        in: query
        name: useAllPermittedAids
        required: false
        schema:
          default: false
          example: false
          type: boolean
      - description: "Returns only agents with the specified name. \nThis is an exact\
          \ match only.\n"
        explode: true
        in: query
        name: agentName
        required: false
        schema:
          $ref: '#/components/schemas/AgentName'
        style: form
      - description: |
          Returns only agents with the specified computer name.
          This is an exact match only.
        explode: true
        in: query
        name: computerName
        required: false
        schema:
          $ref: '#/components/schemas/ComputerName'
        style: form
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ListEndpointAgentsResponse'
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
      summary: List endpoint agents
      tags:
      - Endpoint Agents
  /endpoint/agents/{agentId}:
    delete:
      description: |
        Deletes the agent with the specified `agent_id`.
      operationId: deleteEndpointAgent
      parameters:
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      - description: The identifier of the agent to operate on.
        explode: false
        in: path
        name: agentId
        required: true
        schema:
          $ref: '#/components/schemas/EndpointAgentId'
        style: simple
      - description: "This optional parameter allows you to control the expansion\
          \ of test resources associated with the agent. By default, no expansion\
          \ occurs when this query parameter is omitted.\nTo expand the \"clients\"\
          \ resource, include the query parameter `?expand=clients`.\n\nFor multiple\
          \ expansions, you have two options:\n  \n* Separate the values with commas.\
          \ For example, `?expandAgent=clients,tasks`.\n* Specify the parameter multiple\
          \ times. For example, `?expandAgent=clients&expandAgent=tasks`.\n\nThis\
          \ parameter offers flexibility for users to customize the expansion of specific\
          \ resources related to the agent.\n"
        example:
        - clients
        - vpnProfiles
        - networkInterfaceProfiles
        explode: false
        in: query
        name: expand
        required: false
        schema:
          items:
            $ref: '#/components/schemas/ExpandEndpointAgentOptions'
          type: array
        style: form
      responses:
        "204":
          description: No content
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
      summary: Delete endpoint agent
      tags:
      - Endpoint Agents
    get:
      description: Retrieves details of an agent with the specified `agent_id`.
      operationId: getEndpointAgent
      parameters:
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      - description: The identifier of the agent to operate on.
        explode: false
        in: path
        name: agentId
        required: true
        schema:
          $ref: '#/components/schemas/EndpointAgentId'
        style: simple
      - description: "This optional parameter allows you to control the expansion\
          \ of test resources associated with the agent. By default, no expansion\
          \ occurs when this query parameter is omitted.\nTo expand the \"clients\"\
          \ resource, include the query parameter `?expand=clients`.\n\nFor multiple\
          \ expansions, you have two options:\n  \n* Separate the values with commas.\
          \ For example, `?expandAgent=clients,tasks`.\n* Specify the parameter multiple\
          \ times. For example, `?expandAgent=clients&expandAgent=tasks`.\n\nThis\
          \ parameter offers flexibility for users to customize the expansion of specific\
          \ resources related to the agent.\n"
        example:
        - clients
        - vpnProfiles
        - networkInterfaceProfiles
        explode: false
        in: query
        name: expand
        required: false
        schema:
          items:
            $ref: '#/components/schemas/ExpandEndpointAgentOptions'
          type: array
        style: form
      - description: "When requesting entities, set to `true` if you want to see deleted\
          \ entities."
        example: false
        explode: true
        in: query
        name: includeDeleted
        required: false
        schema:
          type: boolean
        style: form
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointAgent'
          description: The agent's current state.
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
      summary: Retrieve endpoint agent
      tags:
      - Endpoint Agents
    patch:
      description: |
        Updates the agent with the specified `agent_id`. This API supports the modification of the following fields:

        * `name`

        * `licenseType`

        Any attempt to update fields other than those listed above, with a value different from their current value, will result in a 400 Bad Request response.
      operationId: updateEndpointAgent
      parameters:
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      - description: The identifier of the agent to operate on.
        explode: false
        in: path
        name: agentId
        required: true
        schema:
          $ref: '#/components/schemas/EndpointAgentId'
        style: simple
      - description: "This optional parameter allows you to control the expansion\
          \ of test resources associated with the agent. By default, no expansion\
          \ occurs when this query parameter is omitted.\nTo expand the \"clients\"\
          \ resource, include the query parameter `?expand=clients`.\n\nFor multiple\
          \ expansions, you have two options:\n  \n* Separate the values with commas.\
          \ For example, `?expandAgent=clients,tasks`.\n* Specify the parameter multiple\
          \ times. For example, `?expandAgent=clients&expandAgent=tasks`.\n\nThis\
          \ parameter offers flexibility for users to customize the expansion of specific\
          \ resources related to the agent.\n"
        example:
        - clients
        - vpnProfiles
        - networkInterfaceProfiles
        explode: false
        in: query
        name: expand
        required: false
        schema:
          items:
            $ref: '#/components/schemas/ExpandEndpointAgentOptions'
          type: array
        style: form
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndpointAgentUpdate'
        description: Fields to modify on the agent
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointAgent'
          description: The agent's current state.
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
      summary: Update endpoint agent
      tags:
      - Endpoint Agents
  /endpoint/agents/filter:
    post:
      description: |
        Retrieves a list of endpoint agents within the specified account group that match the specified filters.

        If no agents meet the filter criteria, the API returns an empty array.
      operationId: filterEndpointAgents
      parameters:
      - description: (Optional) Maximum number of objects to return.
        in: query
        name: max
        schema:
          example: 5
          type: integer
      - description: (Optional) Opaque cursor used for pagination. Clients should
          use `next` value from `_links` instead of this parameter.
        in: query
        name: cursor
        schema:
          type: string
          example: null
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      - description: "This optional parameter allows you to control the expansion\
          \ of test resources associated with the agent. By default, no expansion\
          \ occurs when this query parameter is omitted.\nTo expand the \"clients\"\
          \ resource, include the query parameter `?expand=clients`.\n\nFor multiple\
          \ expansions, you have two options:\n  \n* Separate the values with commas.\
          \ For example, `?expandAgent=clients,tasks`.\n* Specify the parameter multiple\
          \ times. For example, `?expandAgent=clients&expandAgent=tasks`.\n\nThis\
          \ parameter offers flexibility for users to customize the expansion of specific\
          \ resources related to the agent.\n"
        example:
        - clients
        - vpnProfiles
        - networkInterfaceProfiles
        explode: false
        in: query
        name: expand
        required: false
        schema:
          items:
            $ref: '#/components/schemas/ExpandEndpointAgentOptions'
          type: array
        style: form
      - description: "When requesting entities, set to `true` if you want to see deleted\
          \ entities."
        example: false
        explode: true
        in: query
        name: includeDeleted
        required: false
        schema:
          type: boolean
        style: form
      requestBody:
        $ref: '#/components/requestBodies/AgentSearch'
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/FilterEndpointAgentsResponse'
          description: OK
        "400":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Request validation failed. There are invalid or missing fields
                status: 400
                detail: Your request object contains invalid fields.
                instance: /v7
                errors:
                - code: AM-5432
                  field: firstName
                  message: firstName cannot have fancy characters
                - code: DASH-5622
                  field: password
                  message: Password cannot be blank
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
      summary: Filter endpoint agents
      tags:
      - Endpoint Agents
  /endpoint/agents/connection-string:
    get:
      operationId: getEndpointAgentsConnectionString
      parameters:
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ConnectionString'
          description: OK
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
      summary: Get agent connection string
      tags:
      - Endpoint Agents
  /endpoint/agents/{agentId}/enable:
    post:
      description: "Enables an endpoint agent. If it's already enabled, it has no\
        \ effect (no operation)."
      operationId: enableEndpointAgent
      parameters:
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      - description: The identifier of the agent to operate on.
        explode: false
        in: path
        name: agentId
        required: true
        schema:
          $ref: '#/components/schemas/EndpointAgentId'
        style: simple
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointAgent'
          description: The agent's current state.
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
      summary: Enable endpoint agent
      tags:
      - Endpoint Agents
  /endpoint/agents/{agentId}/disable:
    post:
      description: "Disables an endpoint agent. If it's already disabled, it has no\
        \ effect (no operation)."
      operationId: disableEndpointAgent
      parameters:
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      - description: The identifier of the agent to operate on.
        explode: false
        in: path
        name: agentId
        required: true
        schema:
          $ref: '#/components/schemas/EndpointAgentId'
        style: simple
      responses:
        "200":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointAgent'
          description: The agent's current state.
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
      summary: Disable endpoint agent
      tags:
      - Endpoint Agents
  /endpoint/agents/{agentId}/transfer:
    post:
      description: |
        Initiates the transfer of an agent from its current account, which must correspond to the provided aid, to the target account.

        **Note:** It is essential to ensure that the `aid` parameter matches the current account of the agent for this operation to succeed.
      operationId: transferEndpointAgent
      parameters:
      - description: The identifier of the agent to operate on.
        explode: false
        in: path
        name: agentId
        required: true
        schema:
          $ref: '#/components/schemas/EndpointAgentId'
        style: simple
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      requestBody:
        $ref: '#/components/requestBodies/AgentTransfer'
      responses:
        "202":
          description: Transfer initiated
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
      summary: Transfer endpoint agent
      tags:
      - Endpoint Agents Transfer
  /endpoint/agents/transfer/bulk:
    post:
      description: |
        Initiates the transfer of multiple agents between accounts. The following conditions apply:

        * The requester must possess 'write' permissions for both the 'from' and 'to' accounts involved in each transfer.

        * Multiple transfers may involve a mix of different source and destination accounts.
        * For each transfer request, the 'from' account must match the current account of the respective agent.
        * Transfers are executed asynchronously.
        * Progress tracking is not intended, but users can monitor the progress by periodically polling the 'get agent' endpoint.
        * Each transfer request is individually validated and completed; this operation is not atomic, meaning transfers can succeed or fail individually.
        * The API response provides the status of each transfer request.
      operationId: transferEndpointAgents
      parameters:
      - description: A unique identifier associated with your account group. You can
          retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note
          that you must be assigned to the target account group. Specifying this parameter
          without being assigned to the target account group will result in an error
          response.
        in: query
        name: aid
        required: false
        schema:
          example: "1234"
          type: string
      requestBody:
        $ref: '#/components/requestBodies/AgentTransfers'
      responses:
        "207":
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/BulkAgentTransferResponse'
          description: Transfer initiated
        "400":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: Request validation failed. There are invalid or missing fields
                status: 400
                detail: Your request object contains invalid fields.
                instance: /v7
                errors:
                - code: AM-5432
                  field: firstName
                  message: firstName cannot have fancy characters
                - code: DASH-5622
                  field: password
                  message: Password cannot be blank
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Bad Request
        "401":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
          description: Unauthorized
        "403":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Insufficient permissions to query endpoint
        "404":
          content:
            application/problem+json:
              example:
                type: about:blank
                title: URI Resource Not Found
                status: 404
                detail: Details explaining if the 404 error is related to an invalid
                  URI or a wrong ID
                instance: /v7
              schema:
                $ref: '#/components/schemas/Error'
          description: Not found
        "429":
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
          description: Exhausted rate limit for the organization
      summary: Bulk transfer agents
      tags:
      - Endpoint Agents Transfer
components:
  examples:
    TransferCSV:
      value: |
        agent_id,from_aid,to_aid
        5d0764ac-7e42-4ec8-a0d4-39fc53edccba,111,222
        1234abcd-7e42-4ec8-a0d4-39fc53abcdef,222,333
  parameters:
    IncludeDeleted:
      description: "When requesting entities, set to `true` if you want to see deleted\
        \ entities."
      example: false
      explode: true
      in: query
      name: includeDeleted
      required: false
      schema:
        type: boolean
      style: form
    EndpointAgentIdPath:
      description: The identifier of the agent to operate on.
      explode: false
      in: path
      name: agentId
      required: true
      schema:
        $ref: '#/components/schemas/EndpointAgentId'
      style: simple
    ExpandEndpointAgent:
      description: "This optional parameter allows you to control the expansion of\
        \ test resources associated with the agent. By default, no expansion occurs\
        \ when this query parameter is omitted.\nTo expand the \"clients\" resource,\
        \ include the query parameter `?expand=clients`.\n\nFor multiple expansions,\
        \ you have two options:\n  \n* Separate the values with commas. For example,\
        \ `?expandAgent=clients,tasks`.\n* Specify the parameter multiple times. For\
        \ example, `?expandAgent=clients&expandAgent=tasks`.\n\nThis parameter offers\
        \ flexibility for users to customize the expansion of specific resources related\
        \ to the agent.\n"
      example:
      - clients
      - vpnProfiles
      - networkInterfaceProfiles
      explode: false
      in: query
      name: expand
      required: false
      schema:
        items:
          $ref: '#/components/schemas/ExpandEndpointAgentOptions'
        type: array
      style: form
    PaginationMax:
      description: (Optional) Maximum number of objects to return.
      in: query
      name: max
      schema:
        example: 5
        type: integer
    PaginationCursor:
      description: (Optional) Opaque cursor used for pagination. Clients should use
        `next` value from `_links` instead of this parameter.
      in: query
      name: cursor
      schema:
        type: string
        example: null
    AccountGroupId:
      description: A unique identifier associated with your account group. You can
        retrieve your `AccountGroupId` from the `/account-groups` endpoint. Note that
        you must be assigned to the target account group. Specifying this parameter
        without being assigned to the target account group will result in an error
        response.
      in: query
      name: aid
      required: false
      schema:
        example: "1234"
        type: string
    UseAllPermittedAids:
      description: Set to `true` to load data from all accounts the user has access
        to.
      in: query
      name: useAllPermittedAids
      required: false
      schema:
        default: false
        example: false
        type: boolean
  requestBodies:
    AgentSearch:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AgentSearchRequest'
      description: The filter options for advanced search filtering for agents.
      required: true
    AgentTransfer:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AgentTransferRequest'
      description: The request to move an agent between accounts.
      required: true
    AgentTransfers:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkAgentTransferRequest'
        text/csv:
          examples:
            CSV File:
              $ref: '#/components/examples/TransferCSV'
          schema:
            type: string
        text/plain:
          examples:
            CSV File:
              $ref: '#/components/examples/TransferCSV'
          schema:
            type: string
      description: A collection of `AgentTransfers`.
  responses:
    SingleAgent:
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/EndpointAgent'
      description: The agent's current state.
    "401":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/UnauthorizedError'
      description: Unauthorized
    "403":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Insufficient permissions to query endpoint
    "429":
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Exhausted rate limit for the organization
    "404":
      content:
        application/problem+json:
          example:
            type: about:blank
            title: URI Resource Not Found
            status: 404
            detail: Details explaining if the 404 error is related to an invalid URI
              or a wrong ID
            instance: /v7
          schema:
            $ref: '#/components/schemas/Error'
      description: Not found
    "204":
      description: No content
    "400":
      content:
        application/problem+json:
          example:
            type: about:blank
            title: Request validation failed. There are invalid or missing fields
            status: 400
            detail: Your request object contains invalid fields.
            instance: /v7
            errors:
            - code: AM-5432
              field: firstName
              message: firstName cannot have fancy characters
            - code: DASH-5622
              field: password
              message: Password cannot be blank
          schema:
            $ref: '#/components/schemas/ValidationError'
      description: Bad Request
  schemas:
    ExpandEndpointAgentOptions:
      enum:
      - clients
      - vpnProfiles
      - networkInterfaceProfiles
      type: string
    FilterEndpointAgentsResponse:
      allOf:
      - $ref: '#/components/schemas/EndpointAgents'
      - properties:
          _links:
            $ref: '#/components/schemas/PaginationNextLink'
        type: object
    ListEndpointAgentsResponse:
      allOf:
      - $ref: '#/components/schemas/EndpointAgents'
      - properties:
          _links:
            $ref: '#/components/schemas/PaginationNextAndSelfLink'
        type: object
    EndpointAgents:
      description: A list of `EndpointAgents`.
      properties:
        totalAgents:
          description: The total number of agents.
          example: 1
          type: integer
        agents:
          items:
            $ref: '#/components/schemas/EndpointAgent'
          type: array
          x-paginated-items: true
      type: object
    AgentSearchRequest:
      description: Parameters for filtering a list of agents.
      properties:
        searchFilters:
          $ref: '#/components/schemas/AgentSearchFilters'
        thresholdFilter:
          $ref: '#/components/schemas/AgentThresholdFilters'
        searchSort:
          items:
            $ref: '#/components/schemas/AgentSearchSort'
          type: array
      type: object
    AgentSearchFilters:
      properties:
        id:
          description: Returns only agents that are an exact match of the provided
            identifiers.
          items:
            $ref: '#/components/schemas/EndpointAgentId'
          type: array
        agentName:
          description: "Returns only agents with the given name. \nThis is an exact\
            \ match only.\n"
          items:
            $ref: '#/components/schemas/AgentName'
          type: array
        computerName:
          description: |
            Returns only agents with the given computer name.
            This is an exact match only.
          items:
            $ref: '#/components/schemas/ComputerName'
          type: array
        username:
          description: |
            Returns only agents that have at least one user with a name.
            starting with the provided string. This is a case-insensitive prefix match.
          example:
          - picard
          items:
            type: string
          type: array
        platform:
          description: |
            Filter on the platform on which the agent is running.
          items:
            $ref: '#/components/schemas/Platform'
          type: array
        osVersion:
          description: Case-insensitive prefix filter on the OS version.
          items:
            example: Version 10.15.2
            type: string
          type: array
        locationCountryISO:
          description: |
            Filter using the ISO country code of the location.
          items:
            example: FR
            type: string
          type: array
        locationSubdivision1Code:
          description: "Filter using the code for the first level administrative division\
            \ within \nthe country. In US/Canada this is the State, in UK it's the\
            \ country e.g. `ENG`\n"
          items:
            example: ENG
            type: string
          type: array
        locationCity:
          description: "This is a prefix match on the city name field. The endpoint\
            \ expects this to contain the \nname of the city in English. e.g. 'Paris'\
            \ or ''\n"
          items:
            example: Paris
            type: string
          type: array
        licenseType:
          description: |
            Filter on the agent's license type
          items:
            $ref: '#/components/schemas/AgentLicenseType'
          type: array
      type: object
    AgentSearchSort:
      properties:
        sort:
          $ref: '#/components/schemas/AgentSearchSortKey'
        order:
          $ref: '#/components/schemas/SortOrder'
      type: object
    AgentSearchSortKey:
      enum:
      - platform
      - osVersion
      - name
      - userName
      - city
      type: string
    AgentThresholdFilters:
      description: All filters are applied based on the conditional operator (and/or).
      properties:
        filters:
          items:
            $ref: '#/components/schemas/AgentThresholdFilter'
          type: array
        conditionalOperator:
          $ref: '#/components/schemas/ConditionalOperator'
      type: object
    AgentThresholdFilter:
      description: The metric is filtered based on the threshold value and operator
        provided.
      properties:
        name:
          enum:
          - last-seen-ms
          type: string
        value:
          description: The threshold value.
          format: double
          type: number
        operator:
          $ref: '#/components/schemas/ThresholdFilterOperator'
      type: object
    ComputerName:
      description: |
        Returns only agents with the specified computer name.
        This is an exact match only.
      example: DESKTOP-45AE8
      type: string
    AgentName:
      description: "Returns only agents with the specified name. \nThis is an exact\
        \ match only.\n"
      example: myagent-1234
      type: string
    AgentTransferRequest:
      example:
        toAid: "1234"
      properties:
        toAid:
          description: A unique identifier associated with your account group. You
            can retrieve your `AccountGroupId` from the `/account-groups` endpoint.
          example: "1234"
          type: string
      type: object
    BulkAgentTransferRequest:
      properties:
        transfers:
          items:
            $ref: '#/components/schemas/AgentTransfer'
          type: array
      type: object
    BulkAgentTransferResponse:
      properties:
        items:
          example:
          - status: 200
            detail: Initiated
            request:
              agentId: 5d0764ac-7e42-4ec8-a0d4-39fc53edccba
              fromAid: "1234"
              toAid: "12345"
          - status: 400
            detail: Missing from-account id
            request:
              agentId: 5d0764ac-7e42-4ec8-a0d5-39fc53ed1234
              fromAid: xxx
              toAid: "12345"
          - status: 403
            detail: User does not have permission on 'to' aid
            request:
              agentId: 5d0764ac-7e42-4ec8-a0d5-39fc53ed7890
              fromAid: "1234"
              toAid: "12345"
          items:
            $ref: '#/components/schemas/AgentTransferStatus'
          type: array
      type: object
    AgentTransfer:
      allOf:
      - properties:
          agentId:
            $ref: '#/components/schemas/EndpointAgentId'
          fromAid:
            $ref: '#/components/schemas/AccountId'
          toAid:
            $ref: '#/components/schemas/AccountId'
        type: object
      example:
        agentId: 5d0764ac-7e42-4ec8-a0d4-39fc53edccba
        fromAid: "1234"
        toAid: "12345"
    AgentTransferStatus:
      allOf:
      - $ref: '#/components/schemas/Error'
      - properties:
          request:
            $ref: '#/components/schemas/AgentTransfer'
        type: object
    AccountId:
      description: A unique identifier associated with your account group. You can
        retrieve your `AccountGroupId` from the `/account-groups` endpoint.
      example: "1234"
      type: string
    AddressProfile:
      description: A description of the IPs assigned to this machine.
      properties:
        addressType:
          $ref: '#/components/schemas/AddressType'
        ipAddress:
          description: IP address of this interface in the network it's currently
            connected to.
          example: 2001:db8:3333:4444:5555:6666:7777:8888
          format: ip
          type: string
        prefixLength:
          description: The number of bits representing the network part of the `ipAddress`.
          example: 24
          format: int32
          type: integer
        gateway:
          description: The default gateway for this interface.
          example: 192.168.0.254
          format: ip
          type: string
        routerHardwareAddress:
          description: The router's MAC address resolved from an ARP request.
          example: 5c:b1:3e:46:1c:84
          format: macaddress
          type: string
      type: object
    AddressType:
      enum:
      - loopback
      - unspecified
      - unique-local
      - link-local
      - unique-global
      example: unique-local
      type: string
    EndpointAgentLocation:
      description: Approximate location of the agent.
      properties:
        latitude:
          example: 51.51279
          format: double
          readOnly: true
          type: number
        longitude:
          example: -0.09184
          format: double
          readOnly: true
          type: number
        locationName:
          example: London
          readOnly: true
          type: string
      type: object
    EndpointAsnDetails:
      properties:
        asNumber:
          description: Autonomous system number.
          example: 5089
          format: int64
          type: integer
        asName:
          description: Name of autonomous system.
          example: Virgin Media Limited
          type: string
      readOnly: true
      required:
      - asNumber
      type: object
    EndpointBrowserExtension:
      properties:
        browser:
          $ref: '#/components/schemas/BrowserType'
        profile:
          description: Name of the browser profile where this extension is stored.
          example: Profile 1
          type: string
        version:
          description: Endpoint agent browser extension version.
          example: 0.123.0
          type: string
        enabled:
          description: Indicates if the extension is disabled or enabled in the web
            browser.
          type: boolean
        active:
          description: |
            Flag indicating if there is communication between the extension and ThousandEyes portal.
          type: boolean
        error:
          description: Contains any errors encountered while getting extension status.
          example: ""
          type: string
      type: object
    EndpointClient:
      description: Information about the user who has the agent installed.
      properties:
        userProfile:
          $ref: '#/components/schemas/EndpointUserProfile'
        browserExtensions:
          items:
            $ref: '#/components/schemas/EndpointBrowserExtension'
          type: array
      type: object
    EndpointUserProfile:
      properties:
        userName:
          example: joeblogs32
          type: string
      required:
      - userName
      type: object
    EndpointVpnProfile:
      properties:
        interfaceName:
          description: Interface name associated with `interfaceProfile`.
          type: string
        vpnType:
          $ref: '#/components/schemas/VpnType'
        vpnGatewayAddress:
          description: IP address of the VPN gateway.
          type: string
        vpnClientAddresses:
          description: "List of private IP addresses assigned to the device, by the\
            \ VPN server."
          example:
          - 10.100.0.10
          items:
            format: ip
            type: string
          type: array
        vpnClientNetworkRange:
          description: "List of private networks assigned to the device, by the VPN\
            \ server."
          example:
          - 10.100.0.0/22
          items:
            type: string
          type: array
      required:
      - vpnClientAddresses
      - vpnClientNetworkRange
      type: object
    EndpointAgentEthernetProfile:
      description: |
        Information about the ethernet connectivity of this device.
        Only present if the hardware type is `ethernet`.
      properties:
        linkSpeed:
          description: Link speed in Mbps.
          format: int32
          type: integer
      type: object
    InterfaceProfile:
      properties:
        interfaceName:
          example: en0
          type: string
        addressProfiles:
          items:
            $ref: '#/components/schemas/AddressProfile'
          type: array
        hardwareType:
          $ref: '#/components/schemas/InterfaceHardwareType'
        ethernetProfile:
          $ref: '#/components/schemas/EndpointAgentEthernetProfile'
        wirelessProfile:
          $ref: '#/components/schemas/WirelessProfile'
      type: object
    EndpointAgent:
      description: "The `EndpointAgent` object, which may include multiple clients."
      properties:
        id:
          description: "Unique ID of endpoint agent, from `/endpoint/agents` endpoint."
          example: 861b7557-cd57-4bbb-b648-00bddf88ef49
          format: uuid
          readOnly: true
          type: string
        aid:
          allOf:
          - $ref: '#/components/schemas/AccountId'
          - readOnly: true
        name:
          description: The name of the agent.
          example: Office Printer
          readOnly: false
          type: string
        computerName:
          example: DESKJET-123
          readOnly: true
          type: string
        osVersion:
          example: Version 10.15.2 (Build 19C57)
          readOnly: true
          type: string
        platform:
          $ref: '#/components/schemas/Platform'
        kernelVersion:
          example: Darwin 19.2.0
          readOnly: true
          type: string
        manufacturer:
          example: "Apple, Inc."
          readOnly: true
          type: string
        model:
          example: "MacBookAir7,2"
          readOnly: true
          type: string
        lastSeen:
          description: The last time the agent checked-in.
          example: 2022-05-26T23:37:16Z
          format: date-time
          readOnly: true
          type: string
        status:
          $ref: '#/components/schemas/Status'
        deleted:
          readOnly: true
          type: boolean
        version:
          description: Version of the agent software running.
          example: 0.123.4
          readOnly: true
          type: string
        createdAt:
          example: 2022-05-26T23:37:16Z
          format: date-time
          readOnly: true
          type: string
        numberOfClients:
          example: 3
          format: int64
          readOnly: true
          type: integer
        publicIP:
          example: 88.45.2.123
          format: ip
          readOnly: true
          type: string
        location:
          $ref: '#/components/schemas/EndpointAgentLocation'
        clients:
          description: |
            List of clients (user accounts) that the agent works with.
            Not populated by default.
          items:
            $ref: '#/components/schemas/EndpointClient'
          readOnly: true
          type: array
        totalMemory:
          example: 16384 MB
          readOnly: true
          type: string
        agentType:
          example: endpoint
          readOnly: true
          type: string
        vpnProfiles:
          description: |
            List of VPN connections on the agent.
            Not populated by default.
          items:
            $ref: '#/components/schemas/EndpointVpnProfile'
          readOnly: true
          type: array
        networkInterfaceProfiles:
          description: |
            List of network interfaces on the agent.
            Not populated by default.
          items:
            $ref: '#/components/schemas/InterfaceProfile'
          readOnly: true
          type: array
        asnDetails:
          $ref: '#/components/schemas/EndpointAsnDetails'
        licenseType:
          $ref: '#/components/schemas/AgentLicenseType'
        tcpDriverAvailable:
          description: Status of TCP test support on the agent.
          readOnly: true
          type: boolean
        npcapVersion:
          description: "For Windows agents, the version of the NPCAP driver that the\
            \ agent has loaded."
          readOnly: true
          type: string
        _links:
          $ref: '#/components/schemas/SelfLinks'
      type: object
    Status:
      description: Status of the endpoint agent in ThousandEyes. Disabled agents don't
        report data.
      enum:
      - enabled
      - disabled
      example: enabled
      readOnly: true
      type: string
    EndpointAgentUpdate:
      description: The `EndpointAgentUpdate` object contains supported fields for
        updates.
      properties:
        name:
          description: New agent name.
          example: Office Printer
          type: string
        licenseType:
          $ref: '#/components/schemas/AgentLicenseType'
      type: object
    WirelessProfile:
      properties:
        bssid:
          example: 00:11:22:aa:bb:cc
          format: macaddress
          type: string
        ssid:
          example: GuestWiFi
          type: string
        rssi:
          example: -36
          format: int32
          type: integer
        channel:
          example: 48
          format: int32
          type: integer
        phyMode:
          example: 802.11ac
          type: string
      type: object
    BrowserType:
      enum:
      - chrome
      - chrome-canary
      - chromium
      - ie
      - edge
      - unknown
      example: edge
      type: string
    AgentLicenseType:
      enum:
      - essentials
      - advantage
      - embedded
      example: essentials
      type: string
    ConnectionString:
      properties:
        connectionString:
          description: |
            The connection string is used for some integrations and other client types.
          example: D2xZSLlqo64Xe2EnYisklA==
          type: string
        _links:
          $ref: '#/components/schemas/SelfLinks'
      type: object
    UnauthorizedError:
      properties:
        error:
          example: invalid_token
          type: string
        error_description:
          example: Invalid access token
          type: string
      type: object
    Error:
      properties:
        type:
          description: "A URI reference that identifies the problem type. When this\
            \ member is not present, its value is assumed to be \"about:blank\"."
          type: string
        title:
          description: "A short, human-readable summary of the problem type."
          type: string
        status:
          description: The HTTP status code generated by the origin server for this
            occurrence of the problem.
          type: integer
        detail:
          description: A human-readable explanation specific to this occurrence of
            the problem.
          type: string
        instance:
          description: A URI reference that identifies the specific occurrence of
            the problem.
          type: string
      type: object
    EndpointAgentId:
      description: "Unique ID of endpoint agent, from `/endpoint/agents` endpoint."
      example: 861b7557-cd57-4bbb-b648-00bddf88ef49
      format: uuid
      readOnly: true
      type: string
    ValidationError:
      allOf:
      - $ref: '#/components/schemas/Error'
      - properties:
          errors:
            description: "(Optional) When multiple errors occur, the details for each\
              \ error are listed."
            items:
              $ref: '#/components/schemas/ValidationErrorItem'
            nullable: true
            type: array
        type: object
      type: object
    ValidationErrorItem:
      properties:
        code:
          description: (Optional) A unique error type/code that can be referenced
            in the documentation for further details.
          type: string
        field:
          description: Identifies the field that triggered this particular error.
          type: string
        message:
          description: "A short, human-readable summary of the error."
          type: string
      type: object
    PaginationNextLink:
      description: A links object containing a related link for forward pagination.
      properties:
        next:
          $ref: '#/components/schemas/Link'
      type: object
    PaginationNextAndSelfLink:
      description: A links object containing a related link for forward pagination.
      properties:
        next:
          $ref: '#/components/schemas/Link'
        self:
          $ref: '#/components/schemas/Link'
      type: object
    Platform:
      description: OS platform types. Platform "linux" was recently renamed to "roomos".
      enum:
      - windows
      - roomos
      - phoneos
      - elux
      - linux
      - mac
      - unknown
      example: mac
      type: string
    SortOrder:
      description: "Parameter indicates the ascending/descending  order of the sorting,\
        \ using either the asc or desc values."
      enum:
      - asc
      - desc
      example: desc
      type: string
    ConditionalOperator:
      enum:
      - and
      - or
      example: and
      type: string
    ThresholdFilterOperator:
      enum:
      - gte
      - lte
      example: gte
      type: string
    VpnType:
      description: Name of the VPN provider.
      enum:
      - cisco-anyconnect
      - palo-alto-globalprotect
      - ivanti-connect-secure
      - zscaler-internet-access
      - f5-big-ip
      example: cisco-anyconnect
      type: string
    InterfaceHardwareType:
      enum:
      - unknown
      - wireless
      - ethernet
      - modem
      - virtual
      - loopback
      - other
      example: wireless
      type: string
    SelfLinks:
      description: A links object containing the self link.
      properties:
        self:
          $ref: '#/components/schemas/Link'
      readOnly: true
      type: object
    Link:
      description: A hyperlink from the containing resource to a URI.
      properties:
        href:
          description: "Its value is either a URI [RFC3986] or a URI template [RFC6570]."
          example: https://api.thousandeyes.com/v7/link/to/resource/id
          type: string
        templated:
          description: Should be true when the link object's "href" property is a
            URI template.
          type: boolean
        type:
          description: Used as a hint to indicate the media type expected when dereferencing
            the target resource.
          type: string
        deprecation:
          description: Its presence indicates that the link is to be deprecated at
            a future date. Its value is a URL that should provide further information
            about the deprecation.
          type: string
        name:
          description: Its value may be used as a secondary key for selecting link
            objects that share the same relation type.
          type: string
        profile:
          description: A URI that hints about the profile of the target resource.
          type: string
        title:
          description: Intended for labelling the link with a human-readable identifier
          type: string
        hreflang:
          description: Indicates the language of the target resource
          type: string
      required:
      - href
      type: object
  securitySchemes:
    BearerAuth:
      description: Bearer authentication token
      scheme: bearer
      type: http
