openapi: 3.0.1
info:
  version: 7.0.34
  title: ThousandEyes API
servers:
  - description: ThousandEyes API production URL
    url: https://api.thousandeyes.com/v7
tags:
  - name: Account Groups
    description: Account group CRUD operations
    x-displayName: Account Groups
  - name: Users
    description: User CRUD operations
    x-displayName: Users
  - name: Roles
    description: Role CRUD operations
    x-displayName: Roles
  - name: Permissions
    description: Permission GET operation
    x-displayName: Permissions
  - name: User Events
    description: User events GET operation
    x-displayName: User Events
  - name: Cloud and Enterprise Agents
    x-displayName: Cloud and Enterprise Agents
  - name: Enterprise Agent Cluster
    x-displayName: Enterprise Agent Cluster
  - name: Cloud and Enterprise Agent Notification Rules
    x-displayName: Cloud and Enterprise Agent Notification Rules
  - name: Agent Proxies
    x-displayName: Agent Proxies
  - name: Alerts
    x-displayName: Alerts
  - name: Alert Rules
    x-displayName: Alert Rules
  - name: Alert Suppression Windows
    x-displayName: Alert Suppression Windows
  - name: BGP monitors
    x-displayName: BGP monitors
  - name: Credentials
    x-displayName: Credentials
  - name: Dashboards
    description: Dashboards and Widgets operations
    x-displayName: Dashboards
  - name: Dashboard Snapshots
    description: Dashboard Snapshots CRUD operations
    x-displayName: Dashboard Snapshots
  - name: Dashboards Filters
    x-displayName: Dashboards Filters
  - name: Emulation
    x-displayName: Emulation
  - name: Endpoint Agents
    x-displayName: Endpoint Agents
  - name: Endpoint Agents Transfer
    x-displayName: Endpoint Agents Transfer
  - name: Agent to Server Endpoint Instant Scheduled Tests
    x-displayName: Agent to Server Endpoint Instant Scheduled Tests
  - name: HTTP Server Endpoint Instant Scheduled Tests
    x-displayName: HTTP Server Endpoint Instant Scheduled Tests
  - name: Run Endpoint Instant Scheduled Tests
    x-displayName: Run Endpoint Instant Scheduled Tests
  - name: Endpoint Agent Labels
    x-displayName: Endpoint Agent Labels
  - name: Network Endpoint Scheduled Test Results
    x-displayName: Network Endpoint Scheduled Test Results
  - name: HTTP Server Endpoint Scheduled Test Results
    x-displayName: HTTP Server Endpoint Scheduled Test Results
  - name: Network Dynamic Endpoint Test Results
    x-displayName: Network Dynamic Endpoint Test Results
  - name: Real User Endpoint Test Results
    x-displayName: Real User Endpoint Test Results
  - name: Local Network Endpoint Test Results
    x-displayName: Local Network Endpoint Test Results
  - name: Endpoint Scheduled Tests
    x-displayName: Endpoint Scheduled Tests
  - name: Agent to Server Endpoint Scheduled Tests
    x-displayName: Agent to Server Endpoint Scheduled Tests
  - name: HTTP Server Endpoint Scheduled Tests
    x-displayName: HTTP Server Endpoint Scheduled Tests
  - name: Agent To Server Endpoint Dynamic Tests
    x-displayName: Agent To Server Endpoint Dynamic Tests
  - name: Events
    x-displayName: Events
  - name: Tags
    description: Tag CRUD Operations
    x-displayName: Tags
  - name: Tag Assignment
    description: Assign tags to other objects
    x-displayName: Tag Assignment
  - name: Internet Insights Catalog Providers
    x-displayName: Internet Insights Catalog Providers
  - name: Internet Insights Outages
    x-displayName: Internet Insights Outages
  - name: Templates
    x-displayName: Templates
  - name: Usage
    description: Usage GET Operation
    x-displayName: Usage
  - name: Quotas
    description: Quota CRUD Operation
    x-displayName: Quotas
  - name: Test Snapshots
    x-displayName: Test Snapshots
  - name: Streaming
    description: Configure data streaming
    x-displayName: Streaming
  - name: Instant Tests
    x-displayName: Instant Tests
  - name: Agent to Agent Instant Tests
    x-displayName: Agent to Agent Instant Tests
  - name: Agent to Server Instant Tests
    x-displayName: Agent to Server Instant Tests
  - name: DNS Server Instant Tests
    x-displayName: DNS Server Instant Tests
  - name: DNS Trace Instant Tests
    x-displayName: DNS Trace Instant Tests
  - name: DNSSEC Instant Tests
    x-displayName: DNSSEC Instant Tests
  - name: HTTP Server Instant Tests
    x-displayName: HTTP Server Instant Tests
  - name: HTTP Page Load Instant Tests
    x-displayName: HTTP Page Load Instant Tests
  - name: Web Transaction Instant Tests
    x-displayName: Web Transaction Instant Tests
  - name: API Instant Tests
    x-displayName: API Instant Tests
  - name: FTP Server Instant Tests
    x-displayName: FTP Server Instant Tests
  - name: SIP Server Instant Tests
    x-displayName: SIP Server Instant Tests
  - name: Voice Instant Tests
    x-displayName: Voice Instant Tests
  - name: Network Test Results
    x-displayName: Network Test Results
  - name: Web HTTP Server Test Results
    x-displayName: Web HTTP Server Test Results
  - name: Web Page Load Test Results
    x-displayName: Web Page Load Test Results
  - name: Web Transactions Test Results
    x-displayName: Web Transactions Test Results
  - name: API Test Results
    x-displayName: API Test Results
  - name: Web FTP Server Test Results
    x-displayName: Web FTP Server Test Results
  - name: DNS Trace Test Results
    x-displayName: DNS Trace Test Results
  - name: DNS Server Test Results
    x-displayName: DNS Server Test Results
  - name: DNSSEC Test Results
    x-displayName: DNSSEC Test Results
  - name: Voice SIP Server Test Results
    x-displayName: Voice SIP Server Test Results
  - name: Voice RTP Server Test Results
    x-displayName: Voice RTP Server Test Results
  - name: Network BGP Test Results
    x-displayName: Network BGP Test Results
  - name: Tests
    description: Get all tests
    x-displayName: Tests
  - name: Agent to Server Tests
    description: Agent to Server test management operations
    x-displayName: Agent to Server Tests
  - name: Agent to Agent Tests
    description: Agent to Agent test management operations
    x-displayName: Agent to Agent Tests
  - name: BGP Tests
    description: BGP test management operations
    x-displayName: BGP Tests
  - name: DNS Server Tests
    description: DNS Server test management operations
    x-displayName: DNS Server Tests
  - name: DNS Trace Tests
    description: DNS Trace test management operations
    x-displayName: DNS Trace Tests
  - name: DNSSEC Tests
    description: DNSSEC test management operations
    x-displayName: DNSSEC Tests
  - name: HTTP Server Tests
    description: HTTP Server test management operations
    x-displayName: HTTP Server Tests
  - name: Page Load Tests
    description: Page Load test management operations
    x-displayName: Page Load Tests
  - name: Web Transaction Tests
    description: Web Transactions test management operations
    x-displayName: Web Transaction Tests
  - name: API Tests
    description: API test management operations
    x-displayName: API Tests
  - name: FTP Server Tests
    description: FTP Server test management operations
    x-displayName: FTP Server Tests
  - name: SIP Server Tests
    description: SIP Server test management operations
    x-displayName: SIP Server Tests
  - name: Voice Tests
    description: Voice test management operations
    x-displayName: Voice Tests
  - name: Path Visualization Interface Groups
    x-displayName: Path Visualization Interface Groups
externalDocs:
  description: Find out more about ThousandEyes
  url: https://developer.thousandeyes.com/
paths:
  /account-groups:
    get:
      tags:
        - Account Groups
      summary: List account groups
      operationId: getAccountGroups
      description: Retrieves a list of account groups available to the current user.
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AccountGroups'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Account Groups
      summary: Create account group
      operationId: createAccountGroup
      description: >-
        Creates a new account group. This operation requires the `Edit all
        account groups` permission.


        **Note:** Any user assigned to `All Account Groups` is automatically
        assigned to the new account group.
      parameters:
        - $ref: '#/components/parameters/ExpandAccountGroup'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountGroupRequest'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/CreatedAccountGroup'
        '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'
      security:
        - BearerAuth: []
  /account-groups/{id}:
    get:
      tags:
        - Account Groups
      summary: Retrieve account group
      operationId: getAccountGroup
      description: >-
        Retrieves detailed information about an account group using its ID. 
        This operation requires the `View all account groups settings`
        permission.
      parameters:
        - $ref: '#/components/parameters/AccountGroupIdPath'
        - $ref: '#/components/parameters/ExpandAccountGroup'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AccountGroupDetail'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Account Groups
      summary: Update account group
      operationId: updateAccountGroup
      description: >-
        Updates an account group using its ID. You can modify the account
        group’s name or the list of agents assigned to the account group.
      parameters:
        - $ref: '#/components/parameters/AccountGroupIdPath'
        - $ref: '#/components/parameters/ExpandAccountGroup'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountGroupRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AccountGroupDetail'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Account Groups
      summary: Delete account group
      operationId: deleteAccountGroup
      description: >-
        Deletes an account group using its ID. This operation requires the
        following permissions:

          * Assign management permissions
          * Delete account
          * Edit all account groups
      parameters:
        - $ref: '#/components/parameters/AccountGroupIdPath'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /users:
    get:
      tags:
        - Users
      summary: List users
      operationId: getUsers
      description: >-
        Retrieves a list of users in the organization the account group ID
        belongs to. This operation requires the `API Access` and `View all
        users` permissions. See [Account
        Context](https://developer.thousandeyes.com/v7/#/accountcontext) for
        more information on changing the account group context.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Users'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Users
      summary: Create user
      operationId: createUser
      description: >-
        Creates a new user.


        The following applies when creating a user: 

        * If the user is already a member of another ThousandEyes customer
        organization, the user must set their own login account group. 

        * Any update that includes `accountGroupRoles` is a replace-based update
        and not a delta-based update.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserRequest'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/CreatedUser'
        '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'
      security:
        - BearerAuth: []
  /users/{id}:
    get:
      tags:
        - Users
      summary: Retrieve user
      operationId: getUser
      description: >-
        Retrieves detailed information about a user. This operation requires the
        `API Access` and `View All Users` permissions.
      parameters:
        - $ref: '#/components/parameters/UserIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/UserDetail'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Users
      summary: Update user
      operationId: updateUser
      description: >-
        Updates a user using the user ID. You can update the user name, email
        address, account group assignments, or roles. This operation requires
        the `Edit users in all account groups` or `Edit users` permission. 


        When updating a user, the following applies:

        * When updating a user's email address, the user must confirm the
        username change before they can subsequently log in or perform API
        operations.

        * Any update that includes `accountGroupRoles` is a replace-based update
        and not a delta-based update.
      parameters:
        - $ref: '#/components/parameters/UserIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/UserDetail'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Users
      summary: Delete user
      operationId: deleteUser
      description: >-
        Deletes a user using the user ID. This operation requires the `Edit
        users in all account groups` or `Edit users` permission.
      parameters:
        - $ref: '#/components/parameters/UserIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /users/current:
    get:
      tags:
        - Users
      summary: Retrieve current user
      operationId: getCurrentUser
      description: Retrieves detailed information about the current user.
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/UserDetail'
        '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'
      security:
        - BearerAuth: []
  /roles:
    get:
      tags:
        - Roles
      summary: List roles
      operationId: getRoles
      description: Retrieves a list of defined roles visible to the current user.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Roles'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Roles
      summary: Create role
      operationId: createRole
      description: Creates a new role.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleRequestBody'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RoleDetail'
        '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'
      security:
        - BearerAuth: []
  /roles/{id}:
    get:
      tags:
        - Roles
      summary: Retrieve role
      operationId: getRole
      description: Returns detailed information about a role using its ID.
      parameters:
        - $ref: '#/components/parameters/RoleId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RoleDetail'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Roles
      summary: Update role
      operationId: updateRole
      description: >-
        Updates a user-defined role using its ID.


        When updating a role, the following applies: 

        * The full list of permissions must be sent, This operation does not
        support delta-based grant or revoking of permissions. 

        * Permission definitions and details can be obtained from the
        Permissions operation.
      parameters:
        - $ref: '#/components/parameters/RoleId'
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleRequestBody'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RoleDetail'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Roles
      summary: Delete role
      operationId: deleteRole
      description: >-
        Deletes a role using its ID. The user needs appropriate permissions to
        successfully call this operation.
      parameters:
        - $ref: '#/components/parameters/RoleId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /audit-user-events:
    get:
      tags:
        - User Events
      summary: List activity log events
      operationId: getUserEvents
      description: >-
        Returns a list of activity log events in the current account group. 


        If `useAllPermittedAids=true` query parameter is passed and the user has
        permission `View activity log for all users in account group` the logs
        returned include events across all the account groups they belong to.


        For more information about changing the account group context, see
        [Account
        Context](https://developer.thousandeyes.com/v7/#/accountcontext).
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/UseAllPermittedAids'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AuditUserEvents'
        '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'
      security:
        - BearerAuth: []
  /permissions:
    get:
      tags:
        - Permissions
      summary: List assignable permissions
      operationId: getPermissions
      description: >-
        Users must be in a role assigned management permissions to access this
        operation. Users without management permissions who attempt to access
        this operation receive an HTTP/403 response code.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Permissions'
        '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'
      security:
        - BearerAuth: []
  /agents:
    get:
      tags:
        - Cloud and Enterprise Agents
      summary: List Cloud and Enterprise Agents
      operationId: getAgents
      description: >
        Returns a list of all agents available to your ThousandEyes account,
        including both Enterprise and Cloud Agents.


        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'
      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'
      security:
        - BearerAuth: []
  /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'
      security:
        - BearerAuth: []
    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'
      security:
        - BearerAuth: []
    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'
      security:
        - BearerAuth: []
  /agents/{agentId}/cluster/assign:
    post:
      tags:
        - Enterprise Agent Cluster
      summary: Add member to Enterprise Agent cluster
      operationId: assignAgentToCluster
      description: >-
        Adding a member to an Enterprise Agent cluster converts a standalone
        Enterprise Agent to an Enterprise Agent cluster. If the agent
        represented by the path {agentId} is not already a cluster, it will be
        converted to a cluster.


        The response will be a single Enterprise Agent Cluster. The converted
        Enterprise Agents will become cluster members, and can be returned using
        the `?expand=cluster-member` parameter.


        This operation requires users to have the `Edit agents in account group`
        permission.


        Upon successful cluster creation, the response includes:


        * Information about the new cluster in the response body.


        * Each cluster member receives a unique `memberId` within the cluster.


        * The `memberId` value is not linked to the original `agentId` used in
        the request URL or POST body.


        * The cluster name is based on the agent whose `agentId` is present in
        the request URL.


        **Example - converting a single agent**

        ```

        curl -X POST
        https://api.thousandeyes.com/v7/agents/64965/cluster/assign  -H
        "Authorization: Bearer $Bearer_token" 

        ````


        **Example - converting multiple agents**

        ```

        curl https://api.thousandeyes.com/v7/agents/64965/cluster/assign \

        '{"agents":[
          "2277",
          "1234"
        ]}' \

        -H "content-type:application/json" \

        -H "Authorization: Bearer $Bearer_token" 

        ````
      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'
      security:
        - BearerAuth: []
  /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.


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


        On successful completion, the response contains the following
        information:


        * The updated cluster information is provided in the response body,
        unless all members are removed from the cluster.


        * Information about each removed member, now a standalone agent.


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


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


        **Example - removing a single member**

        ```

        curl -X POST
        https://api.thousandeyes.com/v7/agents/64965/cluster/unassign   \

        '{"members":["55974"]}' \

        -H "content-type:application/json" \

        -H "Authorization: Bearer $Bearer_token" 

        ```


        **Example - removing multiple members**

        ```

        curl https://api.thousandeyes.com/v7/agents/64965/cluster/unassign \

        '{"members":[
            "55974",
            "12313"]
         }' \
        -H "content-type:application/json" \

        -H "Authorization: Bearer $Bearer_token" 

        ```
      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'
      security:
        - BearerAuth: []
  /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'
      security:
        - BearerAuth: []
  /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'
      security:
        - BearerAuth: []
  /agents/proxies:
    get:
      tags:
        - Agent Proxies
      summary: List agent proxies
      operationId: getAgentsProxies
      description: |
        List all 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'
      security:
        - BearerAuth: []
  /alerts:
    get:
      tags:
        - Alerts
      summary: List active alerts
      operationId: getAlerts
      description: >-
        Returns a list of active alerts. If no alerts are active within the 
        specified time range, an empty response is returned.  Note that time
        filters (`window`, `startDate`, or `endDate`) are only applied to
        cleared alerts.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationMax'
        - $ref: '#/components/parameters/PaginationCursor'
        - $ref: '#/components/parameters/State'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Alerts'
        '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'
      security:
        - BearerAuth: []
  /alerts/{alertId}:
    get:
      tags:
        - Alerts
      summary: Retrieve alert details
      operationId: getAlert
      description: Returns detailed information about an alert using its ID.
      parameters:
        - $ref: '#/components/parameters/AlertId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AlertDetail'
        '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'
      security:
        - BearerAuth: []
  /alerts/rules:
    get:
      tags:
        - Alert Rules
      summary: List alert rules
      operationId: getAlertsRules
      description: >-
        Returns a list of alert rules. Default rules for each test type are
        indicated with a boolean response (true or false); these default alert
        rules automatically apply to their respective test types.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Rules'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Alert Rules
      summary: Create alert rule
      operationId: createAlertRule
      description: >-
        Creates a new alert rule in your account, using the provided POST data.
        The `Edit alert rules` permission is required to create an alert rule.

        Note: Assigning an alert rule to a test during creation requires the
        `Edit tests` permission.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RuleDetailUpdate'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Rule'
        '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'
      security:
        - BearerAuth: []
  /alerts/rules/{ruleId}:
    get:
      tags:
        - Alert Rules
      summary: Retrieve alert rule
      operationId: getAlertRule
      description: >-
        Returns detailed information about an alert rule using the `ruleId`. If
        the `ruleId` doesn’t exist or is inaccessible by your account, an empty
        response is returned.
      parameters:
        - $ref: '#/components/parameters/RuleId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RuleDetail'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Alert Rules
      summary: Update alert rule
      operationId: updateAlertRule
      description: >-
        Modifies an existing alert rule in your account, using the provided POST
        data. The `Edit alert rules` permission is required to modify an alert
        rule.


        Note: Assigning an alert rule to a test during creation requires the
        `Edit tests` permission.
      parameters:
        - $ref: '#/components/parameters/RuleId'
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RuleDetailUpdate'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Rule'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Alert Rules
      summary: Delete alert rule
      operationId: deleteAlertRule
      description: >-
        Deletes an alert rule from your account. Users must have both `Edit
        alert rules` and `Edit tests` permissions,  especially if the rule is
        linked to any tests. Without these permissions, an error occurs.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/RuleId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /alert-suppression-windows:
    get:
      tags:
        - Alert Suppression Windows
      summary: List alert suppression windows
      operationId: getAlertSuppressionWindows
      description: >-
        Returns a list of all alert suppression windows configured in your
        account group.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AlertSuppressionWindows'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Alert Suppression Windows
      summary: Create alert suppression window
      operationId: createAlertSuppressionWindow
      description: >-
        Creates a new alert suppression window in ThousandEyes, using the 
        provided POST data. Only Account Admins can create alert suppression
        windows.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandAlert'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlertSuppressionWindowRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AlertSuppressionWindowDetail'
        '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'
      security:
        - BearerAuth: []
  /alert-suppression-windows/{windowId}:
    get:
      tags:
        - Alert Suppression Windows
      summary: Retrieve alert suppression window
      operationId: getAlertSuppressionWindow
      description: >-
        Returns detailed information about an alert suppression window
        configured in your account group.
      parameters:
        - $ref: '#/components/parameters/WindowId'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandAlert'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AlertSuppressionWindowDetail'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Alert Suppression Windows
      summary: Update alert suppression window
      operationId: updateAlertSuppressionWindow
      description: >-
        Updates an alert suppression window in ThousandEyes, using the  provided
        POST data. Only Account Admins can update alert suppression windows.
      parameters:
        - $ref: '#/components/parameters/WindowId'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandAlert'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AlertSuppressionWindowRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AlertSuppressionWindowDetail'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Alert Suppression Windows
      summary: Delete alert suppression window
      operationId: deleteAlertSuppressionWindow
      description: Deletes an alert suppression window.
      parameters:
        - $ref: '#/components/parameters/WindowId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /monitors:
    get:
      tags:
        - BGP monitors
      summary: List BGP monitors
      operationId: getBgpMonitors
      description: >-
        Retrieves a list of BGP monitors available to your account in
        ThousandEyes, including public and private feeds.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Monitors'
        '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'
      security:
        - BearerAuth: []
  /credentials:
    get:
      tags:
        - Credentials
      summary: List credentials
      operationId: getCredentials
      description: >-
        Retrieves a list of credentials configured in ThousandEyes. Users have
        access to the list of credentials based on the default settings or the
        specified account ID.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Credentials'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Credentials
      summary: Create credential
      operationId: createCredential
      description: >-
        Creates a new credential for ThousandEyes transaction tests, based on
        properties provided in the request data. To create a new credential, you
        must have permission to update tests.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/CredentialWithoutValue'
        '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'
      security:
        - BearerAuth: []
  /credentials/{id}:
    get:
      tags:
        - Credentials
      summary: Retrieve credential
      operationId: getCredential
      description: >-
        Retrieves detailed information about a ThousandEyes transaction test
        credential. To access this information, you must have access to the
        credential based on its default or provided account ID.
      parameters:
        - $ref: '#/components/parameters/CredentialId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Credential'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Credentials
      summary: Update credential
      operationId: updateCredential
      description: >-
        Updates the credential for ThousandEyes transaction tests, based on
        properties provided in the request data. To update a credential, you
        must have permission to update tests and access to the credential based
        on its default or provided account ID.
      parameters:
        - $ref: '#/components/parameters/CredentialId'
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CredentialRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/CredentialWithoutValue'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Credentials
      summary: Delete credential
      operationId: deleteCredential
      description: >-
        Deletes a ThousandEyes transaction test credential, using the request
        parameters. To delete a credential, you must have permission to update
        tests and access to the credential based on its default or provided
        account ID.
      parameters:
        - $ref: '#/components/parameters/CredentialId'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /dashboards:
    get:
      tags:
        - Dashboards
      operationId: getDashboards
      summary: List dashboards
      description: >
        Returns a list of dashboards and their settings within your account
        group.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiDashboards'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Dashboards
      operationId: createDashboard
      summary: Create dashboard
      description: >
        Creates a new dashboard in your account group. To create a dashboard, 
        you must have one of the following permissions:

        * `Edit dashboard templates for all users in account group` permission
        (Account Admin).


        * `Edit own dashboard templates` permission (Regular User).
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        description: Request body schema to create a dashboard.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Dashboard'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Dashboard'
        '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'
      security:
        - BearerAuth: []
  /dashboards/{dashboardId}:
    get:
      tags:
        - Dashboards
      operationId: getDashboard
      summary: Retrieve dashboard
      description: >
        Returns a list of widgets within a dashboard, along with the dashboard's
        metadata.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/DashboardIdPath'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiDashboard'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Dashboards
      summary: Update dashboard
      operationId: updateDashboard
      description: >
        Updates an existing dashboard in your account group. 


        **Note**: 

        * Users with the `Edit dashboard templates for all users in account
        group` permission (Account Admin) can update any dashboard.

        * Users with the `Edit own dashboard templates` permission (Regular
        User) can only update the dashboards they have created themselves.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/DashboardIdPath'
      requestBody:
        description: Request body schema to update a dashboard.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Dashboard'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Dashboard'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Dashboards
      operationId: deleteDashboard
      summary: Delete dashboard
      description: >
        Deletes a dashboard using the `dashboardId` provided in the request.


        **Note**:

        * Users with the `Edit dashboard templates for all users in account
        group` permission (Account Admin) can delete any dashboard.

        * Users with the `Edit own dashboard templates` permission (Regular
        User) can only delete the dashboards they have created themselves.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/DashboardIdPath'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /dashboards/{dashboardId}/widgets/{widgetId}:
    get:
      tags:
        - Dashboards
      operationId: getDashboardWidgetData
      summary: Retrieve dashboard widget data
      description: |
        Returns the raw data displayed within a widget in the dashboard.
      parameters:
        - $ref: '#/components/parameters/DashboardIdPath'
        - $ref: '#/components/parameters/WidgetId'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/DashboardMax'
        - $ref: '#/components/parameters/DashboardCursor'
        - $ref: '#/components/parameters/DashboardSort'
        - $ref: '#/components/parameters/DashboardOrder'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiWidgetDataResponse'
        '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'
      security:
        - BearerAuth: []
  /dashboard-snapshots:
    get:
      tags:
        - Dashboard Snapshots
      operationId: getDashboardSnapshots
      summary: List dashboard snapshots
      description: >
        Returns a list of dashboard snapshots within your account group. Use
        this data to identify a specific dashboard snapshot, which can be used
        in other endpoints to access aggregated data. The `View Snapshots`
        permission is required to use this endpoint."
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - name: dashboardId
          in: query
          required: false
          schema:
            type: string
          example: 646f4d2ce3c99b0536c3821e
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DashboardSnapshotsPage'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Dashboard Snapshots
      operationId: createDashboardSnapshot
      summary: Create dashboard snapshot
      description: >
        Creates a new dashboard snapshot within your account group. The `Edit
        Snapshots` permission is required to use this endpoint.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        description: Request body schema to create a dashboard snapshot.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateDashboardSnapshotRequest'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
            X-Dashboard-Snapshot-Rate-Limit-Limit:
              $ref: '#/components/headers/DashboardSnapshotRateLimit'
            X-Dashboard-Snapshot-Rate-Limit-Remaining:
              $ref: '#/components/headers/DashboardSnapshotRateLimitRemaining'
            X-Dashboard-Snapshot-Rate-Limit-Reset:
              $ref: '#/components/headers/DashboardSnapshotRateLimitReset'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DashboardSnapshotResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          description: Exhausted rate limit for snapshot creation
          headers:
            X-Dashboard-Snapshot-Rate-Limit-Limit:
              $ref: '#/components/headers/DashboardSnapshotRateLimit'
            X-Dashboard-Snapshot-Rate-Limit-Remaining:
              $ref: '#/components/headers/DashboardSnapshotRateLimitRemaining'
            X-Dashboard-Snapshot-Rate-Limit-Reset:
              $ref: '#/components/headers/DashboardSnapshotRateLimitReset'
        '500':
          $ref: '#/components/responses/500'
      security:
        - BearerAuth: []
  /dashboard-snapshots/{snapshotId}:
    get:
      tags:
        - Dashboard Snapshots
      operationId: getDashboardSnapshot
      summary: Retrieve dashboard snapshot
      description: >-
        This operation returns a list of widgets configured in dashboard
        snapshot configured in ThousandEyes. Seed this endpoint with a
        snapshotId found from the /dashboard-snapshots endpoint. This endpoint
        requires the `View Snapshots` permission be assigned to the role of the
        user accessing this endpoint. Returns a list of widgets configured
        within a dashboard snapshot. Use the `snapshotId` obtained from the
        `/dashboard-snapshots` endpoint. The `View Snapshots` permission is
        required to use this endpoint."
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/SnapshotIdPath'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiDashboardSnapshot'
        '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'
      security:
        - BearerAuth: []
    patch:
      tags:
        - Dashboard Snapshots
      operationId: updateDashboardSnapshotExpirationDate
      summary: Update snapshot expiration
      description: >
        Updates the expiration date of a dashboard snapshot. The `Edit
        snapshots` permission is required to access this endpoint.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/SnapshotIdPath'
      requestBody:
        description: Request body schema to update a snapshot expiration.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSnapshotExpirationDateApiRequest'
        required: true
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Dashboard Snapshots
      operationId: deleteDashboardSnapshot
      summary: Delete dashboard snapshot
      description: >
        Deletes a dashboard snapshot using the `snapshotId` provided in the
        request. Users with the `Edit reports for all users in account group`
        permission (Account Admin) can delete any dashboard snapshot.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/SnapshotIdPath'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /dashboard-snapshots/{snapshotId}/widgets/{widgetId}:
    get:
      tags:
        - Dashboard Snapshots
      operationId: getDashboardSnapshotWidgetData
      summary: Retrieve dashboard snapshot data
      description: |
        Returns actual metrics used in the generation of a dashboard snapshot.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/SnapshotIdPath'
        - $ref: '#/components/parameters/WidgetId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiWidgetDataSnapshotResponse'
        '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'
      security:
        - BearerAuth: []
  /dashboards/filters:
    get:
      tags:
        - Dashboards Filters
      summary: List dashboard filters
      operationId: getDashboardsFilters
      description: >
        Returns a list of dashboard filters and its context within your account
        group.
      parameters:
        - $ref: '#/components/parameters/DashboardFilterSearchPattern'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiContextFiltersResponse'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Dashboards Filters
      summary: Create dashboard filter
      operationId: createDashboardFilter
      description: >
        Creates a new dashboard filter in your account group. To create a
        filter,  you must have one of the following permissions:

        * `Edit dashboard templates for all users in account group` permission
        (Account Admin). * `Edit own dashboard templates` permission (Regular
        User).
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        description: Dashboard filter object to be created and saved
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiContextFilterRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiContextFilterResponse'
        '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'
      security:
        - BearerAuth: []
  /dashboards/filters/{id}:
    get:
      tags:
        - Dashboards Filters
      summary: Get dashboard filter
      operationId: getDashboardFilter
      description: >
        Returns a list of data source filters and their metadata within the
        dashboard filter.
      parameters:
        - $ref: '#/components/parameters/DashboardFilterIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiContextFilterResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Dashboards Filters
      summary: Update dashboard filter
      operationId: updateDashboardFilter
      description: |
        Updates an existing dashboard filter in your account group.
                             
         **Note**:
         
         * Users with the `Edit dashboard templates for all users in account group` permission (Account Admin) can update any dashboard filter.
         
         * Users with the `Edit own dashboard templates` permission (Regular User) can only update the dashboard filters they have created themselves.
      parameters:
        - $ref: '#/components/parameters/DashboardFilterIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        description: Updated dashboard filter context object
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiContextFilterRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiContextFilterResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Dashboards Filters
      summary: Delete dashboard filter
      operationId: deleteDashboardFilter
      description: |
        Deletes a dashboard filter using the `filterId` provided in the request.


         **Note**:

         * Users with the `Edit dashboard templates for all users in account group` permission (Account Admin) can delete any dashboard filter.

         * Users with the `Edit own dashboard templates` permission (Regular User) can only delete the dashboard filters they have created themselves.
      parameters:
        - $ref: '#/components/parameters/DashboardFilterIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /user-agents:
    get:
      tags:
        - Emulation
      summary: List user-agents
      operationId: getUserAgents
      description: Retrieves a list of user-agent strings.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/UserAgents'
        '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'
      security:
        - BearerAuth: []
  /emulated-devices:
    get:
      tags:
        - Emulation
      summary: List emulated devices
      operationId: getEmulatedDevices
      description: Retrieves a list of emulated devices available for browser tests.
      parameters:
        - $ref: '#/components/parameters/ExpandEmulatedDevice'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EmulatedDeviceResponses'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Emulation
      summary: Create emulated device
      operationId: createEmulatedDevice
      description: Creates a new device for emulation.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmulatedDevice'
      responses:
        '201':
          description: Created
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EmulatedDeviceResponse'
        '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'
      security:
        - BearerAuth: []
  /endpoint/agents:
    get:
      summary: List endpoint agents
      tags:
        - Endpoint Agents
      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:
        - $ref: '#/components/parameters/PaginationMax'
        - $ref: '#/components/parameters/PaginationCursor'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandEndpointAgent'
        - $ref: '#/components/parameters/IncludeDeleted'
        - $ref: '#/components/parameters/UseAllPermittedAids'
        - in: query
          name: agentName
          required: false
          description: |
            Returns only agents with the specified name. 
            This is an exact match only.
          schema:
            $ref: '#/components/schemas/AgentName'
        - in: query
          name: computerName
          required: false
          description: |
            Returns only agents with the specified computer name.
            This is an exact match only.
          schema:
            $ref: '#/components/schemas/ComputerName'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ListEndpointAgentsResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
      security:
        - BearerAuth: []
  /endpoint/agents/{agentId}:
    parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/EndpointAgentIdPath'
      - $ref: '#/components/parameters/ExpandEndpointAgent'
    get:
      summary: Retrieve endpoint agent
      tags:
        - Endpoint Agents
      description: Retrieves details of an agent with the specified `agent_id`.
      operationId: getEndpointAgent
      parameters:
        - $ref: '#/components/parameters/IncludeDeleted'
      responses:
        '200':
          $ref: '#/components/responses/SingleAgent'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      security:
        - BearerAuth: []
    patch:
      summary: Update endpoint agent
      tags:
        - Endpoint Agents
      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
      requestBody:
        description: Fields to modify on the agent
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndpointAgentUpdate'
      responses:
        '200':
          $ref: '#/components/responses/SingleAgent'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      security:
        - BearerAuth: []
    delete:
      summary: Delete endpoint agent
      tags:
        - Endpoint Agents
      description: |
        Deletes the agent with the specified `agent_id`.
      operationId: deleteEndpointAgent
      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'
      security:
        - BearerAuth: []
  /endpoint/agents/filter:
    post:
      summary: Filter endpoint agents
      tags:
        - Endpoint Agents
      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.
      requestBody:
        $ref: '#/components/requestBodies/AgentSearch'
      operationId: filterEndpointAgents
      parameters:
        - $ref: '#/components/parameters/PaginationMax'
        - $ref: '#/components/parameters/PaginationCursor'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandEndpointAgent'
        - $ref: '#/components/parameters/IncludeDeleted'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/FilterEndpointAgentsResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
      security:
        - BearerAuth: []
  /endpoint/agents/connection-string:
    get:
      tags:
        - Endpoint Agents
      operationId: getEndpointAgentsConnectionString
      summary: Get agent connection string
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ConnectionString'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
      security:
        - BearerAuth: []
  /endpoint/agents/{agentId}/enable:
    post:
      summary: Enable endpoint agent
      operationId: enableEndpointAgent
      tags:
        - Endpoint Agents
      description: >-
        Enables an endpoint agent. If it's already enabled, it has no effect (no
        operation).
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/EndpointAgentIdPath'
      responses:
        '200':
          $ref: '#/components/responses/SingleAgent'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      security:
        - BearerAuth: []
  /endpoint/agents/{agentId}/disable:
    post:
      summary: Disable endpoint agent
      tags:
        - Endpoint Agents
      description: >-
        Disables an endpoint agent. If it's already disabled, it has no effect
        (no operation).
      operationId: disableEndpointAgent
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/EndpointAgentIdPath'
      responses:
        '200':
          $ref: '#/components/responses/SingleAgent'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      security:
        - BearerAuth: []
  /endpoint/agents/{agentId}/transfer:
    post:
      summary: Transfer endpoint agent
      operationId: transferEndpointAgent
      tags:
        - Endpoint Agents Transfer
      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.
      requestBody:
        $ref: '#/components/requestBodies/AgentTransfer'
      parameters:
        - $ref: '#/components/parameters/EndpointAgentIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '202':
          description: Transfer initiated
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      security:
        - BearerAuth: []
  /endpoint/agents/transfer/bulk:
    post:
      summary: Bulk transfer agents
      operationId: transferEndpointAgents
      tags:
        - Endpoint Agents Transfer
      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.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        $ref: '#/components/requestBodies/AgentTransfers'
      responses:
        '207':
          description: Transfer initiated
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/BulkAgentTransferResponse'
        '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'
      security:
        - BearerAuth: []
  /endpoint/tests/scheduled-tests/agent-to-server/instant:
    post:
      tags:
        - Agent to Server Endpoint Instant Scheduled Tests
      summary: Run agent to server instant scheduled test
      operationId: createAgentToServerScheduledInstantTest
      description: >-
        Creates and runs a new endpoint agent to server instant scheduled test
        in ThousandEyes.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndpointAgentToServerInstantTest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointAgentToServerTest'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
      security:
        - BearerAuth: []
  /endpoint/tests/scheduled-tests/http-server/instant:
    post:
      tags:
        - HTTP Server Endpoint Instant Scheduled Tests
      summary: Run http server instant scheduled test
      operationId: createHttpServerScheduledInstantTest
      description: >-
        Creates and runs a new endpoint http server instant scheduled test in
        ThousandEyes.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndpointHttpServerInstantTest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointHttpServerTest'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
      security:
        - BearerAuth: []
  /endpoint/tests/scheduled-tests/{testId}/run:
    post:
      tags:
        - Run Endpoint Instant Scheduled Tests
      summary: Run endpoint instant scheduled test
      operationId: runEndpointScheduledInstantTest
      description: Runs an existing endpoint instant scheduled test in ThousandEyes.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - name: testId
          in: path
          description: ID of the endpoint instant scheduled test to rerun
          required: true
          example: '765231567'
          schema:
            type: string
      responses:
        '200':
          description: Successfully reran the instant scheduled test.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EndpointRunScheduledInstantTestResult'
        '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'
      security:
        - BearerAuth: []
  /endpoint/labels:
    get:
      summary: List labels
      description: Returns a list of labels.
      operationId: getEndpointLabels
      parameters:
        - $ref: '#/components/parameters/PaginationMax'
        - $ref: '#/components/parameters/PaginationCursor'
        - $ref: '#/components/parameters/ExpandLabel'
        - $ref: '#/components/parameters/AccountGroupId'
      tags:
        - Endpoint Agent Labels
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Labels'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
      security:
        - BearerAuth: []
    post:
      summary: Create label
      description: Creates a new label.
      operationId: createEndpointLabel
      tags:
        - Endpoint Agent Labels
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        description: Label settings
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LabelRequest'
      responses:
        '201':
          description: created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/LabelResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
      security:
        - BearerAuth: []
  /endpoint/labels/{id}:
    parameters:
      - $ref: '#/components/parameters/LabelIdPath'
    get:
      summary: Retrieve label
      tags:
        - Endpoint Agent Labels
      description: Returns a single label using its ID.
      operationId: getEndpointLabel
      parameters:
        - $ref: '#/components/parameters/ExpandLabel'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/LabelResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      security:
        - BearerAuth: []
    patch:
      summary: Update label
      tags:
        - Endpoint Agent Labels
      description: Updates a label using its ID.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        description: Fields to change on the agent
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Label'
      operationId: updateEndpointLabel
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/LabelResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      summary: Delete label
      tags:
        - Endpoint Agent Labels
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      description: |
        Deletes the label from your account.
      operationId: deleteEndpointLabel
      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'
      security:
        - BearerAuth: []
  /endpoint/test-results/scheduled-tests/{testId}/network/filter:
    post:
      tags:
        - Network Endpoint Scheduled Test Results
      summary: Retrieve network scheduled test results
      description: >
        Returns network metrics (loss, latency, and jitter) from each endpoint
        agent, for each roundId within the specified time window, as determined
        by search filters. If a time frame is provided, the rounds relevant to
        that time frame are returned, and the order is not predefined unless the
        user specifies a sort order in the filter.

        When no time frame is provided, the latest rounds are returned.
      operationId: filterScheduledTestNetworkResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      requestBody:
        description: Tests data search filters.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndpointTestsDataRoundsSearch'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/NetworkEndpointTestResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/scheduled-tests/network/filter:
    post:
      tags:
        - Network Endpoint Scheduled Test Results
      summary: Retrieve network scheduled test results from multiple tests
      description: >
        Returns network metrics, including loss, latency, and jitter, for
        multiple test IDs obtained from each endpoint agent. It allows you to
        specify a time window using search filters to retrieve metrics for
        specific round IDs within that time frame. The default order of results
        is unspecified unless you include a sorting preference in the filter.

        When no time frame is provided, the API returns metrics for the most
        recent rounds. Access to all accounts associated with the specified test
        IDs is required to use this endpoint.
      operationId: filterScheduledTestsNetworkResults
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationMax'
        - $ref: '#/components/parameters/PaginationCursor'
      requestBody:
        description: Test data search filters.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultiTestIdEndpointTestsDataRoundsSearch'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/MultiTestIdNetworkEndpointTestResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/scheduled-tests/{testId}/path-vis:
    get:
      tags:
        - Network Endpoint Scheduled Test Results
      summary: Retrieve path visualization network scheduled test results
      description: >
        Returns a summary of the path visualization data collected from each
        endpoint agent to the destination. In each path visualization attempt,
        one attempt is made to reach the destination. Each set of data is
        summarized, based on response time, number of hops, and response time to
        the target. A time frame must be specified, or the most recent round
        within last 2 hours is returned.
      operationId: getScheduledTestPathVisResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PathVisEndpointTestResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/scheduled-tests/{testId}/path-vis/agent/{agentId}/round/{roundId}:
    get:
      tags:
        - Network Endpoint Scheduled Test Results
      summary: Retrieve path visualization network scheduled test results details
      description: >
        Returns a hop-by-hop summary of the path trace data collected during
        path visualization. In each round, one path discovery attempt is made to
        reach the destination. The entire path is returned. A `roundId` must be
        specified.
      operationId: getScheduledTestPathVisAgentRoundResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AgentIdPath'
        - $ref: '#/components/parameters/RoundIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PathVisDetailEndpointTestResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/scheduled-tests/{testId}/http-server:
    get:
      tags:
        - HTTP Server Endpoint Scheduled Test Results
      summary: Retrieve HTTP server scheduled test results
      description: >
        Returns component-level (DNS, Connect, Wait and Receive) timing for the
        load of an object over HTTP.
      operationId: getHttpServerScheduledTestResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
        - $ref: '#/components/parameters/ExpandEndpointHttpServer'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/HttpEndpointTestResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/dynamic-tests/{testId}/network/filter:
    post:
      tags:
        - Network Dynamic Endpoint Test Results
      summary: Retrieve network dynamic test results
      description: >
        Returns network metrics (`loss`, `latency`, `jitter` and `bandwidth`)
        from each endpoint agent, for each `roundId` in the requested window.
        When Time Frame is provided the rounds specific to the time frame is
        returned and the order is not pre-defined unless a user specifies the
        sort order in filter. When no time frame is provided the latest rounds
        are returned.
      operationId: filterDynamicTestNetworkResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      requestBody:
        description: Tests data search filters.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DynamicEndpointTestsDataRoundSearch'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/NetworkDynamicEndpointTestResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/scheduled-tests/http-server/filter:
    post:
      tags:
        - HTTP Server Endpoint Scheduled Test Results
      summary: Filter HTTP server scheduled test results
      description: >
        Returns component-level (DNS, Connect, Wait and Receive) timing for the
        load of an object over HTTP.
      operationId: getMultiTestFilteredHttpServerScheduledTestResults
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
        - $ref: '#/components/parameters/ExpandEndpointHttpServer'
      requestBody:
        description: Test data search filters.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HttpEndpointTestsDataRoundsSearch'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/HttpMultiEndpointTestResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/dynamic-tests/{testId}/path-vis:
    get:
      tags:
        - Network Dynamic Endpoint Test Results
      summary: Retrieve path visualization network dynamic test results
      description: >
        Returns a summary of the path visualization data collected from each
        endpoint agent to the destination. In each path visualization attempt,
        one attempt is made to reach the destination. Each set of data is
        summarized, based on response time, number of hops, and response time to
        the target. A time frame must be specified, or the most recent round
        within last 2 hours will be returned.
      operationId: getDynamicTestPathVisResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PathVisDynamicEndpointTestResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/dynamic-tests/{testId}/path-vis/agent/{agentId}/round/{roundId}:
    get:
      tags:
        - Network Dynamic Endpoint Test Results
      summary: Retrieve path visualization network dynamic test results details
      description: >
        Returns a hop-by-hop summary of the path trace data collected during
        path visualization. In each round, one path discovery attempt is made to
        reach the destination. The entire path is returned. A `roundId` must be
        specified.
      operationId: getDynamicTestPathVisAgentRoundResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AgentIdPath'
        - $ref: '#/components/parameters/RoundIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PathVisDetailDynamicEndpointTestResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/real-user-tests/filter:
    post:
      tags:
        - Real User Endpoint Test Results
      summary: List endpoint real user tests
      description: >
        Returns a list of all endpoint real user tests.

        Results from the last round are provided unless an explicit start and
        end is provided with `startDate`, `endDate` or `window` optional
        parameters.


        ## Request body filters

        This endpoint supports complex filtering using the request body.

        It is important these filters remain unaltered when making use of
        pagination, otherwise the results will not be coherent with the original
        request.


        ### Multiple filter fields

        When multiple filter fields are provided, a logical `AND` is applied
        between the filters.
         ```
        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/real-user-tests/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
          "searchFilters": {
            "platform": [ "mac" ],
            "domain": [ "thousandeyes.com" ]
          }}'
        ```


        ### Filter field with multiple values

        When a filter field contains multiple values, a logical `OR` is applied
        between the filter values.
         ```
        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/real-user-tests/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
            "searchFilters": {
              "networkId": [ "660b34109d12", "660b34109d15" ]
            }
          }'
        ```


        ### Combination of request parameters and body filters

        ```

        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/real-user-tests/filter?window=1w'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
            "searchFilters": {
              "platform": [ "mac" ],
              "domain": [ "thousandeyes.com" ],
              "networkId": [ "660b34109d12", "660b34109d15" ]
            }
          }'
        ```


        Returns a `results` array of endpoint real user tests.

        Either the latest results, or based on the time range and body filters
        specified.
      operationId: filterRealUserTestsResults
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RealUserEndpointTestResultsRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RealUserEndpointTestResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/real-user-tests/{id}:
    get:
      tags:
        - Real User Endpoint Test Results
      summary: Retrieve endpoint real user test
      description: >
        Provides details for an endpoint real user test. Returns a results array
        containing detailed information about endpoint real user tests."
      operationId: getRealUserTestResults
      parameters:
        - $ref: '#/components/parameters/IdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RealUserEndpointTestDetailResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/real-user-tests/pages/filter:
    post:
      tags:
        - Real User Endpoint Test Results
      summary: List endpoint real user tests visited pages
      description: >
        Returns a list of all endpoint real user tests visited pages. 

        Sessions from the last round are provided unless an explicit start and
        end is provided with `startDate`, `endDate` or `window` optional
        parameters.


        ## Request body filters

        This endpoint supports complex filtering using the request body.

        It is important these filters remain unaltered when making use of
        pagination, otherwise the results will not be coherent with the original
        request.


        ### Multiple filter fields

        When multiple filter fields are provided, a logical `AND` is applied
        between the filters.
         ```
        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/real-user-tests/pages/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
          "searchFilters": {
            "platform": [ "mac" ],
            "domain": [ "thousandeyes.com" ]
          }}'
        ```


        ### Filter field with multiple values

        When a filter field contains multiple values, a logical `OR` is applied
        between the filter values.
         ```
        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/real-user-tests/pages/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
          "searchFilters": {
            "networkId": [ "660b34109d12", "660b34109d15" ]
          }}'
        ```


        ### Combination of request parameters and body filters

        ```

        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/real-user-tests/pages/filter?window=1w'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
          "searchFilters": {
            "platform": [ "mac" ],
            "domain": [ "thousandeyes.com" ],
            "networkId": [ "660b34109d12", "660b34109d15" ]
          }}'
        ```


        Returns a `results` array of user loaded pages in an endpoint real user
        test. 

        Pages shown are from the latest round, or based on the time range
        specified.
      operationId: filterRealUserTestsVisitedPagesResults
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RealUserEndpointTestResultRequestFilter'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RealUserEndpointTestPageResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/real-user-tests/{id}/pages/{pageId}:
    get:
      tags:
        - Real User Endpoint Test Results
      summary: Retrieve endpoint real user test page
      description: >
        Returns details for endpoint real user test web page request. 

        Provides complete waterfall information with all object requests.


        Sends back detailed endpoint real user test web page request.


        Returned object has a single field: `har` which is an HAR object
        according to the HTTP Archive 1.2 specifications. 

        [You can read more about the
        specification](http://www.softwareishard.com/blog/har-12-spec/).


        In addition to standard fields, the object har includes a custom
        property `systemMetrics` which contain metrics about CPU and physical
        memory usage. 

        Check `SystemMetrics` on schemas tab for more information.
      operationId: getRealUserTestPageResults
      parameters:
        - $ref: '#/components/parameters/IdPath'
        - $ref: '#/components/parameters/PageIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RealUserEndpointTestPageDetailResult'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/real-user-tests/networks/filter:
    post:
      tags:
        - Real User Endpoint Test Results
      summary: List endpoint real user tests
      description: >
        Returns a list of all endpoint real user tests. 

        Sessions from the last round are provided unless an explicit start and
        end is provided with `startDate`, `endDate` or `window` optional
        parameters.


        ## Request body filters

        This endpoint supports complex filtering using the request body.

        It is important these filters remain unaltered when making use of
        pagination, otherwise the results will not be coherent with the original
        request.


        ### Multiple filter fields

        When multiple filter fields are provided, a logical `AND` is applied
        between the filters.
         ```
        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/real-user-tests/networks/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
           "searchFilters": {
            "platform": [ "mac" ],
            "domain": [ "thousandeyes.com" ]
          }}'
        ```


        ### Filter field with multiple values

        When a filter field contains multiple values, a logical `OR` is applied
        between the filter values.
         ```
        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/real-user-tests/networks/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
          "searchFilters": {
            "networkId": [ "660b34109d12", "660b34109d15" ]
          }}'
        ```


        ### Combination of request parameters and body filters

        ```

        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/real-user-tests/networks/filter?window=1w'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
          "searchFilters": {
            "platform": [ "mac" ],
            "domain": [ "thousandeyes.com" ],
            "networkId": [ "660b34109d12", "660b34109d15" ]
          }}'
        ```


        Returns a `results` array of endpoint real user tests. 

        Network sessions shown are from the latest round, or based on the time
        range specified.
      operationId: filterRealUserTestsNetworkResults
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RealUserEndpointTestResultsRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RealUserEndpointTestNetworkResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/local-networks:
    get:
      tags:
        - Local Network Endpoint Test Results
      summary: List local networks
      description: |
        Returns a list of all the networks used by endpoint agents.

        Sends back a `localNetworks` array.
      operationId: getLocalNetworksTestResults
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/LocalNetworkResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/local-networks/topologies/filter:
    post:
      tags:
        - Local Network Endpoint Test Results
      summary: List endpoint network topologies probes
      description: >
        Returns a list of all endpoint local network topologies probes. 

        Results from the last round are provided unless an explicit start and
        end is provided with `startDate`, `endDate` or `window` optional
        parameters.


        ## Request body filters

        This endpoint supports complex filtering using the request body.

        It is important these filters remain unaltered when making use of
        pagination, otherwise the results will not be coherent with the original
        request.


        ### Multiple filter fields

        When multiple filter fields are provided, a logical `AND` is applied
        between the filters.
         ```
        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/local-networks/topologies/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
          "searchFilters": {
            "platform": [ "mac" ],
            "domain": [ "thousandeyes.com" ]
          }}'
        ```


        ### Filter field with multiple values

        When a filter field contains multiple values, a logical `OR` is applied
        between the filter values.
         ```
        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/local-networks/topologies/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
          "searchFilters": {
            "networkId": [ "660b34109d12", "660b34109d15" ]
          }}'
        ```


        ### Combination of request parameters and body filters

        ```

        curl --location --request POST
        'https://api.thousandeyes.com/v7/endpoint/test-results/local-networks/topologies/filter?window=12h'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
          "searchFilters": {
            "platform": [ "mac" ],
            "domain": [ "thousandeyes.com" ],
            "networkId": [ "660b34109d12", "660b34109d15" ]
          }}'
        ```


        ### Warning

        Note that a maximum of 12h worth of data can be retrieved at once. 

        If you need more, you need to make multiple requests.


        Returns a `results` array of network topology probes. 

        Network topology probes shown are from the latest round, or based on the
        time range specified.
      operationId: filterLocalNetworksTestResultsTopologies
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
        - $ref: '#/components/parameters/ExpandLocalNetworkTopology'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndpointNetworkTopologyResultRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/LocalNetworkTopologyResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/test-results/local-networks/topologies/{networkTopologyId}:
    get:
      tags:
        - Local Network Endpoint Test Results
      summary: Retrieve endpoint local network topology
      description: |
        Returns detailed data of a local network topology.
      operationId: getLocalNetworksTestResultsTopology
      parameters:
        - $ref: '#/components/parameters/NetworkTopologyIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandLocalNetworkTopology'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/LocalNetworkTopologyDetailResults'
        '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'
      security:
        - BearerAuth: []
  /endpoint/tests/scheduled-tests:
    get:
      tags:
        - Endpoint Scheduled Tests
      summary: List endpoint scheduled tests
      operationId: getEndpointScheduledTests
      description: >-
        Returns a list of all endpoint scheduled tests configured in
        ThousandEyes. This list does not contain saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointTests'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
      security:
        - BearerAuth: []
  /endpoint/tests/scheduled-tests/agent-to-server:
    get:
      tags:
        - Agent to Server Endpoint Scheduled Tests
      summary: List agent to server endpoint scheduled tests
      operationId: getAgentToServerEndpointScheduledTests
      description: >
        Returns a list of all agent to server endpoint scheduled tests
        configured in ThousandEyes. This list does not contain saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointAgentToServerTests'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
      security:
        - BearerAuth: []
    post:
      tags:
        - Agent to Server Endpoint Scheduled Tests
      summary: Creates agent to server endpoint scheduled test
      operationId: createAgentToServerEndpointScheduledTest
      description: >
        Creates a new endpoint test in ThousandEyes using properties specified
        in the POST data.

        Please note that only Account Admins have the authorization to create
        new tests; regular users are restricted from using POST-based methods.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndpointAgentToServerTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointAgentToServerTest'
        '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'
      security:
        - BearerAuth: []
  /endpoint/tests/scheduled-tests/agent-to-server/{testId}:
    get:
      tags:
        - Agent to Server Endpoint Scheduled Tests
      summary: Retrieve agent to server endpoint scheduled test
      operationId: getAgentToServerEndpointScheduledTest
      description: Retrieves details of an agent to server endpoint scheduled test.
      parameters:
        - $ref: '#/components/parameters/TestId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointAgentToServerTest'
        '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'
      security:
        - BearerAuth: []
    patch:
      tags:
        - Agent to Server Endpoint Scheduled Tests
      summary: Update agent to server endpoint scheduled test
      operationId: updateAgentToServerEndpointScheduledTest
      description: |-
        Updates an agent to server scheduled test. Includes support for 
        enabling and disabling the test.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndpointNetworkTestUpdate'
      parameters:
        - $ref: '#/components/parameters/TestId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointAgentToServerTest'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Agent to Server Endpoint Scheduled Tests
      summary: Delete agent to server scheduled test
      operationId: deleteAgentToServerEndpointScheduledTest
      description: Deletes an agent to server endpoint scheduled test.
      parameters:
        - $ref: '#/components/parameters/TestId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /endpoint/tests/scheduled-tests/http-server:
    get:
      tags:
        - HTTP Server Endpoint Scheduled Tests
      summary: List HTTP server endpoint scheduled tests
      operationId: getHttpServerEndpointScheduledTests
      description: >
        Returns a list of agent to server endpoint scheduled tests configured in
        ThousandEyes. This list does not contain saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointHttpServerTests'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
      security:
        - BearerAuth: []
    post:
      tags:
        - HTTP Server Endpoint Scheduled Tests
      summary: Create HTTP server endpoint scheduled test
      operationId: createHttpServerEndpointScheduledTest
      description: >
        Creates a new HTTP server endpoint test in ThousandEyes, using
        properties specified in the POST data.

        Please note that only users with Account Admin privileges have the
        authorization to create new tests; regular users are restricted from
        using POST-based methods.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndpointHttpServerTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointHttpServerTest'
        '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'
      security:
        - BearerAuth: []
  /endpoint/tests/scheduled-tests/http-server/{testId}:
    get:
      tags:
        - HTTP Server Endpoint Scheduled Tests
      summary: Retrieves HTTP server endpoint scheduled test
      operationId: getHttpServerEndpointScheduledTest
      description: Retrieves details of an HTTP Server endpoint scheduled test.
      parameters:
        - $ref: '#/components/parameters/TestId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointHttpServerTest'
        '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'
      security:
        - BearerAuth: []
    patch:
      tags:
        - HTTP Server Endpoint Scheduled Tests
      summary: Update HTTP server endpoint scheduled test
      operationId: updateHttpServerEndpointScheduledTest
      description: |-
        Updates an HTTP server scheduled test. Includes support for 
        enabling and disabling the test.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndpointHttpTestUpdate'
      parameters:
        - $ref: '#/components/parameters/TestId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EndpointHttpServerTest'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - HTTP Server Endpoint Scheduled Tests
      summary: Delete HTTP server scheduled test
      operationId: deleteHttpServerEndpointScheduledTest
      description: Deletes an HTTP server endpoint scheduled test.
      parameters:
        - $ref: '#/components/parameters/TestId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /endpoint/tests/dynamic-tests/agent-to-server:
    get:
      tags:
        - Agent To Server Endpoint Dynamic Tests
      summary: List endpoint dynamic tests
      operationId: getAgentToServerEndpointDynamicTests
      description: >-
        Returns a list of all endpoint dynamic tests configured in ThousandEyes.
        This list does not contain saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DynamicTests'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '502':
          $ref: '#/components/responses/502'
        default:
          $ref: '#/components/responses/GeneralError'
      security:
        - BearerAuth: []
    post:
      tags:
        - Agent To Server Endpoint Dynamic Tests
      summary: Create endpoint dynamic test
      operationId: createAgentToServerEndpointDynamicTest
      description: >
        Create a new endpoint dynamic test in ThousandEyes using properties
        specified in the POST data.

        Please note that only Account Admins have the authorization to create
        new tests; regular users are restricted from using POST-based methods.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DynamicTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DynamicTest'
        '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'
      security:
        - BearerAuth: []
  /endpoint/tests/dynamic-tests/agent-to-server/{testId}:
    get:
      tags:
        - Agent To Server Endpoint Dynamic Tests
      summary: Retrieve endpoint dynamic test
      operationId: getAgentToServerEndpointDynamicTest
      description: >-
        Returns details of an endpoint dynamic test, including test type, name,
        intervals, targets.
      parameters:
        - $ref: '#/components/parameters/TestId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DynamicTest'
        '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'
      security:
        - BearerAuth: []
    patch:
      tags:
        - Agent To Server Endpoint Dynamic Tests
      summary: Update agent to server dynamic test
      operationId: updateAgentToServerEndpointDynamicTest
      description: |-
        Updates an agent to server endpoint dynamic test. Includes support for 
        enabling and disabling the test.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndpointDynamicTestUpdate'
      parameters:
        - $ref: '#/components/parameters/TestId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DynamicTest'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Agent To Server Endpoint Dynamic Tests
      summary: Delete agent to server dynamic test
      operationId: deleteAgentToServerEndpointDynamicTest
      description: Deletes an agent to server endpoint dynamic test.
      parameters:
        - $ref: '#/components/parameters/TestId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /events:
    get:
      tags:
        - Events
      summary: List events
      operationId: getEvents
      description: >-
        Retrieves a list of events within the specified time window. If no
        events are active during the specified time range, an empty response is
        returned.  **Note**: You must provide either a time window using the
        `window` parameter or specify `startDate` and `endDate`.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationMax'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Events'
        '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'
      security:
        - BearerAuth: []
  /events/{id}:
    get:
      tags:
        - Events
      summary: Retrieve event
      operationId: getEvent
      description: Returns detailed information about an event using its ID.
      parameters:
        - $ref: '#/components/parameters/EventId'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EventDetail'
        '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'
      security:
        - BearerAuth: []
  /tags:
    get:
      operationId: getTags
      tags:
        - Tags
      summary: List tags
      description: >-
        This operation returns a list of tags in the specified account group
        (`aid`).
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTags'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tags'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - BearerAuth: []
    post:
      tags:
        - Tags
      summary: Create tag
      operationId: createTag
      description: Creates a new tag.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '201':
          description: item created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagInfo'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '409':
          description: An existing item already exists
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagInfo'
        description: Tag resource
      security:
        - BearerAuth: []
  /tags/bulk:
    post:
      tags:
        - Tags
      summary: Create multiple tags
      operationId: createTags
      description: >-
        Creates multiple tags. Note the response includes a `statuses` array.
        This array provides status information for each tag object, indexed 1:1
        with the `tags` array.  
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '207':
          description: Item created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkTagResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkTagResponse'
        description: Tag resource
      security:
        - BearerAuth: []
  /tags/{id}:
    get:
      tags:
        - Tags
      summary: Retrieve tag
      description: Retrieves a tag using its ID.
      operationId: getTag
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/TagIdPath'
        - $ref: '#/components/parameters/ExpandTags'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tag'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - BearerAuth: []
    put:
      tags:
        - Tags
      summary: Update tag
      operationId: updateTag
      description: Updates a tag.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - name: id
          in: path
          description: ID of tag to update
          required: true
          schema:
            type: string
          example: c6b78e57-81a2-4c5f-a11a-d96c3c664d55
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagInfo'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagInfo'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Tags
      summary: Delete tag
      operationId: deleteTag
      description: Deletes a tag.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/TagIdPath'
      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':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - BearerAuth: []
  /tags/assign:
    post:
      tags:
        - Tag Assignment
      summary: Assign multiple tags to multiple objects
      description: >-
        Assigns the specified tags to the specified objects. This operation has
        cumulative behavior: The tags are assigned to the specified objects, and
        the previous assignments persist. No unassignment takes place.
      operationId: assignTags
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        $ref: '#/components/requestBodies/bulkAssignRequest'
      responses:
        '207':
          description: Item created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkTagAssignments'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - BearerAuth: []
  /tags/unassign:
    post:
      tags:
        - Tag Assignment
      summary: Remove multiple tags from multiple objects
      description: Removes the specified tags from one or more objects.
      operationId: unassignTags
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        $ref: '#/components/requestBodies/bulkAssignRequest'
      responses:
        '207':
          description: Tag assignments created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkTagAssignments'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - BearerAuth: []
  /tags/{id}/assign:
    post:
      tags:
        - Tag Assignment
      summary: Assign tag to multiple objects
      description: >-
        Assigns a tag to one or more objects. This operation has cumulative
        behavior: The tag is assigned to the specified objects, and the previous
        assignments persist. No unassignment takes place.
      operationId: assignTag
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/TagIdPath'
      requestBody:
        $ref: '#/components/requestBodies/assignRequest'
      responses:
        '207':
          description: Assignment created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkTagAssignment'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - BearerAuth: []
  /tags/{id}/unassign:
    post:
      tags:
        - Tag Assignment
      summary: Remove tag from multiple objects
      operationId: unassignTag
      description: Removes a tag from one or more objects.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/TagIdPath'
      requestBody:
        $ref: '#/components/requestBodies/assignRequest'
      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':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - BearerAuth: []
  /internet-insights/catalog/providers/filter:
    post:
      tags:
        - Internet Insights Catalog Providers
      summary: List catalog providers
      description: >
        Returns a list of catalog providers using the specified filters. Returns
        high-level information about each catalog provider. For more details
        about a specific provider, call the Get a catalog provider endpoint.


        <b>Note:</b> Support for pagination will be added in the future.
      operationId: filterCatalogProviders
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiCatalogProviderFilter'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiCatalogProviderResponse'
        '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'
      security:
        - BearerAuth: []
  /internet-insights/catalog/providers/{providerId}:
    get:
      tags:
        - Internet Insights Catalog Providers
      summary: Retrieve a catalog provider
      description: |
        Returns the details of a catalog provider.
      operationId: getCatalogProvider
      parameters:
        - name: providerId
          in: path
          required: true
          schema:
            type: string
            format: uuid
            example: 85602a0a-54a7-4e97-946e-67492ef1fa26
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiCatalogProviderDetails'
        '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'
      security:
        - BearerAuth: []
  /internet-insights/outages/filter:
    post:
      tags:
        - Internet Insights Outages
      summary: List network and application outages
      description: >
        Returns a list of network and application outages using a filter object.
        Advanced Filter persistance is not currently supported.


        <b>Note:</b> Support for pagination will be added in the future.

         ## Samples Queries with Different Filter Permutations

         ### Window
         ```
         curl --location --request POST 'https://api.thousandeyes.com/v7/internet-insights/outages/filter'
        --header 'Authorization: Bearer $token

        --header 'Accept-Encoding: application/gzip'

        --header 'Content-Type: application/json'

        --data-raw '{
          "window" : "1d"
          }'
        ```


        ### Date Range

        ```

        curl --location --request POST
        'https://api.thousandeyes.com/v7/internet-insights/outages/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
            "startDate": "2022-03-01T01:30:00Z",
            "endDate"  : "2022-03-01T23:30:15Z"
          }'
        ```


        ### Date Range with Scope

        ```

        curl --location --request POST
        'https://api.thousandeyes.com/v7/internet-insights/outages/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
            "startDate": "2022-03-01T01:30:00Z",
            "endDate"  : "2022-03-01T23:30:15Z",
            "outageScope": "with-affected-test"
          }'
        ```

        ### Date Range with Network

        ```
          curl --location --request POST 'https://api.thousandeyes.com/v7/internet-insights/outages/filter'
          --header 'Authorization: Bearer $token'
          --header 'Content-Type: application/json'
          --data-raw '{
              "startDate": "2022-03-01T01:30:00Z",
              "endDate"  : "2022-03-01T23:30:15Z",
              "interfaceNetwork":  ["Telianet"]
            }'
        ```


        ### Date Range with Application

        ```

        curl --location --request POST
        'https://api.thousandeyes.com/v7/internet-insights/outages/filter'
          --header 'Authorization: Bearer $token'
          --header 'Content-Type: application/json'
          --data-raw '{
              "startDate": "2022-03-01T01:30:00Z",
              "endDate"  : "2022-03-01T23:30:15Z",
              "applicationName": ["Google"]
          }'
        ```

        ### Date Range with Provider

        ```

        curl --location --request POST
        'https://api.thousandeyes.com/v7/internet-insights/outages/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
              "startDate": "2022-03-01T01:30:00Z",
              "endDate"  : "2022-03-01T23:30:15Z",
              "providerName": ["Century Link", "Microsoft"]
          }'

        ```

        ### Date Range with Application and Scope

        ```

        curl --location --request POST
        'https://api.thousandeyes.com/v7/internet-insights/outages/filter'

        --header 'Authorization: Bearer $token'

        --header 'Content-Type: application/json'

        --data-raw '{
            "startDate": "2022-03-01T01:30:00Z",
            "endDate"  : "2022-03-01T23:30:15Z",
            "outageScope": "all",
            "applicationName": ["Google"]
        }'

        ```
      operationId: filterOutages
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiOutageFilter'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiOutagesResponse'
        '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'
      security:
        - BearerAuth: []
  /internet-insights/outages/net/{outageId}:
    get:
      tags:
        - Internet Insights Outages
      summary: Retrieve network outage
      description: |
        Returns the details of a network outage.
      operationId: getNetworkOutage
      parameters:
        - name: outageId
          in: path
          required: true
          schema:
            type: string
            example: 694D8656960F34F76489BCE5E9BCD58EC53027462740D75F
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiNetworkOutageDetails'
        '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'
      security:
        - BearerAuth: []
  /internet-insights/outages/app/{outageId}:
    get:
      tags:
        - Internet Insights Outages
      summary: Retrieve application outage
      description: |
        Returns the details of an application outage.
      operationId: getAppOutage
      parameters:
        - name: outageId
          in: path
          required: true
          schema:
            type: string
            example: F73E24F17E4996923196826A208BB572508A8EB13BEE14B0
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiApplicationOutageDetails'
        '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'
      security:
        - BearerAuth: []
  /templates:
    post:
      tags:
        - Templates
      summary: Create template
      description: Creates a template.
      operationId: createTemplate
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        description: The template to create or update.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Template'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Location:
              style: simple
              schema:
                type: string
                example: >-
                  https://api.thousandeyes.com/v7/templates/fcbb89a7-61cf-4616-9c4f-828fa3cb4684
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/TemplateResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
        - BearerAuth: []
    get:
      tags:
        - Templates
      summary: List templates
      description: Retrieves a list of all your templates
      operationId: getTemplates
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - name: certificationLevel
          in: query
          description: Optional parameter to filter Templates by certification level
          required: false
          schema:
            $ref: '#/components/schemas/CertificationLevel'
        - name: module
          in: query
          description: Optional parameter to filter Templates by module
          required: false
          schema:
            $ref: '#/components/schemas/TemplateModule'
        - name: name
          in: query
          description: >-
            Optional parameter to filter the Templates by name; the search is
            case insensitive
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/TemplatesResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
        - BearerAuth: []
  /templates/{id}:
    get:
      tags:
        - Templates
      summary: Get template
      description: Gets a template using its ID.
      operationId: getTemplate
      parameters:
        - $ref: '#/components/parameters/IdTemplate'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/TemplateResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
        - BearerAuth: []
    put:
      tags:
        - Templates
      summary: Update template
      operationId: updateTemplate
      description: >-
        Updates an existing template. This operation overwrites the existing
        template object with the object sent in the request. If a partial update
        is required, it is recommended that you retrieve the template and modify
        the template object before updating it.
      parameters:
        - $ref: '#/components/parameters/IdTemplate'
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        description: The template to create or update.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Template'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/TemplateResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Templates
      summary: Delete template
      description: Deletes a template using its ID.
      operationId: deleteTemplate
      parameters:
        - $ref: '#/components/parameters/IdTemplate'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
        - BearerAuth: []
  /templates/{id}/deploy:
    post:
      tags:
        - Templates
      summary: Deploy template
      description: >-
        Deploys a template, which will result in creating any of the tests,
        alert rules, dashboards or other assets defined in the template.

        You must specify any `userInputValues` required by the template in the
        request body. `userInputValues` enables you to specify a minimum set of
        user values required to configure the tests from a template. This way,
        you do not have to edit all the details of each test configuration. If
        necessary, you can edit the test details directly in the template.

        ### Considerations

        Consider the following when deploying a template:

        * To deploy a template, you must first create a template or use one of
        ThousandEyes' built-in templates.

        * The deployment strategy allows you to specify what should happen to a
        particular asset in the event that a template is redeployed.
          When you attempt to deploy a template that has already been deployed, the API service compares any assets that have not yet been deployed with the assets that were deployed in the previous deployment (the comparison is done using the **asset key**; the asset keys are simply the object keys used in the `tests`, `labels`, `alertRules`, and `dashboards` fields). By default, if the configuration of a particular asset has not changed from the previous deployment, that asset is ignored.
            If a change is detected:
          * If the asset is a test, a new test is created with the new configuration.
          * If the asset is not a test, the asset is updated.
        * You can create new resources such as tests, alert rules, labels,
        dashboards, and modify existing resources defined in templates,
        overwriting the default configurations.

        * You can also use existing resources (such as those created outside the
        template deployment flow) by adding their ID either in the raw template
        or using the overrides when deploying the template. See example usage
        below for the raw template sample.

        **Note**: The template API does not currently track "live" configuration
        of assets. Any changes made to assets outside of the template API will
        not be considered when comparing changes during the redeployment
        scenario.

        ### Example usage:

        ```POST

        /v7/tests/templates/fcbb89a7-61cf-4616-9c4f-828fa3cb4684/deploy

        {
          "userInputValues": {
            "interval": 120,
            "target": "https://microsoft.com",
            "agents": [{"agentId":11}],
            "domain": "microsoft.com"
          },
          "name":"Microsoft Suite",
          "tests": {
            "secondPageLoadTest": {
              "httpInterval": 120,
              "interval": 120,
              "testId": 182481,
              "type": "page-load",
              "url": "https://microsoft.com",
              "testName": "Microsoft Suite - Second Page Load",
              "agents": [
                {
                  "agentId": 11
                }
              ]
            }
          }
        }

        ```

        #### Raw Template Sample

        ```

        {
          ...
          "tests": {
              "existingTest": {
                  "testId": "123", //The API will only try to update this test; will never create it
                  "type": "http-server",
                  ....
              },
              ...
          },
          ...
        }

        ```
      operationId: deployTemplate
      parameters:
        - $ref: '#/components/parameters/IdTemplate'
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        description: Deploy template
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeployTemplate'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/TemplateResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
        - BearerAuth: []
  /templates/{id}/sharing-settings:
    get:
      tags:
        - Templates
      summary: Get template sharing settings
      operationId: getSharingSettings
      parameters:
        - $ref: '#/components/parameters/IdTemplate'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/SharingSettingsResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
        - BearerAuth: []
    put:
      tags:
        - Templates
      summary: Update template sharing settings
      operationId: updateSharingSettings
      parameters:
        - $ref: '#/components/parameters/IdTemplate'
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SharingSettings'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/SharingSettingsResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      security:
        - BearerAuth: []
  /usage:
    get:
      tags:
        - Usage
      summary: Get usage information for the last month
      operationId: getUsage
      description: >-
        This operation returns usage for the current period. It provides
        visibility across all account groups within an organization. To access
        this endpoint, you need the `View Billing` permission (a management
        permission). If you have access to view billing in multiple
        organizations, query the endpoint using an `aid` querystring parameter
        (see optional parameters, below) from each organization.

        **Note:** Access to billing information older than one month is not
        supported by this endpoint.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandUsage'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Usage'
        '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'
      security:
        - BearerAuth: []
  /usage/units/enterprise-agents:
    get:
      tags:
        - Usage
      summary: Get enterprise agent usage
      operationId: getEnterpriseAgentsUnitsUsage
      description: >-
        This operation returns the organization's enterprise agents usage for a
        specific time period, or the curent billing cycle if no time period is
        specified.

        In the `/v7/usage` API, a shared enterprise agent's usage is reported in
        the account group where the agent was created (i.e Primary Account
        Group).  However in this API, the shared agent's usage is distributed
        among all the account groups where the tests are running on the
        particular agent. This API is also only available to customers on usage
        based pricing model.
      parameters:
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/EnterpriseAgentsUsage'
        '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'
      security:
        - BearerAuth: []
  /usage/units/tests:
    get:
      tags:
        - Usage
      summary: Get cloud and enterprise agents units usage
      operationId: getTestsUnitsUsage
      description: >-
        This operation returns the cloud and enterprise agents usage for all the
        tests for a specific time period, or the curent billing cycle if no time
        period is specified.

        In the `/v7/usage` API, an enterprise agent's usage is reported in the
        account group where the agent was created (i.e Primary Account Group). 
        However in this API, the agent's usage is distributed among all the
        account groups where the tests are running on the particular agent. This
        API is also only available to customers on usage based pricing model.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/TestsUsage'
        '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'
      security:
        - BearerAuth: []
  /quotas:
    get:
      tags:
        - Quotas
      summary: Get organization and account group usage quota
      operationId: getQuotas
      description: >-
        This operation retrieves usage quotas for both organization and account
        groups. To use this endpoint, you need the `Edit organization and
        account group quotas` permission, which is a management-level
        permission. If a user has quota update permission in multiple
        organizations, the API returns data from all such organizations.
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Quotas'
        '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'
      security:
        - BearerAuth: []
  /quotas/assign:
    post:
      tags:
        - Quotas
      summary: Create or update organizations quotas
      operationId: assignOrganizationsQuotas
      description: >-
        This operation recieves a list of organization quotas to create or
        update. If there's no specific `orgId` defined for a quota, it defaults
        to using the authenticated organization. To use this endpoint, you need
        the `Edit organization and account group quotas` permission, which is a
        management-level permission. This operation follows cumulative
        behavior––This means that the quotas are assigned to the specified
        organizations, and any previous assignments remain unchanged; no
        unassignments occur.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuotasAssignRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/QuotasAssignResponse'
        '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'
      security:
        - BearerAuth: []
  /quotas/unassign:
    post:
      tags:
        - Quotas
      summary: Remove organization quotas
      operationId: unassignOrganizationsQuotas
      description: >-
        This operation recieves a list of organization IDs to remove their
        current quota. To use this endpoint, you need the `Edit organization and
        account group quotas` permission, which is a management-level
        permission.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuotasUnassign'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /quotas/account-groups/assign:
    post:
      tags:
        - Quotas
      summary: Create or update accout group quotas
      operationId: assignOrganizationsAccountGroupsQuotas
      description: >-
        This operation assigns quota values to multiple account groups across
        multiple organizations. To use this endpoint, you need the `Edit
        organization and account group quotas` permission, which is a
        management-level permission. This operation follows a cumulative
        behavior––This means that the quotas are assigned to the designated
        account groups, and any previous assignments remain in place without any
        unassignment occurring.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationsQuotasAssign'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/OrganizationsQuotasAssign'
        '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'
      security:
        - BearerAuth: []
  /quotas/account-groups/unassign:
    post:
      tags:
        - Quotas
      summary: Remove account group quotas from organizations
      operationId: unassignOrganizationsAccountGroupsQuotas
      description: >-
        This operation removes quotas from multiple account groups across
        multiple organizations. To use this endpoint, you need the `Edit
        organization and account group quotas` permission, which is a
        management-level permission.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationsQuotasUnassign'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      security:
        - BearerAuth: []
  /tests/{testId}/snapshot:
    post:
      tags:
        - Test Snapshots
      summary: Create test snapshot
      description: >
        This operation creates a test snapshot based on the properties provided
        in the POST data.


        * To use this endpoint, you need the `Create snapshot shares`
        permission.

        * You can create a maximum of 5 snapshots per organization within a
        5-minute interval.

        * Snapshots generated through this operation have a 30-day expiration
        period.

        * The time range specified with the `from` and `to` parameters must
        adhere to one of the following intervals: 1, 2, 4, 6, 12, 24, or 48
        hours.

        * The `endDate` field of the snapshot must be set to the present or a
        past date.

        * Certain regions may not have public snapshots enabled for compliance
        reasons. In that case you will get a 403 Forbidden as a response.


        **Note**: This operation does not support the creation of operation
        Agent snapshots.
      operationId: createTestSnapshot
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SnapshotRequest'
      responses:
        '201':
          description: Created
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/SnapshotResponse'
        '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'
      security:
        - BearerAuth: []
  /stream:
    get:
      operationId: getStreams
      tags:
        - Streaming
      summary: List data streams
      description: Retrieves a list of configured data streams.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - name: type
          in: query
          description: >-
            Optional filter on type of Stream; should match one of Stream `type`
            enum
          required: false
          schema:
            $ref: '#/components/schemas/StreamType'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/StreamCollection'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          $ref: '#/components/responses/401'
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '429':
          description: Too Many Requests
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - BearerAuth: []
    post:
      tags:
        - Streaming
      summary: Create data stream
      operationId: createStream
      description: Creates a new data stream.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '201':
          description: item created
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/CreateStreamResponse'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          $ref: '#/components/responses/401'
        '409':
          description: An existing item already exists
        '412':
          description: >-
            Reached limit on number of streams (maximum 5 data streams per
            account group)
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiErrorIntegrationLimits'
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Stream'
        description: Stream to configure
      security:
        - BearerAuth: []
  /stream/{id}:
    get:
      operationId: getStream
      tags:
        - Streaming
      summary: Retrieve data stream
      description: Retrieves a configured data stream using its ID.
      parameters:
        - name: id
          in: path
          description: ID of stream to query
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/AccountGroupId'
        - name: type
          in: query
          description: >-
            Optional filter on type of Stream; should match one of Stream `type`
            enum
          required: false
          schema:
            $ref: '#/components/schemas/StreamType'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/GetStreamResponse'
        '401':
          $ref: '#/components/responses/401'
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '429':
          description: Too Many Requests
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - BearerAuth: []
    put:
      operationId: updateStream
      tags:
        - Streaming
      summary: Update data stream
      description: >-
        Updates a configured data stream using its ID. The fields are
        overwritten, not appended.
      parameters:
        - name: id
          in: path
          description: ID of stream to query
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: Stream updated
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/GetStreamResponse'
        '204':
          $ref: '#/components/responses/204'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          $ref: '#/components/responses/401'
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '429':
          description: Too Many Requests
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutStream'
      security:
        - BearerAuth: []
    delete:
      operationId: deleteStream
      tags:
        - Streaming
      summary: Delete a data stream
      description: Deletes a configured data stream using its ID.
      parameters:
        - name: id
          in: path
          description: ID of stream to query
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '429':
          description: Too Many Requests
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - BearerAuth: []
  /tests/{testId}/run:
    post:
      tags:
        - Instant Tests
      summary: Run instant test
      operationId: runInstantTest
      description: Run an existing instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - name: testId
          in: path
          description: Identifier for the instant test you wish to rerun.
          required: true
          schema:
            type: string
            example: '105'
      responses:
        '200':
          description: OK
        '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'
      security:
        - BearerAuth: []
  /tests/agent-to-agent/instant:
    post:
      tags:
        - Agent to Agent Instant Tests
      summary: Create agent-to-agent instant test
      operationId: createAgentToAgentInstantTest
      description: Creates and runs a new agent-to-agent instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentToAgentInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentToAgentInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/agent-to-server/instant:
    post:
      tags:
        - Agent to Server Instant Tests
      summary: Create agent-to-server instant test
      operationId: createAgentToServerInstantTest
      description: Creates and runs a new agent-to-server instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentToServerInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentToServerInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/dns-server/instant:
    post:
      tags:
        - DNS Server Instant Tests
      summary: Create DNS server instant test
      operationId: createDnsServerInstantTest
      description: Creates and runs a new DNS server instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DnsServerInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsServerInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/dns-trace/instant:
    post:
      tags:
        - DNS Trace Instant Tests
      summary: Create DNS trace instant test
      operationId: createDnsTraceInstantTest
      description: Creates and runs a new DNS trace instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DnsTraceInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsTraceInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/dnssec/instant:
    post:
      tags:
        - DNSSEC Instant Tests
      summary: Create DNSSEC instant test
      operationId: createDnsSecInstantTest
      description: Creates and runs a new DNSSEC instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DnsSecInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsSecInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/http-server/instant:
    post:
      tags:
        - HTTP Server Instant Tests
      summary: Create HTTP server instant test
      operationId: createHttpServerInstantTest
      description: Creates and runs a new HTTP server instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HttpServerInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/HttpServerInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/page-load/instant:
    post:
      tags:
        - HTTP Page Load Instant Tests
      summary: Create HTTP page load instant test
      operationId: createPageLoadInstantTest
      description: Creates and runs a new HTTP page load instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PageLoadInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PageLoadInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/web-transactions/instant:
    post:
      tags:
        - Web Transaction Instant Tests
      summary: Create web transactions instant test
      operationId: createWebTransactionInstantTest
      description: Creates and runs a new Web transactions instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebTransactionInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/WebTransactionInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/api/instant:
    post:
      tags:
        - API Instant Tests
      summary: Create API instant test
      operationId: createApiInstantTest
      description: Creates and runs a new API instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/ftp-server/instant:
    post:
      tags:
        - FTP Server Instant Tests
      summary: Create FTP server instant test
      operationId: createFtpServerInstantTest
      description: Creates and runs a new FTP server instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FtpServerInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/FtpServerInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/sip-server/instant:
    post:
      tags:
        - SIP Server Instant Tests
      summary: Create SIP server instant test
      operationId: createSipServerInstantTest
      description: Creates and runs a new SIP server instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SipServerInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/SipServerInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/voice/instant:
    post:
      tags:
        - Voice Instant Tests
      summary: Create voice instant test
      operationId: createVoiceInstantTest
      description: Creates and runs a voice instant test.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandInstantTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoiceInstantTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/VoiceInstantTestResponse'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/network:
    get:
      tags:
        - Network Test Results
      summary: Get network test results
      description: >
        Returns network test results for every agent and round. If you do not
        specify a window or a start and end date, data is displayed for the most
        recent testing round.
      operationId: getTestNetworkResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
        - $ref: '#/components/parameters/Direction'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/NetworkTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/path-vis:
    get:
      tags:
        - Network Test Results
      summary: Get path visualization network test results
      description: >
        Returns a summary of the path trace data collected during path
        visualization for a given time range. With each attempt, three tries are
        made to reach the destination. The entire path is displayed in order. If
        you do not specify a window or a start and end date, data is displayed
        for the most recent testing round. 


        Bidirectional agent-to-agent tests also support the `direction`
        parameter. For example, if agents A, B, and C are testing agent D
        bidirectionally, and you want results from the route from agent A to
        agent D, you can use the query `direction=to-target`. For results from
        agent D to agent A, you can use `direction=from-target`. To get both
        results for both routes, query without the direction parameter. The
        source will always be agent A and the destination will be agent D, but
        the direction field will indicate which trace direction you want test
        results from.
      operationId: getTestPathVisResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
        - $ref: '#/components/parameters/PathVisDirection'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PathVisTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/path-vis/agent/{agentId}/round/{roundId}:
    get:
      tags:
        - Network Test Results
      summary: Get path visualization test results by agent and round
      description: >
        Returns a summary of the path trace data collected during path
        visualization for a given agent and round. With each attempt, three
        tries are made to reach the destination. The entire path is displayed in
        order.


        Bidirectional agent-to-agent tests also support the `direction`
        parameter. For example, if agents A, B, and C are testing agent D
        bidirectionally, and you want results from the route from agent A to
        agent D, you can use the query `direction=to-target`. For results from
        agent D to agent A, you can use `direction=from-target`. To get both
        results for both routes, query without the direction parameter. The
        source will always be agent A and the destination will be agent D, but
        the direction field will indicate which trace direction you want test
        results from.
      operationId: getTestPathVisAgentRoundResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AgentIdPath'
        - $ref: '#/components/parameters/RoundIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/PathVisDirection'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PathVisDetailTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/http-server:
    get:
      tags:
        - Web HTTP Server Test Results
      summary: Get HTTP server test results
      description: >
        Returns results for requests made over HTTP. Components include DNS,
        Connect, Wait, Receive, and Fetch.
      operationId: getTestHttpServerResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
        - $ref: '#/components/parameters/HttpServerExpand'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/HttpTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/page-load:
    get:
      tags:
        - Web Page Load Test Results
      summary: Get page load server test results
      description: >
        Returns results for page load server tests with a focus on page load
        times and DOM for a web page.
      operationId: getTestPageLoadResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PageLoadTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/page-load/agent/{agentId}/round/{roundId}:
    get:
      tags:
        - Web Page Load Test Results
      summary: Get page load server test results by agent and round
      description: >
        Returns test results for a given agent and round in [HAR (http
        archive)](http://www.softwareishard.com/blog/har-12-spec/) format. These
        results contain a list of components and their load times in a page load
        test, similar to the waterfall view for a page load test.
      operationId: getTestPageLoadAgentRoundResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AgentIdPath'
        - $ref: '#/components/parameters/RoundIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PageLoadDetailTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/web-transactions:
    get:
      tags:
        - Web Transactions Test Results
      summary: Get web transactions test results
      description: >
        Returns test results for web transactions. If you do not specify a
        window or a start and end date, data is displayed for the most recent
        testing round.
      operationId: getTestWebTransactionResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/WebTransactionTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/web-transactions/agent/{agentId}/round/{roundId}:
    get:
      tags:
        - Web Transactions Test Results
      summary: Get web transactions test results by agent and round
      description: |
        Returns test results for web transactions for a given agent and round.
      operationId: getTestWebTransactionAgentRoundResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AgentIdPath'
        - $ref: '#/components/parameters/RoundIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/WebTransactionDetailTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/web-transactions/agent/{agentId}/round/{roundId}/page/{pageId}:
    get:
      tags:
        - Web Transactions Test Results
      summary: Get detailed web transactions test result by agent, round, and page
      description: |
        Returns a page of web transaction test results for an agent and round.
      operationId: getTestWebTransactionAgentRoundPageResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AgentIdPath'
        - $ref: '#/components/parameters/RoundIdPath'
        - $ref: '#/components/parameters/PageIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/WebTransactionPageDetailTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/api:
    get:
      tags:
        - API Test Results
      summary: Get API test results
      description: >
        Returns test results for API. If you do not specify a window or a start
        and end date, data is displayed for the most recent testing round.
      operationId: getTestApiResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/api/agent/{agentId}/round/{roundId}:
    get:
      tags:
        - API Test Results
      summary: Get API test results by agent and round
      description: |
        Returns test results for API for a given agent and round.
      operationId: getTestApiAgentRoundResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AgentIdPath'
        - $ref: '#/components/parameters/RoundIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiDetailTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/ftp-server:
    get:
      tags:
        - Web FTP Server Test Results
      summary: Get FTP server test results
      description: >
        Returns test results for FTP server requests. If you do not specify a
        window or a start and end date, data is displayed for the most recent
        testing round.
      operationId: getTestFtpServerResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/FtpServerTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/dns-trace:
    get:
      tags:
        - DNS Trace Test Results
      summary: Get DNS trace test results
      description: >
        Returns a DNS record from the requesting agent's point of view. This is
        similar to dig +trace.
      operationId: getTestDnsTraceResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsTraceTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/dns-server/{serverId}:
    get:
      tags:
        - DNS Server Test Results
      summary: Get DNS server test results by server
      description: >
        Returns mappings for a DNS record and resolution time to the specified
        server, measured from the requesting agent's point of view. This is
        similar to dig @server.
      operationId: getTestDnsServerResult
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/ServerIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsServerTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/dns-server:
    get:
      tags:
        - DNS Server Test Results
      summary: Get DNS server test results
      description: >
        Returns the mappings for a DNS record, along with the resolution time to
        each authoritative server, measured from the agent's point of view.
        Similar to dig @server.
      operationId: getTestDnsServersResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsServerTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/dnssec:
    get:
      tags:
        - DNSSEC Test Results
      summary: Get DNSSEC test results
      description: >
        Returns the keychain validity for a record on a domain secured using
        DNSSEC extensions.
      operationId: getTestDnsSecResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnssecTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/sip-server:
    get:
      tags:
        - Voice SIP Server Test Results
      summary: Get SIP server test results
      description: >
        Returns Voice SIP server test results. It returns data for each agent
        and each `roundId` within the selected time frame. If you do not specify
        a window or a start and end date, data is displayed for the most recent
        testing round.
      operationId: getTestSipServerResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/SipServerTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/rtp-server:
    get:
      tags:
        - Voice RTP Server Test Results
      summary: Retrieve RTP server test metrics
      description: >
        Returns Voice RTP server test results. If you do not specify a window or
        a start and end date, data is displayed for the most recent testing
        round.
      operationId: getTestRtpServerResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/RtpStreamTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/bgp:
    get:
      tags:
        - Network BGP Test Results
      summary: Get BGP test results
      description: >
        Returns a list of BGP monitors actively monitoring the destination's
        target prefix. This list includes information about the prefix, its
        associated AS Number, and provides details regarding reachability, path
        updates, and any changes in the path for the target network.
      operationId: getTestBgpResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/Window'
        - $ref: '#/components/parameters/StartDateParameter'
        - $ref: '#/components/parameters/EndDateParameter'
        - $ref: '#/components/parameters/PaginationCursor'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/BgpTestResults'
        '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'
      security:
        - BearerAuth: []
  /test-results/{testId}/bgp/routes/prefix/{prefixId}/round/{roundId}:
    get:
      tags:
        - Network BGP Test Results
      summary: Get BGP route test results by prefix
      description: >
        Returns an ordered list of networks crossed by a particular network
        prefix, including assigned monitors for the test and the paths taken to
        reach the destination. This is similar to revealing ASPath details found
        in a BGP Routing Information Base (rib) dump.
      operationId: getTestBgpRoutesPrefixRoundResults
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/PrefixIdPath'
        - $ref: '#/components/parameters/RoundIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/BgpTestRouteInformationResults'
        '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'
      security:
        - BearerAuth: []
  /tests:
    get:
      tags:
        - Tests
      summary: List configured tests
      operationId: getTests
      description: Returns configured tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/Tests'
        '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'
      security:
        - BearerAuth: []
  /tests/bgp:
    get:
      tags:
        - BGP Tests
      summary: List BGP tests
      operationId: getBgpTests
      description: Returns a list of BGP tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/BgpTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - BGP Tests
      summary: Create BGP test
      operationId: createBgpTest
      description: Creates a new BGP test. This method requires Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandBgpTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BgpTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/BgpTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/bgp/{testId}:
    get:
      tags:
        - BGP Tests
      summary: Get BGP test
      operationId: getBgpTest
      description: >-
        Returns details for a BGP test, including name, intervals, targets,
        alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandBgpTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/BgpTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - BGP Tests
      summary: Update BGP test
      operationId: updateBgpTest
      description: >-
        Updates a BGP test. This method requires Account Admin permissions. The
        target test cannot be a live share or saved event.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandBgpTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBgpTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/BgpTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - BGP Tests
      summary: Delete BGP test
      operationId: deleteBgpTest
      description: Deletes a BGP test. This method requires Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/agent-to-server:
    get:
      tags:
        - Agent to Server Tests
      summary: List Agent to Server tests
      operationId: getAgentToServerTests
      description: Returns a list of Agent to Server tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentToServerTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Agent to Server Tests
      summary: Create Agent to Server test
      operationId: createAgentToServerTest
      description: >-
        Creates a new Agent to Server test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentToServerTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentToServerTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/agent-to-server/{testId}:
    get:
      tags:
        - Agent to Server Tests
      summary: Get Agent to Server test
      operationId: getAgentToServerTest
      description: >-
        Returns details for a Agent to Server test, including name, intervals,
        targets, alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentToServerTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Agent to Server Tests
      summary: Update Agent to Server test
      operationId: updateAgentToServerTest
      description: >-
        Updates an Agent to Server test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentToServerTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentToServerTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Agent to Server Tests
      summary: Delete Agent to Server test
      operationId: deleteAgentToServerTest
      description: >-
        Deletes an Agent to Server test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/agent-to-agent:
    get:
      tags:
        - Agent to Agent Tests
      summary: List Agent to Agent tests
      operationId: getAgentToAgentTests
      description: Returns a list of Agent to Agent tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentToAgentTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Agent to Agent Tests
      summary: Create Agent to Agent test
      operationId: createAgentToAgentTest
      description: >-
        Creates a new Agent to Agent test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentToAgentTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentToAgentTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/agent-to-agent/{testId}:
    get:
      tags:
        - Agent to Agent Tests
      summary: Get Agent to Agent test
      operationId: getAgentToAgentTest
      description: >-
        Returns details for a Agent to Agent test, including name, intervals,
        targets, alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentToAgentTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Agent to Agent Tests
      summary: Update Agent to Agent test
      operationId: updateAgentToAgentTest
      description: >-
        Updates a Agent to Agent test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentToAgentTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/AgentToAgentTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Agent to Agent Tests
      summary: Delete Agent to Agent test
      operationId: deleteAgentToAgentTest
      description: >-
        Deletes the specified Agent to Agent test. This method requires Account
        Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/dns-server:
    get:
      tags:
        - DNS Server Tests
      summary: List DNS Server tests
      operationId: getDnsServerTests
      description: Returns a list of all DNS Server tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsServerTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - DNS Server Tests
      summary: Create DNS Server test
      operationId: createDnsServerTest
      description: >-
        Creates a new DNS Server test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DnsServerTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsServerTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/dns-server/{testId}:
    get:
      tags:
        - DNS Server Tests
      summary: Get DNS Server test
      operationId: getDnsServerTest
      description: >-
        Returns details for a DNS Server test, including name, intervals,
        targets, alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsServerTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - DNS Server Tests
      summary: Update DNS Server test
      operationId: updateDnsServerTest
      description: >-
        Updates a DNS Server test. The target test cannot be a live share or
        saved event. This method requires Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DnsServerTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsServerTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - DNS Server Tests
      summary: Delete DNS Server test
      operationId: deleteDnsServerTest
      description: >-
        Deletes the specified DNS Server test. This method requires Account
        Admin permissions. 
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/dns-trace:
    get:
      tags:
        - DNS Trace Tests
      summary: List DNS Trace tests
      operationId: getDnsTraceTests
      description: Returns a list of all DNS Trace tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsTraceTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - DNS Trace Tests
      summary: Create DNS Trace test
      operationId: createDnsTraceTest
      description: >-
        Creates a new DNS Trace test. This method requires Account Admin
        permissions. 
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DnsTraceTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsTraceTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/dns-trace/{testId}:
    get:
      tags:
        - DNS Trace Tests
      summary: Get DNS Trace test
      operationId: getDnsTraceTest
      description: >-
        Returns details for a DNS Trace test, including name, intervals,
        targets, alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsTraceTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - DNS Trace Tests
      summary: Update DNS Trace test
      operationId: updateDnsTraceTest
      description: >-
        Updates a DNS Trace test. The target test cannot be a live share or
        saved event. This method requires Account Admin permissions. 
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DnsTraceTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsTraceTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - DNS Trace Tests
      summary: Delete DNS Trace test
      operationId: deleteDnsTraceTest
      description: >-
        Deletes the specified DNS Trace test. This method requires Account Admin
        permissions. 
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/dnssec:
    get:
      tags:
        - DNSSEC Tests
      summary: List DNSSEC tests
      operationId: getDnsSecTests
      description: Returns a list of all DNSSEC tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsSecTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - DNSSEC Tests
      summary: Create DNSSEC test
      operationId: createDnsSecTest
      description: >-
        Creates a new DNSSEC test. This method requires Account Admin
        permissions. 
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DnsSecTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsSecTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/dnssec/{testId}:
    get:
      tags:
        - DNSSEC Tests
      summary: Get DNSSEC test
      operationId: getDnsSecTest
      description: >-
        Returns details for a DNSSEC test, including name, intervals, targets,
        alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsSecTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - DNSSEC Tests
      summary: Update DNSSEC test
      operationId: updateDnsSecTest
      description: >-
        Updates a DNSSEC test. The target test cannot be a live share or saved
        event. This method requires Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DnsSecTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/DnsSecTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - DNSSEC Tests
      summary: Delete DNSSEC test
      operationId: deleteDnsSecTest
      description: >-
        Deletes the specified DNSSEC test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/http-server:
    get:
      tags:
        - HTTP Server Tests
      summary: List HTTP Server tests
      operationId: getHttpServerTests
      description: Returns a list of all HTTP Server tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/HttpServerTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - HTTP Server Tests
      summary: Create HTTP Server test
      operationId: createHttpServerTest
      description: >-
        Creates a new HTTP Server test. This method requires Account Admin
        permissions. 
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HttpServerTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/HttpServerTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/http-server/{testId}:
    get:
      tags:
        - HTTP Server Tests
      summary: Get HTTP Server test
      operationId: getHttpServerTest
      description: >-
        Returns details for a HTTP Server test, including name, intervals,
        targets, alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/HttpServerTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - HTTP Server Tests
      summary: Update HTTP Server test
      operationId: updateHttpServerTest
      description: >-
        Updates a HTTP Server test. The target test cannot be a live share or
        saved event. This method requires Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HttpServerTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/HttpServerTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - HTTP Server Tests
      summary: Delete HTTP Server test
      operationId: deleteHttpServerTest
      description: >-
        Deletes the specified HTTP Server test. This method requires Account
        Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/page-load:
    get:
      tags:
        - Page Load Tests
      summary: List Page Load tests
      operationId: getPageLoadTests
      description: Returns a list of all Page Load tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PageLoadTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Page Load Tests
      summary: Create Page Load test
      operationId: createPageLoadTest
      description: >-
        Creates a new Page Load test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PageLoadTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PageLoadTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/page-load/{testId}:
    get:
      tags:
        - Page Load Tests
      summary: Get Page Load test
      operationId: getPageLoadTest
      description: >-
        Returns details for a Page Load test, including name, intervals,
        targets, alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PageLoadTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Page Load Tests
      summary: Update Page Load test
      operationId: updatePageLoadTest
      description: >-
        Updates a Page Load test. The target test cannot be a live share or
        saved event. This method requires Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PageLoadTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/PageLoadTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Page Load Tests
      summary: Delete Page Load test
      operationId: deletePageLoadTest
      description: >-
        Deletes the specified Page Load test. This method requires Account Admin
        permissions. 
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/web-transactions:
    get:
      tags:
        - Web Transaction Tests
      summary: List Web Transactions tests
      operationId: getWebTransactionsTests
      description: Returns a list of all Web Transactions tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/WebTransactionTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Web Transaction Tests
      summary: Create Web Transactions test
      operationId: createWebTransactionsTest
      description: >-
        Creates a new Web Transactions test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebTransactionTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/WebTransactionTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/web-transactions/{testId}:
    get:
      tags:
        - Web Transaction Tests
      summary: Get Web Transactions test
      operationId: getWebTransactionsTest
      description: >-
        Returns details for a Web Transactions test, including name, intervals,
        targets, alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/WebTransactionTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Web Transaction Tests
      summary: Update Web Transactions test
      operationId: updateWebTransactionsTest
      description: >-
        Updates a Web Transactions test. The target test cannot be a live share
        or saved event. This method requires Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebTransactionTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/WebTransactionTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Web Transaction Tests
      summary: Delete Web Transactions test
      operationId: deleteWebTransactionsTest
      description: >-
        Deletes the specified Web Transactions test. This method requires
        Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/api:
    get:
      tags:
        - API Tests
      summary: List API tests
      operationId: getApiTests
      description: Returns a list of all API tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - API Tests
      summary: Create API test
      operationId: createApiTest
      description: Creates a new API test. This method requires Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/api/{testId}:
    get:
      tags:
        - API Tests
      summary: Get API test
      operationId: getApiTest
      description: >-
        Returns details for a API test configuration. Please use `expand`
        parameter to access sub-resources such as alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - API Tests
      summary: Update API test
      operationId: updateApiTest
      description: >-
        Updates an API test. The target test cannot be a live share or saved
        event. This method requires write permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - API Tests
      summary: Delete API test
      operationId: deleteApiTest
      description: Deletes the specified API test. This method requires write permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/ftp-server:
    get:
      tags:
        - FTP Server Tests
      summary: List FTP Server tests
      operationId: getFtpServerTests
      description: Returns a list of FTP Server tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/FtpServerTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - FTP Server Tests
      summary: Create FTP Server test
      operationId: createFtpServerTest
      description: >-
        Creates a new FTP Server test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FtpServerTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/FtpServerTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/ftp-server/{testId}:
    get:
      tags:
        - FTP Server Tests
      summary: Get FTP Server test
      operationId: getFtpServerTest
      description: >-
        Returns details for a FTP Server test, including name, intervals,
        targets, alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/FtpServerTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - FTP Server Tests
      summary: Update FTP Server test
      operationId: updateFtpServerTest
      description: >-
        Updates a FTP Server test. The target test cannot be a live share or
        saved event. This method requires Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FtpServerTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/FtpServerTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - FTP Server Tests
      summary: Delete FTP Server test
      operationId: deleteFtpServerTest
      description: >-
        Deletes the specified FTP Server test. This method requires Account
        Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/sip-server:
    get:
      tags:
        - SIP Server Tests
      summary: List SIP Server tests
      operationId: getSipServerTests
      description: Returns a list of SIP Server tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/SipServerTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - SIP Server Tests
      summary: Create SIP Server test
      operationId: createSipServerTest
      description: >-
        Creates a new SIP Server test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SipServerTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/SipServerTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/sip-server/{testId}:
    get:
      tags:
        - SIP Server Tests
      summary: Get SIP Server test
      operationId: getSipServerTest
      description: >-
        Returns details for a SIP Server test, including name, intervals,
        targets, alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/SipServerTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - SIP Server Tests
      summary: Update SIP Server test
      operationId: updateSipServerTest
      description: >-
        Updates a SIP Server test. The target test cannot be a live share or
        saved event. This method requires Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SipServerTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/SipServerTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - SIP Server Tests
      summary: Delete SIP Server test
      operationId: deleteSipServerTest
      description: >-
        Deletes the specified SIP Server test. This method requires Account
        Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /tests/voice:
    get:
      tags:
        - Voice Tests
      summary: List Voice tests
      operationId: getVoiceTests
      description: Returns a list of Voice tests and saved events.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/VoiceTests'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Voice Tests
      summary: Create Voice test
      operationId: createVoiceTest
      description: >-
        Creates a new Voice test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoiceTestRequest'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/VoiceTestResponse'
        '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'
      security:
        - BearerAuth: []
  /tests/voice/{testId}:
    get:
      tags:
        - Voice Tests
      summary: Get Voice test
      operationId: getVoiceTest
      description: >-
        Returns details for a Voice test, including name, intervals, targets,
        alert rules and agents.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/VoiceTestResponse'
        '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'
      security:
        - BearerAuth: []
    put:
      tags:
        - Voice Tests
      summary: Update Voice test
      operationId: updateVoiceTest
      description: >-
        Updates a Voice test. The target test cannot be a live share or saved
        event. This method requires Account Admin permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
        - $ref: '#/components/parameters/ExpandTest'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoiceTestRequest'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/VoiceTestResponse'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Voice Tests
      summary: Delete Voice test
      operationId: deleteVoiceTest
      description: >-
        Deletes the specified Voice test. This method requires Account Admin
        permissions.
      parameters:
        - $ref: '#/components/parameters/TestIdPath'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
  /network/path-vis/interface-groups:
    get:
      tags:
        - Path Visualization Interface Groups
      summary: List interface groups for path visualization
      operationId: getPathVisInterfaceGroups
      description: >-
        Returns a list of all path visualization interface groups. For more
        information about interface groups, see
        https://docs.thousandeyes.com/product-documentation/end-user-monitoring/viewing-data/endpoint-agent-views-reference#grouping.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/InterfaceGroups'
        '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'
      security:
        - BearerAuth: []
    post:
      tags:
        - Path Visualization Interface Groups
      summary: Create interface group for path visualization
      operationId: createPathVisInterfaceGroups
      description: Creates a new path visualization interface group.
      parameters:
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InterfaceGroup'
      responses:
        '201':
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/InterfaceGroup'
        '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'
      security:
        - BearerAuth: []
  /network/path-vis/interface-groups/{interfaceGroupId}:
    put:
      tags:
        - Path Visualization Interface Groups
      summary: Update interface group
      operationId: updatePathVisInterfaceGroup
      description: Updates a path visualization interface group..
      parameters:
        - $ref: '#/components/parameters/InterfaceGroupId'
        - $ref: '#/components/parameters/AccountGroupId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InterfaceGroup'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/InterfaceGroup'
        '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'
      security:
        - BearerAuth: []
    delete:
      tags:
        - Path Visualization Interface Groups
      summary: Delete interface group
      operationId: deletePathVisInterfaceGroup
      description: Deletes a path visualization interface group.
      parameters:
        - $ref: '#/components/parameters/InterfaceGroupId'
        - $ref: '#/components/parameters/AccountGroupId'
      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'
      security:
        - BearerAuth: []
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Bearer authentication token
  parameters:
    RoleId:
      name: id
      description: The ID of the desired role.
      required: true
      in: path
      schema:
        type: string
        example: '23'
    ExpandAccountGroup:
      name: expand
      in: query
      style: form
      explode: false
      description: >-
        Optional parameter that specifies whether or not account group related
        resources should be expanded. By default, no expansion takes place if
        the query parameter is not passed. For example, to expand the `users`
        resource, pass the `?expand=user` query.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandAccountGroupOptions'
        example:
          - user
    AccountGroupIdPath:
      name: id
      description: Identifier for the account group.
      required: true
      in: path
      schema:
        type: string
        example: '1234'
    AccountGroupId:
      name: aid
      in: query
      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.
      required: false
      schema:
        type: string
        example: '1234'
    UserIdPath:
      name: id
      description: Identifier for the user.
      required: true
      in: path
      schema:
        type: string
        example: '1234'
    UseAllPermittedAids:
      name: useAllPermittedAids
      in: query
      required: false
      description: Set to `true` to load data from all accounts the user has access to.
      schema:
        type: boolean
        example: false
        default: false
    Window:
      name: window
      in: query
      description: >-
        A dynamic time interval up to the current time of the request. Specify
        the interval as a number followed by an optional type: `s` for seconds
        (default if no type is specified), `m` for minutes, `h` for hours, `d`
        for days, and `w` for weeks.

        For a precise date range, use `startDate` and `endDate`.
      schema:
        type: string
        pattern: ^\d+(?:[smhdw]{1})?$
        example: 12h
    StartDateParameter:
      name: startDate
      in: query
      description: >-
        Use with the `endDate` parameter. Include the complete time (hours,
        minutes, and seconds) in UTC time zone, following the ISO 8601 date-time
        format. See the example for reference. Please note that this parameter
        can't be used with `window`.
      schema:
        type: string
        format: date-time
        example: '2022-07-17T22:00:54Z'
    EndDateParameter:
      name: endDate
      in: query
      description: >-
        Defaults to current time the request is made. Use with the `startDate`
        parameter. Include the complete time (hours, minutes, and seconds) in
        UTC time zone, following the ISO 8601 date-time format. See the example
        for reference. Please note that this parameter can't be used with
        `window`.
      schema:
        type: string
        format: date-time
        example: '2022-07-18T22:00:54Z'
    PaginationCursor:
      name: cursor
      in: query
      example: null
      description: >-
        (Optional) Opaque cursor used for pagination. Clients should use `next`
        value from `_links` instead of this parameter.
      schema:
        type: string
        example: null
    AgentId:
      name: agentId
      in: path
      description: Unique ID for the agent.
      example: '281474976710706'
      required: true
      schema:
        type: string
    AssignAgentId:
      name: agentId
      in: path
      description: Unique ID for the Enterprise Agent cluster to add new agents to.
      example: '281474976710706'
      required: true
      schema:
        type: string
    UnassignAgentId:
      name: agentId
      in: path
      description: Unique ID for the Enterprise Agent cluster to remove agents from.
      example: '281474976710706'
      required: true
      schema:
        type: string
    NotificationRuleId:
      name: notificationRuleId
      in: path
      description: Unique ID for the agent notification rule.
      example: '281474976710706'
      required: true
      schema:
        type: string
    ExpandAgent:
      name: expand
      in: query
      style: form
      explode: false
      description: >-
        Optional parameter, off by default. Indicates which agent sub-resource
        to expand. For example, if you wish to expand the `clusterMembers`
        sub-resource, pass the `?expand=cluster-member` query.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/AgentListExpand'
        example:
          - cluster-member
    ExpandAgentDetails:
      name: expand
      in: query
      style: form
      explode: false
      description: >-
        Optional parameter, off by default. Indicates which agent sub-resource
        to expand. For example, if you wish to expand the `clusterMembers`
        sub-resource, pass the `?expand=cluster-member` query.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/AgentDetailsExpand'
        example:
          - cluster-member
    AgentTypes:
      name: agentTypes
      in: query
      style: form
      explode: false
      description: Specifies the type of agent to request.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/CloudEnterpriseAgentType'
        example:
          - enterprise
    AlertId:
      name: alertId
      in: path
      description: Unique alert ID.
      example: e9c3bf02-a48c-4aa8-9e5f-898800d6f569
      required: true
      schema:
        type: string
        format: uuid
    RuleId:
      name: ruleId
      in: path
      description: Unique alert rule ID.
      example: '127094'
      required: true
      schema:
        type: string
    WindowId:
      name: windowId
      in: path
      description: Unique window ID.
      example: '2411'
      required: true
      schema:
        type: string
    ExpandAlert:
      name: expand
      in: query
      style: form
      explode: false
      description: >-
        Optional parameter on whether or not to expand alert related resources. 
        Without this parameter, there's no default expansion. For example, to
        expand the "tests" resource, use the `?expand=test` query.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandAlertTestOptions'
        example:
          - test
    State:
      name: state
      in: query
      style: form
      required: false
      explode: false
      description: >-
        Optional parameter to match a specific alert state. If not specified, it
        defaults to `trigger`.
      schema:
        allOf:
          - $ref: '#/components/schemas/State'
          - example: trigger
    PaginationMax:
      name: max
      in: query
      description: (Optional) Maximum number of objects to return.
      schema:
        type: integer
        example: 5
    CredentialId:
      name: id
      description: The ID of the desired credential.
      required: true
      in: path
      schema:
        type: string
        example: '3247'
    DashboardIdPath:
      name: dashboardId
      required: true
      in: path
      description: >-
        A Identifier for a dashboard which can be obtained from the
        `/dashboards` endpoint.
      schema:
        type: string
      example: 646f4d2ce3c99b0536c3821e
    WidgetId:
      name: widgetId
      required: true
      in: path
      description: A Identifier for a widget.
      schema:
        type: string
      example: unpmg
    SnapshotIdPath:
      name: snapshotId
      required: true
      in: path
      description: >-
        A Identifier for a dashboard snapshot which can be obtained from the
        `/dashboards-snapshots` endpoint.
      schema:
        type: string
      example: d28bb71f-5a47-4783-8f12-d4b115e61b0c
    DashboardCursor:
      name: cursor
      in: query
      description: >-
        An optional pagination cursor. This parameter should not not be used
        directly. Instead, use the `_links` returned by the API. This feature is
        only available in the **Test Table** widget.
      schema:
        type: string
      example: bGFzdFJvdW5kSWQ9MTY4MTQxMDQ4MA
    DashboardMax:
      name: max
      in: query
      description: >-
        Optionally specify the maximum number of objects to retrieve. This only
        applies to the **Alert List** and **Test Table** Widgets.

        * The default for the **Alert List** widget is set by its limitBy
        configuration.

        * The default value for the **Test Table** widget is 10.
      schema:
        type: number
      example: 10
    DashboardSort:
      name: sort
      in: query
      description: >-
        Optional sorting parameter with attributes listed comma-separated. This
        only applies to the **Alert List** and **Test Table** Widgets.

        * For the **Alert List** widget, you can sort by `alertStatus` or
        `startTime`. The default is `alertStatus`.

        * For the **Test Table** widget, you can sort by `alertStatus`,
        `testName`, or `testType`. The sequence might vary from the web
        application. The default sort attribute is `alertStatus`.
      schema:
        type: string
      example: alertStatus
    DashboardOrder:
      name: order
      in: query
      description: >-
        Optional sorting order parameter that accepts either `asc` (ascending)
        or `desc` (descending) values. This only applies to the **Alert List**
        and **Test Table** Widgets.
      schema:
        $ref: '#/components/schemas/DashboardOrder'
      example: asc
    DashboardFilterSearchPattern:
      in: query
      name: searchPattern
      description: >-
        Optional search pattern parameter to filter list of dashboard filters by
        either name or description values.
      required: false
      schema:
        type: string
        example: cea-filter
    DashboardFilterIdPath:
      name: id
      in: path
      required: true
      schema:
        type: string
      description: Unique dashboard filter ID.
      example: 65bc18e8f2073a4a469cd958
    ExpandEmulatedDevice:
      name: expand
      in: query
      description: >
        Optional query parameter that controls whether user-agent templates are
        included in the response.

        By default, user-agent templates are not included. To include them, add
        `?expand=user-agent` to the request.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandEmulatedDeviceOptions'
        example:
          - user-agent
    IncludeDeleted:
      name: includeDeleted
      in: query
      description: >-
        When requesting entities, set to `true` if you want to see deleted
        entities.
      example: false
      required: false
      schema:
        type: boolean
    EndpointAgentIdPath:
      name: agentId
      in: path
      required: true
      description: The identifier of the agent to operate on.
      schema:
        $ref: '#/components/schemas/EndpointAgentId'
    ExpandEndpointAgent:
      name: expand
      in: query
      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.

        To expand the "clients" resource, include the query parameter
        `?expand=clients`.


        For multiple expansions, you have two options:
          
        * Separate the values with commas. For example,
        `?expandAgent=clients,tasks`.

        * Specify the parameter multiple times. For example,
        `?expandAgent=clients&expandAgent=tasks`.


        This parameter offers flexibility for users to customize the expansion
        of specific resources related to the agent.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandEndpointAgentOptions'
      example:
        - clients
        - vpnProfiles
        - networkInterfaceProfiles
    LabelIdPath:
      name: id
      in: path
      required: true
      description: The unique identifier of the label to operate on.
      schema:
        $ref: '#/components/schemas/LabelId'
    ExpandLabel:
      name: expand
      in: query
      description: >-
        This parameter is optional and determines whether to include additional
        details in the response. To specify multiple expansions, you can either
        separate the values with commas or specify the parameter multiple times.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandLabelOptions'
      example:
        - filters
    NetworkTopologyIdPath:
      name: networkTopologyId
      description: The network topology ID.
      required: true
      in: path
      schema:
        type: string
        example: 00160:39c518560de9:1491651900:236e6f18
    IdPath:
      name: id
      description: The real user test id.
      required: true
      in: path
      schema:
        type: string
        example: 07625:1490529480:h3qJQTpl
    ExpandEndpointHttpServer:
      name: expand
      in: query
      style: form
      explode: false
      description: >-
        This parameter is optional and determines whether to expand resources
        related to test results. By default, no expansion occurs when this query
        parameter is omitted. To expand a specific resource, such as "header,"
        append `?expand=header` to the query.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandEndpointHttpServerOptions'
        example:
          - header
    ExpandLocalNetworkTopology:
      name: expand
      in: query
      style: form
      explode: false
      description: >-
        This parameter is optional and determines whether to expand resources
        related to local network topologies. By default, no expansion occurs
        when this query parameter is omitted. To expand a specific resource,
        such as `systemMetricDetails`, append  `?expand=system-metric-detail` to
        the query.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandLocalNetworkTopologyOptions'
        example:
          - system-metric-detail
    TestIdPath:
      name: testId
      description: Test ID
      required: true
      in: path
      schema:
        type: string
        example: '202701'
    AgentIdPath:
      name: agentId
      description: Agent ID
      required: true
      in: path
      schema:
        type: string
        example: '11'
    RoundIdPath:
      name: roundId
      description: Round ID
      required: true
      in: path
      schema:
        type: string
        example: '1384309800'
    PageIdPath:
      name: pageId
      description: Web page ID
      required: true
      in: path
      schema:
        type: string
        example: '281474976710706'
    TestId:
      name: testId
      in: path
      description: Unique ID of endpoint test.
      example: '584739201'
      required: true
      schema:
        type: string
    EventId:
      name: id
      in: path
      description: Unique event ID.
      example: e9c3bf02-a48c-4aa8-9e5f-898800d6f569
      required: true
      schema:
        type: string
        format: uuid
    ExpandTags:
      name: expand
      in: query
      description: Optional, to retrieve associated assignments
      required: false
      schema:
        example:
          - assignments
        items:
          $ref: '#/components/schemas/ExpandTagsOptions'
        type: array
      style: form
    TagIdPath:
      name: id
      in: path
      description: Tag ID
      required: true
      schema:
        type: string
      example: c6b78e57-81a2-4c5f-a11a-d96c3c664d55
    IdTemplate:
      name: id
      in: path
      description: The ID of the template
      required: true
      schema:
        maxLength: 36
        minLength: 10
        type: string
        format: uuid
        example: fcbb89a7-61cf-4616-9c4f-828fa3cb4684
    ExpandUsage:
      name: expand
      in: query
      style: form
      explode: false
      description: >-
        Expands the available resources. By default, no expansion takes place if
        the  `expand` query parameter is not passed. For example, to expand the
        "tests"  resource, pass the query '?expand=test'.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandUsageOptions'
        example:
          - test
    ExpandInstantTest:
      name: expand
      in: query
      description: >-
        (Optional) Indicates if the test sub-resources should be expanded.
        Defaults to no expansion. To expand the `agents` sub-resource, use the
        query `?expand=agent`.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandInstantTestOptions'
        example:
          - agent
    PrefixIdPath:
      name: prefixId
      description: >-
        The ID of the prefix. You can get `prefixId` from the
        `/test-results/{testId}/bgp` endpoint.
      required: true
      in: path
      schema:
        type: string
        example: '3789376546'
    ServerIdPath:
      name: serverId
      description: DNS server ID
      required: true
      in: path
      schema:
        type: string
        example: '281474976710706'
    HttpServerExpand:
      name: expand
      in: query
      style: form
      explode: false
      description: >-
        This parameter lets you decide if you want to see more details about
        test results. By default, no extra information is shown unless you use
        the query parameter. For instance, if you want more info about the
        "header," add ?expand=header to the query.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/Expand'
        example:
          - certificate
    Direction:
      name: direction
      in: query
      style: form
      description: >-
        Choose the direction for the metrics you want: [`from-target`,
        `to-target`, `bidirectional`]. This applies when you're doing
        bidirectional Agent-to-Agent tests. For bidirectional data, you'll get
        combined results; otherwise, you'll get data for one direction. If you
        try to get unidirectional test data with an incorrect direction
        parameter, it will trigger an error response.
      schema:
        $ref: '#/components/schemas/TestDirection'
    PathVisDirection:
      name: direction
      in: query
      style: form
      description: >-
        Choose the direction for the metrics you want: [`from-target`,
        `to-target`]. This applies when you're doing bidirectional
        Agent-to-Agent tests. Omitting the parameter will default the results to
        both `from-target` and `to-target` values (bidirectional); otherwise,
        you'll get data for one direction. If you try to get unidirectional test
        data with an incorrect direction parameter, it will trigger an error
        response.
      schema:
        $ref: '#/components/schemas/PathVisDirection'
    InterfaceGroupId:
      name: interfaceGroupId
      description: ID of the network path vis interface group
      required: true
      in: path
      schema:
        type: string
        example: '281474976710706'
    ExpandTest:
      name: expand
      in: query
      description: >-
        Optional parameter on whether or not to expand the test sub-resources.
        By default no expansion is going to take place if the query parameter is
        not present. If the user wishes to expand the `agents` sub-resource,
        they need to pass the `?expand=agent` query.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandTestOptions'
        example:
          - agent
          - monitor
    ExpandBgpTest:
      name: expand
      in: query
      description: >-
        Optional parameter on whether or not to expand the test sub-resources.
        By default no expansion takes place if the query parameter is not
        present. To expand the `monitors` sub-resource, pass the
        `?expand=monitor` query.
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/ExpandBgpTestOptions'
        example:
          - alert-rule
          - monitor
  schemas:
    ExpandAccountGroupOptions:
      type: string
      enum:
        - user
        - agent
    AccountGroupToken:
      type: string
      description: >-
        The account group token is an alphanumeric string used to bind an
        Enterprise Agent to a specific account group. This token is not a
        password that must be kept secret. You can retrieve your
        `AccountGroupToken` from the `/account-groups/{id}` endpoint.
      example: 6j052y4vfgyuhefghue
    AccountGroupInfo:
      allOf:
        - $ref: '#/components/schemas/AccountGroup'
        - type: object
          properties:
            isCurrentAccountGroup:
              type: boolean
              description: >-
                Indicates whether the requested aid is the context of the
                current account.
              example: true
            isDefaultAccountGroup:
              type: boolean
              description: >-
                Indicates whether the aid is the default one for the requesting
                user.
              example: true
            organizationName:
              type: string
              description: >-
                (Optional) The name of the organization associated with the
                account group.
            orgId:
              type: string
              description: >-
                (Optional) The ID for the organization associated with the
                account group.
              example: '12345'
    CreatedAccountGroup:
      allOf:
        - $ref: '#/components/schemas/AccountGroupInfo'
        - type: object
          properties:
            users:
              type: array
              items:
                $ref: '#/components/schemas/UserAccountGroup'
            _links:
              $ref: '#/components/schemas/SelfLinks'
    AccountGroupDetail:
      allOf:
        - $ref: '#/components/schemas/CreatedAccountGroup'
        - type: object
          properties:
            agents:
              type: array
              items:
                $ref: '#/components/schemas/EnterpriseAgent'
            accountToken:
              type: string
              $ref: '#/components/schemas/AccountGroupToken'
    AccountGroupRequest:
      type: object
      properties:
        accountGroupName:
          type: string
          description: The name of the account group
          example: My testing account group
        agents:
          type: array
          description: >-
            To grant access to enterprise agents, specify the agent list. Note
            that this is not an additive list - the full list must be specified
            if changing access to agents.
          items:
            type: string
          example:
            - '105'
            - '719'
      required:
        - accountGroupName
    AccountGroups:
      type: object
      properties:
        accountGroups:
          type: array
          items:
            $ref: '#/components/schemas/AccountGroupInfo'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    AccountGroupRole:
      type: object
      properties:
        accountGroup:
          $ref: '#/components/schemas/AccountGroup'
        roles:
          type: array
          items:
            $ref: '#/components/schemas/Role'
    UserAccountGroupRole:
      type: object
      properties:
        accountGroupId:
          type: string
          description: Unique ID of the account group.
          example: '315'
        roleIds:
          type: array
          description: Unique role IDs.
          items:
            type: string
            description: Unique role ID.
            example: '57'
          example:
            - '57'
            - '1140'
    UserRequest:
      type: object
      properties:
        name:
          type: string
          description: User's display name.
          example: User X
        email:
          type: string
          description: User's email address.
          format: email
          example: userx@thousandeyes.com
        loginAccountGroupId:
          type: string
          description: Unique ID of the login account group.
          example: '691'
        accountGroupRoles:
          type: array
          items:
            $ref: '#/components/schemas/UserAccountGroupRole'
        allAccountGroupRoleIds:
          type: array
          description: Unique IDs representing the roles.
          items:
            type: string
            description: Unique role ID.
            example: '57'
          example:
            - '57'
            - '1140'
    User:
      type: object
      properties:
        name:
          type: string
          description: User's display name.
          example: User X
        email:
          type: string
          description: User's email address.
          format: email
          example: userx@thousandeyes.com
        uid:
          type: string
          description: Unique ID of the user.
          example: '245'
        dateRegistered:
          type: string
          description: UTC date the user registered their account (ISO date-time format).
          format: date-time
          example: '2020-07-17T22:00:54Z'
        loginAccountGroup:
          $ref: '#/components/schemas/AccountGroup'
    ExtendedUser:
      allOf:
        - $ref: '#/components/schemas/User'
        - type: object
          properties:
            lastLogin:
              type: string
              description: UTC last login of the user (ISO date-time format).
              format: date-time
              example: '2022-07-17T22:00:54Z'
    Users:
      type: object
      properties:
        users:
          type: array
          items:
            $ref: '#/components/schemas/ExtendedUser'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    CreatedUser:
      allOf:
        - $ref: '#/components/schemas/User'
        - type: object
          properties:
            loginAccountGroup:
              $ref: '#/components/schemas/AccountGroup'
            accountGroupRoles:
              type: array
              items:
                $ref: '#/components/schemas/AccountGroupRole'
            allAccountGroupRoles:
              type: array
              items:
                $ref: '#/components/schemas/Role'
            _links:
              $ref: '#/components/schemas/SelfLinks'
    UserDetail:
      allOf:
        - $ref: '#/components/schemas/ExtendedUser'
        - type: object
          properties:
            loginAccountGroup:
              $ref: '#/components/schemas/AccountGroup'
            accountGroupRoles:
              type: array
              items:
                $ref: '#/components/schemas/AccountGroupRole'
            allAccountGroupRoles:
              type: array
              items:
                $ref: '#/components/schemas/Role'
            _links:
              $ref: '#/components/schemas/SelfLinks'
    UserAccountGroup:
      type: object
      properties:
        name:
          type: string
          description: User's display name.
          example: User X
        email:
          type: string
          description: User's email address.
          format: email
          example: userx@thousandeyes.com
        uid:
          type: string
          description: Unique ID representing the user.
          example: '235'
        lastLogin:
          type: string
          description: User's UTC last login date (ISO date-time format).
          format: date-time
          example: '2022-07-17T22:00:54Z'
        dateRegistered:
          type: string
          description: User's UTC registration date (ISO date-time format).
          format: date-time
          example: '2022-07-17T22:00:54Z'
        roles:
          type: array
          items:
            $ref: '#/components/schemas/Role'
    BaseRole:
      type: object
      properties:
        name:
          type: string
          description: Name of the role.
          example: Organization Admin
        roleId:
          type: string
          description: Unique ID representing the role.
          example: '35'
        isBuiltin:
          type: boolean
          description: >-
            Flag indicating if the role is built-in (Account Admin, Organization
            Admin, Regular User).
    Role:
      type: object
      allOf:
        - $ref: '#/components/schemas/BaseRole'
        - properties:
            hasManagementPermissions:
              type: boolean
              description: Flag indicating whether the user has management permissions.
    Permission:
      type: object
      properties:
        label:
          type: string
          description: Label corresponding to the permission.
          example: View reports
        permissionId:
          type: string
          description: Unique ID representing the permission.
          example: '56'
        isManagementPermission:
          description: >-
            Flag indicating whether the permission is classified as a management
            permission.
          type: boolean
        permission:
          type: string
          description: Permission name
          example: REPORT_SNAPSHOTS_READ
    PermissionsCollection:
      type: array
      items:
        $ref: '#/components/schemas/Permission'
      example:
        - label: View reports
          permissionId: '1'
          isManagementPermission: true
          permission: REPORT_READ
        - label: View snapshots
          permissionId: '51'
          isManagementPermission: false
          permission: REPORT_SNAPSHOTS_READ
    Permissions:
      type: object
      properties:
        permissions:
          $ref: '#/components/schemas/PermissionsCollection'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    RoleDetail:
      allOf:
        - $ref: '#/components/schemas/BaseRole'
        - type: object
          properties:
            permissions:
              $ref: '#/components/schemas/PermissionsCollection'
            _links:
              $ref: '#/components/schemas/SelfLinks'
    Roles:
      type: object
      properties:
        roles:
          type: array
          items:
            $ref: '#/components/schemas/Role'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    RoleRequestBody:
      type: object
      properties:
        name:
          type: string
          description: Name of the role.
          example: Organization Admin
        permissions:
          type: array
          description: >-
            Contains list of test permission IDs (get `permissionId` from
            `/permissions` operation)
          items:
            type: string
          example:
            - '56'
            - '315'
    UserEvent:
      type: object
      properties:
        aid:
          $ref: '#/components/schemas/AccountGroupId'
        accountGroupName:
          type: string
          description: Account group name
          example: Account A
        date:
          type: string
          description: UTC event date (ISO date-time format).
          format: date-time
          example: '2020-07-17T22:00:54Z'
        event:
          type: string
          description: Event type.
          example: Login failed.
        ipAddress:
          type: string
          description: Source IP address of the user.
          example: 99.128.0.0/11
        uid:
          type: string
          description: Unique id representing the user.
          example: '245'
        user:
          type: string
          description: The name and email address of the user.
          example: API Sandbox User (noreply@thousandeyes.com)
        resources:
          type: array
          items:
            $ref: '#/components/schemas/Resource'
    Resource:
      type: object
      properties:
        type:
          type: string
          description: >-
            Type of resource affected. Can be “testName”, “reportTitle”,
            “userDisplayName”, “alertRuleName”, etc.
        name:
          type: string
          description: Name of the affected resource.
    AuditUserEvents:
      type: object
      properties:
        auditEvents:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/UserEvent'
          example:
            - accountGroupName: API Sandbox
              aid: '1234'
              date: '2020-07-17T21:54:54Z'
              event: Report created.
              ipAddress: 99.128.0.0/11
              uid: '1234'
              user: API Sandbox User (noreply@thousandeyes.com)
              resources:
                - name: My New report
                  type: reportTitle
                - name: Other Report
                  type: testName
            - accountGroupName: API Sandbox
              aid: '1234'
              date: '2020-07-17T22:00:54Z'
              event: Login failed.
              ipAddress: 99.128.0.0/11
              uid: '1234'
              user: API Sandbox User (noreply@thousandeyes.com)
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    AccountGroupId:
      type: string
      description: >-
        A unique identifier associated with your account group. You can retrieve
        your `AccountGroupId` from the `/account-groups` endpoint.
      example: '1234'
    AccountGroup:
      type: object
      properties:
        aid:
          $ref: '#/components/schemas/AccountGroupId'
        accountGroupName:
          type: string
          description: Account group name
          example: Account A
    Link:
      type: object
      description: A hyperlink from the containing resource to a URI.
      required:
        - href
      properties:
        href:
          type: string
          description: Its value is either a URI [RFC3986] or a URI template [RFC6570].
          example: https://api.thousandeyes.com/v7/link/to/resource/id
        templated:
          type: boolean
          description: >-
            Should be true when the link object's "href" property is a URI
            template.
        type:
          type: string
          description: >-
            Used as a hint to indicate the media type expected when
            dereferencing the target resource.
        deprecation:
          type: string
          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.
        name:
          type: string
          description: >-
            Its value may be used as a secondary key for selecting link objects
            that share the same relation type.
        profile:
          type: string
          description: A URI that hints about the profile of the target resource.
        title:
          type: string
          description: Intended for labelling the link with a human-readable identifier
        hreflang:
          type: string
          description: Indicates the language of the target resource
    SelfLinks:
      type: object
      description: A links object containing the self link.
      readOnly: true
      properties:
        self:
          $ref: '#/components/schemas/Link'
    Error:
      type: object
      properties:
        type:
          type: string
          description: >-
            A URI reference that identifies the problem type. When this member
            is not present, its value is assumed to be "about:blank".
        title:
          type: string
          description: A short, human-readable summary of the problem type.
        status:
          type: integer
          description: >-
            The HTTP status code generated by the origin server for this
            occurrence of the problem.
        detail:
          type: string
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
        instance:
          type: string
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
    ValidationErrorItem:
      type: object
      properties:
        code:
          type: string
          description: >-
            (Optional) A unique error type/code that can be referenced in the
            documentation for further details.
        field:
          type: string
          description: Identifies the field that triggered this particular error.
        message:
          type: string
          description: A short, human-readable summary of the error.
    ValidationError:
      type: object
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            errors:
              nullable: true
              type: array
              description: >-
                (Optional) When multiple errors occur, the details for each
                error are listed.
              items:
                $ref: '#/components/schemas/ValidationErrorItem'
    UnauthorizedError:
      type: object
      properties:
        error:
          type: string
          example: invalid_token
        error_description:
          type: string
          example: Invalid access token
    CloudEnterpriseAgentType:
      type: string
      description: Type of the agent.
      enum:
        - cloud
        - enterprise-cluster
        - enterprise
      example: enterprise-cluster
      readOnly: true
    AgentBase:
      type: object
      properties:
        ipAddresses:
          type: array
          description: Array of private IP addresses.
          readOnly: true
          items:
            type: string
          example:
            - 99.139.65.220
            - 9bbd:8a0a:a257:5876:288b:6cb2:3f36:64ce
        publicIpAddresses:
          type: array
          description: Array of public IP addresses.
          readOnly: true
          items:
            type: string
          example:
            - 192.168.1.78
            - f9b2:3a21:f25c:d300:03f4:586d:f8d6:4e1c
        network:
          type: string
          description: Network (including ASN) of agent’s public IP.
          example: AT&T Services, Inc. (AS 7018)
          readOnly: true
    SimpleAgent:
      type: object
      allOf:
        - $ref: '#/components/schemas/AgentBase'
        - type: object
          properties:
            agentId:
              type: string
              description: Unique ID of the agent.
              example: '281474976710706'
              readOnly: true
            agentName:
              type: string
              description: Name of the agent.
              example: thousandeyes-stg-va-254
            location:
              type: string
              description: Location of the agent.
              example: San Francisco Bay Area
              readOnly: true
            countryId:
              type: string
              description: 2-digit ISO country code
              example: US
              readOnly: true
            enabled:
              type: boolean
              description: Flag indicating if the agent is enabled.
              example: true
            prefix:
              type: string
              description: Prefix containing agents public IP address.
              example: 99.128.0.0/11
              readOnly: true
            verifySslCertificates:
              type: boolean
              description: >-
                Flag indicating if has normal SSL operations or  if instead it's
                set to ignore SSL errors on browserbot-based tests.
              example: true
              readOnly: true
    AgentResponse:
      allOf:
        - required:
            - agentType
          properties:
            agentType:
              $ref: '#/components/schemas/CloudEnterpriseAgentType'
        - $ref: '#/components/schemas/SimpleAgent'
    ErrorDetailCode:
      type: string
      description: Code for the agent error.
      enum:
        - agent-version-outdated
        - browserbot-version-outdated
        - appliance-version-outdated
        - clock-offset
        - os-end-of-installation-support
        - os-end-of-support
        - os-end-of-life
        - nat-traversal-error
      example: agent-version-outdated
      readOnly: true
    ErrorDetail:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/ErrorDetailCode'
        description:
          type: string
          description: Description for the agent error.
          example: 'Agent Version 0.1.1 (latest: 1.0.0)'
          readOnly: true
    EnterpriseAgentState:
      type: string
      description: State of the agent.
      enum:
        - online
        - offline
        - disabled
      example: online
      readOnly: true
    ClusterMember:
      allOf:
        - $ref: '#/components/schemas/AgentBase'
        - type: object
          properties:
            memberId:
              type: string
              description: Unique ID of the cluster member
              example: '10'
              readOnly: true
            name:
              type: string
              description: Name of the cluster member
              example: Cluster member name
              readOnly: true
            errorDetails:
              type: array
              description: >-
                If an enterprise agent or a cluster member presents at least one
                error, the errors will be shown as an array of entries in the
                errorDetails field (Enterprise Agents and Enterprise Cluster
                members only)
              items:
                $ref: '#/components/schemas/ErrorDetail'
              readOnly: true
            lastSeen:
              type: string
              description: UTC last seen date (ISO date-time format).
              format: date-time
              example: '2022-07-17T22:00:54Z'
              readOnly: true
            agentState:
              $ref: '#/components/schemas/EnterpriseAgentState'
            targetForTests:
              type: string
              format: ipv4
              description: Test target IP address.
              example: 1.1.1.1
            utilization:
              type: integer
              description: >-
                Shows overall utilization percentage (online Enterprise Agents
                and Enterprise Clusters only).
              example: 25
              readOnly: true
    ClusterMembers:
      type: array
      description: >-
        If an enterprise agent is clustered, detailed information about each
        cluster member will be shown as array entries in the clusterMembers
        field. This field is not shown for Enterprise Agents in standalone mode,
        or for Cloud Agents.
      items:
        $ref: '#/components/schemas/ClusterMember'
      readOnly: true
    EnterpriseAgentIpv6Policy:
      type: string
      description: IP version policy, (Enterprise Agents and Enterprise Clusters only)
      enum:
        - force-ipv4
        - prefer-ipv6
        - force-ipv6
      example: force-ipv4
    InterfaceIpMapping:
      type: object
      properties:
        interfaceName:
          type: string
          description: Name of the mapping
          example: wlp4s0
          readOnly: true
        ipAddresses:
          type: array
          description: Array of ipAddress entries
          items:
            type: string
          example:
            - 73.252.207.219
            - 2601:646:300:3ae0::b977
          readOnly: true
    EnterpriseAgentData:
      type: object
      properties:
        clusterMembers:
          $ref: '#/components/schemas/ClusterMembers'
        utilization:
          type: integer
          description: >-
            Shows overall utilization percentage (online Enterprise Agents and
            Enterprise Clusters only).
          example: 25
          readOnly: true
        accountGroups:
          type: array
          description: >-
            List of account groups. See /accounts-groups to pull a list of
            account IDs
          items:
            $ref: '#/components/schemas/AccountGroup'
        ipv6Policy:
          $ref: '#/components/schemas/EnterpriseAgentIpv6Policy'
        errorDetails:
          type: array
          description: >-
            If an enterprise agent or a cluster member presents at least one
            error, the errors will be shown as an array of entries in the
            errorDetails field (Enterprise Agents and Enterprise Cluster members
            only)
          items:
            $ref: '#/components/schemas/ErrorDetail'
          readOnly: true
        hostname:
          type: string
          description: Fully qualified domain name of the agent (Enterprise Agents only)
          example: thousandeyes.com
          readOnly: true
        lastSeen:
          type: string
          description: UTC last seen date (ISO date-time format).
          format: date-time
          example: '2022-07-17T22:00:54Z'
          readOnly: true
        agentState:
          $ref: '#/components/schemas/EnterpriseAgentState'
        keepBrowserCache:
          type: boolean
          description: Flag indicating if the agent retains cache.
          example: true
        createdDate:
          type: string
          description: UTC Agent creation date (ISO date-time format).
          format: date-time
          example: '2022-07-17T22:00:54Z'
          readOnly: true
        targetForTests:
          type: string
          format: ipv4
          description: Test target IP address.
          example: 1.1.1.1
        localResolutionPrefixes:
          type: array
          description: >-
            To perform rDNS lookups for public IP ranges, this field represents
            the public IP ranges. The range must be in CIDR notation; for
            example, 10.1.1.0/24. Maximum of 5 prefixes allowed (Enterprise
            Agents and Enterprise Agent clusters only).
          items:
            type: string
            example: 10.2.3.3/24
        interfaceIpMappings:
          type: array
          items:
            $ref: '#/components/schemas/InterfaceIpMapping'
          readOnly: true
    EnterpriseAgent:
      allOf:
        - $ref: '#/components/schemas/AgentResponse'
        - $ref: '#/components/schemas/EnterpriseAgentData'
    StartDate:
      type: string
      format: date-time
      example: '2022-07-17T22:00:54Z'
      description: >-
        (Optional) When passing `window` or `startDate` parameter,  the client
        will also receive the `startDate` field indicating the UTC start date of
        the data's time range being retrieved  (ISO date-time format).
      readOnly: true
    EndDate:
      type: string
      format: date-time
      example: '2022-07-18T22:00:54Z'
      description: >-
        (Optional) When passing `window` or `endDate` parameter,  the client
        will also receive the `endDate` field indicating the UTC end date of the
        data's time range being retrieved  (ISO date-time format).
      readOnly: true
    PaginationLinks:
      type: object
      description: A links object containing pagination related link(s).
      properties:
        previous:
          $ref: '#/components/schemas/Link'
        next:
          $ref: '#/components/schemas/Link'
        self:
          $ref: '#/components/schemas/Link'
    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'
    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'
    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
            _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:
        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
    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'
        ipv6Policy:
          $ref: '#/components/schemas/AgentIpv6Policy'
        keepBrowserCache:
          type: boolean
          description: Flag indicating if the agent retains cache.
          example: true
        targetForTests:
          type: string
          format: ipv4
          description: Test target IP address.
          example: 1.1.1.1
        localResolutionPrefixes:
          type: array
          description: >-
            Public IP ranges for rDNS lookups. The range must be in CIDR
            notation; for example, 10.1.1.0/24. Maximum of 5 prefixes allowed
            (Enterprise Agents and Enterprise Agent clusters only).
          items:
            type: string
          example:
            - 10.2.3.3/24
            - 10.2.3.3/25
        tests:
          type: array
          description: >-
            Contains list of test IDs. See `/tests` to pull a list of available
            tests.
          items:
            type: string
          example:
            - '12313145'
            - '12345'
    AgentIpv6Policy:
      type: string
      description: IP version policy, (Enterprise Agents and Enterprise Clusters only)
      enum:
        - force-ipv4
        - prefer-ipv6
        - force-ipv6
      example: force-ipv4
    ListNotificationRulesResponse:
      allOf:
        - $ref: '#/components/schemas/NotificationRules'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/SelfLinks'
    NotificationRules:
      type: object
      properties:
        agentAlertRules:
          type: array
          items:
            $ref: '#/components/schemas/NotificationRule'
          example:
            - ruleId: '281474976710706'
              ruleName: Default Agent Offline Notification
              expression: ((lastContact >= 30 min))
              notifyOnClear: true
              isDefault: false
            - ruleId: '281474976710709'
              ruleName: Test Rule
              expression: ((lastContact >= 40 min))
              notifyOnClear: true
              isDefault: true
    NotificationRule:
      type: object
      properties:
        ruleId:
          type: string
          description: Agent notification rule ID
          example: '281474976710706'
          readOnly: true
        ruleName:
          type: string
          description: Name of the agent notification rule
          example: Default Agent Offline Notification
        expression:
          type: string
          description: Expression of agent notification rule
          example: ((lastContact >= 30 min))
        notifyOnClear:
          type: boolean
          description: Send notification when notification clears
          example: true
        isDefault:
          type: boolean
          description: >-
            Agent notification rule will be automatically included on all new
            Enterprise Agents.
          example: false
    NotificationRuleDetail:
      allOf:
        - $ref: '#/components/schemas/NotificationRule'
        - type: object
          properties:
            notifications:
              $ref: '#/components/schemas/AgentNotification'
            agents:
              type: array
              items:
                $ref: '#/components/schemas/AgentResponse'
            _links:
              $ref: '#/components/schemas/SelfLinks'
    AgentNotification:
      type: object
      description: Alert notification object.
      properties:
        email:
          $ref: '#/components/schemas/AlertEmail'
        thirdParty:
          type: array
          items:
            $ref: '#/components/schemas/AlertIntegrationBase'
        webhook:
          type: array
          items:
            $ref: '#/components/schemas/AlertIntegrationBase'
    AgentProxies:
      type: object
      properties:
        agentProxies:
          type: array
          items:
            $ref: '#/components/schemas/AgentProxy'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    AgentProxy:
      type: object
      properties:
        aid:
          type: string
          description: Account id that this proxy configuration belongs to
          example: '1234'
        authType:
          $ref: '#/components/schemas/ProxyAuthType'
        bypassList:
          type: array
          description: >-
            A list of hostnames, network prefixes, or wildcards used to
            determine which test targets should not be proxied. If all tests
            should be proxied, leave empty.
          items:
            type: string
          example:
            - 10.0.0.0/16
            - '*.thousandeyes.com'
        lastModified:
          type: string
          description: >-
            Last modification timestamp of the proxy. Expressed in UTC (ISO
            date-time format).
          format: date-time
          example: '2022-07-17T22:00:54Z'
        location:
          type: string
          description: >-
            The location of the proxy. If proxyType is `static` use the format
            `hostname:port`. If location is `pac`, then specify the URL where
            the PAC file can be obtained.
          example: proxy.thousandeyes.com:3128
        isLocalConfigured:
          type: boolean
          description: >-
            Set to `true` if this proxy configuration comes from the agent’s
            config file. Specify `false` if the proxy configuration was created
            in the ThousandEyes application.
          example: true
        name:
          type: string
          description: Expression of agent notification rule.
          example: Test Proxy - Auth Type - BASIC
        password:
          type: string
          format: password
          description: Password for proxy authentication
          example: '**********'
        proxyId:
          type: string
          description: Agent proxy's unique ID.
          example: '281474976710706'
        type:
          $ref: '#/components/schemas/ProxyType'
        user:
          type: string
          description: Username for proxy authentication.
          example: user1
    ProxyAuthType:
      type: string
      description: The type of authentication the proxy requires
      enum:
        - basic
        - ntlm
        - kerberos
        - unknown
      example: basic
    ProxyType:
      type: string
      description: The type of proxy, STATIC or PAC.
      enum:
        - static
        - pac
      example: static
    AlertEmail:
      type: object
      properties:
        message:
          type: string
          description: Message used for email notification.
          example: This test is failing, check as soon as possible.
        recipients:
          type: array
          description: List of recipients emails that will be notified.
          items:
            type: string
          example:
            - user1@thousandeyes.com
            - user2@cisco.com
    AlertIntegrationBase:
      type: object
      properties:
        integrationId:
          type: string
          description: Unique ID of the integration.
          example: wb-78
        integrationName:
          type: string
          description: Name of the integration.
          example: integrationSlack1
        integrationType:
          $ref: '#/components/schemas/AlertIntegrationType'
        target:
          type: string
          description: Target URL of the integration.
          example: https://hooks.slack.com/services/asd/0VqDYEpidpHVAK397x8PBsmZ
        authMethod:
          type: string
          description: (PagerDuty only) Authentication method.
          example: Basic
        authUser:
          type: string
          description: (PagerDuty only) Authentication user.
          example: user123
        authToken:
          type: string
          description: (PagerDuty only) Authentication token.
          example: 0VqDYEpidpHVAK397x8PBsmZ
        channel:
          type: string
          description: (Slack only) Slack `#channel` or `@user`.
          example: '#slackChannel'
    AlertIntegrationType:
      type: string
      description: Type of the alert integration
      enum:
        - pager-duty
        - slack
      example: slack
    AgentLabel:
      type: object
      readOnly: true
      properties:
        labelId:
          type: string
          description: Label Id.
          example: '11'
        name:
          type: string
          description: Name of the label.
          example: Label name
    AgentListExpand:
      type: string
      enum:
        - cluster-member
    AgentDetailsExpand:
      type: string
      enum:
        - cluster-member
        - test
        - notification-rule
    TestInterval:
      type: integer
      enum:
        - 60
        - 120
        - 300
        - 600
        - 900
        - 1800
        - 3600
      description: Interval between test runs in seconds.
      default: 60
      example: 60
    Enabled:
      type: boolean
      description: Test is enabled.
      example: true
      default: true
    TestCreatedBy:
      type: string
      description: User that created the test.
      example: user@user.com
      readOnly: true
    TestCreatedDate:
      type: string
      format: date-time
      description: UTC created date (ISO date-time format).
      example: '2022-07-17T22:00:54Z'
      readOnly: true
    TestType:
      type: string
      enum:
        - api
        - agent-to-agent
        - agent-to-server
        - bgp
        - http-server
        - page-load
        - web-transactions
        - ftp-server
        - dns-trace
        - dns-server
        - dnssec
        - sip-server
        - voice
      description: >-
        This is a read only value, as test type is implicit in the test creation
        url.
      readOnly: true
      example: agent-to-server
    TestSelfLink:
      allOf:
        - $ref: '#/components/schemas/Link'
        - description: Reference to the test.
          example:
            href: https://api.thousandeyes.com/v7/tests/{type}/281474976710706
    TestResults:
      type: array
      description: Reference to the test results.
      items:
        $ref: '#/components/schemas/Link'
      example:
        - href: https://api.thousandeyes.com/v7/test-results/281474976710706/network
        - href: >-
            https://api.thousandeyes.com/v7/test-results/281474976710706/path-vis
    TestLinks:
      type: object
      description: A list of links that can be accessed to get more information
      properties:
        self:
          $ref: '#/components/schemas/TestSelfLink'
        testResults:
          $ref: '#/components/schemas/TestResults'
      readOnly: true
    SimpleTest:
      description: >-
        Each test includes additional fields depending on its `type`. Refer
        `/tests/{type}` endpoint to know the set of fields returned by a given
        `type`.
      additionalProperties: true
      type: object
      properties:
        interval:
          $ref: '#/components/schemas/TestInterval'
        alertsEnabled:
          type: boolean
          description: Indicates if alerts are enabled.
          example: true
        enabled:
          $ref: '#/components/schemas/Enabled'
        createdBy:
          $ref: '#/components/schemas/TestCreatedBy'
        createdDate:
          $ref: '#/components/schemas/TestCreatedDate'
        description:
          type: string
          description: A description of the test.
          example: ThousandEyes Test
        liveShare:
          type: boolean
          description: Indicates if the test is shared with the account group.
          example: false
          readOnly: true
        modifiedBy:
          type: string
          description: User that modified the test.
          example: user@user.com
          readOnly: true
        modifiedDate:
          type: string
          format: date-time
          description: UTC last modification date (ISO date-time format).
          readOnly: true
          example: '2022-07-17T22:00:54Z'
        savedEvent:
          type: boolean
          description: Indicates if the test is a saved event.
          readOnly: true
        testId:
          type: string
          description: >-
            Each test is assigned an unique ID; this is used to access test
            information and results from other endpoints.
          readOnly: true
          example: '281474976710706'
        testName:
          type: string
          description: The name of the test. Test name must be unique.
          example: ThousandEyes Test
        type:
          $ref: '#/components/schemas/TestType'
        _links:
          $ref: '#/components/schemas/TestLinks'
    SimpleEnterpriseAgent:
      allOf:
        - $ref: '#/components/schemas/SimpleAgent'
        - $ref: '#/components/schemas/EnterpriseAgentData'
    AlertSimpleTest:
      description: >-
        Each test includes additional fields depending on its `type`. Refer
        `/tests/{type}` endpoint to know the set of fields returned by a given
        `type`.
      additionalProperties: true
      type: object
      properties:
        interval:
          $ref: '#/components/schemas/TestInterval'
        alertsEnabled:
          type: boolean
          description: Indicates if alerts are enabled.
          example: true
        enabled:
          $ref: '#/components/schemas/Enabled'
        createdBy:
          $ref: '#/components/schemas/TestCreatedBy'
        createdDate:
          $ref: '#/components/schemas/TestCreatedDate'
        description:
          type: string
          description: A description of the test.
          example: ThousandEyes Test
        liveShare:
          type: boolean
          description: Indicates if the test is shared with the account group.
          example: false
          readOnly: true
        modifiedBy:
          type: string
          description: User that modified the test.
          example: user@user.com
          readOnly: true
        modifiedDate:
          type: string
          format: date-time
          description: UTC last modification date (ISO date-time format).
          readOnly: true
          example: '2022-07-17T22:00:54Z'
        savedEvent:
          type: boolean
          description: Indicates if the test is a saved event.
          readOnly: true
        testId:
          type: string
          description: >-
            Each test is assigned an unique ID; this is used to access test
            information and results from other endpoints.
          readOnly: true
          example: '281474976710706'
        testName:
          type: string
          description: The name of the test. Test name must be unique.
          example: ThousandEyes Test
        type:
          $ref: '#/components/schemas/AlertTestType'
        _links:
          $ref: '#/components/schemas/TestLinks'
    AlertTestType:
      type: string
      enum:
        - api
        - agent-to-agent
        - agent-to-server
        - bgp
        - http-server
        - page-load
        - web-transactions
        - ftp-server
        - dns-trace
        - dns-server
        - dnssec
        - sip-server
        - voice
        - endpoint-http-server
        - endpoint-network-server
        - endpoint-path-trace
      description: Valid Alert Types for which to return test links.
      readOnly: true
      example: agent-to-server
    ExpandAlertTestOptions:
      type: string
      enum:
        - test
    Rules:
      type: object
      properties:
        alertRules:
          type: array
          items:
            $ref: '#/components/schemas/BaseRule'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    BaseRule:
      type: object
      required:
        - ruleName
        - expression
        - alertType
        - roundsViolatingRequired
        - roundsViolatingOutOf
      properties:
        ruleId:
          $ref: '#/components/schemas/RuleId'
        ruleName:
          type: string
          description: Name of the alert rule.
          example: The End of the Internet
        expression:
          type: string
          description: The expression of the alert rule.
          example: ((hops((hopDelay >= 100 ms))))
        direction:
          $ref: '#/components/schemas/AlertDirection'
        notifyOnClear:
          type: boolean
          description: Send notification when alert clears.
          example: true
        isDefault:
          type: boolean
          description: >-
            If set to `true`, this alert rule becomes the default for its test
            type and is automatically applied to newly created tests with
            relevant metrics. Only one default alert rule is allowed per test
            type.
          example: true
        alertType:
          $ref: '#/components/schemas/AlertType'
        alertGroupType:
          $ref: '#/components/schemas/AlertGroupType'
        minimumSources:
          type: integer
          description: >-
            The minimum number of agents or monitors that must meet the
            specified criteria to trigger the alert.
          example: 10
        minimumSourcesPct:
          type: integer
          description: >-
            The minimum percentage of all assigned agents or monitors that must
            meet the specified criteria to trigger the alert.
          example: 99
        roundsViolatingMode:
          $ref: '#/components/schemas/AlertRoundsViolationMode'
        roundsViolatingOutOf:
          type: integer
          description: Specifies the divisor (y value) in the “X of Y times” condition.
          example: 5
        roundsViolatingRequired:
          type: integer
          description: Specifies the numerator (x value) in the “X of Y times” condition.
          example: 2
        includeCoveredPrefixes:
          type: boolean
          description: >-
            Set true to include covered prefixes in the BGP alert rule. Only
            applicable to BGP alert rules.
          example: true
        sensitivityLevel:
          $ref: '#/components/schemas/SensitivityLevel'
        severity:
          $ref: '#/components/schemas/Severity'
    Rule:
      allOf:
        - $ref: '#/components/schemas/RuleDetailUpdate'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/SelfLinks'
    RuleDetail:
      allOf:
        - $ref: '#/components/schemas/BaseRule'
        - type: object
          properties:
            notifications:
              $ref: '#/components/schemas/AlertNotification'
            tests:
              type: array
              items:
                $ref: '#/components/schemas/AlertSimpleTest'
              readOnly: true
            _links:
              $ref: '#/components/schemas/SelfLinks'
    RuleDetailUpdate:
      allOf:
        - $ref: '#/components/schemas/BaseRule'
        - type: object
          properties:
            notifications:
              $ref: '#/components/schemas/AlertNotification'
            testIds:
              $ref: '#/components/schemas/RuleTestIds'
    AlertMeta:
      type: object
      properties:
        version:
          type: integer
          format: int32
          description: >-
            Indicates the number of times this alert has re-entered the
            'trigger' state after being suppressed. It starts at 1 and
            increments whenever a real-time ASW ends and the alert conditions
            remain active.
          example: 1
    BaseAlert:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: A unique ID for each individual alert occurrence.
          example: e9c3bf02-a48c-4aa8-9e5f-898800d6f569
          readOnly: true
        alertType:
          $ref: '#/components/schemas/AlertType'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        violationCount:
          type: integer
          description: Number of sources that meet the alert criteria.
          example: 2
        duration:
          type: integer
          format: int64
          description: Duration in seconds the alert was active
          example: 60
        suppressed:
          type: boolean
          description: >-
            Indicates whether the alert is currently suppressed by a real-time
            ASW.
          example: false
        meta:
          $ref: '#/components/schemas/AlertMeta'
        _links:
          $ref: '#/components/schemas/AlertLinks'
    LegacyAlert:
      type: object
      deprecated: true
      properties:
        alertId:
          type: string
          format: uuid
          description: A unique ID for each individual alert occurrence.
          example: e9c3bf02-a48c-4aa8-9e5f-898800d6f569
          readOnly: true
        dateStart:
          type: string
          description: The start date and time for querying alerts.
          example: '2020-04-23 13:43:16'
          readOnly: true
        dateEnd:
          type: string
          description: The end date and time for querying alerts.
          example: '2020-04-23 13:43:16'
          readOnly: true
        ruleId:
          type: integer
          description: Unique ID of the rule.
          example: 127094
          readOnly: true
        state:
          type: string
          description: 'Current state of the alert. Possible values: clear or trigger.'
          enum:
            - ACTIVE
            - CLEARED
          example: ACTIVE
          readOnly: true
        severity:
          type: string
          description: The severity of the alert.
          enum:
            - INFO
            - MAJOR
            - MINOR
            - CRITICAL
            - UNKNOWN
          example: MAJOR
        permalink:
          type: string
          description: Hyperlink to alerts list, with row expanded
          example: >-
            https://app.thousandeyes.com/alerts/list?__a=75&alertId=2783&agentId=12
        apiLinks:
          type: array
          description: List of hyperlinks to other areas of the API
          items:
            additionalProperties: true
    Alerts:
      type: object
      properties:
        alerts:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/Alert'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    Alert:
      allOf:
        - $ref: '#/components/schemas/BaseAlert'
        - $ref: '#/components/schemas/LegacyAlert'
        - type: object
          properties:
            alertRuleId:
              $ref: '#/components/schemas/RuleId'
            alertState:
              $ref: '#/components/schemas/State'
            alertSeverity:
              $ref: '#/components/schemas/Severity'
    AlertDetail:
      allOf:
        - $ref: '#/components/schemas/BaseAlert'
        - type: object
          properties:
            state:
              $ref: '#/components/schemas/State'
            severity:
              $ref: '#/components/schemas/Severity'
            details:
              type: array
              items:
                $ref: '#/components/schemas/AlertMetricDetail'
    AlertMetricDetail:
      type: object
      properties:
        end:
          $ref: '#/components/schemas/EndAlertMetrics'
        id:
          type: string
          description: Unique metric detail id.
          example: '3379'
        name:
          type: string
          description: Geolocation of the alert.
          example: Bucharest, Romania
        start:
          $ref: '#/components/schemas/StartAlertMetrics'
        state:
          $ref: '#/components/schemas/State'
        type:
          description: Type of the alert metric.
          type: string
          example: cea_agent
    StartAlertMetrics:
      type: object
      description: >-
        String representation of the metric at the time that the source began
        alerting.   Note that the alert `start` and `startDate` for a particular
        source do not need to be the same,  as sources may change alerting
        status throughout an alert's lifecycle.
      properties:
        metrics:
          type: string
    EndAlertMetrics:
      type: object
      description: >-
        String representation of the metric or metrics being considered in the
        alert rule at the point that the alert was cleared.  If the alert is not
        yet cleared, this field reflects the last round of data gathered from
        the source.
      properties:
        metrics:
          type: string
    State:
      type: string
      description: 'Current state of the alert. Possible values: clear or trigger.'
      enum:
        - clear
        - trigger
      example: trigger
      readOnly: true
    AlertNotification:
      type: object
      description: Alert notification object. See Alert notification integrations.
      properties:
        email:
          $ref: '#/components/schemas/NotificationEmail'
        thirdParty:
          type: array
          description: Third party notifications.
          items:
            $ref: '#/components/schemas/NotificationThirdParty'
        webhook:
          type: array
          description: Webhook notifications.
          items:
            $ref: '#/components/schemas/NotificationWebhook'
        customWebhook:
          type: array
          description: Custom webhook notifications.
          items:
            $ref: '#/components/schemas/NotificationCustomWebhook'
    NotificationEmail:
      type: object
      description: Email notifications.
      properties:
        recipients:
          type: array
          description: An array containing the email addresses to receive notifications.
          items:
            type: string
          example:
            - noreply@thousandeyes.com
        message:
          type: string
          description: >-
            Custom text included in alert email notifications sent to
            recipients.
          example: Notification message
    NotificationThirdParty:
      type: object
      description: Webhook notification.
      properties:
        integrationId:
          type: string
          description: Integration ID.
          example: sl-101
        integrationType:
          $ref: '#/components/schemas/ThirdPartyIntegrationType'
    ThirdPartyIntegrationType:
      type: string
      description: Integration type.
      example: slack
      enum:
        - pager-duty
        - slack
        - app-dynamics
        - service-now
    NotificationWebhook:
      type: object
      description: Webhook notification.
      properties:
        integrationId:
          type: string
          description: Integration ID.
          example: wb-201
        integrationType:
          $ref: '#/components/schemas/WebhookIntegrationType'
    WebhookIntegrationType:
      type: string
      description: Integration type.
      example: webhook
      enum:
        - webhook
    NotificationCustomWebhook:
      type: object
      description: Custom webhook notification.
      properties:
        integrationId:
          type: string
          format: uuid
          description: Integration ID.
          example: 6e069ae9-8537-4120-b988-61bf8e0d8b87
        integrationType:
          $ref: '#/components/schemas/CustomWebhookIntegrationType'
        integrationName:
          type: string
          description: User-configured name of the integration.
          example: My webhook
        target:
          type: string
          description: Webhook target URL.
          example: https://example.com/test/webhooks/notifications
    CustomWebhookIntegrationType:
      type: string
      description: Integration type.
      example: custom-webhook
      enum:
        - custom-webhook
    AlertSuppressionWindows:
      type: object
      description: Alert suppression windows.
      properties:
        alertSuppressionWindows:
          type: array
          items:
            $ref: '#/components/schemas/AlertSuppressionWindow'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    BaseAlertSuppressionWindow:
      type: object
      description: Alert suppression window.
      properties:
        alertSuppressionWindowId:
          type: string
          description: Unique ID of the alert suppression window.
          example: '2411'
          readOnly: true
        name:
          type: string
          description: Name of the alert suppression window.
          example: Monthly maintenance
        isEnabled:
          type: boolean
          description: Set to `false` for `disabled`, `true` for `enabled`.
          example: false
        status:
          $ref: '#/components/schemas/AlertSuppressionWindowState'
        startDate:
          type: string
          format: date-time
          description: >-
            The date/time when the alert suppression window starts (ISO
            date-time format).
          example: '2017-07-01T05:00:00Z'
        duration:
          type: integer
          description: Duration in seconds the suppression window is active.
          example: 0
        repeat:
          $ref: '#/components/schemas/Repeat'
        endRepeat:
          $ref: '#/components/schemas/EndRepeat'
    AlertSuppressionWindow:
      allOf:
        - $ref: '#/components/schemas/BaseAlertSuppressionWindow'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/SelfLinks'
    AlertSuppressionWindowState:
      type: string
      enum:
        - active
        - inactive
        - ended
      description: Indicates the current status of the suppression window.
      example: ended
      readOnly: true
    AlertSuppressionWindowRequest:
      allOf:
        - $ref: '#/components/schemas/BaseAlertSuppressionWindow'
        - type: object
          properties:
            tests:
              type: array
              description: List of tests to assign to the alert suppression window.
              items:
                type: string
                example: '71687'
    AlertSuppressionWindowDetail:
      allOf:
        - $ref: '#/components/schemas/AlertSuppressionWindow'
        - type: object
          properties:
            tests:
              type: array
              description: List of tests assigned to the alert suppression window.
              items:
                $ref: '#/components/schemas/SimpleTest'
    Repeat:
      type: object
      description: Repeat options.
      properties:
        type:
          $ref: '#/components/schemas/RepeatType'
        intervalType:
          $ref: '#/components/schemas/IntervalType'
        intervalLength:
          type: integer
          description: >-
            Number of `intervalTypes` to wait before reactivating the alert
            suppression window.
          example: 2
        daysOfWeek:
          type: array
          items:
            $ref: '#/components/schemas/DaysOfWeek'
    RepeatType:
      type: string
      description: Repeat options type.
      enum:
        - day
        - week
        - month
        - custom
      example: week
    IntervalType:
      type: string
      description: Repeat options interval type
      enum:
        - day
        - week
        - month
      example: day
    DaysOfWeek:
      type: string
      description: >-
        Specifies the day to activate the alert suppression window. Applicable
        only when `intervalType` is set to `week`.
      enum:
        - sun
        - mon
        - tue
        - wed
        - thu
        - fri
        - sat
      example: sun
    EndRepeat:
      type: object
      description: End repeat options.
      properties:
        type:
          $ref: '#/components/schemas/EndRepeatType'
        count:
          type: integer
          description: >-
            End repeat after number of occurrences, only valid with count type
            option.
          example: 3
        date:
          type: string
          format: date
          description: >-
            End repeat after specific date, only valid with date type option
            (ISO date format).
          example: '2017-07-01'
    EndRepeatType:
      type: string
      description: End repeat options type.
      enum:
        - count
        - never
        - date
      example: never
    RuleTestIds:
      type: array
      description: >-
        Array of test IDs to link to alert rule (get `testId` from `/tests`
        endpoint).
      items:
        type: string
      example:
        - '281474976710706'
        - '271659'
    AlertLinks:
      type: object
      description: An object containing the alert links.
      readOnly: true
      properties:
        test:
          $ref: '#/components/schemas/Link'
        rule:
          $ref: '#/components/schemas/Link'
        appLink:
          $ref: '#/components/schemas/Link'
        self:
          $ref: '#/components/schemas/Link'
    AlertType:
      type: string
      description: >-
        Type of alert being triggered. In multi-layered tests, this value
        represents the layer the alert relates to. See [Alert
        Details](https://developer.cisco.com/docs/thousandeyes/retrieve-alert-details/)
        documentation for a list of possible values
      enum:
        - page-load
        - http-server
        - end-to-end-server
        - end-to-end-agent
        - voice
        - dns-server
        - dns-trace
        - dnssec
        - bgp
        - path-trace
        - ftp
        - sip-server
        - transactions
        - web-transactions
        - agent
        - network-outage
        - application-outage
        - device-device
        - device-interface
        - endpoint-network-server
        - endpoint-http-server
        - endpoint-path-trace
        - endpoint-browser-sessions-agent
        - endpoint-browser-sessions-application
        - api
        - web-transaction
        - unknown
      example: http-server
    RuleId:
      type: string
      description: Unique ID of the rule.
      example: '127094'
      readOnly: true
    Severity:
      type: string
      description: The severity of the alert.
      enum:
        - info
        - major
        - minor
        - critical
        - unknown
      example: major
    AlertDirection:
      type: string
      enum:
        - to-target
        - from-target
        - bidirectional
      description: >-
        Direction for applicable alert types (eg. path trace, End-to-End (Agent)
        etc.)
      example: to-target
    AlertGroupType:
      type: string
      description: >-
        Category of alert type based on the application or network layer and
        source of the test.
      enum:
        - bgp
        - browser-session
        - cloud-enterprise
        - endpoint
      example: endpoint
    AlertRoundsViolationMode:
      type: string
      description: >-
        `exact` requires the same agents to meet the threshold in consecutive
        rounds. `auto` is only enabled for CEA and Endpoint Scheduled test
        rules. The default is `any`.
      enum:
        - exact
        - any
        - auto
      example: exact
      readOnly: true
    SensitivityLevel:
      type: string
      description: >-
        Used when `roundsViolatingMode` is set to `auto`. The default is
        `medium`. Higher sensitivity increases the likelihood of triggering
        alerts.
      enum:
        - high
        - medium
        - low
      example: medium
      readOnly: true
    Monitors:
      type: object
      properties:
        monitors:
          type: array
          items:
            $ref: '#/components/schemas/Monitor'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    MonitorType:
      type: string
      description: Type of monitor
      enum:
        - public
        - private
      example: public
    Monitor:
      type: object
      properties:
        countryId:
          type: string
          description: Country ID
          example: GB
          readOnly: true
        monitorId:
          type: string
          description: BGP monitor ID
          example: '1234'
          readOnly: true
        ipAddress:
          type: string
          description: IP address of the BGP monitor
          example: 4.69.184.193
        network:
          type: string
          description: Name of the autonomous system in which the monitor is found
          example: Level 3 Communications, Inc. (AS 3356)
        monitorType:
          $ref: '#/components/schemas/MonitorType'
        monitorName:
          type: string
          description: Display name of the BGP monitor
          example: Seattle, WA
    CredentialRequest:
      type: object
      properties:
        name:
          type: string
          description: The name of the credential.
          example: Example Credential 1
        value:
          type: string
          description: The value of the credential that will be encrypted.
          example: Example Credential 1 Password
    CredentialWithoutValue:
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the credential.
          example: '3247'
        name:
          type: string
          description: The name of the credential.
          example: Example Credential
        _links:
          $ref: '#/components/schemas/SelfLinks'
    Credential:
      allOf:
        - $ref: '#/components/schemas/CredentialWithoutValue'
        - type: object
          properties:
            value:
              type: string
              description: The value of the credential that will be encrypted.
              example: rwhR12uDm1Im47p5IVXgzz4ORgC7m48ajzzeWVUt
    Credentials:
      type: object
      properties:
        credentials:
          type: array
          items:
            $ref: '#/components/schemas/Credential'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    DashboardOrder:
      type: string
      enum:
        - asc
        - desc
    ApiAgentStatusWidget:
      type: object
      allOf:
        - $ref: '#/components/schemas/Widget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/AgentStatusWidgetType'
            agents:
              $ref: '#/components/schemas/AgentWidgetType'
            show:
              $ref: '#/components/schemas/AgentWidgetShow'
            dataSource:
              $ref: '#/components/schemas/AgentStatusDatasource'
    AgentWidgetType:
      $ref: '#/components/schemas/LegacyAgentWidgetType'
    ApiAgentWidgetType:
      type: string
      description: Type of the agent.
      enum:
        - enterprise
        - endpoint
      example: endpoint
    LegacyAgentWidgetType:
      type: string
      description: Type of the agent.
      enum:
        - Enterprise Agents
        - Endpoint Agents
    AgentWidgetShow:
      $ref: '#/components/schemas/LegacyAgentWidgetShow'
    ApiAgentWidgetShow:
      type: string
      description: Ownership of the agent.
      enum:
        - owned
        - all
      example: owned
    LegacyAgentWidgetShow:
      type: string
      description: Ownership of the agent.
      enum:
        - Owned Agents
        - All Assigned Agents
    ApiAlertListWidget:
      type: object
      allOf:
        - $ref: '#/components/schemas/Widget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/AlertListWidgetType'
            alertTypes:
              uniqueItems: true
              type: array
              description: >-
                List of alert types configured in the widget, an empty list
                means all alert types.
              items:
                $ref: '#/components/schemas/ApiAlertListAlertType'
            limitTo:
              type: integer
              format: int32
              description: Limit the number of alerts displayed in the widget.
              example: 15
            activeWithin:
              $ref: '#/components/schemas/ActiveWithin'
            dataSource:
              $ref: '#/components/schemas/AlertListDatasource'
    ApiAggregateProperty:
      type: string
      description: >-
        Defines the property by which to aggregate the metric. Metrics are
        grouped based on unique values of the chosen property. Selecting `ALL`
        aggregates the data into a single group.
      example: ALL
      enum:
        - TIME
        - NONE
        - ALL
        - SOURCE
        - AGENT
        - MONITOR
        - CONTINENT
        - COUNTRY
        - REGION
        - TARGET_AGENT
        - SOURCE_AND_TARGET_AGENT
        - TEST
        - SERVER
        - TEST_LABEL
        - AGENT_LABEL
        - TRANSACTION_STEP
        - TRANSACTION_PAGE
        - WEB_TRANSACTION_MARKER
        - WEB_TRANSACTION_MARKER_INTERNAL
        - WEB_TRANSACTION_PAGE
        - WEB_TRANSACTION_PAGE_INTERNAL
        - EYEBROW_MACHINE_ID
        - EYEBROW_CLIENT_ID
        - EYEBROW_HOST
        - EYEBROW_NETWORK_ID
        - EYEBROW_WHOIS_RANGE_ID
        - EYEBROW_PLATFORM
        - EYEBROW_CONNECTION
        - EYEBROW_GEONAME_ID
        - EYEBROW_LABEL
        - EYEBROW_DOMAIN
        - EYEBROW_TEST
        - EYEBROW_AGENT_TYPE
        - EYEBROW_TARGET_IP
        - EYEBROW_NET_TARGET_IP
        - EYEBROW_GATEWAY
        - EYEBROW_SSID
        - SSID
        - EYEBROW_BSSID
        - BSSID
        - EYEBROW_VPN_VENDOR
        - EYEBROW_VPN_GATEWAY
        - EYEBROW_PROXY_ADDRESS
        - EYEBROW_NETWORK_PROBE_DNS_SERVER
        - EYEBROW_DESTINATION_IP_ADDRESS
        - EYEBROW_SESSION_ERRORS
        - EYEBROW_ASN
        - DEVICE_INTERFACE
        - DEVICE
        - DEVICE_CLASS
        - DEVICE_INTERFACE_TYPE
        - INSIGHTS_CATALOG_PROVIDER
        - INSIGHTS_ASN
        - ASN
        - INSIGHTS_LOCATION
        - INSIGHTS_AFFECTED_TEST
        - INSIGHTS_AFFECTED_DOMAIN
        - INSIGHTS_AFFECTED_INTERFACE_LOCATION
        - INSIGHTS_AFFECTED_INTERFACE_IP
        - INSIGHTS_DESTINATION_LOCATION
        - INSIGHTS_DESTINATION_ASN
        - INSIGHTS_DESTINATION_PREFIX
        - INSIGHTS_APPLICATION
        - INSIGHTS_ERROR_TYPE
        - INSIGHTS_AFFECTED_DOMAIN_LOCATION
        - INSIGHTS_AFFECTED_SERVER_LOCATION
        - APPDYNAMICS_APPLICATION
        - APPDYNAMICS_SERVICE
        - DOMAIN
        - EYEBROW_ORG_NAME
        - EYEBROW_USER
        - EYEBROW_AGENT
        - EYEBROW_COMPUTER_NAME
        - CLOUD_NATIVE_MONITORING-ALL
        - CLOUD_NATIVE_MONITORING-ACCOUNT
        - CLOUD_NATIVE_MONITORING-REGION
        - CLOUD_NATIVE_MONITORING-AVAILABILITY_ZONE
        - CLOUD_NATIVE_MONITORING-VPC
        - CLOUD_NATIVE_MONITORING-SUBNET
        - CLOUD_NATIVE_MONITORING-TYPE
        - CLOUD_NATIVE_MONITORING-SERVICE_PROVIDER
        - CLOUD_NATIVE_MONITORING-REMOTE_ACCOUNT
        - CLOUD_NATIVE_MONITORING-REMOTE_REGION
        - CLOUD_NATIVE_MONITORING-REMOTE_AVAILABILITY_ZONE
        - CLOUD_NATIVE_MONITORING-REMOTE_VPC
        - CLOUD_NATIVE_MONITORING-REMOTE_SUBNET
        - CLOUD_NATIVE_MONITORING-REMOTE_TYPE
        - CLOUD_NATIVE_MONITORING-REMOTE_SERVICE_PROVIDER
    ApiBoxAndWhiskersWidget:
      type: object
      description: >-
        A widget that displays a box and whisker plot, mapping data points over
        time with key statistics: median, range, and quartiles.
      allOf:
        - $ref: '#/components/schemas/Widget'
        - $ref: '#/components/schemas/ScalableWidget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/BoxAndWhiskersWidgetType'
            groupBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            dataSource:
              $ref: '#/components/schemas/BoxAndWhiskersDatasource'
    ApiWidgetFixedYScalePrefix:
      type: string
      description: Prefix denoting the unit of measurement for the fixed Y-axis scale.
      example: Mbps
      enum:
        - Kbps
        - Mbps
        - Gbps
        - Kbitps
        - Mbitps
        - Gbitps
        - Kpps
        - Mpps
        - Gpps
    ScalableWidget:
      type: object
      properties:
        minScale:
          type: number
          format: float
          description: Minimum scale configured in the widget.
          example: 1
        maxScale:
          type: number
          format: float
          description: Maximum scale configured in the widget.
          example: 100
        unit:
          $ref: '#/components/schemas/ApiWidgetFixedYScalePrefix'
    WidgetLimit:
      type: integer
      format: int32
      description: Limit configured in the widget.
      example: 10
    ApiColorGridWidget:
      type: object
      description: >-
        The Color Grid widget displays colored cards arranged in rows and
        columns.
      allOf:
        - $ref: '#/components/schemas/Widget'
        - $ref: '#/components/schemas/ScalableWidget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/ColorGridWidgetType'
            cards:
              $ref: '#/components/schemas/ApiAggregateProperty'
            groupCardsBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            columns:
              type: integer
              format: int32
              description: 'Number of columns: 1 or 2.'
              example: 1
            limit:
              $ref: '#/components/schemas/WidgetLimit'
            sortBy:
              $ref: '#/components/schemas/WidgetSortProperty'
            sortDirection:
              $ref: '#/components/schemas/WidgetSortDirection'
            dataSource:
              $ref: '#/components/schemas/ColorGridDatasource'
    ApiWidgetSortProperty:
      type: string
      description: Determines the card sorting criterion.
      example: alphabetical
      enum:
        - alphabetical
        - value
    LegacyWidgetSortProperty:
      type: string
      deprecated: true
      description: Determines the card sorting criterion.
      example: Alphabetical
      enum:
        - Alphabetical
        - Value
    WidgetSortProperty:
      $ref: '#/components/schemas/LegacyWidgetSortProperty'
    ApiWidgetSortDirection:
      type: string
      description: Specifies the order in which cards are sorted.
      example: ascending
      enum:
        - ascending
        - descending
    LegacyWidgetSortDirection:
      type: string
      deprecated: true
      description: Specifies the order in which cards are sorted.
      example: Ascending
      enum:
        - Ascending
        - Descending
    WidgetSortDirection:
      $ref: '#/components/schemas/LegacyWidgetSortDirection'
    LegacyApiDashboard:
      type: object
      deprecated: true
      properties:
        accountId:
          type: integer
          format: int64
          readOnly: true
          example: 1234
          description: Identifier for the account group associated with a dashboard.
        createdBy:
          type: integer
          format: int64
          readOnly: true
          example: 1
          description: Identifier for the user that created a dashboard.
        modifiedBy:
          type: integer
          format: int64
          readOnly: true
          example: 1
          description: Identifier for the user that last modified a dashboard.
        modifiedDate:
          type: string
          readOnly: true
          example: '2023-05-16 10:14:28'
          description: UTC date/time when a dashboard was last modified.
        globalOverride:
          type: boolean
          description: >-
            When set to `true`, the defaultTimespan is used and overrides the
            widget's timespan. If set to `false`, the the widget's timespan is
            used.
        migratedReport:
          type: boolean
          readOnly: true
          description: True if this dashboard was previously a report.
          example: false
        apiLink:
          type: array
          description: A links array containing the self and the snapshots links.
          items:
            additionalProperties: true
    Dashboard:
      description: Dashboard upon which this dashboard snapshot is based upon.
      allOf:
        - type: object
          properties:
            dashboardId:
              type: string
              readOnly: true
              example: 5e1f7a99143ae6004fdc3bb4
              description: Identifier of a dashboard.
            title:
              type: string
              example: HTTP Server Widgets
              description: Title of a dashboard.
            isBuiltIn:
              type: boolean
              readOnly: true
              description: >-
                Indicates if a dashboard is built-in. True for built-in
                dashboards, false for user-created dashboards.
              example: true
            aid:
              type: string
              readOnly: true
              example: '1234'
              description: Identifier for the account group associated with a dashboard.
            createdBy:
              type: string
              readOnly: true
              example: '1'
              description: Identifier for the user that created a dashboard.
            modifiedBy:
              type: string
              readOnly: true
              example: '1'
              description: Identifier for the user that last modified a dashboard.
            modifiedDate:
              type: string
              format: date-time
              readOnly: true
              example: '2023-05-16T10:14:28Z'
              description: >-
                UTC date/time when a dashboard was last modified (ISO date-time
                format).
            isPrivate:
              type: boolean
              description: >-
                A dashboard can be viewed by other users in the account. If
                true, only the creator of the dashboard may view it. If false,
                all users in the same account may view it.
              example: true
            isDefaultForUser:
              type: boolean
              readOnly: true
              description: >-
                Indicates whether this dashboard is the user's default. True for
                default, false if not.
              example: true
            isDefaultForAccount:
              type: boolean
              readOnly: true
              description: >-
                Indicates whether this dashboard is the account group's default.
                True for default, false if not.
              example: false
            widgets:
              type: array
              items:
                $ref: '#/components/schemas/ApiWidget'
            description:
              type: string
              example: HTTP Server Widgets
              description: >-
                A text description of the dashboard's purpose and functionality.
                This information assists users in understanding the dashboard
                but isn't displayed when viewing a dashboard.
            defaultTimespan:
              $ref: '#/components/schemas/DefaultTimespan'
            isGlobalOverride:
              type: boolean
              description: >-
                When set to `true`, the defaultTimespan is used and overrides
                the widget's timespan. If set to `false`, the the widget's
                timespan is used.
            isMigratedReport:
              type: boolean
              readOnly: true
              description: True if this dashboard was previously a report.
              example: false
            _links:
              $ref: '#/components/schemas/DashboardLinks'
        - $ref: '#/components/schemas/DashboardGlobalFilterId'
    ApiDashboards:
      type: array
      items:
        $ref: '#/components/schemas/ApiDashboard'
    ApiDashboard:
      description: Dashboard upon which this dashboard snapshot is based upon.
      allOf:
        - type: object
          properties:
            dashboardId:
              type: string
              readOnly: true
              example: 5e1f7a99143ae6004fdc3bb4
              description: Identifier of a dashboard.
            title:
              type: string
              example: HTTP Server Widgets
              description: Title of a dashboard.
            isBuiltIn:
              type: boolean
              readOnly: true
              description: >-
                Indicates if a dashboard is built-in. True for built-in
                dashboards, false for user-created dashboards.
              example: true
            aid:
              type: string
              readOnly: true
              example: '1234'
              description: Identifier for the account group associated with a dashboard.
            dashboardCreatedBy:
              type: string
              readOnly: true
              example: '1'
              description: Identifier for the user that created a dashboard.
            dashboardModifiedBy:
              type: string
              readOnly: true
              example: '1'
              description: Identifier for the user that last modified a dashboard.
            dashboardModifiedDate:
              type: string
              format: date-time
              readOnly: true
              example: '2023-05-16T10:14:28Z'
              description: >-
                UTC date/time when a dashboard was last modified (ISO date-time
                format).
            isPrivate:
              type: boolean
              description: >-
                A dashboard can be viewed by other users in the account. If
                true, only the creator of the dashboard may view it. If false,
                all users in the same account may view it.
              example: true
            isDefaultForUser:
              type: boolean
              readOnly: true
              description: >-
                Indicates whether this dashboard is the user's default. True for
                default, false if not.
              example: true
            isDefaultForAccount:
              type: boolean
              readOnly: true
              description: >-
                Indicates whether this dashboard is the account group's default.
                True for default, false if not.
              example: false
            widgets:
              type: array
              items:
                $ref: '#/components/schemas/ApiWidget'
            description:
              type: string
              example: HTTP Server Widgets
              description: >-
                A text description of the dashboard's purpose and functionality.
                This information assists users in understanding the dashboard
                but isn't displayed when viewing a dashboard.
            defaultTimespan:
              $ref: '#/components/schemas/DefaultTimespan'
            isGlobalOverride:
              type: boolean
              description: >-
                When set to `true`, the defaultTimespan is used and overrides
                the widget's timespan. If set to `false`, the the widget's
                timespan is used.
            isMigratedReport:
              type: boolean
              readOnly: true
              description: True if this dashboard was previously a report.
              example: false
            _links:
              $ref: '#/components/schemas/DashboardLinks'
        - $ref: '#/components/schemas/DashboardGlobalFilterId'
        - $ref: '#/components/schemas/LegacyApiDashboard'
    LegacyDefaultTimespan:
      type: object
      deprecated: true
      properties:
        timespanDuration:
          type: integer
          format: int64
          description: Relative timespan in seconds.
          example: 7200
        timespanStart:
          type: string
          description: UTC start date of the timespan range.
          example: '2023-05-16 10:14:28'
        timespanEnd:
          type: string
          description: UTC end date of the timespan range.
          example: '2023-05-16 11:14:28'
    ApiDefaultTimespan:
      type: object
      properties:
        duration:
          type: integer
          format: int64
          description: Relative timespan in seconds.
          example: 7200
        start:
          type: string
          format: date-time
          description: UTC start date of the timespan range (ISO date-time format).
          example: '2023-05-16T10:14:28Z'
        end:
          type: string
          format: date-time
          description: UTC end date of the timespan range (ISO date-time format).
          example: '2023-05-16T11:14:28Z'
    DefaultTimespan:
      allOf:
        - $ref: '#/components/schemas/LegacyDefaultTimespan'
        - $ref: '#/components/schemas/ApiDefaultTimespan'
    ApiDuration:
      description: Specifies a fixed timespan for data aggregation.
      type: object
      properties:
        value:
          $ref: '#/components/schemas/DurationValue'
        unit:
          $ref: '#/components/schemas/LegacyDurationUnit'
    ActiveWithin:
      description: Timespan in which alerts must have been active to appear in the widget.
      type: object
      properties:
        value:
          $ref: '#/components/schemas/DurationValue'
        unit:
          $ref: '#/components/schemas/LegacyDurationUnit'
    DurationValue:
      type: integer
      format: int32
      description: Timespan value.
      example: 10
    LegacyDurationUnit:
      type: string
      deprecated: true
      description: Timespan unit.
      enum:
        - Minutes
        - Hours
        - Days
      example: Days
    ApiGeoMapWidget:
      type: object
      description: >-
        Displays data on a geographic map, highlighting information across
        different regions.
      allOf:
        - $ref: '#/components/schemas/Widget'
        - $ref: '#/components/schemas/ScalableWidget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/MapWidgetType'
            groupBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            isGeoMapPerTest:
              type: boolean
              description: >-
                Indicates whether a separate map is displayed for each test
                within the widget. When set to true, individual maps are
                generated.
            sortBy:
              $ref: '#/components/schemas/WidgetSortProperty'
            sortDirection:
              $ref: '#/components/schemas/WidgetSortDirection'
            dataSource:
              $ref: '#/components/schemas/GeoMapDatasource'
    ApiGroupedBarchartWidget:
      type: object
      description: >-
        Displays grouped bars, each representing multiple data points. You can
        configure the bars to align horizontally or vertically.
      allOf:
        - $ref: '#/components/schemas/Widget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/BarChartGroupedWidgetType'
            groupBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            axisGroupBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            sortBy:
              $ref: '#/components/schemas/WidgetSortProperty'
            sortDirection:
              $ref: '#/components/schemas/WidgetSortDirection'
            limit:
              $ref: '#/components/schemas/WidgetLimit'
            showLabels:
              type: boolean
              description: Displays labels on each bar when set to `true`.
            isHorizontalBarChart:
              type: boolean
            dataSource:
              $ref: '#/components/schemas/GroupedBarChartDatasource'
    ApiMultiMetricColumn:
      type: object
      description: >-
        Defines a column within a table that aggregates and displays various
        metrics (Multi-Metric table).
      properties:
        id:
          type: string
        dataSource:
          $ref: '#/components/schemas/MultiMetricsTableDatasource'
        metricGroup:
          $ref: '#/components/schemas/MetricGroup'
        direction:
          $ref: '#/components/schemas/DashboardMetricDirection'
        metric:
          $ref: '#/components/schemas/DashboardMetric'
        filters:
          $ref: '#/components/schemas/WidgetFilters'
        measure:
          $ref: '#/components/schemas/ApiWidgetMeasure'
    ApiMultiMetricTableWidget:
      type: object
      description: >-
        A Multi-Metric table widget with columns, each representing a different
        metric, offering a comprehensive view rather than restricting to a
        single metric.
      allOf:
        - $ref: '#/components/schemas/Widget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/MultiMetricTableWidgetType'
            compareToPreviousValue:
              type: boolean
              description: >-
                Enables comparison of the current metric value with the previous
                value.
            rowGroupBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            sortBy:
              $ref: '#/components/schemas/WidgetSortProperty'
            sortDirection:
              $ref: '#/components/schemas/WidgetSortDirection'
            limit:
              $ref: '#/components/schemas/WidgetLimit'
            multiMetricColumns:
              type: array
              items:
                $ref: '#/components/schemas/ApiMultiMetricColumn'
            dataSource:
              $ref: '#/components/schemas/MultiMetricsTableDatasource'
    ApiMultiSearchFilterApiTestTableFilterKey:
      type: object
      description: >-
        A multi search filter key within the Multi-Metric table widget. The key
        represents the filter name, and the value specifies the filter value.
      properties:
        key:
          $ref: '#/components/schemas/TestTableFilterKey'
        value:
          type: string
    TestTableFilterKey:
      type: string
      enum:
        - Anything
        - Test Name
        - Target
        - Test ID
        - Test type
        - Label ID
      example: Target
    ApiNumbersCard:
      type: object
      description: An individual number card within the numbers card widget.
      allOf:
        - $ref: '#/components/schemas/ScalableWidget'
        - type: object
          properties:
            id:
              type: string
              description: Identifier of the widget.
              example: '1234'
            description:
              type: string
              description: Description of the number card.
              example: Widget Title
            measure:
              $ref: '#/components/schemas/ApiWidgetMeasure'
            compareToPreviousValue:
              type: boolean
            fixedTimespan:
              $ref: '#/components/schemas/ApiDuration'
            shouldExcludeAlertSuppressionWindows:
              type: boolean
              description: >-
                Excludes alert suppression windows from the widget when set to
                `true`.
            dataSource:
              $ref: '#/components/schemas/NumbersCardDatasource'
            metricGroup:
              $ref: '#/components/schemas/MetricGroup'
            direction:
              $ref: '#/components/schemas/DashboardMetricDirection'
            metric:
              $ref: '#/components/schemas/DashboardMetric'
            filters:
              $ref: '#/components/schemas/WidgetFilters'
    ApiNumbersCardWidget:
      type: object
      description: >-
        A widget composed of multiple cards, each presenting a singular metric,
        such as average packet loss, page load time, or alert count.
      allOf:
        - $ref: '#/components/schemas/Widget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/NumberWidgetType'
            numberCards:
              type: array
              items:
                $ref: '#/components/schemas/ApiNumbersCard'
            dataSource:
              $ref: '#/components/schemas/NumbersCardDatasource'
    ApiPieChartWidget:
      type: object
      description: >-
        Displays data as segments of a pie, with each slice representing a
        portion of the total value.
      allOf:
        - $ref: '#/components/schemas/Widget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/PieChartWidgetType'
            groupBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            dataSource:
              $ref: '#/components/schemas/PieChartDatasource'
    ApiStackedAreaChartWidget:
      type: object
      description: >-
        Displays line plots over time, stacking quantities vertically to
        showcase cumulative data trends, similar to stacked bar charts. Ideal
        for visualizing changes in response times, error counts, and other
        metrics, revealing the progression of values across a timeline. Use this
        chart to replace stacked bar charts for temporal data analysis.
      allOf:
        - $ref: '#/components/schemas/Widget'
        - $ref: '#/components/schemas/ScalableWidget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/TimeSeriesStackedAreaWidgetType'
            groupBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            dataSource:
              $ref: '#/components/schemas/StackedAreaChartDatasource'
    ApiStackedBarchartWidget:
      allOf:
        - $ref: '#/components/schemas/Widget'
        - type: object
          required:
            - type
          description: >-
            Displays horizontal histogram bars with multiple values, which are
            useful for composite metric data (such as HTTP response or fetch
            time) and for comparing values between multiple tests or for
            comparing values on a country-by-country basis. The bars can be
            aligned horizontally or vertically as columns.
          properties:
            type:
              $ref: '#/components/schemas/BarChartStackedWidgetType'
            axisGroupBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            sortBy:
              $ref: '#/components/schemas/WidgetSortProperty'
            sortDirection:
              $ref: '#/components/schemas/WidgetSortDirection'
            limit:
              $ref: '#/components/schemas/WidgetLimit'
            showLabels:
              type: boolean
            isHorizontalBarChart:
              type: boolean
              description: Set to `true` to display bars horizontally in the widget.
            dataSource:
              $ref: '#/components/schemas/StackedBarChartDatasource'
    ApiTableWidget:
      type: object
      description: >-
        Organizes data in rows and columns, with options to list by test,
        geographic location, data source, or aggregated categories.
      allOf:
        - $ref: '#/components/schemas/Widget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/TableWidgetType'
            compareToPreviousValue:
              type: boolean
            rowGroupBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            columnGroupBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            sortBy:
              $ref: '#/components/schemas/WidgetSortProperty'
            sortDirection:
              $ref: '#/components/schemas/WidgetSortDirection'
            limit:
              $ref: '#/components/schemas/WidgetLimit'
            dataSource:
              $ref: '#/components/schemas/TableDatasource'
    ApiTestTableWidget:
      type: object
      description: >-
        Displays tests and statuses with options to sort and filter. It can be
        set to show only certain tests, like those with specific labels or
        failing tests.
      allOf:
        - $ref: '#/components/schemas/Widget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/TestTableWidgetType'
            filter:
              $ref: '#/components/schemas/ApiWidgetFilterApiTestTableFilterKey'
            exclude:
              $ref: '#/components/schemas/ApiWidgetFilterApiTestTableFilterKey'
            dataSource:
              $ref: '#/components/schemas/TestTableDatasource'
    ApiTimeseriesWidget:
      type: object
      description: >-
        The Timeseries widget graphs data over time, with the chosen metric
        displayed on the vertical axis. vertical axis
      allOf:
        - $ref: '#/components/schemas/Widget'
        - $ref: '#/components/schemas/ScalableWidget'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/TimeSeriesLineWidgetType'
            showTimeseriesOverallBaseline:
              type: boolean
              description: Displays the overall baseline if set to `true`.
            groupBy:
              $ref: '#/components/schemas/ApiAggregateProperty'
            isTimeseriesOneChartPerLine:
              type: boolean
              description: Displays a separate chart for each line if set to `true`.
            dataSource:
              $ref: '#/components/schemas/TimeseriesDatasource'
    AgentStatusDatasource:
      type: string
      description: Datasource of the agent to retrieve status.
      enum:
        - ALERTS
        - DEVICES
        - DNSP
        - ENDPOINT_AGENTS
        - ENDPOINT_SCHEDULED_TEST
        - ENDPOINT_AST_TEST
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_LOCAL_NETWORK
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - ROUTING
        - CLOUD_AND_ENTERPRISE_AGENTS
        - INTERNET_INSIGHTS
        - APPDYNAMICS_SERVICE_HEALTH
        - CLOUD_NATIVE_MONITORING
      example: ENDPOINT_AGENTS
    AlertListDatasource:
      type: string
      description: Datasource of the alert list.
      enum:
        - ALERTS
        - DEVICES
        - DNSP
        - ENDPOINT_AGENTS
        - ENDPOINT_SCHEDULED_TEST
        - ENDPOINT_AST_TEST
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_LOCAL_NETWORK
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - ROUTING
        - CLOUD_AND_ENTERPRISE_AGENTS
        - INTERNET_INSIGHTS
        - APPDYNAMICS_SERVICE_HEALTH
        - CLOUD_NATIVE_MONITORING
      example: ENDPOINT_AGENTS
    BoxAndWhiskersDatasource:
      type: string
      description: Datasource of the box and whiskers widget.
      enum:
        - ALERTS
        - CLOUD_AND_ENTERPRISE_AGENTS
        - DEVICES
        - ENDPOINT_AGENTS
        - ENDPOINT_AST_TEST
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_LOCAL_NETWORK
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - ENDPOINT_SCHEDULED_TEST
        - INTERNET_INSIGHTS
        - ROUTING
        - CLOUD_NATIVE_MONITORING
      example: INTERNET_INSIGHTS
    ColorGridDatasource:
      type: string
      description: Datasource of the color grid widget.
      enum:
        - THIRD_PARTY_APPLICATIONS
        - ALERTS
        - CLOUD_AND_ENTERPRISE_AGENTS
        - DEVICES
        - ENDPOINT_AGENTS
        - ENDPOINT_AST_TEST
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_LOCAL_NETWORK
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - ENDPOINT_SCHEDULED_TEST
        - INTERNET_INSIGHTS
        - ROUTING
        - CLOUD_NATIVE_MONITORING
      example: INTERNET_INSIGHTS
    GeoMapDatasource:
      type: string
      description: Datasource of the geo map widget.
      enum:
        - ALERTS
        - CLOUD_AND_ENTERPRISE_AGENTS
        - ENDPOINT_AGENTS
        - ENDPOINT_AST_TEST
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_LOCAL_NETWORK
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - ENDPOINT_SCHEDULED_TEST
        - INTERNET_INSIGHTS
        - ROUTING
        - CLOUD_NATIVE_MONITORING
      example: INTERNET_INSIGHTS
    GroupedBarChartDatasource:
      type: string
      description: Datasource of the grouped bar chart widget.
      enum:
        - ALERTS
        - CLOUD_AND_ENTERPRISE_AGENTS
        - DEVICES
        - ENDPOINT_AGENTS
        - ENDPOINT_AST_TEST
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_LOCAL_NETWORK
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - ENDPOINT_SCHEDULED_TEST
        - INTERNET_INSIGHTS
        - ROUTING
        - CLOUD_NATIVE_MONITORING
      example: ENDPOINT_AGENTS
    MultiMetricsTableDatasource:
      type: string
      description: Datasource of the Multi-Metrics table widget.
      enum:
        - ALERTS
        - CLOUD_AND_ENTERPRISE_AGENTS
        - DEVICES
        - ENDPOINT_AGENTS
        - ENDPOINT_AST_TEST
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_LOCAL_NETWORK
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - ENDPOINT_SCHEDULED_TEST
        - INTERNET_INSIGHTS
        - ROUTING
        - CLOUD_NATIVE_MONITORING
      example: ENDPOINT_AGENTS
    NumbersCardDatasource:
      type: string
      description: Datasource of the numbers card widget.
      enum:
        - ALERTS
        - CLOUD_AND_ENTERPRISE_AGENTS
        - DEVICES
        - ENDPOINT_AGENTS
        - ENDPOINT_AST_TEST
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_LOCAL_NETWORK
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - ENDPOINT_SCHEDULED_TEST
        - INTERNET_INSIGHTS
        - ROUTING
        - CLOUD_NATIVE_MONITORING
      example: ENDPOINT_AGENTS
    PieChartDatasource:
      type: string
      description: Datasource of the pie chart widget.
      enum:
        - CLOUD_AND_ENTERPRISE_AGENTS
        - ENDPOINT_AGENTS
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_SCHEDULED_TEST
        - CLOUD_NATIVE_MONITORING
      example: ENDPOINT_AGENTS
    StackedAreaChartDatasource:
      type: string
      description: Datasource of the stacked area chart widget.
      enum:
        - CLOUD_AND_ENTERPRISE_AGENTS
        - ENDPOINT_AGENTS
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_SCHEDULED_TEST
        - CLOUD_NATIVE_MONITORING
      example: ENDPOINT_AGENTS
    StackedBarChartDatasource:
      type: string
      description: Datasource of the stacked bar chart widget.
      enum:
        - CLOUD_AND_ENTERPRISE_AGENTS
        - ENDPOINT_AGENTS
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_SCHEDULED_TEST
        - CLOUD_NATIVE_MONITORING
      example: ENDPOINT_AGENTS
    TableDatasource:
      type: string
      description: Datasource of the table widget.
      enum:
        - ALERTS
        - CLOUD_AND_ENTERPRISE_AGENTS
        - DEVICES
        - ENDPOINT_AGENTS
        - ENDPOINT_AST_TEST
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_LOCAL_NETWORK
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - ENDPOINT_SCHEDULED_TEST
        - INTERNET_INSIGHTS
        - ROUTING
        - CLOUD_NATIVE_MONITORING
      example: ENDPOINT_AGENTS
    TestTableDatasource:
      type: string
      description: Datasource of the test table widget.
      enum:
        - ALERTS
        - DEVICES
        - DNSP
        - ENDPOINT_AGENTS
        - ENDPOINT_SCHEDULED_TEST
        - ENDPOINT_AST_TEST
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_LOCAL_NETWORK
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - ROUTING
        - CLOUD_AND_ENTERPRISE_AGENTS
        - INTERNET_INSIGHTS
        - APPDYNAMICS_SERVICE_HEALTH
        - CLOUD_NATIVE_MONITORING
      example: CLOUD_AND_ENTERPRISE_AGENTS
    TimeseriesDatasource:
      type: string
      description: Datasource of the Timeseries widget.
      enum:
        - ALERTS
        - CLOUD_AND_ENTERPRISE_AGENTS
        - DEVICES
        - ENDPOINT_AGENTS
        - ENDPOINT_AST_TEST
        - ENDPOINT_BROWSER_SESSION
        - ENDPOINT_LOCAL_NETWORK
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - ENDPOINT_SCHEDULED_TEST
        - INTERNET_INSIGHTS
        - ROUTING
        - CLOUD_NATIVE_MONITORING
      example: CLOUD_AND_ENTERPRISE_AGENTS
    MetricGroup:
      type: string
      description: >-
        Metric group of widget as it appears in the UI. Note: may not be
        required in some cases.
      enum:
        - AGENT_TO_AGENT
        - AGENT_TO_SERVER
        - HTTP_SERVER
        - FTP_SERVER
        - PAGE_LOAD
        - TRANSACTIONS_CLASSIC
        - TRANSACTIONS
        - API
        - ENDPOINT_BROWSER_SESSION_NETWORK
        - ENDPOINT_BROWSER_SESSION_SYSTEM
        - ENDPOINT_BROWSER_SESSION_VISITED_PAGES
        - ENDPOINT_SCHEDULED_TEST_HTTP_SERVER
        - ENDPOINT_SCHEDULED_TEST_NETWORK
        - ENDPOINT_SCHEDULED_TEST_SYSTEM
        - ENDPOINT_AST_TEST_NETWORK
        - ENDPOINT_AST_TEST_SYSTEM
        - ENDPOINT_LOCAL_NETWORK_GATEWAY
        - ENDPOINT_LOCAL_NETWORK_AGENTS
        - ENDPOINT_LOCAL_NETWORK_DNS
        - ENDPOINT_LOCAL_NETWORK_NETWORK_ACCESS
        - ENDPOINT_LOCAL_NETWORK_PROXY
        - ENDPOINT_LOCAL_NETWORK_SYSTEM
        - ENDPOINT_LOCAL_NETWORK_VPN
        - ENDPOINT_LOCAL_NETWORK_WIRELESS
        - BGP
        - DEVICE
        - VOIP
        - SIP
        - ALERTS
        - DNS
        - DOMAIN_TRACE
        - DNSSEC
        - DNSP
        - NETWORK_OUTAGES
        - APPLICATION_OUTAGES
        - APPDYNAMICS_SERVICE_HEALTH
        - CLOUD_NATIVE_MONITORING-TRAFFIC_FLOW
        - CLOUD_NATIVE_MONITORING-EVENTS
      example: BGP
    DashboardMetricDirection:
      type: string
      description: Direction of agent to agent metric.
      enum:
        - TO_TARGET
        - FROM_TARGET
        - BIDIRECTIONAL
      example: FROM_TARGET
    DashboardMetric:
      type: string
      description: >-
        Indicates the specific metric in the report, determined by the layer,
        test type, and metric values.
      enum:
        - ONE_WAY_NET_LOSS_TO_TARGET
        - ONE_WAY_NET_LATENCY_TO_TARGET
        - ONE_WAY_NET_JITTER_TO_TARGET
        - ONE_WAY_NET_THROUGHPUT_TO_TARGET
        - ONE_WAY_NET_ERROR_TO_TARGET
        - ONE_WAY_NET_LOSS_FROM_TARGET
        - ONE_WAY_NET_LATENCY_FROM_TARGET
        - ONE_WAY_NET_JITTER_FROM_TARGET
        - ONE_WAY_NET_THROUGHPUT_FROM_TARGET
        - ONE_WAY_NET_ERROR_FROM_TARGET
        - ONE_WAY_NET_LOSS_BIDIRECTIONAL
        - ONE_WAY_NET_LATENCY_BIDIRECTIONAL
        - ONE_WAY_NET_JITTER_BIDIRECTIONAL
        - ONE_WAY_NET_THROUGHPUT_BIDIRECTIONAL
        - ONE_WAY_NET_ERROR_BIDIRECTIONAL
        - NET_LOSS
        - NET_LATENCY
        - NET_JITTER
        - NET_BANDWIDTH
        - NET_CAPACITY
        - PROXY_NET_LOSS
        - PROXY_NET_LATENCY
        - PROXY_NET_JITTER
        - WEB_AVAILABILITY
        - WEB_THROUGHPUT
        - WEB_DNS
        - WEB_CONNECT
        - WEB_SSL
        - WEB_WAIT
        - WEB_TTFB
        - WEB_RECEIVE
        - WEB_REDIRECT
        - WEB_FETCH
        - WEB_AUTHENTICATION_ERROR_COUNT
        - WEB_DNS_ERROR_COUNT
        - WEB_CONNECT_ERROR_COUNT
        - WEB_SSL_ERROR_COUNT
        - WEB_SEND_ERROR_COUNT
        - WEB_RECEIVE_ERROR_COUNT
        - WEB_HTTP_ERROR_COUNT
        - WEB_CONTENT_ERROR_COUNT
        - WEB_TOTAL_ERROR_COUNT
        - FTP_AVAILABILITY
        - FTP_THROUGHPUT
        - FTP_DNS
        - FTP_CONNECT
        - FTP_SSL
        - FTP_NEGOTIATION
        - FTP_WAIT
        - FTP_TTFB
        - FTP_TRANSFER
        - FTP_TOTAL
        - FTP_DNS_ERROR_COUNT
        - FTP_CONNECT_ERROR_COUNT
        - FTP_SSL_ERROR_COUNT
        - FTP_NEGOTIATION_ERROR_COUNT
        - FTP_TRANSFER_ERROR_COUNT
        - FTP_FTP_ERROR_COUNT
        - FTP_CONTENT_ERROR_COUNT
        - FTP_TOTAL_ERROR_COUNT
        - WEB_PAGE_LOAD_DOM_TIME
        - WEB_PAGE_LOAD
        - WEB_PAGE_TTFB
        - WEB_PAGE_COMPONENT_COUNT
        - WEB_PAGE_ERROR_COUNT
        - WEB_PAGE_LOAD_COMPLETION_RATE
        - CLASSIC_TRANSACTION_TIME
        - CLASSIC_TRANSACTION_COMPLETION
        - CLASSIC_TRANSACTION_STEP_TIME
        - CLASSIC_TRANSACTION_PAGE_TIME
        - TRANSACTION_MARKER_TIME_DECOMPOSED
        - TRANSACTION_PAGE_LOAD_TIME_DECOMPOSED
        - TRANSACTION_PAGE_TIME_DECOMPOSED
        - TRANSACTION_PAGE_LOAD_DOM_TIME_DECOMPOSED
        - TRANSACTION_TIME
        - TRANSACTION_TIMEOUT
        - TRANSACTION_ASSERT_ERROR
        - TRANSACTION_OTHER_ERROR
        - TRANSACTION_PAGE_ERROR
        - TRANSACTION_COMPLETION
        - TRANSACTION_ERROR
        - TRANSACTION_MARKER_TIME
        - TRANSACTION_PAGE_TIME
        - TRANSACTION_PAGE_LOAD_TIME
        - TRANSACTION_PAGE_LOAD_DOM_TIME
        - API_TRANSACTION_TIME
        - API_REQUEST_CALL_TIME
        - API_REQUEST_DNS_TIME
        - API_REQUEST_CONNECT_TIME
        - API_REQUEST_SSL_TIME
        - API_REQUEST_SEND_TIME
        - API_REQUEST_WAIT_TIME
        - API_REQUEST_BLOCK_TIME
        - API_REQUEST_RECEIVE_TIME
        - API_REQUEST_ASSERT_ERROR_COUNT
        - API_REQUEST_COMPLETION
        - API_REQUEST_OTHER_ERROR_COUNT
        - VOIP_DISCARDS
        - VOIP_LATENCY
        - VOIP_LOSS
        - VOIP_MOS
        - VOIP_PDV
        - SIP_AVAILABILITY
        - SIP_DNS
        - SIP_CONNECT
        - SIP_REDIRECT
        - SIP_REGISTER
        - SIP_OPTIONS
        - SIP_INVITE
        - SIP_WAIT
        - SIP_RESPONSE_TIME
        - SIP_TOTAL_TIME
        - SIP_DNS_ERROR_COUNT
        - SIP_CONNECT_ERROR_COUNT
        - SIP_REGISTER_ERROR_COUNT
        - SIP_OPTIONS_ERROR_COUNT
        - SIP_INVITE_ERROR_COUNT
        - SIP_TOTAL_ERROR_COUNT
        - DNS_SERVER_AVAILABILITY
        - DNS_SERVER_TIME
        - DNS_TRACE_AVAILABILITY
        - DNS_TRACE_QUERY_COUNT
        - DNS_TRACE_QUERY_TIME
        - DNSSEC_VALIDITY
        - DNSP_AVAILABILITY
        - DNSP_TIME
        - DNSP_SERVER_TIME
        - BGP_REACHABILITY
        - BGP_PATH_CHANGES
        - ALERT_COUNT
        - ALERT_COUNT_AGENT
        - ALERT_COUNT_BGP
        - ALERT_COUNT_DNSP
        - ENDPOINT_SAMPLE_COUNT
        - ENDPOINT_NET_LOSS
        - ENDPOINT_NET_LATENCY
        - ENDPOINT_NET_JITTER
        - ENDPOINT_NET_CONNECT_FAILURES
        - ENDPOINT_NET_CPU_LOAD_PERCENT
        - ENDPOINT_NET_MEMORY_LOAD_PERCENT
        - ENDPOINT_NET_VPN_LOSS
        - ENDPOINT_NET_VPN_LATENCY
        - ENDPOINT_PAGE_COUNT
        - ENDPOINT_WEB_COMPLETION
        - ENDPOINT_WEB_RESPONSE_TIME
        - ENDPOINT_WEB_PAGE_LOAD
        - ENDPOINT_WEB_PAGE_LOAD_DOM_TIME
        - ENDPOINT_WEB_EXPERIENCE_SCORE
        - ENDPOINT_WEB_BROWSER_ERROR_COUNT
        - ENDPOINT_GATEWAY_PROBE_COUNT
        - ENDPOINT_GATEWAY_COMBINED_TRANSMISSION_RATE
        - ENDPOINT_GATEWAY_SIGNAL_QUALITY
        - ENDPOINT_GATEWAY_LOSS
        - ENDPOINT_GATEWAY_LATENCY
        - ENDPOINT_GATEWAY_AGENT_SCORE
        - ENDPOINT_GATEWAY_SCORE
        - ENDPOINT_GATEWAY_CONNECTION_SCORE
        - ENDPOINT_GATEWAY_PROXY_LOSS
        - ENDPOINT_GATEWAY_PROXY_LATENCY
        - ENDPOINT_GATEWAY_PROXY_SCORE
        - ENDPOINT_GATEWAY_VPN_LOSS
        - ENDPOINT_GATEWAY_VPN_LATENCY
        - ENDPOINT_GATEWAY_VPN_SCORE
        - ENDPOINT_GATEWAY_DNS_LOSS
        - ENDPOINT_GATEWAY_DNS_LATENCY
        - ENDPOINT_GATEWAY_DNS_TIME
        - ENDPOINT_GATEWAY_CPU_LOAD_PERCENT
        - ENDPOINT_GATEWAY_MEMORY_LOAD_PERCENT
        - EYEBROW_GATEWAY_WIRELESS_CHANNEL_SWAP_EVENTS
        - EYEBROW_GATEWAY_WIRELESS_RETRANSMISSION_RATE
        - EYEBROW_GATEWAY_WIRELESS_ROAMING_EVENTS
        - EYEBROW_GATEWAY_WIRELESS_SIGNAL_QUALITY
        - EYEBROW_GATEWAY_WIRELESS_THROUGHPUT
        - ENDPOINT_AST_TEST_NET_LOSS
        - ENDPOINT_AST_TEST_NET_JITTER
        - ENDPOINT_AST_TEST_NET_LATENCY
        - ENDPOINT_AST_TEST_NET_CPU_LOAD_PERCENT
        - ENDPOINT_AST_TEST_NET_MEMORY_LOAD_PERCENT
        - ENDPOINT_AST_TEST_VPN_LOSS
        - ENDPOINT_AST_TEST_VPN_LATENCY
        - ENDPOINT_AST_TEST_TCP_CONNECTION_ERROR_COUNT
        - ENDPOINT_AST_TEST_APPLICATION_SCORE
        - ENDPOINT_GATEWAY_WIRELESS_CHANNEL_SWAP_EVENTS
        - ENDPOINT_GATEWAY_WIRELESS_RETRANSMISSION_RATE
        - ENDPOINT_GATEWAY_WIRELESS_ROAMING_EVENTS
        - ENDPOINT_GATEWAY_WIRELESS_SIGNAL_QUALITY
        - ENDPOINT_GATEWAY_WIRELESS_THROUGHPUT
        - ENDPOINT_TEST_NET_LOSS
        - ENDPOINT_TEST_NET_JITTER
        - ENDPOINT_TEST_NET_LATENCY
        - ENDPOINT_TEST_NET_CPU_LOAD_PERCENT
        - ENDPOINT_TEST_NET_MEMORY_LOAD_PERCENT
        - ENDPOINT_TEST_VPN_LOSS
        - ENDPOINT_TEST_VPN_LATENCY
        - ENDPOINT_TEST_TCP_CONNECTION_ERROR_COUNT
        - ENDPOINT_TEST_APPLICATION_SCORE
        - ENDPOINT_TEST_HTTP_AVAILABILITY
        - ENDPOINT_TEST_HTTP_WAIT
        - ENDPOINT_TEST_HTTP_SSL
        - ENDPOINT_TEST_HTTP_CONNECT
        - ENDPOINT_TEST_HTTP_DNS_LOOKUP
        - ENDPOINT_TEST_HTTP_RESPONSE_TIME
        - ENDPOINT_TEST_HTTP_THROUGHPUT
        - ENDPOINT_TEST_HTTP_APPLICATION_SCORE
        - DEVICE_AVAILABILITY
        - DEVICE_THROUGHPUT_INPUT
        - DEVICE_THROUGHPUT_OUTPUT
        - DEVICE_DISCARDS_INPUT
        - DEVICE_DISCARDS_OUTPUT
        - DEVICE_ERRORS_INPUT
        - DEVICE_ERRORS_OUTPUT
        - DEVICE_DISCARDS_AND_ERRORS_INPUT
        - DEVICE_DISCARDS_AND_ERRORS_OUTPUT
        - DEVICE_INTERFACES_UP
        - DEVICE_INTERFACES_WITH_STATE_CHANGES
        - NETWORK_OUTAGES_OUTAGES
        - NETWORK_OUTAGES_LOCATIONS
        - NETWORK_OUTAGES_INTERFACES
        - NETWORK_OUTAGES_AFFECTED_TESTS
        - APPLICATION_OUTAGES_AFFECTED_TESTS
        - APPLICATION_OUTAGES_SERVERS
        - APPLICATION_OUTAGES_LOCATIONS
        - APPLICATION_OUTAGES_OUTAGES
        - APPDYNAMICS_SERVICE_HEALTH
        - CLOUD_NATIVE_MONITORING-ACCEPTED_TOTAL_THROUGHPUT
        - CLOUD_NATIVE_MONITORING-ACCEPTED_OUTBOUND_THROUGHPUT
        - CLOUD_NATIVE_MONITORING-ACCEPTED_INBOUND_THROUGHPUT
        - CLOUD_NATIVE_MONITORING-ACCEPTED_INTERNAL_THROUGHPUT
        - CLOUD_NATIVE_MONITORING-REJECTED_TOTAL_THROUGHPUT
        - CLOUD_NATIVE_MONITORING-REJECTED_OUTBOUND_THROUGHPUT
        - CLOUD_NATIVE_MONITORING-REJECTED_INBOUND_THROUGHPUT
        - CLOUD_NATIVE_MONITORING-REJECTED_INTERNAL_THROUGHPUT
        - CLOUD_NATIVE_MONITORING-TOTAL_CONNECTION_RATE
        - CLOUD_NATIVE_MONITORING-CONNECTION_RATE
        - CLOUD_NATIVE_MONITORING-INTERNAL_CONNECTION_RATE
        - CLOUD_NATIVE_MONITORING-ALL_EVENTS
        - CLOUD_NATIVE_MONITORING-CONFIGURATION_CHANGE_EVENTS
        - CLOUD_NATIVE_MONITORING-AUTOSCALING_EVENTS
      example: ENDPOINT_GATEWAY_CPU_LOAD_PERCENT
    WidgetFilters:
      type: object
      description: >-
        (Optional) Specifies the filters applied to the widget. When present,
        the `filters` property displays. Each filter object has two properties:
        `filterProperty` and `filterValue`. The `filterProperty` can be values
        like `AGENT`, `ENDPOINT_MACHINE_ID`, `TEST`, `MONITOR`, etc.  The
        `filterValue` represents an identifier array of the selected property.
      example:
        TEST:
          - 5187
          - 5227
        ENDPOINT_MACHINE_ID:
          - fbd0050c-07f7-43f7-9631-14b32f096962
      additionalProperties:
        uniqueItems: true
        type: array
        items: {}
    Widget:
      type: object
      properties:
        id:
          type: string
          description: Identifier of the widget.
          readOnly: true
          example: '1234'
        title:
          type: string
          description: Title of the widget
          example: Widget Title
        visualMode:
          $ref: '#/components/schemas/VisualMode'
        embedUrl:
          type: string
          description: When `isEmbedded` is set to `true`, an `embedUrl` is provided.
          readOnly: true
          example: >-
            https://embed.thousandeyes.com/e/00aa:3039802d-5c76-42d2-9a93-c6e5f9d3122f
        isEmbedded:
          type: boolean
          description: >-
            Set to `true` if widget is marked as embedded; otherwise, set to
            `false`.
        metricGroup:
          $ref: '#/components/schemas/MetricGroup'
        direction:
          $ref: '#/components/schemas/DashboardMetricDirection'
        metric:
          $ref: '#/components/schemas/DashboardMetric'
        filters:
          $ref: '#/components/schemas/WidgetFilters'
        measure:
          $ref: '#/components/schemas/ApiWidgetMeasure'
        fixedTimespan:
          $ref: '#/components/schemas/ApiDuration'
        apiLink:
          type: string
          readOnly: true
          deprecated: true
        shouldExcludeAlertSuppressionWindows:
          type: boolean
          description: Excludes alert suppression window data if set to `true`.
        _links:
          $ref: '#/components/schemas/SelfLinks'
    ApiWidget:
      oneOf:
        - $ref: '#/components/schemas/ApiAgentStatusWidget'
        - $ref: '#/components/schemas/ApiAlertListWidget'
        - $ref: '#/components/schemas/ApiBoxAndWhiskersWidget'
        - $ref: '#/components/schemas/ApiColorGridWidget'
        - $ref: '#/components/schemas/ApiGeoMapWidget'
        - $ref: '#/components/schemas/ApiGroupedBarchartWidget'
        - $ref: '#/components/schemas/ApiMultiMetricTableWidget'
        - $ref: '#/components/schemas/ApiNumbersCardWidget'
        - $ref: '#/components/schemas/ApiPieChartWidget'
        - $ref: '#/components/schemas/ApiStackedAreaChartWidget'
        - $ref: '#/components/schemas/ApiStackedBarchartWidget'
        - $ref: '#/components/schemas/ApiTableWidget'
        - $ref: '#/components/schemas/ApiTestTableWidget'
        - $ref: '#/components/schemas/ApiTimeseriesWidget'
      discriminator:
        propertyName: type
        mapping:
          'Bar Chart: Stacked': '#/components/schemas/ApiStackedBarchartWidget'
          'Bar Chart: Grouped': '#/components/schemas/ApiGroupedBarchartWidget'
          'Time Series: Line': '#/components/schemas/ApiTimeseriesWidget'
          'Time Series: Stacked Area': '#/components/schemas/ApiStackedAreaChartWidget'
          Pie Chart: '#/components/schemas/ApiPieChartWidget'
          Table: '#/components/schemas/ApiTableWidget'
          Multi Metric Table: '#/components/schemas/ApiMultiMetricTableWidget'
          Number: '#/components/schemas/ApiNumbersCardWidget'
          Agent Status: '#/components/schemas/ApiAgentStatusWidget'
          Color Grid: '#/components/schemas/ApiColorGridWidget'
          Alert List: '#/components/schemas/ApiAlertListWidget'
          Test Table: '#/components/schemas/ApiTestTableWidget'
          Map: '#/components/schemas/ApiGeoMapWidget'
          Box and Whiskers: '#/components/schemas/ApiBoxAndWhiskersWidget'
    WidgetType:
      type: string
      description: Type of the Widget
      enum:
        - 'Bar Chart: Stacked'
        - 'Bar Chart: Grouped'
        - 'Time Series: Line'
        - 'Time Series: Stacked Area'
        - Pie Chart
        - Table
        - Multi Metric Table
        - Number
        - Agent Status
        - Color Grid
        - Alert List
        - Test Table
        - Map
        - Box and Whiskers
    BarChartStackedWidgetType:
      type: string
      pattern: '^Bar Chart: Stacked$'
      description: 'Bar Chart: Stacked widget type.'
      example: 'Bar Chart: Stacked'
    BarChartGroupedWidgetType:
      type: string
      pattern: '^Bar Chart: Grouped$'
      description: 'Bar Chart: Grouped widget type.'
      example: 'Bar Chart: Grouped'
    TimeSeriesLineWidgetType:
      type: string
      pattern: '^Time Series: Line$'
      description: 'Time Series: Line widget type.'
      example: 'Time Series: Line'
    TimeSeriesStackedAreaWidgetType:
      type: string
      pattern: '^Time Series: Stacked Area$'
      description: 'Time Series: Stacked Area widget type'
      example: 'Time Series: Stacked Area'
    PieChartWidgetType:
      type: string
      pattern: ^Pie Chart$
      description: Pie Chart widget type
      example: Pie Chart
    TableWidgetType:
      type: string
      pattern: ^Table$
      description: Table widget type.
      example: Table
    MultiMetricTableWidgetType:
      type: string
      pattern: ^Multi Metric Table$
      description: Multi Metric Table widget type.
      example: Multi Metric Table
    NumberWidgetType:
      type: string
      pattern: ^Number$
      description: Number widget type.
      example: Number
    AgentStatusWidgetType:
      type: string
      pattern: ^Agent Status$
      description: Agent Status widget type.
      example: Agent Status
    ColorGridWidgetType:
      type: string
      pattern: ^Color Grid$
      description: Color Grid widget type.
      example: Color Grid
    AlertListWidgetType:
      type: string
      pattern: ^Alert List$
      description: Alert List widget type.
      example: Alert List
    TestTableWidgetType:
      type: string
      pattern: ^Test Table$
      description: Test Table widget type,
      example: Test Table
    MapWidgetType:
      type: string
      pattern: ^Map$
      description: Map widget type.
      example: Map
    BoxAndWhiskersWidgetType:
      type: string
      pattern: ^Box and Whiskers$
      description: Box and Whiskers widget type.
      example: Box and Whiskers
    VisualMode:
      type: string
      description: Visual mode in the UI. Either full or half the width of the window.
      default: Full
      enum:
        - Full
        - Half screen
      example: Full
    ApiWidgetFilterApiTestTableFilterKey:
      type: object
      properties:
        filters:
          type: array
          items:
            $ref: '#/components/schemas/ApiMultiSearchFilterApiTestTableFilterKey'
        type:
          $ref: '#/components/schemas/TestTableFilterType'
    TestTableFilterType:
      type: string
      enum:
        - all
        - any
      example: all
    ApiWidgetMeasure:
      type: object
      description: Determines how to aggregate the the metric.
      properties:
        type:
          $ref: '#/components/schemas/WidgetMeasureType'
        percentileValue:
          type: number
          description: The percentile value to use when `type == NTH_PERCENTILE`.
          format: float
          example: 95
    WidgetMeasureType:
      type: string
      description: Determines how to aggregate the the metric.
      example: MEAN
      enum:
        - MINIMUM
        - MAXIMUM
        - MEAN
        - MEDIAN
        - NTH_PERCENTILE
        - PERCPOSITIVE
        - PERCZERO
        - STDDEV
        - TOTAL
        - VALUES
        - SUM
        - CLOUD_NATIVE_MONITORING-MEAN
        - CLOUD_NATIVE_MONITORING-SUM
    SnapshotExpirationDate:
      type: string
      format: date-time
      description: >-
        Expiration date of the snapshot. If unspecified, the snapshot expires 1
        year from its creation date. The expiration date must be set within 5
        years from the current date and adhere to the ISO date-time format.
      example: '2023-05-16T10:14:28Z'
    GenerateDashboardSnapshotRequest:
      type: object
      description: Request to generate a snapshot from a dashboard.
      properties:
        startDate:
          type: string
          format: date-time
          description: Date and time to start aggregating data (ISO date-time format).
          example: '2023-05-16T10:14:28Z'
        endDate:
          type: string
          format: date-time
          description: Date and time to end aggregating data (ISO date-time format).
          example: '2023-05-16T10:14:28Z'
        displayName:
          type: string
          description: The name of the snapshot, does not have to be unique.
          example: snapshot from API
        dashboardId:
          type: string
          description: TheIdentifierof the dashboard to generate a snapshot from
          example: 646f4d2ce3c99b0536c3821e
        anonymizeData:
          type: boolean
          description: Set to `true` to anonymize the data in the snapshot.
        timezone:
          type: string
          description: Specifies the timezone used for date and time fields.
          example: PST
        expirationDate:
          $ref: '#/components/schemas/SnapshotExpirationDate'
    UpdateSnapshotExpirationDateApiRequest:
      type: object
      description: Request to update the expiration date of a snapshot.
      properties:
        snapshotExpirationDate:
          $ref: '#/components/schemas/SnapshotExpirationDate'
        expirationDate:
          deprecated: true
          type: string
          description: >-
            Expiration date of the snapshot. If unspecified, the snapshot
            expires 1 year from its creation date. The expiration date must be
            set within 5 years from the current date.
          example: '2023-05-16 10:14:28'
    ApiAgentLocation:
      type: object
      description: Location of the agent.
      properties:
        latitude:
          type: number
          format: double
          description: Latitude of the agent.
          example: 37.77493
        longitude:
          type: number
          format: double
          description: Longitude of the agent.
          example: -122.41942
        locationName:
          type: string
          description: Name of the agent location.
          example: San Francisco, California, US
    ApiAgentStatusAgent:
      type: object
      description: Agent shown in agent status widget.
      properties:
        agentId:
          type: string
          description: Identifier of the agent.
          example: '6522'
        status:
          $ref: '#/components/schemas/EnterpriseAgentState'
        ipInfo:
          $ref: '#/components/schemas/ApiAgentStatusIpInfo'
        agentName:
          type: string
          description: Name of the agent
          example: 0c3898000117
        location:
          $ref: '#/components/schemas/ApiAgentLocation'
    ApiAgentStatusIpInfo:
      type: object
      description: IP information of the agent.
      properties:
        publicIp:
          type: string
          description: Public IP of the agent.
          format: ipv4
          example: 172.58.92.31
        privateIp:
          type: string
          description: Private IP of the agent.
          format: ipv4
          example: 172.58.92.31
        ipv6:
          type: string
        operativeSystemVersion:
          type: string
    ApiAgentStatusSummary:
      type: object
      description: Summary of the agent status.
      properties:
        online:
          type: integer
          format: int32
          description: Shows the number of agents with an online status.
          example: 10
        offline:
          type: integer
          format: int32
          description: Shows the number of agents with an offline status.
          example: 2
        disabled:
          type: integer
          format: int32
          description: Shows the number of agents with disabled status.
          example: 3
    AlertListAlertType:
      type: string
      description: Name of the alert type
      enum:
        - network-end-to-end-server
        - network-end-to-end-agent
        - network-path-trace
        - dns-server
        - dns-trace
        - dnssec
        - dns-plus-domain
        - dns-plus-server
        - web-http-server
        - web-page-load
        - web-transaction-classic
        - web-transaction
        - web-ftp-server
        - voice-sip-server
        - voice-rtp-stream
        - device
        - device-interface
        - endpoint-end-to-end-server
        - endpoint-web-http-server
        - endpoint-path-trace
        - browser-session-agent
        - browser-session-application
        - routing-bgp
    LegacyAlertListAlertType:
      type: string
      description: Name of the alert type
      enum:
        - Network - End-to-End (Server)
        - Network - End-to-End (Agent)
        - Network - Path Trace
        - DNS Server
        - DNS Trace
        - DNSSEC
        - DNS+ Domain
        - DNS+ Server
        - Web - HTTP Server
        - Web - Page Load
        - Web - Transaction (Classic)
        - Web - Transaction
        - Web - FTP Server
        - Voice - SIP Server
        - Voice - RTP Stream
        - Device
        - Device Interface
        - Endpoint - End-to-End (Server)
        - EndpointWeb - HTTP Server
        - Endpoint - Path Trace
        - Browser Sessions - Agent
        - Browser Sessions - Application
        - Routing - BGP
    ApiAlertListAlertType:
      $ref: '#/components/schemas/LegacyAlertListAlertType'
    ApiAlertListAlert:
      type: object
      description: Alert shown in the alert list widget.
      properties:
        alertId:
          type: string
          description: Identifier of the alert.
          example: '2004945'
        testId:
          type: string
          description: Identifier of the test.
          example: '56512'
        ruleId:
          type: string
          description: Identifier of the rule.
          example: '281724'
        alertSource:
          type: string
          description: Name of the agent, monitor or device producing the alert.
          example: Http Test
        alertRule:
          type: string
          description: Name of the alert rule that this alert belongs to.
          example: Http Test Rule
        alertType:
          $ref: '#/components/schemas/AlertListAlertType'
        startTime:
          type: string
          format: date-time
          description: UTC date when the alert was first active.
          example: '2023-06-02T08:54:00Z'
        durationInSeconds:
          type: integer
          format: int64
          description: >-
            Number of seconds the alert was active. If it’s still active, this
            number will increase every second.
          example: 25
        active:
          type: boolean
          description: Set to `true` if alert is active, `false` otherwise.
          example: true
    ApiDashboardAsw:
      type: object
      description: Alert suppression window shown in a widget.
      properties:
        id:
          type: string
          description: Identifier of the alert suppression window.
          example: '281474976710662'
        name:
          type: string
          description: Name of the alert suppression window.
          example: Test dashboards
        testIds:
          uniqueItems: true
          type: array
          items:
            type: string
          example:
            - '281474976710661'
        startTimes:
          type: array
          items:
            type: string
            format: date-time
          example:
            - '2023-05-16T10:14:28Z'
        durationInSeconds:
          type: integer
          format: int64
          example: 7200
        repeat:
          $ref: '#/components/schemas/AswRepeat'
        repeatEvery:
          type: integer
          format: int32
          example: 5
        repeatUnit:
          $ref: '#/components/schemas/AswRepeatUnit'
    AswRepeat:
      type: string
      enum:
        - none
        - every-day
        - alt-every-day
        - every-week
        - every-two-week
        - every-month
        - every-three-month
        - custom
      example: custom
    AswRepeatUnit:
      type: string
      enum:
        - day
        - week
        - month
      example: week
    ApiDataPointGroup:
      type: object
      description: Group of data points.
      properties:
        groupProperty:
          type: string
          description: >-
            Defines the criterion used to aggregate data points under specific
            group values.
          example: COUNTRY
        groupValue:
          type: string
          description: The value of a group.
          example: US
    ApiGraphletPoint:
      type: object
      description: A data point on a graphlet.
      properties:
        x:
          type: integer
          format: int64
          description: Timestamp of the data point.
          example: 1580403900
        'y':
          type: number
          format: double
          description: Value of the data point.
          example: 128.249
    ApiMultiMetricColumnData:
      type: object
      description: The data presented within a single column of a Multi-Metric table.
      properties:
        columnId:
          type: string
          description: Identifier of the column.
          example: 938to
        binSize:
          $ref: '#/components/schemas/BinSize'
        points:
          type: array
          items:
            $ref: '#/components/schemas/ApiWidgetDataPoint'
        status:
          $ref: '#/components/schemas/WidgetStatus'
        alertSuppressionWindows:
          type: array
          items:
            $ref: '#/components/schemas/ApiDashboardAsw'
    ApiNumbersCardData:
      type: object
      description: The data displayed on a numbers card.
      properties:
        cardId:
          type: string
          description: Identifier of the card.
          example: lrxxr
        startDate:
          type: string
          format: date-time
          description: >-
            UTC start date of the data shown in the API output (ISO date-time
            format).
          example: '2023-05-16T10:14:28Z'
        endDate:
          type: string
          format: date-time
          description: >-
            UTC end date of the data shown in the API output (ISO date-time
            format).
          example: '2023-05-16T10:14:28Z'
        previousValue:
          type: number
          format: double
          description: Previous value if `compareToPreviousValue == true` in configuration.
          example: 500
        binSize:
          $ref: '#/components/schemas/BinSize'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
        numberOfDataPoints:
          type: integer
          format: int64
          description: Number of points aggregated into the data point
          example: 24192
        value:
          $ref: '#/components/schemas/WidgetValue'
        status:
          $ref: '#/components/schemas/WidgetStatus'
        alertSuppressionWindows:
          type: array
          items:
            $ref: '#/components/schemas/ApiDashboardAsw'
    ApiReportDataComponentLabelMap:
      type: object
      description: Map of group labels.
      properties:
        groupProperty:
          type: string
          description: >-
            Defines the criterion used to aggregate data points under specific
            group values.
          example: AGENT
        groupLabels:
          type: array
          description: List of group labels.
          items:
            $ref: '#/components/schemas/ApiReportDataComponentLabelMapEntry'
    ApiReportDataComponentLabelMapEntry:
      type: object
      description: Represents a mapping entry of a group label.
      properties:
        groupId:
          type: string
          description: Identifier of the group.
          example: '2565'
        groupLabel:
          type: string
          description: Label of the group.
          example: San Francisco, CA
    ApiTestTableData:
      type: object
      description: Data shown in a test table widget.
      properties:
        testId:
          type: string
          description: Identifier of the test.
          example: '68256'
        testName:
          type: string
          description: Name of the test.
          example: Http Test Name
        target:
          type: string
          description: Configured target of the test.
          example: www.google.com
        testType:
          type: string
          description: Type of the test.
          example: Web - HTTP Server
        alertCount:
          type: integer
          format: int64
          description: Number of active alerts of the test.
          example: 398
        isShared:
          type: boolean
          description: Set to `true` if test is shared, `false` otherwise.
        graphlets:
          type: array
          description: List of time series points for test metrics in the last 12 hours.
          items:
            $ref: '#/components/schemas/ApiTestTableGraphletsData'
    ApiTestTableGraphletsData:
      type: object
      description: >-
        Information displayed within a mini-graph associated with a specific
        test in a table.
      properties:
        metric:
          type: string
          description: Name of the metric.
          example: Availability
        testId:
          type: string
          description: Identifier of the test.
          example: '68257'
        points:
          type: array
          items:
            $ref: '#/components/schemas/ApiGraphletPoint'
    ApiWidgetDataPoint:
      type: object
      description: Data point of a widget.
      properties:
        timestamp:
          $ref: '#/components/schemas/Timestamp'
        numberOfDataPoints:
          type: integer
          format: int64
          description: Number of test data points aggregated into the widget data point.
          example: 23304
        value:
          $ref: '#/components/schemas/WidgetValue'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/ApiDataPointGroup'
    ApiWidgetDataSnapshotResponse:
      allOf:
        - $ref: '#/components/schemas/ApiWidgetData'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/SelfLinks'
    ApiWidgetDataResponse:
      allOf:
        - $ref: '#/components/schemas/ApiWidgetData'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/PaginationLinks'
    ApiWidgetData:
      type: object
      description: Response of a widget data request.
      properties:
        groupLabels:
          type: array
          items:
            $ref: '#/components/schemas/ApiReportDataComponentLabelMap'
        binSize:
          $ref: '#/components/schemas/BinSize'
        data:
          $ref: '#/components/schemas/ApiWidgetsDataV2'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
    ApiWidgetsDataV2:
      type: object
      description: Data of a widget.
      properties:
        cards:
          type: array
          items:
            $ref: '#/components/schemas/ApiNumbersCardData'
        columns:
          type: array
          items:
            $ref: '#/components/schemas/ApiMultiMetricColumnData'
        points:
          type: array
          items:
            $ref: '#/components/schemas/ApiWidgetDataPoint'
        tests:
          type: array
          items:
            $ref: '#/components/schemas/ApiTestTableData'
        startRound:
          type: integer
          format: int64
          description: Epoch time (seconds) indicating the start time of the round.
          example: 1384309800
        alertSuppressionWindows:
          type: array
          items:
            $ref: '#/components/schemas/ApiDashboardAsw'
        totalAlerts:
          type: integer
          format: int64
          description: Total number of active alerts within configured timespan.
          example: 500
        activeAlerts:
          type: integer
          format: int64
          description: Total number of currently active alerts.
          example: 483
        alerts:
          type: array
          items:
            $ref: '#/components/schemas/ApiAlertListAlert'
        summary:
          $ref: '#/components/schemas/ApiAgentStatusSummary'
        agents:
          type: array
          items:
            $ref: '#/components/schemas/ApiAgentStatusAgent'
        status:
          $ref: '#/components/schemas/WidgetStatus'
    DashboardSnapshotResponse:
      type: object
      properties:
        snapshotId:
          $ref: '#/components/schemas/DashboardSnapshotId'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    DashboardSnapshotId:
      type: string
      format: uuid
      description: Identifier of the dashboard snapshot.
      example: d28bb71f-5a47-4783-8f12-d4b115e61b0c
    DashboardGlobalFilterId:
      properties:
        globalFilterId:
          type: string
          description: >-
            Default global dashboard filter ID (obtained from
            `/dashboards/filters` endpoint).
          example: 65babd9bb90bf55b17c96c8d
    LegacyDashboardSnapshot:
      deprecated: true
      type: object
      properties:
        accountId:
          type: integer
          format: int64
          description: Identifier of the account group that the snapshot belongs to.
          example: 1234
        createdDate:
          type: string
          description: UTC date when dashboard snapshot was created.
          example: '2023-05-16 10:14:28'
        expirationDate:
          type: string
          description: >-
            Expiration date of the snapshot. If unspecified, the snapshot
            expires 1 year from its creation date. The expiration date must be
            set within 5 years from the current date.
          example: '2023-05-16 10:14:28'
        permalink:
          type: string
          description: Hyperlink to dashboard snapshot in ThousandEyes Application
          example: >-
            https://app.thousandeyes.com/dashboard/?snapshotId=d28bb71f-5a47-4783-8f12-d4b115e61b0c
        apiLinks:
          type: array
          description: A links array containing the self link.
          items:
            additionalProperties: true
    ApiDashboardSnapshot:
      allOf:
        - type: object
          properties:
            snapshotId:
              $ref: '#/components/schemas/DashboardSnapshotId'
            snapshotName:
              type: string
              description: Name of the dashboard snapshot.
              example: HTTP Server Dashboard Snapshot
            aid:
              type: string
              description: Identifier of the account group that the snapshot belongs to.
              example: '1234'
            isShared:
              type: boolean
              description: Set `true` if dashboard snapshot is shared, `false` otherwise.
            snapshotCreatedDate:
              type: string
              format: date-time
              description: >-
                UTC date when dashboard snapshot was created (ISO date-time
                format).
              example: '2023-05-16T10:14:28Z'
            dashboard:
              $ref: '#/components/schemas/ApiDashboard'
            widgets:
              type: array
              items:
                $ref: '#/components/schemas/ApiWidget'
            isScheduled:
              type: boolean
              description: >-
                Set `true` if dashboard snapshot was generated from a schedule,
                `false` otherwise.
            timeSpan:
              $ref: '#/components/schemas/ApiReportSnapshotTimeSpan'
            snapshotExpirationDate:
              $ref: '#/components/schemas/SnapshotExpirationDate'
            _links:
              $ref: '#/components/schemas/AppAndSelfLinks'
        - $ref: '#/components/schemas/LegacyDashboardSnapshot'
    ApiReportSnapshotTimeSpan:
      type: object
      description: Time span of the dashboard snapshot.
      properties:
        startDate:
          deprecated: true
          type: string
          description: UTC start date of dashboard snapshot.
          example: '2023-05-16 10:14:28'
        start:
          type: string
          format: date-time
          description: UTC start date of dashboard snapshot (ISO date-time format).
          example: '2023-05-16T10:14:28Z'
        duration:
          type: integer
          format: int64
          description: Duration of dashboard snapshot in seconds.
          example: 60
    DashboardSnapshotsPage:
      type: object
      description: Dashboard snapshots page.
      properties:
        pages:
          deprecated: true
          type: object
          additionalProperties: true
        dashboardSnapshots:
          type: array
          items:
            $ref: '#/components/schemas/ApiDashboardSnapshot'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    DashboardLinks:
      type: object
      description: A links object containing the self and the snapshots links.
      readOnly: true
      properties:
        self:
          $ref: '#/components/schemas/Link'
        snapshots:
          $ref: '#/components/schemas/Link'
    BinSize:
      type: integer
      format: int64
      description: Duration of each bin.
      example: 3600
    Timestamp:
      type: integer
      format: int64
      description: Timestamp of the aggregated data point.
      example: 1567620000
    WidgetValue:
      type: number
      format: double
      description: Aggregated value.
      example: 100
    WidgetStatus:
      type: string
      description: Message for not fully configured card or no data.
      example: No data
    ApiContextFiltersResponse:
      type: object
      description: All global dashboard filters saved.
      properties:
        dashboardFilters:
          type: array
          items:
            $ref: '#/components/schemas/ApiContextFilterResponse'
    ApiDashboardFilterName:
      type: string
      description: The name of the dashboard filter, this must be unique.
      example: cea-filter
    ApiDashboardFilterDescription:
      type: string
      description: An optional description of the filter.
      example: Global filter for CEA widgets
    ApiDashboardFilterUserDetails:
      type: object
      description: Details of user who created or modified the filter.
      properties:
        uid:
          type: string
          description: Unique ID of the user.
          example: '1'
        name:
          type: string
          description: Name of the user.
          example: Test User
    ApiContextFilterRequest:
      type: object
      description: >-
        Request containing dashboard filter name, description and context
        details.
      properties:
        context:
          $ref: '#/components/schemas/ApiContextFilters'
        name:
          $ref: '#/components/schemas/ApiDashboardFilterName'
        description:
          $ref: '#/components/schemas/ApiDashboardFilterDescription'
      required:
        - name
        - context
    ApiContextFilterResponse:
      description: Response containing dashboard filter settings and context details.
      type: object
      properties:
        context:
          $ref: '#/components/schemas/ApiContextFilters'
        aid:
          type: string
          description: Account group ID of the filter.
          example: '11'
        id:
          type: string
          description: Unique ID of the dashboard filter.
          example: 65bc18e8f2073a4a469cd958
        name:
          $ref: '#/components/schemas/ApiDashboardFilterName'
        description:
          $ref: '#/components/schemas/ApiDashboardFilterDescription'
        createdBy:
          $ref: '#/components/schemas/ApiDashboardFilterUserDetails'
        modifiedDate:
          type: string
          format: date-time
          description: Timestamp when the filter was last modified.
          example: '2024-02-01T22:19:19+00:00'
        createdDate:
          type: string
          format: date-time
          description: Timestamp when the filter was created.
          example: '2024-02-01T22:19:19+00:00'
        modifiedBy:
          $ref: '#/components/schemas/ApiDashboardFilterUserDetails'
        _links:
          $ref: '#/components/schemas/SelfLinks'
      required:
        - id
        - aid
        - name
        - context
    ApiContextFilters:
      type: array
      description: List of filters to be applied to a dashboard.
      uniqueItems: true
      items:
        $ref: '#/components/schemas/ApiDataSourceFilters'
    ApiDataSourceFilters:
      type: object
      description: List of different datasource filters.
      properties:
        dataSourceId:
          type: string
          description: Types of data source.
          example: VIRTUAL_AGENT
        filters:
          type: array
          description: List of different filter properties.
          uniqueItems: true
          items:
            $ref: '#/components/schemas/ApiDataSourceFilter'
      required:
        - dataSourceId
        - filters
    ApiDataSourceFilter:
      type: object
      description: List of different filter properties for a single datasource.
      properties:
        filterId:
          type: string
          description: Data source property to filter by.
          example: TEST_LABEL
        values:
          type: array
          uniqueItems: true
          description: Values to filter by based on the specified `filterId`.
          example:
            - '45862'
            - '59749'
          items:
            type: string
        metricIds:
          type: array
          uniqueItems: true
          description: Dashboard metric associated with the filter property.
          example:
            - WEB_PAGE_LOAD_COMPLETION_RATE
            - WEB_TTFB
            - WEB_AVAILABILITY
          items:
            type: string
      required:
        - filterId
        - values
        - metricIds
    AppAndSelfLinks:
      type: object
      description: A links object containing the ThousandEyes App link
      readOnly: true
      properties:
        appLink:
          $ref: '#/components/schemas/Link'
        self:
          $ref: '#/components/schemas/Link'
    UserAgents:
      type: object
      properties:
        userAgents:
          type: array
          items:
            $ref: '#/components/schemas/UserAgent'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    UserAgent:
      type: object
      properties:
        browser:
          type: string
          description: The name of the web browser.
          example: Firefox
        os:
          type: string
          description: The operating system for the user-agent HTTP header.
          example: Windows
        value:
          type: string
          description: The text of the user-agent header.
          example: >-
            Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)
            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.5993.70 Mobile
            Safari/537.36
    EmulatedDevice:
      type: object
      required:
        - category
        - width
        - height
      properties:
        category:
          $ref: '#/components/schemas/EmulatedDeviceCategory'
        width:
          type: integer
          description: The width of the display of the emulated device.
          example: 1024
          minimum: 50
          maximum: 9999
        height:
          type: integer
          description: The height of the display of the emulated device.
          example: 768
          minimum: 50
          maximum: 9999
    EmulatedDeviceResponses:
      type: object
      properties:
        emulatedDevices:
          type: array
          items:
            $ref: '#/components/schemas/EmulatedDeviceResponse'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    EmulatedDeviceResponse:
      allOf:
        - $ref: '#/components/schemas/EmulatedDevice'
        - type: object
          properties:
            name:
              type: string
              description: The device name
              example: iPad Pro 12.9-in
            codeName:
              type: string
              description: A code corresponding to the device name.
              example: IPAD_PRO_12_9
            id:
              type: string
              description: ID of the emulated device.
              example: '11'
            availableUserAgents:
              type: array
              description: A list of user-agent strings for this emulated device.
              items:
                type: string
              example:
                - >-
                  Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)
                  AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.5993.70
                  Mobile Safari/537.36
                - >-
                  Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36
                  (KHTML, like Gecko) Chrome/118.0.5993.70 Safari/537.36
            defaultUserAgentTemplate:
              type: string
              description: The default user-agent template to use for this device.
              example: >-
                Mozilla/5.0 (Android 4.4; Tablet; rv:70.0) Gecko/70.0
                Firefox/70.0
    ExpandEmulatedDeviceOptions:
      type: string
      enum:
        - user-agent
    EmulatedDeviceCategory:
      type: string
      description: The type of device being emulated.
      example: desktop
      enum:
        - desktop
        - laptop
        - phone
        - tablet
    ExpandEndpointAgentOptions:
      type: string
      enum:
        - clients
        - vpnProfiles
        - networkInterfaceProfiles
    FilterEndpointAgentsResponse:
      allOf:
        - $ref: '#/components/schemas/EndpointAgents'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/PaginationNextLink'
    ListEndpointAgentsResponse:
      allOf:
        - $ref: '#/components/schemas/EndpointAgents'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/PaginationNextAndSelfLink'
    EndpointAgents:
      description: A list of `EndpointAgents`.
      type: object
      properties:
        totalAgents:
          type: integer
          example: 1
          description: The total number of agents.
        agents:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/EndpointAgent'
    AgentSearchRequest:
      description: Parameters for filtering a list of agents.
      type: object
      properties:
        searchFilters:
          $ref: '#/components/schemas/AgentSearchFilters'
        thresholdFilter:
          $ref: '#/components/schemas/AgentThresholdFilters'
        searchSort:
          type: array
          items:
            $ref: '#/components/schemas/AgentSearchSort'
    AgentSearchFilters:
      type: object
      properties:
        id:
          description: >-
            Returns only agents that are an exact match of the provided
            identifiers.
          type: array
          items:
            $ref: '#/components/schemas/EndpointAgentId'
        agentName:
          description: |
            Returns only agents with the given name. 
            This is an exact match only.
          type: array
          items:
            $ref: '#/components/schemas/AgentName'
        computerName:
          description: |
            Returns only agents with the given computer name.
            This is an exact match only.
          type: array
          items:
            $ref: '#/components/schemas/ComputerName'
        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.
          type: array
          items:
            type: string
          example:
            - picard
        platform:
          description: |
            Filter on the platform on which the agent is running.
          type: array
          items:
            $ref: '#/components/schemas/Platform'
        osVersion:
          description: Case-insensitive prefix filter on the OS version.
          type: array
          items:
            type: string
            example: Version 10.15.2
        locationCountryISO:
          description: |
            Filter using the ISO country code of the location.
          type: array
          items:
            type: string
            example: FR
        locationSubdivision1Code:
          description: >
            Filter using the code for the first level administrative division
            within 

            the country. In US/Canada this is the State, in UK it's the country
            e.g. `ENG`
          type: array
          items:
            type: string
            example: ENG
        locationCity:
          description: >
            This is a prefix match on the city name field. The endpoint expects
            this to contain the 

            name of the city in English. e.g. 'Paris' or ''
          type: array
          items:
            type: string
            example: Paris
        licenseType:
          description: |
            Filter on the agent's license type
          type: array
          items:
            $ref: '#/components/schemas/AgentLicenseType'
    AgentSearchSort:
      type: object
      properties:
        sort:
          $ref: '#/components/schemas/AgentSearchSortKey'
        order:
          $ref: '#/components/schemas/SortOrder'
    AgentSearchSortKey:
      type: string
      enum:
        - platform
        - osVersion
        - name
        - userName
        - city
    AgentThresholdFilters:
      type: object
      description: All filters are applied based on the conditional operator (and/or).
      properties:
        filters:
          type: array
          items:
            $ref: '#/components/schemas/AgentThresholdFilter'
        conditionalOperator:
          $ref: '#/components/schemas/ConditionalOperator'
    AgentThresholdFilter:
      type: object
      description: >-
        The metric is filtered based on the threshold value and operator
        provided.
      properties:
        name:
          type: string
          enum:
            - last-seen-ms
        value:
          type: number
          description: The threshold value.
          format: double
        operator:
          $ref: '#/components/schemas/ThresholdFilterOperator'
    ComputerName:
      description: |
        Returns only agents with the specified computer name.
        This is an exact match only.
      type: string
      example: DESKTOP-45AE8
    AgentName:
      description: |
        Returns only agents with the specified name. 
        This is an exact match only.
      type: string
      example: myagent-1234
    AgentTransferRequest:
      type: object
      properties:
        toAid:
          $ref: '#/components/schemas/AccountId'
      example:
        toAid: '1234'
    BulkAgentTransferRequest:
      type: object
      properties:
        transfers:
          type: array
          items:
            $ref: '#/components/schemas/AgentTransfer'
    BulkAgentTransferResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/AgentTransferStatus'
          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'
    AgentTransfer:
      example:
        agentId: 5d0764ac-7e42-4ec8-a0d4-39fc53edccba
        fromAid: '1234'
        toAid: '12345'
      allOf:
        - type: object
          properties:
            agentId:
              $ref: '#/components/schemas/EndpointAgentId'
            fromAid:
              $ref: '#/components/schemas/AccountId'
            toAid:
              $ref: '#/components/schemas/AccountId'
    AgentTransferStatus:
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            request:
              $ref: '#/components/schemas/AgentTransfer'
    AccountId:
      type: string
      description: >-
        A unique identifier associated with your account group. You can retrieve
        your `AccountGroupId` from the `/account-groups` endpoint.
      example: '1234'
    AddressProfile:
      type: object
      description: A description of the IPs assigned to this machine.
      properties:
        addressType:
          $ref: '#/components/schemas/AddressType'
        ipAddress:
          type: string
          format: ip
          example: 2001:db8:3333:4444:5555:6666:7777:8888
          description: >-
            IP address of this interface in the network it's currently connected
            to.
        prefixLength:
          type: integer
          format: int32
          example: 24
          description: The number of bits representing the network part of the `ipAddress`.
        gateway:
          type: string
          format: ip
          example: 192.168.0.254
          description: The default gateway for this interface.
        routerHardwareAddress:
          type: string
          format: macaddress
          example: 5c:b1:3e:46:1c:84
          description: The router's MAC address resolved from an ARP request.
    AddressType:
      type: string
      example: unique-local
      enum:
        - loopback
        - unspecified
        - unique-local
        - link-local
        - unique-global
    EndpointAgentLocation:
      description: Approximate location of the agent.
      type: object
      properties:
        latitude:
          type: number
          format: double
          example: 51.51279
          readOnly: true
        longitude:
          type: number
          format: double
          example: -0.09184
          readOnly: true
        locationName:
          type: string
          example: London
          readOnly: true
    EndpointAsnDetails:
      required:
        - asNumber
      type: object
      readOnly: true
      properties:
        asNumber:
          type: integer
          format: int64
          example: 5089
          description: Autonomous system number.
        asName:
          type: string
          example: Virgin Media Limited
          description: Name of autonomous system.
    EndpointBrowserExtension:
      type: object
      properties:
        browser:
          $ref: '#/components/schemas/BrowserType'
        profile:
          type: string
          description: Name of the browser profile where this extension is stored.
          example: Profile 1
        version:
          type: string
          description: Endpoint agent browser extension version.
          example: 0.123.0
        enabled:
          type: boolean
          description: >-
            Indicates if the extension is disabled or enabled in the web
            browser.
        active:
          type: boolean
          description: >
            Flag indicating if there is communication between the extension and
            ThousandEyes portal.
        error:
          type: string
          description: Contains any errors encountered while getting extension status.
          example: ''
    EndpointClient:
      description: Information about the user who has the agent installed.
      type: object
      properties:
        userProfile:
          $ref: '#/components/schemas/EndpointUserProfile'
        browserExtensions:
          type: array
          items:
            $ref: '#/components/schemas/EndpointBrowserExtension'
    EndpointUserProfile:
      required:
        - userName
      type: object
      properties:
        userName:
          type: string
          example: joeblogs32
    EndpointVpnProfile:
      required:
        - vpnClientAddresses
        - vpnClientNetworkRange
      type: object
      properties:
        interfaceName:
          type: string
          description: Interface name associated with `interfaceProfile`.
        vpnType:
          $ref: '#/components/schemas/VpnType'
        vpnGatewayAddress:
          type: string
          description: IP address of the VPN gateway.
        vpnClientAddresses:
          type: array
          description: >-
            List of private IP addresses assigned to the device, by the VPN
            server.
          example:
            - 10.100.0.10
          items:
            type: string
            format: ip
        vpnClientNetworkRange:
          type: array
          description: List of private networks assigned to the device, by the VPN server.
          example:
            - 10.100.0.0/22
          items:
            type: string
    EndpointAgentEthernetProfile:
      type: object
      description: |
        Information about the ethernet connectivity of this device.
        Only present if the hardware type is `ethernet`.
      properties:
        linkSpeed:
          type: integer
          description: Link speed in Mbps.
          format: int32
    InterfaceProfile:
      type: object
      properties:
        interfaceName:
          type: string
          example: en0
        addressProfiles:
          type: array
          items:
            $ref: '#/components/schemas/AddressProfile'
        hardwareType:
          $ref: '#/components/schemas/InterfaceHardwareType'
        ethernetProfile:
          $ref: '#/components/schemas/EndpointAgentEthernetProfile'
        wirelessProfile:
          $ref: '#/components/schemas/WirelessProfile'
    EndpointAgent:
      description: The `EndpointAgent` object, which may include multiple clients.
      type: object
      properties:
        id:
          $ref: '#/components/schemas/EndpointAgentId'
        aid:
          allOf:
            - $ref: '#/components/schemas/AccountId'
            - readOnly: true
        name:
          description: The name of the agent.
          type: string
          readOnly: false
          example: Office Printer
        computerName:
          type: string
          example: DESKJET-123
          readOnly: true
        osVersion:
          type: string
          example: Version 10.15.2 (Build 19C57)
          readOnly: true
        platform:
          $ref: '#/components/schemas/Platform'
        kernelVersion:
          type: string
          example: Darwin 19.2.0
          readOnly: true
        manufacturer:
          type: string
          example: Apple, Inc.
          readOnly: true
        model:
          type: string
          example: MacBookAir7,2
          readOnly: true
        lastSeen:
          description: The last time the agent checked-in.
          type: string
          format: date-time
          example: '2022-05-26T23:37:16Z'
          readOnly: true
        status:
          $ref: '#/components/schemas/Status'
        deleted:
          type: boolean
          readOnly: true
        version:
          description: Version of the agent software running.
          type: string
          example: 0.123.4
          readOnly: true
        createdAt:
          type: string
          format: date-time
          example: '2022-05-26T23:37:16Z'
          readOnly: true
        numberOfClients:
          type: integer
          format: int64
          example: 3
          readOnly: true
        publicIP:
          type: string
          format: ip
          example: 88.45.2.123
          readOnly: true
        location:
          $ref: '#/components/schemas/EndpointAgentLocation'
        clients:
          type: array
          readOnly: true
          description: |
            List of clients (user accounts) that the agent works with.
            Not populated by default.
          items:
            $ref: '#/components/schemas/EndpointClient'
        totalMemory:
          type: string
          example: 16384 MB
          readOnly: true
        agentType:
          type: string
          example: endpoint
          readOnly: true
        vpnProfiles:
          type: array
          readOnly: true
          description: |
            List of VPN connections on the agent.
            Not populated by default.
          items:
            $ref: '#/components/schemas/EndpointVpnProfile'
        networkInterfaceProfiles:
          description: |
            List of network interfaces on the agent.
            Not populated by default.
          type: array
          readOnly: true
          items:
            $ref: '#/components/schemas/InterfaceProfile'
        asnDetails:
          $ref: '#/components/schemas/EndpointAsnDetails'
        licenseType:
          $ref: '#/components/schemas/AgentLicenseType'
        tcpDriverAvailable:
          type: boolean
          readOnly: true
          description: Status of TCP test support on the agent.
        npcapVersion:
          type: string
          readOnly: true
          description: >-
            For Windows agents, the version of the NPCAP driver that the agent
            has loaded.
        _links:
          $ref: '#/components/schemas/SelfLinks'
    Status:
      description: >-
        Status of the endpoint agent in ThousandEyes. Disabled agents don't
        report data.
      type: string
      example: enabled
      enum:
        - enabled
        - disabled
      readOnly: true
    EndpointAgentUpdate:
      description: The `EndpointAgentUpdate` object contains supported fields for updates.
      type: object
      properties:
        name:
          description: New agent name.
          type: string
          example: Office Printer
        licenseType:
          $ref: '#/components/schemas/AgentLicenseType'
    WirelessProfile:
      type: object
      properties:
        bssid:
          type: string
          format: macaddress
          example: 00:11:22:aa:bb:cc
        ssid:
          type: string
          example: GuestWiFi
        rssi:
          type: integer
          format: int32
          example: -36
        channel:
          type: integer
          format: int32
          example: 48
        phyMode:
          type: string
          example: 802.11ac
    BrowserType:
      type: string
      example: edge
      enum:
        - chrome
        - chrome-canary
        - chromium
        - ie
        - edge
        - unknown
    AgentLicenseType:
      type: string
      example: essentials
      enum:
        - essentials
        - advantage
        - embedded
    ConnectionString:
      type: object
      properties:
        connectionString:
          type: string
          description: >
            The connection string is used for some integrations and other client
            types.
          example: D2xZSLlqo64Xe2EnYisklA==
        _links:
          $ref: '#/components/schemas/SelfLinks'
    EndpointAgentId:
      type: string
      format: uuid
      description: Unique ID of endpoint agent, from `/endpoint/agents` endpoint.
      example: 861b7557-cd57-4bbb-b648-00bddf88ef49
      readOnly: true
    Platform:
      description: OS platform types. Platform "linux" was recently renamed to "roomos".
      type: string
      enum:
        - windows
        - roomos
        - phoneos
        - elux
        - linux
        - mac
        - unknown
      example: mac
    VpnType:
      type: string
      description: Name of the VPN provider.
      enum:
        - cisco-anyconnect
        - palo-alto-globalprotect
        - ivanti-connect-secure
        - zscaler-internet-access
        - f5-big-ip
      example: cisco-anyconnect
    InterfaceHardwareType:
      type: string
      example: wireless
      enum:
        - unknown
        - wireless
        - ethernet
        - modem
        - virtual
        - loopback
        - other
    PaginationNextAndSelfLink:
      type: object
      description: A links object containing a related link for forward pagination.
      properties:
        next:
          $ref: '#/components/schemas/Link'
        self:
          $ref: '#/components/schemas/Link'
    ThresholdFilterOperator:
      type: string
      enum:
        - gte
        - lte
      example: gte
    ConditionalOperator:
      type: string
      enum:
        - and
        - or
      example: and
    SortOrder:
      type: string
      example: desc
      description: >-
        Parameter indicates the ascending/descending  order of the sorting,
        using either the asc or desc values.
      enum:
        - asc
        - desc
    PaginationNextLink:
      type: object
      description: A links object containing a related link for forward pagination.
      properties:
        next:
          $ref: '#/components/schemas/Link'
    EndpointTestAgentSelectorType:
      type: string
      enum:
        - all-agents
        - specific-agents
        - agent-labels
      description: >-
        Retrieve either all available agents, a specific list of agents, or a
        list of agent labels.
      default: all-agents
      example: all-agents
    EndpointTestAgents:
      type: array
      description: >-
        List of endpoint agent IDs (obtained from `/endpoint/agents` endpoint).
        Required when `agentSelectorType` is set to `specific-agent`.
      items:
        type: string
        format: uuid
      example:
        - 0a3b9998-dc3a-4ff2-b50d-ac4a7cd986e1
        - 66eec0f1-72b4-4755-aa83-3aed61d17f3c
    EndpointAgentLabels:
      type: array
      description: >-
        List of endpoint agent label IDs (obtained from `/endpoint/labels`
        endpoint), required when `agentSelectorType` is set to `agent-labels`.
      items:
        type: string
      example:
        - '567'
        - '214'
    EndpointTestMaxMachines:
      type: integer
      description: Maximum number of agents which can execute the test.
      default: 25
      example: 25
    TestName:
      type: string
      description: Name of the test.
      example: Test name
    EndpointInstantTest:
      type: object
      required:
        - testName
      properties:
        agentSelectorType:
          $ref: '#/components/schemas/EndpointTestAgentSelectorType'
        agents:
          $ref: '#/components/schemas/EndpointTestAgents'
        endpointAgentLabels:
          $ref: '#/components/schemas/EndpointAgentLabels'
        maxMachines:
          $ref: '#/components/schemas/EndpointTestMaxMachines'
        testName:
          $ref: '#/components/schemas/TestName'
    EndpointTestPort:
      type: integer
      description: Port number.
      default: 443
      example: 443
    EndpointAgentToServerInstantTest:
      allOf:
        - $ref: '#/components/schemas/EndpointInstantTest'
        - type: object
          required:
            - serverName
          properties:
            serverName:
              type: string
              description: A server address without a protocol or IP address.
              example: www.example.com
            port:
              $ref: '#/components/schemas/EndpointTestPort'
    EndpointTestSelfLink:
      allOf:
        - description: A reference to the test.
          example:
            href: >-
              https://api.thousandeyes.com/v7/endpoint/tests/{type}/281474976710706
        - $ref: '#/components/schemas/Link'
    ScheduledTestResults:
      type: array
      description: Reference to the test results.
      items:
        $ref: '#/components/schemas/Link'
      example:
        - href: >-
            https://api.thousandeyes.com/v7/endpoint/test-results/scheduled-tests/281474976710706/network/filter
        - href: >-
            https://api.thousandeyes.com/v7/endpoint/test-results/scheduled-tests/281474976710706/pathvis
    EndpointTestLinks:
      type: object
      description: A list of links that can be accessed to get more information.
      properties:
        self:
          $ref: '#/components/schemas/EndpointTestSelfLink'
        testResults:
          $ref: '#/components/schemas/ScheduledTestResults'
      readOnly: true
    EndpointAllAgentsSelectorConfig:
      type: object
      description: Any agent selection object.
      readOnly: true
      properties:
        agentSelectorType:
          example: all-agents
          pattern: ^all-agents$
          type: string
        maxMachines:
          $ref: '#/components/schemas/EndpointTestMaxMachines'
      required:
        - agentSelectorType
    EndpointSpecificAgentsSelectorConfig:
      type: object
      description: Specific agents selection object.
      readOnly: true
      properties:
        agentSelectorType:
          type: string
          pattern: ^specific-agents$
          example: specific-agents
        maxMachines:
          $ref: '#/components/schemas/EndpointTestMaxMachines'
        agents:
          $ref: '#/components/schemas/EndpointTestAgents'
      required:
        - agentSelectorType
    EndpointAgentLabelsSelectorConfig:
      type: object
      description: Agent labels selection object.
      readOnly: true
      properties:
        agentSelectorType:
          example: agent-labels
          pattern: ^agent-labels$
          type: string
        maxMachines:
          $ref: '#/components/schemas/EndpointTestMaxMachines'
        endpointAgentLabels:
          $ref: '#/components/schemas/EndpointAgentLabels'
      required:
        - agentSelectorType
    EndpointAgentSelectorConfig:
      type: object
      description: Agents selection object based on agentSelectorType.
      readOnly: true
      oneOf:
        - $ref: '#/components/schemas/EndpointAllAgentsSelectorConfig'
        - $ref: '#/components/schemas/EndpointAgentLabelsSelectorConfig'
        - $ref: '#/components/schemas/EndpointSpecificAgentsSelectorConfig'
      discriminator:
        propertyName: agentSelectorType
        mapping:
          all-agents: '#/components/schemas/EndpointAllAgentsSelectorConfig'
          specific-agents: '#/components/schemas/EndpointSpecificAgentsSelectorConfig'
          agent-labels: '#/components/schemas/EndpointAgentLabelsSelectorConfig'
      required:
        - agentSelectorType
    TestIsEnabled:
      type: boolean
      description: Indicates if test is enabled.
      example: true
      default: true
    TestIsSavedEvent:
      type: boolean
      description: Indicates if the test is a saved event.
      example: false
      readOnly: true
    TestHasPathTraceInSession:
      type: boolean
      description: >-
        Enables "in session" path trace. When enabled, this option initiates a
        TCP session with the target server and sends path trace packets within
        the established TCP session.
      example: true
    TestNetworkMeasurements:
      type: boolean
      description: >-
        Enable or disable network measurements. Set to true to enable or false
        to disable network measurements.
      default: true
      example: true
    EndpointTestProtocol:
      type: string
      enum:
        - icmp
        - icmp-with-tcp-connect
        - tcp
        - prefer-tcp
        - ast-autodetect
        - autodetect
      description: Protocol requested for the test.
      default: icmp
      example: icmp
    EndpointIpVersionTemplate:
      description: IP version the test should use for network tests.
      type: string
      enum:
        - V4_ONLY
        - V6_ONLY
        - V6_PREFER
        - OS_DEFAULT
      example: V4_ONLY
    EndpointScheduledTestType:
      type: string
      enum:
        - agent-to-server
        - http-server
      description: Type of test being queried.
      example: agent-to-server
      readOnly: true
    TestProbeModeResponse:
      type: string
      enum:
        - auto
        - sack
        - syn
        - unknown
      description: >-
        Probe mode used by network test, only valid when the protocol is set to
        TCP.
      default: auto
      example: auto
    EndpointTest:
      type: object
      required:
        - type
      properties:
        aid:
          $ref: '#/components/schemas/AccountGroupId'
        _links:
          $ref: '#/components/schemas/EndpointTestLinks'
        agentSelectorConfig:
          $ref: '#/components/schemas/EndpointAgentSelectorConfig'
        createdDate:
          $ref: '#/components/schemas/TestCreatedDate'
        interval:
          $ref: '#/components/schemas/TestInterval'
        isEnabled:
          $ref: '#/components/schemas/TestIsEnabled'
        isSavedEvent:
          $ref: '#/components/schemas/TestIsSavedEvent'
        hasPathTraceInSession:
          $ref: '#/components/schemas/TestHasPathTraceInSession'
        modifiedDate:
          type: string
          format: date-time
          description: UTC last modification date (ISO date-time format).
          readOnly: true
          example: '2022-07-17T22:00:54Z'
        networkMeasurements:
          $ref: '#/components/schemas/TestNetworkMeasurements'
        protocol:
          $ref: '#/components/schemas/EndpointTestProtocol'
        ipVersion:
          $ref: '#/components/schemas/EndpointIpVersionTemplate'
        server:
          type: string
          description: Target domain name or IP address.
          example: www.example.com
        testId:
          type: string
          description: >-
            Each test is assigned a unique ID to access test data from other
            endpoints.
          readOnly: true
          example: '281474976710706'
        testName:
          $ref: '#/components/schemas/TestName'
        type:
          $ref: '#/components/schemas/EndpointScheduledTestType'
        tcpProbeMode:
          readOnly: true
          anyOf:
            - $ref: '#/components/schemas/TestProbeModeResponse'
        port:
          $ref: '#/components/schemas/EndpointTestPort'
    EndpointAgentToServerType:
      type: string
      description: Type of test being queried.
      example: agent-to-server
      pattern: ^agent-to-server$
      readOnly: true
    TestLabel:
      type: object
      properties:
        labelId:
          type: string
          description: Label ID.
        name:
          type: string
          description: Name of the label.
        isBuiltin:
          type: boolean
          description: >-
            Value indicating if the label in question is BuiltIn (Account Admin,
            Organization Admin, Regular User).
      example:
        labelId: '961'
        name: Artem label
        isBuiltin: false
    TestLabels:
      type: array
      readOnly: true
      items:
        $ref: '#/components/schemas/TestLabel'
    EndpointAgentToServerTest:
      allOf:
        - $ref: '#/components/schemas/EndpointTest'
        - type: object
          properties:
            type:
              $ref: '#/components/schemas/EndpointAgentToServerType'
            labels:
              $ref: '#/components/schemas/TestLabels'
    EndpointTestAuthType:
      type: string
      description: HTTP authentication type.
      enum:
        - none
        - basic
        - ntlm
      default: none
      example: none
    TestUsername:
      type: string
      description: Username for Basic/NTLM authentication.
      example: username
    TestSslVersionId:
      type: string
      description: |
        SSL version options:

        * Use '0' for automatic selection.
        * Use '3' for SSLv3.
        * Use '4' for TLS v1.0.
        * Use '5' for TLS v1.1.
        * Use '6' for TLS v1.2.
      enum:
        - '0'
        - '3'
        - '4'
        - '5'
        - '6'
      default: '0'
      example: '0'
    EndpointTestResultUrl:
      type: string
      description: The test target URL.
      example: https://example.com:443
    EndpointHttpServerBaseTest:
      type: object
      properties:
        authType:
          $ref: '#/components/schemas/EndpointTestAuthType'
        hasPathTraceInSession:
          $ref: '#/components/schemas/TestHasPathTraceInSession'
        httpTimeLimit:
          type: integer
          description: >-
            Maximum amount of time in milliseconds the agents wait before a
            request times out.
          default: 5000
          example: 5000
        protocol:
          $ref: '#/components/schemas/EndpointTestProtocol'
        username:
          $ref: '#/components/schemas/TestUsername'
        sslVersionId:
          $ref: '#/components/schemas/TestSslVersionId'
        tcpProbeMode:
          readOnly: true
          anyOf:
            - $ref: '#/components/schemas/TestProbeModeResponse'
        verifyCertificate:
          type: boolean
          description: Flag indicating if a certificate should be verified.
          default: true
          example: true
        url:
          $ref: '#/components/schemas/EndpointTestResultUrl'
    TestRequestHasPing:
      type: boolean
      description: Optional flag indicating if the test should run ping.
      default: true
      deprecated: true
      example: true
    TestRequestHasTraceRoute:
      type: boolean
      description: Optional flag indicating if the test should run traceroute.
      default: true
      deprecated: true
      example: true
    TestPassword:
      type: string
      description: Password for Basic/NTLM authentication.
      example: password
      writeOnly: true
    EndpointHttpServerTestUrl:
      type: string
      description: >
        The test target URL. You can optionally specify the protocol (`http` or
        `https`). 


        - **Default Protocol:** If no protocol is specified, `https` is used by
        default.


        - **Port Number:** To specify a port, append it to the URL with a colon
        after the hostname or IP address (e.g., `https://example.com:443`).

            - If no port is specified in the URL, the `port` is determined by the default for protocol (HTTP: 80, HTTPS: 443).
      example: https://example.com:443
    EndpointHttpServerInstantTest:
      allOf:
        - $ref: '#/components/schemas/EndpointInstantTest'
        - $ref: '#/components/schemas/EndpointHttpServerBaseTest'
        - type: object
          required:
            - url
          properties:
            hasPing:
              $ref: '#/components/schemas/TestRequestHasPing'
            hasTraceroute:
              $ref: '#/components/schemas/TestRequestHasTraceRoute'
            networkMeasurements:
              $ref: '#/components/schemas/TestNetworkMeasurements'
            targetResponseTime:
              type: integer
              description: >-
                Response time target in milliseconds. Affects the colors of
                agents and legends on the view page. The value is compared with
                actual response time in order to determine the color scale (from
                green to red).
              default: 1000
              example: 1000
            password:
              $ref: '#/components/schemas/TestPassword'
            url:
              $ref: '#/components/schemas/EndpointHttpServerTestUrl'
    EndpointHttpServerType:
      type: string
      description: Type of test being queried.
      example: http-server
      pattern: ^http-server$
      readOnly: true
    TestFollowRedirects:
      type: boolean
      description: >-
        To disable following HTTP/301 or HTTP/302 redirect directives, set this
        parameter to `false`.
      default: true
      example: true
    TestHttpTargetTime:
      type: integer
      minimum: 100
      maximum: 5000
      description: Target time for HTTP server completion, specified in milliseconds.
      example: 100
    TestHttpVersion:
      type: integer
      minimum: 1
      maximum: 2
      description: >-
        HTTP protocol version. Set to '2' to prefer HTTP/2, or '1' to use only
        HTTP/1.1.
      default: 2
      example: 2
    TestSslVersion:
      type: string
      description: Reflects the verbose SSL protocol version used by a test.
      readOnly: true
      example: Auto
    TestUseNtlm:
      type: boolean
      description: >-
        Set to true to use NTLM, false to use Basic Authentication. Requires
        username and password to be set.
      example: false
    EndpointHttpServerTest:
      allOf:
        - $ref: '#/components/schemas/EndpointTest'
        - $ref: '#/components/schemas/EndpointHttpServerBaseTest'
        - type: object
          properties:
            type:
              $ref: '#/components/schemas/EndpointHttpServerType'
            followRedirects:
              $ref: '#/components/schemas/TestFollowRedirects'
            httpTargetTime:
              $ref: '#/components/schemas/TestHttpTargetTime'
            httpVersion:
              $ref: '#/components/schemas/TestHttpVersion'
            interval:
              $ref: '#/components/schemas/TestInterval'
            sslVersion:
              $ref: '#/components/schemas/TestSslVersion'
            useNtlm:
              $ref: '#/components/schemas/TestUseNtlm'
            labels:
              $ref: '#/components/schemas/TestLabels'
    EndpointRunScheduledInstantTestResult:
      type: object
      properties:
        message:
          type: string
          example: Successfully reran the instant scheduled test with testId=765231567
    ExpandLabelOptions:
      type: string
      enum:
        - filters
    LabelId:
      type: string
      readOnly: true
      description: Label identifier.
      example: abc-123-def
    Labels:
      description: A list of Labels.
      type: object
      properties:
        labels:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/LabelResponse'
        _links:
          $ref: '#/components/schemas/PaginationNextAndSelfLink'
    Label:
      description: A label definition.
      type: object
      properties:
        id:
          $ref: '#/components/schemas/LabelId'
        name:
          description: The label name.
          type: string
          readOnly: false
          example: Head office meeting rooms
        color:
          description: UI color
          type: string
          readOnly: false
          example: '#ff3333'
        matchType:
          $ref: '#/components/schemas/MatchType'
        filters:
          description: >-
            The filters combined using the matchType to determine the label's
            match.
          type: array
          readOnly: false
          items:
            $ref: '#/components/schemas/Filter'
    LabelResponse:
      allOf:
        - $ref: '#/components/schemas/Label'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/SelfLinks'
    LabelRequest:
      allOf:
        - required:
            - name
            - matchType
            - filters
        - $ref: '#/components/schemas/Label'
    MatchType:
      description: |
        Specifies how the filters are combined for matching this label.

        * `and`: All filters must be matched.
        * `or`: Any of the filters should match.
      type: string
      readOnly: false
      enum:
        - and
        - or
      example: and
    Filter:
      type: object
      properties:
        key:
          $ref: '#/components/schemas/FilterType'
        values:
          type: array
          example:
            - 10.1.1.0/24
            - 192.168.1.0/24
          items:
            type: string
            description: >
              Value depends on the key, and may change in the future.


              * `agent-id`: The agent identifiers.

              * `gateway`: The gateway IP to match.

              * `ssid`: A wildcard match on the SSID. Supports `*` for any
              characters and `?` for any single character.

              * `user-name`: A wildcard match on the users that use the agent.
              Supports `*` for any characters and `?` for any single character.

              * `hostname`: A wildcard match on the host name - supports `*` for
              any characters

              and `?` for any single character

              * `bssid`: BSSID for the wifi, lower case, with colons.

              * `platform`: Currently supports `Mac`, `Windows`, and `Linux`.

              * `asn`: Integer AS Number.

              * `public-network`: Network for agent's public IP in CIDR format,
              or IP for single IP. e.g. `192.45.32.0/22`.

              * `local-network`: Network for agent's local IP in CIDR format, or
              IP for single IP. e.g. `10.100.64.0/20`.

              * `connection`: Type of connection `Ethernet` or `Wireless`.

              * `agent-type`: Type of agent `endpoint`, `endpoint-pulse` or
              `endpoint-csc`.

              * `ip-address-family`: `ipv4` or `ipv6`.

              * `vpn-vendor`: Vendor of the VPN software. 
                  Examples include: 
                  
                  * `cisco-anyconnect`
                  * `palo-alto-globalprotect`
                  * `ivanti-connect-secure`
                  * `zscaler-internet-access`
                  * `f5-big-ip`
              * `vpn-gateway-address`: Server-side VPN connection IP address.

              * `vpn-client-network`: Network for the VPN client IP in CIDR
              format. For example, `10.100.32.128/25`.

              * `vpn-client-address`: The VPN client IP. For example,
              `10.100.32.165`.
            example: 10.1.1.0/24
        mode:
          $ref: '#/components/schemas/LabelFilterMode'
    FilterType:
      type: string
      description: Type of filter - the data that will be used to filter.
      example: vpn-client-network
      enum:
        - agent-id
        - public-network
        - local-network
        - connection
        - gateway
        - platform
        - agent-type
        - vpn-vendor
        - vpn-gateway-address
        - vpn-client-network
        - vpn-client-address
        - ip-address-family
        - ssid
        - bssid
        - hostname
        - username
        - asn
    LabelFilterMode:
      type: string
      description: >
        Type of matching to be applied for the values:


        * `in`: The value on the agent must match one of the list of values
        provided.

        * `not-in`: The value on the agent must not match any of the list of
        values provided.
      enum:
        - in
        - not-in
    TestId:
      type: string
      description: Unique ID of endpoint test.
      example: '584739201'
      readOnly: true
    RoundId:
      type: integer
      description: Epoch time (seconds) indicating the start time of the round.
      example: 1384309800
      readOnly: true
    EndpointTestsDataRoundsSearch:
      type: object
      properties:
        searchSort:
          type: array
          items:
            $ref: '#/components/schemas/EndpointTestsDataSearchSort'
        thresholdFilter:
          $ref: '#/components/schemas/EndpointTestsDataThresholdFilters'
        searchFilters:
          $ref: '#/components/schemas/EndpointTestsDataSearchFilter'
    MultiTestIdEndpointTestsDataRoundsSearch:
      type: object
      properties:
        searchSort:
          type: array
          items:
            $ref: '#/components/schemas/EndpointTestsDataSearchSort'
        thresholdFilter:
          $ref: '#/components/schemas/EndpointTestsDataThresholdFilters'
        searchFilters:
          $ref: '#/components/schemas/MultiTestIdEndpointTestsDataSearchFilter'
    DynamicEndpointTestsDataRoundSearch:
      type: object
      properties:
        searchSort:
          type: array
          items:
            $ref: '#/components/schemas/EndpointTestsDataSearchSort'
        thresholdFilter:
          $ref: '#/components/schemas/EndpointTestsDataThresholdFilters'
        searchFilters:
          $ref: '#/components/schemas/DynamicEndpointTestsDataSearchFilter'
    HttpEndpointTestsDataRoundsSearch:
      type: object
      properties:
        searchSort:
          type: array
          items:
            $ref: '#/components/schemas/HttpEndpointTestsDataSearchSort'
        thresholdFilter:
          $ref: '#/components/schemas/HttpEndpointTestsDataThresholdFilters'
        searchFilters:
          $ref: '#/components/schemas/HttpEndpointTestsDataSearchFilter'
    HttpEndpointTestsDataSearchSort:
      type: object
      properties:
        sort:
          $ref: '#/components/schemas/HttpEndpointTestsDataSearchSortKey'
        order:
          $ref: '#/components/schemas/SortOrder'
    HttpEndpointTestsDataSearchSortKey:
      type: string
      enum:
        - round-id
        - response-time
        - dns-time
        - connect-time
        - ssl-time
        - wait-time
        - response-code
        - wire-size
      example: round-id
    HttpEndpointTestsDataThresholdFilters:
      type: object
      description: All filters are applied based on the conditional operator (and/or).
      properties:
        filters:
          type: array
          items:
            $ref: '#/components/schemas/HttpEndpointTestsDataThresholdFilter'
        conditionalOperator:
          $ref: '#/components/schemas/ConditionalOperator'
    HttpEndpointTestsDataThresholdFilter:
      type: object
      description: >-
        The metric is filtered based on the threshold value and operator
        provided.
      properties:
        name:
          $ref: '#/components/schemas/HttpThresholdFilterName'
        value:
          type: number
          description: The threshold value.
          format: double
          example: 10
        operator:
          $ref: '#/components/schemas/ThresholdFilterOperator'
    HttpThresholdFilterName:
      type: string
      description: Metric on which the threshold filter is applied.
      enum:
        - response-time
        - dns-time
        - connect-time
        - ssl-time
        - wait-time
      example: response-time
    HttpEndpointTestsDataSearchFilter:
      type: object
      properties:
        testId:
          description: Filter by test
          type: array
          items:
            type: string
            example: '5'
        agentId:
          description: Filter using the `agent-id`.
          type: array
          items:
            type: string
            format: uuid
            example: 52455b09-ff1b-4849-8194-99026cc890e0
    EndpointTestsDataSearchSort:
      type: object
      properties:
        sort:
          $ref: '#/components/schemas/EndpointTestsDataSearchSortKey'
        order:
          $ref: '#/components/schemas/SortOrder'
    EndpointTestsDataSearchSortKey:
      type: string
      enum:
        - round-id
        - loss
        - latency
        - jitter
        - cpu
        - memory
        - signal-quality
      example: round-id
    EndpointTestsDataThresholdFilters:
      type: object
      description: All filters are applied based on the conditional operator (and/or).
      properties:
        filters:
          type: array
          items:
            $ref: '#/components/schemas/EndpointTestsDataThresholdFilter'
        conditionalOperator:
          $ref: '#/components/schemas/ConditionalOperator'
    EndpointTestsDataThresholdFilter:
      type: object
      description: >-
        The metric is filtered based on the threshold value and operator
        provided.
      properties:
        name:
          $ref: '#/components/schemas/ThresholdFilterName'
        value:
          type: number
          description: The threshold value.
          format: double
          example: 10
        operator:
          $ref: '#/components/schemas/ThresholdFilterOperator'
    ThresholdFilterName:
      type: string
      description: Metric on which the threshold filter is applied.
      enum:
        - loss
        - latency
        - jitter
        - cpu
        - memory
        - signal-quality
      example: loss
    EndpointTestsDataSearchFilter:
      type: object
      properties:
        agentId:
          description: Filter using the `agent-id`.
          type: array
          items:
            type: string
            format: uuid
            example: 52455b09-ff1b-4849-8194-99026cc890e0
    MultiTestIdEndpointTestsDataSearchFilter:
      type: object
      properties:
        agentId:
          description: Filter using the `agent-id`.
          type: array
          items:
            type: string
            format: uuid
            example: 52455b09-ff1b-4849-8194-99026cc890e0
        testId:
          type: array
          items:
            type: string
            example: '5'
    DynamicEndpointTestsDataSearchFilter:
      type: object
      properties:
        agentId:
          description: Filter using the `agent-id`.
          type: array
          items:
            type: string
            format: uuid
            example: 52455b09-ff1b-4849-8194-99026cc890e0
        webexConferenceId:
          description: Filter using the `conference-id` of the webex call.
          type: array
          items:
            type: string
            format: uuid
            example: 52455b09-ff1b-4849-8194-99026cc890e0
    EndpointTestResult:
      type: object
      properties:
        aid:
          $ref: '#/components/schemas/AccountGroupId'
        testId:
          $ref: '#/components/schemas/TestId'
        agentId:
          $ref: '#/components/schemas/EndpointAgentId'
        roundId:
          $ref: '#/components/schemas/RoundId'
        serverIp:
          type: string
          description: IP address of target server.
          example: 185.199.108.153
          readOnly: true
        networkProfile:
          $ref: '#/components/schemas/NetworkProfile'
        systemMetrics:
          $ref: '#/components/schemas/SystemMetrics'
        originalTargetProfile:
          $ref: '#/components/schemas/TargetProfile'
        vpnProfile:
          $ref: '#/components/schemas/VpnProfile'
    NetworkEndpointTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/NetworkEndpointTestResult'
        totalHits:
          $ref: '#/components/schemas/TotalHits'
        test:
          $ref: '#/components/schemas/EndpointScheduledTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationNextLink'
    MultiTestIdNetworkEndpointTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/NetworkEndpointTestResult'
        totalHits:
          $ref: '#/components/schemas/TotalHits'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationNextLink'
    NetworkEndpointTestResult:
      allOf:
        - $ref: '#/components/schemas/EndpointTestResult'
        - type: object
          properties:
            avgLatency:
              type: number
              description: Average RTT for packets sent to destination.
              example: 167.04
              format: double
              readOnly: true
            errorDetails:
              type: string
              description: Error details, if an error was encountered.
              example: Error
              readOnly: true
            jitter:
              type: number
              description: Standard deviation of latency.
              example: 0.076808
              format: double
              readOnly: true
            isIcmpBlocked:
              $ref: '#/components/schemas/IcmpBlocked'
            loss:
              type: number
              description: Percentage of packets not reaching destination.
              example: 0
              format: double
              readOnly: true
            maxLatency:
              type: number
              description: Maximum RTT for packets sent to destination.
              example: 168
              format: double
              readOnly: true
            minLatency:
              type: number
              description: Minimum RTT for packets sent to destination.
              example: 167
              format: double
              readOnly: true
    SystemMetrics:
      type: object
      properties:
        startTimeMs:
          type: integer
          format: int64
          description: >-
            The start time of metrics collection, expressed in milliseconds
            since the Epoch.
          example: 1581508857327
          readOnly: true
        endTimeMs:
          type: integer
          format: int64
          description: >-
            The end time of metrics collection, expressed in milliseconds since
            the Epoch.
          example: 1581508867333
          readOnly: true
        cpuUtilization:
          $ref: '#/components/schemas/CpuUtilization'
        physicalMemoryUsedBytes:
          $ref: '#/components/schemas/PhysicalMemoryUsedBytes'
        physicalMemoryTotalBytes:
          type: integer
          format: int64
          description: Total physical memory of the system.
          example: 1024
          readOnly: true
    CpuUtilization:
      type: object
      properties:
        min:
          type: number
          format: double
          description: >-
            The minimum sampled usage value recorded during the monitored
            period.
          example: 0.22
          minimum: 0
          maximum: 1
          readOnly: true
        max:
          type: number
          format: double
          description: >-
            The maximum sampled usage value recorded during the monitored
            period.
          example: 0.75
          minimum: 0
          maximum: 1
          readOnly: true
        mean:
          type: number
          format: double
          description: >-
            The mean (average) sampled usage value recorded during the monitored
            period.
          example: 0.55
          minimum: 0
          maximum: 1
          readOnly: true
        median:
          type: number
          format: double
          description: The median sampled usage value recorded during the monitored period.
          example: 0.61
          minimum: 0
          maximum: 1
          readOnly: true
        stdDev:
          type: number
          format: double
          description: >-
            The standard deviation of sampled usage values recorded during the
            monitored period.
          example: 0.01
          minimum: 0
          maximum: 1
          readOnly: true
        count:
          type: integer
          description: The total number of samples collected during the monitored period.
          example: 150
          readOnly: true
    PhysicalMemoryUsedBytes:
      type: object
      properties:
        min:
          type: number
          format: double
          description: >-
            The minimum sampled memory usage value recorded during the monitored
            period.
          example: 1.2
          readOnly: true
        max:
          type: number
          format: double
          description: >-
            The maximum sampled memory usage value recorded during the monitored
            period.
          example: 2.5
          readOnly: true
        mean:
          type: number
          format: double
          description: >-
            The mean (average) value of memory usage sampled over the monitored
            period.
          example: 1.77
          readOnly: true
        median:
          type: number
          format: double
          description: The median value of memory usage sampled over the monitored period.
          example: 1.85
          readOnly: true
        stdDev:
          type: number
          format: double
          description: >-
            The standard deviation of memory usage sampled during the monitored
            period.
          example: 0.25
          readOnly: true
        count:
          type: integer
          description: The total number of samples collected during the monitored period.
          example: 155
          readOnly: true
    SystemMetricDetails:
      type: object
      description: >
        Details of system metrics that contain top applications by CPU/memory
        usage.

        Not populated by default.
      properties:
        topCpuApplications:
          type: array
          description: A list of applications that consume more than 2% of the CPU.
          readOnly: true
          items:
            $ref: '#/components/schemas/ApplicationMetrics'
        topMemoryApplications:
          type: array
          description: A list of applications that consume more than 2% of the RAM.
          readOnly: true
          items:
            $ref: '#/components/schemas/ApplicationMetrics'
    ApplicationMetrics:
      type: object
      properties:
        name:
          type: string
          description: The name of the application.
          example: Webex
        totalCpu:
          type: number
          format: double
          description: The total CPU usage by all application processes.
          example: 0.5
        totalMemoryPercentage:
          type: number
          format: double
          description: The total percentage of memory used by all application processes.
          example: 0.22
        totalMemoryBytes:
          type: integer
          format: int64
          description: The total memory in bytes used by all application processes.
          example: 1023334
        processes:
          type: array
          description: A list of application processes.
          items:
            $ref: '#/components/schemas/ProcessMetrics'
    ProcessMetrics:
      type: object
      properties:
        name:
          type: string
          description: The name of the process.
          example: Webex background
        pid:
          type: integer
          description: The process ID.
          example: 15632
        cpu:
          type: number
          format: double
          description: >-
            The CPU usage by the process as a percentage (e.g., 0.5 for 50% CPU
            usage).
          example: 0.5
        memoryPercentage:
          type: number
          format: double
          description: >-
            The memory usage by the process as a percentage (e.g., 0.22 for
            22%).
          example: 0.22
        memoryBytes:
          type: integer
          format: int64
          description: The memory usage by the process in bytes.
          example: 1023334
    VpnProfile:
      type: object
      properties:
        vpnClientAddresses:
          type: array
          description: >-
            A list of private IP addresses assigned to the device by the VPN
            server.
          example:
            - 184.81.113.85
            - 13.129.91.62
          readOnly: true
          items:
            type: string
        vpnClientNetworkRange:
          type: array
          description: A list of private networks assigned to the device by the VPN server.
          readOnly: true
          items:
            type: string
            example: 9.88.37.27
        vpnGatewayAddress:
          type: string
          description: IP address of the VPN gateway.
          example: 120.98.134.7
          readOnly: true
        vpnType:
          $ref: '#/components/schemas/VpnType'
    TargetProfile:
      type: object
      properties:
        remotePort:
          type: integer
          description: The remote port of a network flow towards the target.
          example: 80
          readOnly: true
        remoteIpAddress:
          type: string
          description: The remote IP address of a network flow towards the target.
          example: 120.98.134.7
          readOnly: true
        protocol:
          $ref: '#/components/schemas/TestProtocol'
    PathVisEndpointTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/PathVisEndpointTestResult'
        test:
          $ref: '#/components/schemas/EndpointScheduledTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationNextAndSelfLink'
    PathVisEndpointTestResult:
      allOf:
        - $ref: '#/components/schemas/PathVisBaseEndpointTestResult'
        - type: object
          properties:
            location:
              type: string
              description: Geographic location of the path visualization.
              example: San Francisco Area
              readOnly: true
            pathTraces:
              type: array
              description: >-
                Shows an iteration of path trace, with each iteration specified
                by a pathId.
              items:
                $ref: '#/components/schemas/EndpointPathTrace'
    PathVisDetailEndpointTestResults:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/PathVisDetailEndpointTestResult'
        test:
          $ref: '#/components/schemas/EndpointScheduledTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    PathVisDetailEndpointTestResult:
      allOf:
        - $ref: '#/components/schemas/PathVisBaseEndpointTestResult'
        - type: object
          properties:
            pathTraces:
              type: array
              description: >-
                Shows iterations of path trace, with each iteration specified by
                a pathId.
              items:
                $ref: '#/components/schemas/EndpointPathVisRoute'
            vpnPathTraces:
              type: array
              description: >-
                Shows iterations of the VPN path trace, with each iteration
                specified by a pathId.
              items:
                $ref: '#/components/schemas/EndpointPathVisRoute'
    PathVisBaseEndpointTestResult:
      allOf:
        - $ref: '#/components/schemas/EndpointTestResult'
        - type: object
          properties:
            asnDetails:
              $ref: '#/components/schemas/AsnDetails'
            server:
              type: string
              description: Target server, including port.
              example: www.google.com:443
              readOnly: true
            sourceIp:
              type: string
              description: IP address of source endpoint agent.
              example: 196.40.106.237
              readOnly: true
            sourcePrefix:
              type: string
              description: IP prefix of source endpoint agent.
              example: 196.40.96.0/20
              readOnly: true
    AsnDetails:
      type: object
      properties:
        asName:
          type: string
          description: Name of the provider.
          example: ThousandEyes, Inc
          readOnly: true
        asNumber:
          type: integer
          description: >-
            Unique number assigned to an organization (also referred to as
            service provider).
          example: 394101
          readOnly: true
    EndpointPathVisRoute:
      type: object
      properties:
        pathId:
          type: string
          description: Unique ID of path trace.
          example: '4711301366345855606023718047703941305741293841502186803'
          readOnly: true
        protocol:
          $ref: '#/components/schemas/EndpointTestResultProtocol'
        tcpPathTraceMode:
          $ref: '#/components/schemas/TcpPathTraceModeResponse'
        udpPathTraceMode:
          $ref: '#/components/schemas/UdpPathTraceModeResponse'
        hops:
          type: array
          description: Array of hop objects indicating each step in the traceroute.
          items:
            $ref: '#/components/schemas/EndpointPathVisHop'
    EndpointPathVisHop:
      allOf:
        - $ref: '#/components/schemas/Hop'
        - type: object
          properties:
            rdns:
              type: string
              description: Reverse DNS entry of IP, if available.
              example: core-router1.cpt2.host-h.net
              readOnly: true
            network:
              type: string
              description: Autonomous System originating the prefix.
              example: HETZNER (Pty) Ltd (AS 37153)
              readOnly: true
            responseTime:
              type: integer
              description: RTT to the hop’s IP in milliseconds.
              example: 1
              readOnly: true
            location:
              type: string
              description: Location information for the hop.
              example: Cape Town, South Africa
              readOnly: true
    Hop:
      type: object
      properties:
        hop:
          type: integer
          description: The hop index.
          example: 1
          readOnly: true
        ipAddress:
          type: string
          description: IP address of the hop.
          example: 196.40.106.237
          readOnly: true
        prefix:
          type: string
          description: Prefix of IP address shown in CIDR.
          example: 196.40.96.0/20
          readOnly: true
    EndpointPathTrace:
      type: object
      properties:
        ipAddress:
          type: string
          description: IP address of the hop destination.
          example: 196.40.106.237
          readOnly: true
        numberOfHops:
          type: integer
          description: Number of hops for path trace to destination.
          example: 15
          readOnly: true
        protocol:
          $ref: '#/components/schemas/EndpointTestResultProtocol'
        tcpPathTraceMode:
          $ref: '#/components/schemas/TcpPathTraceModeResponse'
        udpPathTraceMode:
          $ref: '#/components/schemas/UdpPathTraceModeResponse'
        pathId:
          type: string
          description: Unique ID of path trace.
          example: '1230899668701775614109128428722974545787322404682781961521'
          readOnly: true
        responseTime:
          type: integer
          description: RTT of the path trace to the destination in milliseconds.
          example: 1500
          readOnly: true
    HttpMultiEndpointTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/HttpEndpointTestResult'
        totalHits:
          $ref: '#/components/schemas/TotalHits'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationNextAndSelfLink'
    HttpEndpointTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/HttpEndpointTestResult'
        test:
          $ref: '#/components/schemas/EndpointHttpServerTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationNextAndSelfLink'
    HttpEndpointTestResult:
      allOf:
        - $ref: '#/components/schemas/EndpointTestResult'
        - type: object
          properties:
            connectTime:
              type: integer
              description: >-
                Time required to establish a TCP connection to the server in
                milliseconds.
              example: 2
              readOnly: true
            dnsTime:
              type: integer
              description: Time required to resolve DNS in milliseconds.
              example: 0
              readOnly: true
            errorType:
              $ref: '#/components/schemas/HttpErrorType'
            errorDetails:
              type: string
              description: Error details, if an error were encountered.
              readOnly: true
            headers:
              $ref: '#/components/schemas/HttpEndpointTestResultHeaders'
            numRedirects:
              type: integer
              description: Number of redirects.
              example: 0
              readOnly: true
            receiveTime:
              type: integer
              description: >-
                Elapsed time between first and last byte of response in
                milliseconds.
              example: 1
              readOnly: true
            redirectTime:
              type: integer
              description: Cumulative redirect timing in milliseconds.
              example: 10
              readOnly: true
            responseCode:
              type: integer
              description: HTTP response code.
              example: 200
              readOnly: true
            responseTime:
              type: integer
              description: Time to first byte in milliseconds.
              example: 14
              readOnly: true
            serverIp:
              type: string
              description: IP address of destination server.
              example: 193.2.1.88
              readOnly: true
            sslTime:
              type: integer
              description: Time to negotiate SSL/TLS in milliseconds.
              example: 9
              readOnly: true
            totalTime:
              type: integer
              description: Total time is the response time + receive time.
              example: 15
              readOnly: true
            waitTime:
              type: integer
              description: >-
                Time elapsed between completion of request and first byte of
                response in milliseconds.
              example: 3
              readOnly: true
            wireSize:
              type: integer
              description: Size of content in bytes.
              example: 9993
              readOnly: true
    HttpErrorType:
      type: string
      enum:
        - connect
        - dns
        - http
        - none
        - send
        - ssl
        - receive
      description: Type of error encountered; corresponds to phase of connection.
      default: connect
      example: connect
      readOnly: true
    HttpEndpointTestResultHeaders:
      type: object
      description: Expandable object containing both request and response headers.
      properties:
        requestHeaders:
          type: string
          description: 'CRLF-delimited list of request headers in `header: value` format.'
          example: "GET / HTTP/1.1\r\nHost: www.thousandeyes.com\r\nUser-Agent: curl/7.58.0-DEV\r\nAccept: */*\r\nAccept-Encoding: deflate, gzip\r\nX-ThousandEyes-Agent: yes\r\n"
          readOnly: true
        responseHeaders:
          type: string
          description: 'CRLF-delimited list of response headers in `header: value` format.'
          example: "HTTP/1.1 200 OK\r\nContent-Type: text/html;charset=UTF-8\r\nContent-Length: 9993\r\nConnection: keep-alive\r\nDate: Mon, 04 May 2020 16:13:00 GMT\r\nServer: Apache\r\nContent-Language: en-US\r\nContent-Encoding: gzip\r\nX-Frame-Options: sameorigin\r\nCache-Control: max-age=600, must-revalidate\r\nStrict-Transport-Security: max-age=31536000\r\nX-Content-Type-Options: nosniff\r\nX-XSS-Protection: 1; mode=block\r\nVary: Accept-Encoding\r\nX-Cache: Hit from cloudfront\r\nVia: 1.1 7ba3caf71ae7a52dd411d1a543e80cd8.cloudfront.net (CloudFront)\r\nX-Amz-Cf-Pop: SFO5-C3\r\nX-Amz-Cf-Id: w4h42tkoJD-rEpkRDZUvnQBmy26GVGe6pUsuRr1Dphf7oajYbjXaOA==\r\nAge: 132\r\n"
          readOnly: true
    NetworkDynamicEndpointTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/NetworkDynamicEndpointTestResult'
        test:
          $ref: '#/components/schemas/DynamicTest'
        totalHits:
          $ref: '#/components/schemas/TotalHits'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationNextLink'
    NetworkDynamicEndpointTestResult:
      allOf:
        - $ref: '#/components/schemas/NetworkEndpointTestResult'
        - $ref: '#/components/schemas/DynamicBaseEndpointTestResult'
    DynamicEndpointTestWebex:
      type: object
      description: >-
        Contains object with webex information. Only returned for webex
        applications.
      properties:
        conferenceId:
          type: string
          description: Webex conference ID.
          example: '225817074608419375'
          readOnly: true
        correlationId:
          type: string
          description: Webex conference correlation ID.
          example: '22581707460321454'
          readOnly: true
        localSipSessionId:
          type: string
          description: Webex calling local sip session ID.
          example: '22581707460321454'
          readOnly: true
        remoteSipSessionId:
          type: string
          description: Webex calling remote sip session ID.
          example: '22581707460321454'
          readOnly: true
    DynamicBaseEndpointTestResult:
      type: object
      properties:
        application:
          $ref: '#/components/schemas/DynamicTestApplication'
        protocol:
          $ref: '#/components/schemas/EndpointTestResultProtocol'
        tcpProbeMode:
          $ref: '#/components/schemas/TestProbeModeResponse'
        udpProbeMode:
          $ref: '#/components/schemas/UdpProbeModeResponse'
        webex:
          $ref: '#/components/schemas/DynamicEndpointTestWebex'
    PathVisDynamicEndpointTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/PathVisDynamicEndpointTestResult'
        test:
          $ref: '#/components/schemas/DynamicTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        totalHits:
          $ref: '#/components/schemas/TotalHits'
        _links:
          $ref: '#/components/schemas/PaginationNextAndSelfLink'
    PathVisDynamicEndpointTestResult:
      allOf:
        - $ref: '#/components/schemas/PathVisBaseEndpointTestResult'
        - $ref: '#/components/schemas/DynamicBaseEndpointTestResult'
        - type: object
          properties:
            location:
              type: string
              description: Geographic location of the path visualization.
              example: San Francisco Area
              readOnly: true
            pathTraces:
              type: array
              description: >-
                Shows an iteration of path trace, with each iteration specified
                by a pathId.
              items:
                $ref: '#/components/schemas/EndpointPathTrace'
    PathVisDetailDynamicEndpointTestResults:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/PathVisDetailDynamicEndpointTestResult'
        test:
          $ref: '#/components/schemas/DynamicTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    PathVisDetailDynamicEndpointTestResult:
      allOf:
        - $ref: '#/components/schemas/PathVisDetailEndpointTestResult'
        - $ref: '#/components/schemas/DynamicBaseEndpointTestResult'
    EndpointResultRequestFilter:
      type: object
      properties:
        location:
          type: array
          description: Location of the endpoint agent.
          items:
            type: string
          example:
            - San Francisco Bay Area
            - Germany
        connection:
          type: array
          items:
            $ref: '#/components/schemas/InterfaceHardwareType'
        platform:
          type: array
          items:
            $ref: '#/components/schemas/Platform'
        gateway:
          type: array
          description: Endpoint agent default gateway IP address.
          items:
            type: string
          example:
            - 78.153.54.204
            - 78.153.54.206
        proxyTarget:
          type: array
          description: Endpoint agent proxy IP address.
          items:
            type: string
          example:
            - 78.153.54.204
            - 78.153.54.206
        vpnTarget:
          type: array
          description: Endpoint agent VPN endpoint IP address.
          items:
            type: string
          example:
            - 78.153.54.204
            - 78.153.54.206
        agentId:
          type: array
          description: Endpoint agent ID.
          items:
            type: string
            format: uuid
          example:
            - 3fde6422-f119-40e1-ae32-d08a1243c038
            - 236e6f18-9637-4a2f-b15f-7aa6a29c9fce
        networkId:
          type: array
          description: Network ID.
          items:
            type: string
          example:
            - 660b34109d12
            - 660b34109d15
        ssid:
          type: array
          description: WiFi SSID.
          items:
            type: string
          example:
            - wifi-name
            - other-room-wifi
        bssid:
          type: array
          description: WiFi BSSID.
          items:
            type: string
          example:
            - 8c:68:c8:a5:0a:8c
            - 0c:51:01:e4:3e:d0
    RealUserEndpointTestResultsRequest:
      type: object
      properties:
        searchFilters:
          $ref: '#/components/schemas/RealUserEndpointTestResultRequestFilter'
    RealUserEndpointTestResultRequestFilter:
      allOf:
        - $ref: '#/components/schemas/EndpointResultRequestFilter'
        - type: object
          properties:
            destinationIp:
              type: array
              description: Web site destination IP address.
              items:
                type: string
              example:
                - 84.255.241.1
                - 193.2.1.88
            domain:
              type: array
              description: Web site base domain visited during the session.
              items:
                type: string
              example:
                - thousandeyes.com
            trigger:
              type: array
              description: Real user test trigger.
              items:
                $ref: '#/components/schemas/Trigger'
              example:
                - user
            visitedSite:
              type: array
              description: Web site domain visited during the session.
              items:
                type: string
              example:
                - app.thousandeyes.com
    Trigger:
      type: string
      enum:
        - auto
        - user
      example: auto
    RealUserEndpointTestBase:
      allOf:
        - type: object
          properties:
            agentId:
              $ref: '#/components/schemas/EndpointAgentId'
            committed:
              type: string
              format: date-time
              description: >-
                UTC date when endpoint real user test was committed to the
                controller (ISO date-time format).
              example: '2022-07-17T22:00:54Z'
              readOnly: true
            date:
              type: string
              format: date-time
              description: >-
                UTC date when endpoint real user test took place (ISO date-time
                format).
              example: '2022-07-17T22:00:54Z'
              readOnly: true
            experienceScore:
              type: number
              format: double
              description: >-
                Score rating a user’s experience when loading a particular page,
                from 0 (the worst) to 1 (the best). [More
                details](https://docs.thousandeyes.com/product-documentation/end-user-monitoring/viewing-data/endpoint-agent-views-reference#user-experience-score).
              minimum: 0
              maximum: 1
              example: 0.5
              readOnly: true
            numberOfPages:
              type: integer
              description: Number of web pages visited on target website.
              example: 2
              readOnly: true
            organizationName:
              type: string
              description: Name of the AS organization `sourceAddress` belongs to.
              example: T-2 Access Network
              readOnly: true
            port:
              type: integer
              description: Port used to visit target website.
              example: 443
              readOnly: true
            protocol:
              type: string
              description: Protocol used to visit target website.
              example: https
              readOnly: true
            roundId:
              $ref: '#/components/schemas/RoundId'
            sourceAddress:
              type: string
              description: Public IP address of the endpoint agent during the session.
              example: 84.255.241.1
              readOnly: true
            id:
              type: string
              description: >-
                Endpoint real user test ID. Each endpoint real user test
                occurrence has a unique ID.
              example: 07625:1490529480:aVDViw0i
              readOnly: true
            visitedSite:
              type: string
              description: Domain used to visit target website.
              example: www.thousandeyes.com
              readOnly: true
    RealUserEndpointTest:
      allOf:
        - $ref: '#/components/schemas/RealUserEndpointTestBase'
        - type: object
          properties:
            pageId:
              $ref: '#/components/schemas/EndpointPageId'
    EndpointPageId:
      type: string
      description: >-
        Web page ID. The page ID is unique only within an endpoint real user
        test.
      example: C31gBrYJ
      readOnly: true
    RealUserEndpointTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/RealUserEndpointTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationNextLink'
    RealUserEndpointTestDetail:
      allOf:
        - $ref: '#/components/schemas/RealUserEndpointTestBase'
        - type: object
          properties:
            browser:
              $ref: '#/components/schemas/EndpointBrowser'
            coordinates:
              $ref: '#/components/schemas/RealUserEndpointTestCoordinates'
            pages:
              type: array
              description: Web site base domain visited during the session.
              items:
                $ref: '#/components/schemas/RealUserEndpointTestPage'
            network:
              $ref: '#/components/schemas/RealUserEndpointTestNetwork'
    RealUserEndpointTestDetailResults:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/RealUserEndpointTestDetail'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    EndpointBrowser:
      type: object
      properties:
        name:
          type: string
          description: Browser name.
          example: Google Chrome
          readOnly: true
        version:
          type: string
          description: Browser version.
          example: 116.0.0.0
          readOnly: true
    RealUserEndpointTestCoordinates:
      type: object
      description: >-
        Contains approximate GPS location of the endpoint agent, based on
        endpoint agent’s public IP address.
      properties:
        latitude:
          type: number
          format: double
          description: Numeric representations of GPS coordinates.
          example: 46.0552778
          readOnly: true
        location:
          type: string
          description: Represents named geographical location.
          example: Slovenia
          readOnly: true
        longitude:
          type: number
          format: double
          description: Numeric representations of GPS coordinates.
          example: 14.5144444
          readOnly: true
    RealUserEndpointTestPageTimings:
      type: object
      properties:
        onContentLoad:
          type: integer
          description: DOM load time in milliseconds.
          example: 1483
          readOnly: true
        onLoad:
          type: integer
          description: Page load time in milliseconds.
          example: 4569
          readOnly: true
    RealUserEndpointTestPage:
      type: object
      properties:
        pageId:
          $ref: '#/components/schemas/EndpointPageId'
        pageTitle:
          type: string
          description: Web page title.
          example: Network Performance Resources | ThousandEyes
          readOnly: true
        pageUrl:
          type: string
          description: Web page url
          example: https://app.thousandeyes.com/settings/integrations
          readOnly: true
        loadDate:
          type: string
          format: date-time
          description: UTC date when page load started (ISO date-time format).
          example: '2022-07-17T22:00:54Z'
          readOnly: true
        responseCode:
          type: integer
          description: HTTP response code.
          example: 200
          readOnly: true
        pageTimings:
          $ref: '#/components/schemas/RealUserEndpointTestPageTimings'
    RealUserEndpointTestNetwork:
      type: object
      description: Contains details about network profile and conditions during session.
      properties:
        networkProfile:
          $ref: '#/components/schemas/NetworkProfile'
        systemMetrics:
          $ref: '#/components/schemas/SystemMetrics'
        gatewayPing:
          $ref: '#/components/schemas/GatewayNetworkPing'
        ping:
          $ref: '#/components/schemas/TargetNetworkPing'
        traceroute:
          $ref: '#/components/schemas/TargetTraceroute'
        connectRtt:
          type: number
          format: double
          description: >-
            Represents the number of milliseconds required to establish TCP
            connectivity with the target.
          example: 77.777
          readOnly: true
        isIcmpBlocked:
          $ref: '#/components/schemas/IcmpBlocked'
        errors:
          type: array
          description: Array of string representing possible network errors.
          items:
            type: string
          example:
            - 'ping: Request timed out before getting response'
          readOnly: true
        vpnPing:
          $ref: '#/components/schemas/VpnNetworkPing'
        vpnTraceroute:
          $ref: '#/components/schemas/VpnTraceroute'
    NetworkInterface:
      type: object
      properties:
        ipAddress:
          type: string
          description: Network IP address.
          example: 10.0.0.13
          readOnly: true
        subnetMask:
          type: string
          description: Network subnet mask - only for IPv4.
          example: 255.255.255.0
          readOnly: true
        publicIpAddress:
          type: string
          description: Network public IP address.
          example: 84.255.241.1
          readOnly: true
        localPrefix:
          type: string
          description: Network local prefix.
          example: 10.0.0.0
          readOnly: true
        publicIpRange:
          type: string
          description: Network public IP range.
          example: 84.255.241.0-84.255.241.255
          readOnly: true
        dnsServers:
          type: array
          description: Network DNS servers.
          example:
            - 8.8.8.8
            - 8.8.8.4
          readOnly: true
          items:
            type: string
        hardwareType:
          $ref: '#/components/schemas/InterfaceHardwareType'
        interfaceName:
          type: string
          description: Network interface name.
          example: en0
          readOnly: true
    NetworkProfile:
      allOf:
        - $ref: '#/components/schemas/NetworkInterface'
        - type: object
          description: Contains basic network connectivity parameters.
          properties:
            error:
              type: string
              description: Only present when there is an error
              example: An operation timed out.
              readOnly: true
            gateway:
              type: string
              description: Network gateway address.
              example: 10.0.0.1
              readOnly: true
            wirelessProfile:
              $ref: '#/components/schemas/NetworkWirelessProfile'
            proxyProfile:
              $ref: '#/components/schemas/NetworkProxyProfile'
            ethernetProfile:
              $ref: '#/components/schemas/EndpointTestEthernetProfile'
            previousInterface:
              $ref: '#/components/schemas/NetworkInterface'
    NetworkWirelessProfile:
      type: object
      properties:
        ssid:
          type: string
          description: Wireless network SSID.
          example: Internet for the masses
          readOnly: true
        bssid:
          type: string
          description: Wireless network BSSID.
          example: 4c:ba:ba:f4:fa:fa
          readOnly: true
        channel:
          type: integer
          description: Wireless network channel.
          example: 1
          readOnly: true
        phyMode:
          type: string
          description: Wireless network PHY mode.
          example: 802.11n
          readOnly: true
        rssi:
          type: integer
          description: Wireless network RSSI.
          example: -38
          readOnly: true
        noise:
          type: integer
          description: Wireless network noise.
          example: -95
          readOnly: true
        quality:
          type: integer
          description: Wireless network quality.
          example: 100
          readOnly: true
        txRate:
          type: integer
          description: Wireless network transmitted rate.
          example: 130
          readOnly: true
        vendor:
          type: string
          description: Wireless network device vendor.
          example: Cisco
          readOnly: true
    NetworkProxy:
      type: object
      properties:
        bypass:
          type: string
          description: Proxy bypass expression.
          example: '*.local;169.254/16'
          readOnly: true
        proxy:
          type: string
          description: Proxy mode.
          example: <direct>
          readOnly: true
    NetworkProxyProfile:
      type: object
      properties:
        method:
          type: string
          description: Proxy profile method.
          example: System
          readOnly: true
        proxies:
          type: array
          items:
            $ref: '#/components/schemas/NetworkProxy'
    EndpointTestEthernetProfile:
      type: object
      properties:
        linkSpeed:
          type: integer
          description: Ethernet profile link speed
          example: 860
          readOnly: true
    NetworkPing:
      type: object
      properties:
        avgRtt:
          type: integer
          description: Ping average response time.
          example: 7
          readOnly: true
        maxRtt:
          type: integer
          description: Ping maximum response time.
          example: 66
          readOnly: true
        meanDevRtt:
          type: integer
          description: Ping mean standard deviation response time.
          example: 11
          readOnly: true
        minRtt:
          type: integer
          description: Ping minimum response time.
          example: 1
          readOnly: true
        pktsReceived:
          type: integer
          description: Ping packets received.
          example: 10
          readOnly: true
        pktsSent:
          type: integer
          description: Ping packets sent.
          example: 10
          readOnly: true
        error:
          type: string
          description: Only present when there is an error.
          example: An operation timed out.
          readOnly: true
        infoFlags:
          $ref: '#/components/schemas/ErrorFlags'
    GatewayNetworkPing:
      allOf:
        - description: >-
            Contains numeric parameters representing results of a ping test
            performed against the endpoint agent default gateway.
        - $ref: '#/components/schemas/NetworkPing'
    TargetNetworkPing:
      allOf:
        - description: >-
            Contains number parameters representing results of a ping test
            performed against the target website.
        - $ref: '#/components/schemas/NetworkPing'
    VpnNetworkPing:
      allOf:
        - description: >-
            Contains number parameters representing results of a ping test
            performed against the target website on the VPN.
        - $ref: '#/components/schemas/NetworkPing'
    TracerouteHop:
      allOf:
        - $ref: '#/components/schemas/Hop'
        - type: object
          properties:
            asn:
              type: integer
              description: >-
                Unique number assigned to an organization (also referred to as
                service provider).
              example: 34779
              readOnly: true
            delay:
              type: integer
              description: Hop delay
              example: 5
              readOnly: true
            mpls:
              type: array
              description: Hop Multiprotocol Label Switching.
              items:
                type: string
              example:
                - L=301472,E=0,S=1,T=1
              readOnly: true
            name:
              type: string
              description: The hop name.
              example: 89-210-88-65.access.t-2.net
              readOnly: true
    Traceroute:
      type: object
      properties:
        destination:
          type: string
          description: The target IP address.
          example: 13.32.22.232
          readOnly: true
        error:
          type: string
          description: Only present when there is an error
          example: An operation timed out.
          readOnly: true
        infoFlags:
          $ref: '#/components/schemas/ErrorFlags'
        internalErrors:
          $ref: '#/components/schemas/ErrorFlags'
        hops:
          type: array
          items:
            $ref: '#/components/schemas/TracerouteHop'
    TargetTraceroute:
      allOf:
        - description: >-
            Contains parameters representing results of a trace route test
            performed against the target.
        - $ref: '#/components/schemas/Traceroute'
    VpnTraceroute:
      allOf:
        - description: >-
            Contains parameters representing results of a trace route test
            performed against the target on the VPN.
        - $ref: '#/components/schemas/Traceroute'
    RealUserEndpointTestPageResult:
      allOf:
        - $ref: '#/components/schemas/RealUserEndpointTestPage'
        - type: object
          properties:
            agentId:
              $ref: '#/components/schemas/EndpointAgentId'
            id:
              type: string
              description: >-
                Endpoint real user test ID. Each endpoint real user test
                occurrence has a unique ID.
              example: 07625:1490529480:aVDViw0i
              readOnly: true
            roundId:
              $ref: '#/components/schemas/RoundId'
            responseTime:
              type: integer
              description: HTTP server response in milliseconds.
              example: 240
              readOnly: true
            systemMetrics:
              $ref: '#/components/schemas/SystemMetrics'
    RealUserEndpointTestPageResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/RealUserEndpointTestPageResult'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationNextLink'
    RealUserEndpointTestPageDetailResult:
      type: object
      properties:
        har:
          $ref: '#/components/schemas/RealUserEndpointTestPageHar'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    RealUserEndpointTestPageHar:
      type: object
      description: >-
        A HAR object according to the [HTTP Archive 1.2
        specifications](http://www.softwareishard.com/blog/har-12-spec/), with
        an additional `systemMetrics` property.
      example:
        log:
          browser:
            name: Google Chrome
            version: 7.0.34.98
          creator:
            name: ThousandEyes Endpoint Agent
            version: 7.0.34
          entries:
            - pageref: page_1
              request:
                headers:
                  - name: Upgrade-Insecure-Requests
                    value: '1'
                  - name: User-Agent
                    value: >-
                      Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3)
                      AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98
                      Safari/537.36
                  - name: Accept
                    value: >-
                      text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
                  - name: Referer
                    value: https://www.thousandeyes.com/
                  - name: Accept-Encoding
                    value: gzip, deflate, sdch, br
                  - name: Accept-Language
                    value: en-US,en;q=0.6
                  - name: Cookie
                    value: (removed)
                method: GET
                queryString:
                  - name: locale
                    value: en-US
                url: https://www.thousandeyes.com/resources
              response:
                bodySize: 17776
                content:
                  mimeType: text/html;charset=ISO-8859-1
                  size: 17776
                headers:
                  - name: Content-Type
                    value: text/html;charset=ISO-8859-1
                  - name: Content-Length
                    value: '17776'
                  - name: Connection
                    value: keep-alive
                  - name: Date
                    value: Sun, 26 Mar 2017 11:58:54 GMT
                  - name: Server
                    value: Apache
                  - name: Cache-Control
                    value: max-age=600, must-revalidate
                  - name: Content-Language
                    value: en-US
                  - name: Content-Encoding
                    value: gzip
                  - name: X-Frame-Options
                    value: sameorigin
                  - name: Strict-Transport-Security
                    value: max-age=31536000
                  - name: Vary
                    value: Accept-Encoding
                  - name: X-Cache
                    value: Miss from cloudfront
                  - name: Via
                    value: >-
                      1.1 5dbe09af3a2c87121e31ffa67f174f66.cloudfront.net
                      (CloudFront)
                  - name: X-Amz-Cf-Id
                    value: YkvlkBNKgHt5aMu9vcS22Z8kHn1MUr-8adupwhDk3j9vF-TpSyIxZA==
                headersSize: 527
                redirectURL: ''
                status: 200
                statusText: OK
              serverIPAddress: 13.32.22.80
              startedDateTime: '2017-03-22T11:58:54.123+02:00'
              time: 177
              timings:
                blocked: -1
                connect: -1
                dns: -1
                receive: 27
                send: -1
                ssl: -1
                wait: 150
            - pageref: page_1
              request:
                headers:
                  - name: User-Agent
                    value: >-
                      Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3)
                      AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98
                      Safari/537.36
                  - name: Accept
                    value: '*/*'
                  - name: Referer
                    value: https://www.thousandeyes.com/resources
                  - name: Accept-Encoding
                    value: gzip, deflate, sdch, br
                  - name: Accept-Language
                    value: en-US,en;q=0.6
                method: GET
                queryString: []
                url: https://use.typekit.net/cjy5myw.js
              response:
                bodySize: 0
                content:
                  mimeType: text/javascript;charset=utf-8
                  size: 7814
                headers:
                  - name: status
                    value: '200'
                  - name: access-control-allow-origin
                    value: '*'
                  - name: cache-control
                    value: public, max-age=600, stale-while-revalidate=604800
                  - name: content-encoding
                    value: gzip
                  - name: content-type
                    value: text/javascript;charset=utf-8
                  - name: server
                    value: nginx
                  - name: status
                    value: 200 OK
                  - name: timing-allow-origin
                    value: '*'
                  - name: vary
                    value: Accept-Encoding
                  - name: content-length
                    value: '7814'
                  - name: date
                    value: Sun, 26 Mar 2017 11:58:43 GMT
                headersSize: 334
                redirectURL: ''
                status: 200
                statusText: OK
              serverIPAddress: 104.103.103.234
              startedDateTime: '2017-03-22T11:58:54.123+02:00'
              time: 72
              timings:
                blocked: -1
                connect: -1
                dns: -1
                receive: 10
                send: -1
                ssl: -1
                wait: 62
          pages:
            - id: page_1
              pageTimings:
                onContentLoad: 874
                onLoad: 3492
              responseCode: 200
              startedDateTime: '2017-03-22T11:58:54.123+02:00'
              title: Network Performance Resources | ThousandEyes
          version: '1.2'
          systemMetrics:
            startTimeMs: 1581508857327
            endTimeMs: 1581508867333
            cpuUtilization:
              min: 0.30859375
              max: 0.5625
              mean: 0.38931831001805056
              median: 0.353515625
              stdDev: 0.08389194281742307
              count: 10
            physicalMemoryUsedBytes:
              min: 12805128192
              max: 12825530368
              mean: 12819145821.09091
              median: 12818219008
              stdDev: 5741124.05691331
              count: 11
            physicalMemoryTotalBytes: 17069891584
    RealUserEndpointTestNetworkResult:
      type: object
      properties:
        agentId:
          $ref: '#/components/schemas/EndpointAgentId'
        date:
          type: string
          format: date-time
          description: >-
            UTC date when endpoint real user test took place (ISO date-time
            format).
          example: '2022-07-17T22:00:54Z'
          readOnly: true
        id:
          type: string
          description: >-
            Endpoint real user test ID. Each endpoint real user test occurrence
            has a unique ID.
          example: 07625:1490529480:aVDViw0i
          readOnly: true
        roundId:
          $ref: '#/components/schemas/RoundId'
        destination:
          $ref: '#/components/schemas/NetworkMetrics'
        vpn:
          $ref: '#/components/schemas/NetworkMetrics'
        proxy:
          $ref: '#/components/schemas/NetworkMetrics'
        systemMetrics:
          $ref: '#/components/schemas/SystemMetrics'
    NetworkMetrics:
      type: object
      properties:
        jitter:
          type: integer
          description: Network jitter.
          example: 46
          readOnly: true
        latency:
          type: integer
          description: Network latency.
          example: 150
          readOnly: true
        loss:
          type: number
          format: double
          description: Network loss.
          example: 0.1
          readOnly: true
        target:
          type: string
          description: Network target IP address.
          example: 54.208.6.220
          readOnly: true
    RealUserEndpointTestNetworkResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/RealUserEndpointTestNetworkResult'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationNextLink'
    EndpointNetworkTopologyResultRequest:
      type: object
      properties:
        searchFilters:
          $ref: '#/components/schemas/EndpointNetworkTopologyResultRequestFilter'
    EndpointNetworkTopologyResultRequestFilter:
      allOf:
        - $ref: '#/components/schemas/EndpointResultRequestFilter'
        - type: object
          properties:
            type:
              type: array
              description: Web site base domain visited during the session.
              items:
                $ref: '#/components/schemas/NetworkTopologyType'
              example:
                - vpn
                - proxy
    NetworkTopologyType:
      type: string
      enum:
        - vpn
        - proxy
        - gateway
      example: vpn
    LocalNetworkTopologyResultBase:
      type: object
      properties:
        agentId:
          $ref: '#/components/schemas/EndpointAgentId'
        date:
          type: string
          format: date-time
          description: >-
            UTC date when endpoint network topology took place (ISO date-time
            format).
          example: '2022-07-17T22:00:54Z'
          readOnly: true
        networkTopologyId:
          type: string
          description: >-
            Network topology ID. Each network topology occurrence has a unique
            ID.
          example: 00160:54c3a4b180c6:1490536500:c7a58c49
          readOnly: true
        roundId:
          $ref: '#/components/schemas/RoundId'
        target:
          type: string
          description: >-
            IP of the target the network topology was performed against. This is
            typically a default gateway, proxy or VPN endpoint.
          example: 10.0.2.2
          readOnly: true
        targetPort:
          type: integer
          description: Port of the target the network topology was performed against.
          example: 80
          readOnly: true
        type:
          $ref: '#/components/schemas/NetworkTopologyType'
        icmpPing:
          $ref: '#/components/schemas/NetworkPing'
        isIcmpBlocked:
          $ref: '#/components/schemas/IcmpBlocked'
        tcpConnect:
          $ref: '#/components/schemas/TcpConnect'
        systemMetrics:
          $ref: '#/components/schemas/SystemMetrics'
        systemMetricDetails:
          $ref: '#/components/schemas/SystemMetricDetails'
    LocalNetworkTopologyResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/LocalNetworkTopologyResultBase'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationNextLink'
    LocalNetworkResult:
      type: object
      properties:
        networkId:
          type: string
          description: The network ID. Each network occurrence has a unique ID.
          example: 006c4fa7a054
          readOnly: true
        networkName:
          type: string
          description: The network name.
          example: 10.5.51.0 (in 178.216.56.0/21)
          readOnly: true
        localPrefix:
          type: string
          description: Network local private address.
          example: 10.5.51.0
          readOnly: true
        publicIpRange:
          type: string
          description: Network public IP range.
          example: 178.216.56.0-178.216.63.255
          readOnly: true
    LocalNetworkResults:
      type: object
      properties:
        localNetworks:
          type: array
          items:
            $ref: '#/components/schemas/LocalNetworkResult'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    LocalNetworkTopologyResult:
      allOf:
        - $ref: '#/components/schemas/LocalNetworkTopologyResultBase'
        - type: object
          properties:
            coordinates:
              $ref: '#/components/schemas/RealUserEndpointTestCoordinates'
            networkProfile:
              $ref: '#/components/schemas/NetworkProfile'
            icmpTraceroute:
              $ref: '#/components/schemas/Traceroute'
            icmpTraceroutes:
              type: array
              items:
                $ref: '#/components/schemas/Traceroute'
    LocalNetworkTopologyDetailResults:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/LocalNetworkTopologyResult'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    IcmpBlocked:
      type: boolean
      description: Set to `true` if network target is blocking ICMP echo (ping) queries.
      example: true
      readOnly: true
    EndpointPingDataPointScore:
      type: object
      properties:
        applicationScore:
          type: number
          format: float
          description: >-
            Fine grained score between 0-100 based on metrics (latency, jitter,
            loss)
          example: 100
        quality:
          $ref: '#/components/schemas/ApplicationScoreQuality'
    EndpointHttpDataPointScore:
      type: object
      properties:
        applicationScore:
          type: number
          format: float
          description: >-
            Fine grained score between 0-100 based on `time to first byte`
            metric
          example: 100
        quality:
          $ref: '#/components/schemas/ApplicationScoreQuality'
    ApplicationScoreQuality:
      type: string
      enum:
        - great
        - good
        - poor
      example: great
    TcpConnect:
      type: object
      properties:
        rtt:
          type: number
          format: double
          description: >-
            Represents the number of milliseconds required to establish TCP
            connectivity with the target
          example: 77.777
          readOnly: true
        errorCode:
          type: string
          description: Only present when there is an error
          example: ERR_TIMED_OUT
          readOnly: true
        error:
          type: string
          description: Only present when there is an error
          example: An operation timed out.
          readOnly: true
        infoFlags:
          $ref: '#/components/schemas/ErrorFlags'
    ErrorFlags:
      type: array
      items:
        type: string
      example:
        - TE_INFO_ICMP_BLOCKED_BY_FIREWALL
      readOnly: true
    ExpandEndpointHttpServerOptions:
      type: string
      enum:
        - header
      example: header
    ExpandLocalNetworkTopologyOptions:
      type: string
      enum:
        - system-metric-detail
      example: system-metric-detail
    TotalHits:
      description: Total number of measurements that match the search criteria.
      type: integer
      example: 12
    TestProtocol:
      type: string
      enum:
        - tcp
        - icmp
        - udp
      description: >-
        Protocol used by dependent network tests (end-to-end, path trace,
        PMTUD).
      default: tcp
      example: tcp
    EndpointScheduledTest:
      oneOf:
        - $ref: '#/components/schemas/EndpointAgentToServerTest'
        - $ref: '#/components/schemas/EndpointHttpServerTest'
      discriminator:
        propertyName: type
        mapping:
          agent-to-server: '#/components/schemas/EndpointAgentToServerTest'
          http-server: '#/components/schemas/EndpointHttpServerTest'
    EndpointTestResultProtocol:
      type: string
      enum:
        - icmp
        - tcp
        - udp
        - prefer-tcp
        - ast-autodetect
        - autodetect
        - unknown
      description: Protocol used to perform the test.
      default: unknown
      example: tcp
    TcpPathTraceModeResponse:
      type: string
      enum:
        - auto
        - syn
        - unknown
        - data-in-session-with-decrementing-ttl
        - data-in-session
      description: >-
        Path trace mode used by network test. Only valid when the protocol is
        set to TCP.
      default: auto
      example: auto
    UdpPathTraceModeResponse:
      type: string
      enum:
        - stun-pcap
        - unknown
      description: >-
        Path trace mode used by network test. Only valid when the protocol is
        set to UDP.
      default: unknown
      example: unknown
      readOnly: true
    DynamicTestApplication:
      type: string
      description: >-
        Which supported application to monitor, can be one of `webex`, `zoom`,
        `microsoft-teams`.
      example: webex
    UdpProbeModeResponse:
      type: string
      enum:
        - stun-pcap
        - unknown
      description: >-
        Probe mode used by network test, only valid when the protocol is set to
        UDP.
      default: unknown
      example: unknown
      readOnly: true
    DynamicTestSelfLink:
      allOf:
        - description: The reference to the test.
          example:
            href: >-
              https://api.thousandeyes.com/v7/dynamic-tests/agent-to-server/281474976710706
        - $ref: '#/components/schemas/Link'
    DynamicTestResults:
      type: array
      description: Reference to the test results.
      items:
        $ref: '#/components/schemas/Link'
      example:
        - href: >-
            https://api.thousandeyes.com/v7/endpoint/test-results/dynamic-tests/281474976710706/network/filter
        - href: >-
            https://api.thousandeyes.com/v7/endpoint/test-results/dynamic-tests/281474976710706/pathvis
    DynamicTestLinks:
      type: object
      description: A list of links that can be accessed to get more information.
      properties:
        self:
          $ref: '#/components/schemas/DynamicTestSelfLink'
        testResults:
          $ref: '#/components/schemas/DynamicTestResults'
      readOnly: true
    TestHasPing:
      type: boolean
      description: Optional flag indicating if the test should run ping.
      default: true
    TestHasTraceRoute:
      type: boolean
      description: Optional flag indicating if the test should run traceroute.
      default: true
    DynamicTest:
      type: object
      properties:
        aid:
          $ref: '#/components/schemas/AccountGroupId'
        _links:
          $ref: '#/components/schemas/DynamicTestLinks'
        agentSelectorConfig:
          $ref: '#/components/schemas/EndpointAgentSelectorConfig'
        application:
          $ref: '#/components/schemas/DynamicTestApplication'
        createdDate:
          $ref: '#/components/schemas/TestCreatedDate'
        interval:
          $ref: '#/components/schemas/TestInterval'
        isEnabled:
          readOnly: true
          anyOf:
            - $ref: '#/components/schemas/TestIsEnabled'
        hasPathTraceInSession:
          readOnly: true
          anyOf:
            - $ref: '#/components/schemas/TestHasPathTraceInSession'
        hasPing:
          $ref: '#/components/schemas/TestHasPing'
        hasTraceroute:
          $ref: '#/components/schemas/TestHasTraceRoute'
        modifiedDate:
          type: string
          format: date-time
          description: UTC last modification date (ISO date-time format).
          readOnly: true
          example: '2022-07-17T22:00:54Z'
        networkMeasurements:
          readOnly: true
          anyOf:
            - $ref: '#/components/schemas/TestNetworkMeasurements'
        protocol:
          $ref: '#/components/schemas/EndpointTestProtocol'
        ipVersion:
          $ref: '#/components/schemas/EndpointIpVersionTemplate'
        tcpProbeMode:
          readOnly: true
          anyOf:
            - $ref: '#/components/schemas/TestProbeModeResponse'
        testId:
          type: string
          description: >-
            Each test is assigned a unique ID; this is used to access test
            information and results from other endpoints.
          readOnly: true
          example: '281474976710706'
        testName:
          $ref: '#/components/schemas/TestName'
        labels:
          $ref: '#/components/schemas/TestLabels'
    DynamicTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/DynamicTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    EndpointTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/EndpointTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    EndpointAgentToServerTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/EndpointAgentToServerTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    EndpointHttpServerTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/EndpointHttpServerTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    EndpointHttpTestUpdate:
      allOf:
        - $ref: '#/components/schemas/TestUpdate'
        - type: object
          properties:
            url:
              $ref: '#/components/schemas/EndpointHttpServerTestUrl'
    EndpointNetworkTestUpdate:
      allOf:
        - $ref: '#/components/schemas/TestUpdate'
        - type: object
          properties:
            port:
              $ref: '#/components/schemas/TestPort'
            server:
              type: string
              description: Target domain name or IP address.
              example: www.example.com
    EndpointDynamicTestUpdate:
      allOf:
        - $ref: '#/components/schemas/TestUpdate'
        - type: object
          properties:
            application:
              $ref: '#/components/schemas/DynamicTestApplication'
    EndpointAgentToServerTestRequest:
      allOf:
        - $ref: '#/components/schemas/EndpointAgentToServerInstantTest'
        - type: object
          properties:
            interval:
              $ref: '#/components/schemas/TestInterval'
            protocol:
              $ref: '#/components/schemas/EndpointTestProtocol'
    TestProbeMode:
      type: string
      enum:
        - auto
        - sack
        - syn
      description: >-
        Probe mode used by network test, only valid when the protocol is set to
        TCP.
      default: auto
      example: auto
    TestUpdate:
      type: object
      properties:
        interval:
          $ref: '#/components/schemas/TestInterval'
        testName:
          $ref: '#/components/schemas/TestName'
        protocol:
          $ref: '#/components/schemas/EndpointTestProtocol'
        isEnabled:
          $ref: '#/components/schemas/TestIsEnabled'
        tcpProbeMode:
          $ref: '#/components/schemas/TestProbeMode'
    TestPort:
      type: integer
      minimum: 1
      maximum: 65535
      description: Target port.
      default: 49153
      example: 49153
    EndpointHttpServerTestRequest:
      allOf:
        - $ref: '#/components/schemas/EndpointHttpServerInstantTest'
        - type: object
          properties:
            interval:
              $ref: '#/components/schemas/TestInterval'
            networkMeasurements:
              $ref: '#/components/schemas/TestNetworkMeasurements'
    DynamicTestRequest:
      allOf:
        - type: object
          required:
            - testName
            - application
          properties:
            agentSelectorType:
              $ref: '#/components/schemas/EndpointTestAgentSelectorType'
            agents:
              $ref: '#/components/schemas/EndpointTestAgents'
            endpointAgentLabels:
              $ref: '#/components/schemas/EndpointAgentLabels'
            interval:
              $ref: '#/components/schemas/TestInterval'
            maxMachines:
              $ref: '#/components/schemas/EndpointTestMaxMachines'
            application:
              $ref: '#/components/schemas/DynamicTestApplication'
            protocol:
              $ref: '#/components/schemas/EndpointTestProtocol'
            tcpProbeMode:
              $ref: '#/components/schemas/TestProbeMode'
            testName:
              $ref: '#/components/schemas/TestName'
            hasPathTraceInSession:
              $ref: '#/components/schemas/TestHasPathTraceInSession'
    Events:
      type: object
      properties:
        aid:
          $ref: '#/components/schemas/AccountGroupId'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        events:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/Event'
        _links:
          $ref: '#/components/schemas/PaginationNextAndSelfLinks'
    Event:
      allOf:
        - $ref: '#/components/schemas/SimpleEventDetail'
        - type: object
          properties:
            title:
              type: string
              description: Event title
              example: Affecting destinations in google.com
              readOnly: true
            type:
              $ref: '#/components/schemas/EventType'
            affectedTests:
              $ref: '#/components/schemas/AffectedCount'
            affectedTargets:
              $ref: '#/components/schemas/AffectedCount'
            affectedAgents:
              $ref: '#/components/schemas/AffectedCount'
            _links:
              $ref: '#/components/schemas/SelfLinks'
    SimpleEventDetail:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: A unique ID for each event.
          example: e9c3bf02-a48c-4aa8-9e5f-898800d6f569
          readOnly: true
        typeName:
          type: string
          description: >-
            Event type name. Examples include, Local Agent Issue, Network Path
            Issue, Network Outage, DNS Issue, Server Issue, and Proxy Issue.
          example: Network Issue
          readOnly: true
        state:
          $ref: '#/components/schemas/EventState'
        startDate:
          $ref: '#/components/schemas/EventStartDate'
        endDate:
          $ref: '#/components/schemas/EventEndDate'
        severity:
          $ref: '#/components/schemas/EventAlertSeverity'
    EventDetail:
      oneOf:
        - $ref: '#/components/schemas/TargetEventDetail'
        - $ref: '#/components/schemas/TargetNetworkEventDetail'
        - $ref: '#/components/schemas/ProxyEventDetail'
        - $ref: '#/components/schemas/DnsEventDetail'
        - $ref: '#/components/schemas/AgentLocalEventDetail'
        - $ref: '#/components/schemas/NetworkEventDetail'
        - $ref: '#/components/schemas/NetworkPopEventDetail'
      discriminator:
        propertyName: type
        mapping:
          target: '#/components/schemas/TargetEventDetail'
          target-network: '#/components/schemas/TargetNetworkEventDetail'
          proxy: '#/components/schemas/ProxyEventDetail'
          dns: '#/components/schemas/DnsEventDetail'
          agent-local: '#/components/schemas/AgentLocalEventDetail'
          network: '#/components/schemas/NetworkEventDetail'
          network-pop: '#/components/schemas/NetworkPopEventDetail'
    EventDetailBase:
      allOf:
        - $ref: '#/components/schemas/SimpleEventDetail'
        - type: object
          properties:
            aid:
              $ref: '#/components/schemas/AccountGroupId'
            summary:
              type: string
              description: A brief summary describing the cause of the event.
              example: Significant number of issues detected with 66.29.146.15
              readOnly: true
            affectedTests:
              $ref: '#/components/schemas/AffectedTests'
            affectedTargets:
              $ref: '#/components/schemas/AffectedTargets'
            affectedAgents:
              $ref: '#/components/schemas/AffectedAgents'
            cause:
              $ref: '#/components/schemas/Cause'
            _links:
              $ref: '#/components/schemas/SelfLinks'
    TargetEventDetail:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventDetailBase'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/TargetEventType'
            grouping:
              $ref: '#/components/schemas/TargetEventGrouping'
    TargetEventGrouping:
      type: object
      properties:
        target:
          type: string
          description: Target name (for target events).
          example: google.com
          readOnly: true
    TargetNetworkEventDetail:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventDetailBase'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/TargetNetworkEventType'
            grouping:
              $ref: '#/components/schemas/TargetNetworkEventGrouping'
    TargetNetworkEventGrouping:
      type: object
      properties:
        prefix:
          type: string
          description: Prefix value for target-network events.
          example: 0.0.0.0/0
          readOnly: true
    ProxyEventDetail:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventDetailBase'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/ProxyEventType'
            grouping:
              $ref: '#/components/schemas/ProxyEventGrouping'
    ProxyEventGrouping:
      type: object
      properties:
        proxy:
          type: string
          description: Proxy name or IP (for proxy events).
          example: my.proxy.com
          readOnly: true
    DnsEventDetail:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventDetailBase'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/DnsEventType'
            grouping:
              $ref: '#/components/schemas/DnsEventGrouping'
    DnsEventGrouping:
      type: object
      properties:
        rootDomain:
          type: string
          description: Root domain name (for dns events).
          example: thousandeyes.com
          readOnly: true
    AgentLocalEventDetail:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventDetailBase'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/AgentLocalEventType'
            grouping:
              $ref: '#/components/schemas/AgentLocalEventGrouping'
    AgentLocalEventGrouping:
      type: object
      properties:
        agentId:
          type: string
          description: Numeric Agent ID (for agent-local events).
          example: '123456'
          readOnly: true
    NetworkEventDetail:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventDetailBase'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/NetworkEventType'
            grouping:
              $ref: '#/components/schemas/NetworkEventGrouping'
    NetworkPopEventDetail:
      type: object
      allOf:
        - $ref: '#/components/schemas/EventDetailBase'
        - type: object
          required:
            - type
          properties:
            type:
              $ref: '#/components/schemas/NetworkPopEventType'
            grouping:
              $ref: '#/components/schemas/NetworkEventGrouping'
    NetworkEventGrouping:
      type: object
      properties:
        sourceAsn:
          type: integer
          description: >-
            AS number of the source network (for network-pop and network
            events).
          example: 1234
          readOnly: true
        destAsn:
          type: integer
          description: AS number of the destination network (for network events).
          example: 4321
          readOnly: true
        sourceCountryCode:
          type: string
          description: >-
            The source network's country code (for network-pop and network
            events).
          example: US
          readOnly: true
    AffectedCount:
      type: object
      properties:
        total:
          type: integer
          description: The total number affected.
          example: 5
          readOnly: true
        inAccountGroup:
          type: integer
          description: Indicates if in the affected account group.
          example: 2
          readOnly: true
    AffectedTests:
      allOf:
        - $ref: '#/components/schemas/AffectedCount'
        - type: object
          properties:
            tests:
              uniqueItems: true
              type: array
              description: List of affected tests.
              items:
                $ref: '#/components/schemas/EventApiAffectedTest'
    AffectedTargets:
      allOf:
        - $ref: '#/components/schemas/AffectedCount'
        - type: object
          properties:
            targets:
              uniqueItems: true
              type: array
              description: List of affected targets.
              items:
                $ref: '#/components/schemas/ApiAffectedTarget'
    AffectedAgents:
      allOf:
        - $ref: '#/components/schemas/AffectedCount'
        - type: object
          properties:
            agents:
              uniqueItems: true
              type: array
              description: List of affected agents.
              items:
                $ref: '#/components/schemas/EventApiAffectedAgent'
    EventApiAffectedTest:
      type: object
      properties:
        testId:
          type: string
          description: The ID of the affected test.
          example: '226770'
          readOnly: true
        testType:
          $ref: '#/components/schemas/TestType'
        name:
          type: string
          description: The test name as configured in the test settings.
          example: Google test
          readOnly: true
        affectedTargetIds:
          type: array
          description: >-
            An array of unique target IDs contributed data points which
            generated the signal for the event.
          items:
            type: string
          example:
            - '123'
            - '1234'
        affectedAgentIds:
          type: array
          description: >-
            An array of unique agent IDs that contributed data points which
            generated the signal for the event.
          items:
            type: string
          example:
            - '2954'
            - '2953'
        _links:
          $ref: '#/components/schemas/EventTestLinks'
    ApiAffectedTarget:
      type: object
      properties:
        serverId:
          type: string
          description: The ID of the target server.
          example: '123'
          readOnly: true
        name:
          type: string
          description: The target name as configured in the test settings.
          example: google.com
          readOnly: true
        ip:
          type: string
          description: >-
            The target server IP resolved by the agent. Depending on the failure
            type, the IP may not be present. For example, if the agent failed to
            resolve it or if the requests were routed through the proxy.
          example: 216.239.32.10
          readOnly: true
        affectedTestIds:
          type: array
          description: >-
            An array of unique test IDs that contributed data points which
            generated the signal for the event.
          items:
            type: string
          example:
            - '123'
            - '1234'
        affectedAgentIds:
          type: array
          description: >-
            An array of unique agent IDs that contributed data points which
            generated the signal for the event.
          items:
            type: string
          example:
            - '2954'
            - '2953'
    EventApiAffectedAgent:
      type: object
      properties:
        agentId:
          type: string
          description: The ID of the virtual agent.
          example: '2954'
          readOnly: true
        type:
          $ref: '#/components/schemas/CloudEnterpriseAgentType'
        name:
          type: string
          description: The name of the agent as defined in settings.
          example: São Paulo, Brazil - agent
          readOnly: true
        location:
          type: string
          description: The name of the agent's location.
          example: São Paulo, Brazil
          readOnly: true
        countryCode:
          type: string
          description: The country code of the agent's location .
          example: BR
          readOnly: true
        affectedTargetIds:
          type: array
          description: >-
            An array of unique target IDs that contributed data points which
            generated the signal for the event.
          items:
            type: string
          example:
            - '123'
            - '1234'
        affectedTestIds:
          type: array
          description: >-
            An array of unique agent IDs that contributed data points which
            generated the signal for the event.
          items:
            type: string
          example:
            - '2954'
            - '2953'
        _links:
          $ref: '#/components/schemas/AgentLinks'
    EventStartDate:
      type: string
      format: date-time
      description: >-
        The start date and time (in UTC, ISO 8601 format) when the event was
        first detected.
      example: '2020-04-23T13:43:16Z'
      readOnly: true
    EventEndDate:
      type: string
      format: date-time
      description: >-
        The end date and time (in UTC, ISO 8601 format) when the event was
        resolved (due to timeout). This value is populated for "ongoing" events.
      example: '2020-04-23T13:43:16Z'
      readOnly: true
    EventAlertSeverity:
      type: string
      description: The severity of the alert.
      enum:
        - high
        - medium
        - low
      example: medium
    EventType:
      type: string
      description: >-
        Specifies the event type in a machine-readable and backwards-compatible
        format. Allowed values are: `agent-local`, `network-pop`, `network`,
        `dns`, `target`, and `proxy`.
      enum:
        - agent-local
        - network-pop
        - network
        - dns
        - target
        - target-network
        - proxy
      example: target
      readOnly: true
    TargetEventType:
      type: string
      description: Target event type.
      example: target
      pattern: ^target$
    TargetNetworkEventType:
      type: string
      description: Target network event type.
      example: target-network
      pattern: ^target-network$
    ProxyEventType:
      type: string
      description: Proxy event type.
      example: proxy
      pattern: ^proxy$
    DnsEventType:
      type: string
      description: DNS event type.
      example: dns
      pattern: ^dns$
    AgentLocalEventType:
      type: string
      description: Agent local event type.
      example: agent-local
      pattern: ^agent-local$
    NetworkEventType:
      type: string
      description: Network event type.
      example: network
      pattern: ^network$
    NetworkPopEventType:
      type: string
      description: Network pop event type.
      example: network-pop
      pattern: ^network-pop$
    EventState:
      type: string
      description: >-
        Indicates the state of the event, whether it is ongoing (active) or has
        been resolved.
      enum:
        - active
        - resolved
      example: resolved
      readOnly: true
    Cause:
      uniqueItems: true
      type: array
      description: The cause of the error.
      items:
        type: string
      example:
        - Network Loss and/or High RTT
    AgentLinks:
      type: object
      description: A links object containing the agent link.
      readOnly: true
      properties:
        agent:
          $ref: '#/components/schemas/Link'
    EventTestLinks:
      type: object
      description: A links object containing the self link.
      readOnly: true
      properties:
        test:
          $ref: '#/components/schemas/Link'
    PaginationNextAndSelfLinks:
      type: object
      description: >-
        A links object containing pagination-related links, including only next
        and self.
      properties:
        next:
          $ref: '#/components/schemas/Link'
        self:
          $ref: '#/components/schemas/Link'
    ExpandTagsOptions:
      enum:
        - assignments
      type: string
    TagInfo:
      type: object
      properties:
        assignments:
          type: array
          readOnly: true
          items:
            $ref: '#/components/schemas/Assignment'
        accessType:
          $ref: '#/components/schemas/AccessType'
        aid:
          type: integer
          example: 1234
          description: The account group ID
          readOnly: true
        color:
          type: string
          description: Tag color
          example: '#FF0000'
        createDate:
          type: string
          format: yyyy-MM-ddTHH:mm[:ss]Z
          example: '2022-03-01T23:31:11Z'
          readOnly: true
          description: Tag creation date
        icon:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
          description: The tag's description.
          example: To tag assets in San Francisco
        id:
          type: string
          example: 5aeab5d5-0d34-4d44-a7ac-fb440185295c
          description: The tag ID
          readOnly: true
          format: uuid
        key:
          type: string
          example: branch
          description: The tags's key
        legacyId:
          type: number
          nullable: true
          readOnly: true
        objectType:
          $ref: '#/components/schemas/ObjectType'
        value:
          type: string
          example: sfo
          description: The tag's value
    ObjectType:
      type: string
      description: The object type associated with the tag
      enum:
        - test
        - dashboard
        - endpoint-test
        - v-agent
      example: test
    AccessType:
      type: string
      description: >-
        The access level of the tag. The access level impacts the visibility of
        the label in UI and the permissions to modify the label.
      enum:
        - all
        - partner
        - system
      example: all
    Tag:
      allOf:
        - $ref: '#/components/schemas/TagInfo'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/SelfLinks'
    TagAssignment:
      type: object
      properties:
        assignments:
          type: array
          items:
            $ref: '#/components/schemas/Assignment'
    Assignment:
      type: object
      properties:
        id:
          type: string
          description: Object Id
          example: '123'
        type:
          $ref: '#/components/schemas/AssignmentType'
    AssignmentType:
      type: string
      enum:
        - test
        - v-agent
        - endpoint-test
        - dashboard
    BulkTagAssignment:
      allOf:
        - type: object
          properties:
            tagId:
              type: string
              format: uuid
              example: c6b78e57-81a2-4c5f-a11a-d96c3c664d55
              description: The ID of the tag to assign
        - $ref: '#/components/schemas/TagAssignment'
    BulkTagAssignments:
      type: object
      properties:
        tags:
          type: array
          items:
            $ref: '#/components/schemas/BulkTagAssignment'
    Tags:
      type: object
      properties:
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    TagBulkCreateError:
      type: object
      properties:
        tag:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/TagInfo'
        responseCode:
          type: integer
          example: 200
          description: HTTP response code
        message:
          type: string
          example: Object successfully created
          description: Status / error message
    BulkTagResponse:
      type: object
      properties:
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Tag'
        errors:
          readOnly: true
          type: array
          items:
            $ref: '#/components/schemas/TagBulkCreateError'
    ApiError:
      type: object
      properties:
        timestamp:
          type: integer
          format: int64
          example: 1679677853573
        status:
          type: integer
          example: 500
        errors:
          type: string
          example: Internal Server Error
        path:
          type: string
          format: url
          example: https://api.thousandeyes.com/v7/request/path
    ApiAsn:
      type: object
      properties:
        id:
          type: integer
          description: ASN (Autonomous Systems Number)
          example: 1
        name:
          type: string
          description: ASN (Autonomous Systems Number) name
          example: LVLT-1 - Level 3 Communications, Inc.
    InternetInsightsApiAffectedTest:
      type: object
      properties:
        id:
          type: integer
          format: int64
          example: 5
        name:
          type: string
          example: amazon-test2
    InternetInsightsApiAffectedAgent:
      type: object
      properties:
        id:
          type: integer
          format: int64
          example: 11
        name:
          type: string
          example: London, England
    ApiApplicationOutageAffectedServer:
      type: object
      properties:
        domain:
          type: string
          example: amazon.com
        prefix:
          type: string
          example: 123.176.185.0/23
    ApiApplicationOutageAffectedLocation:
      type: object
      properties:
        location:
          $ref: '#/components/schemas/OutageLocation'
        affectedServers:
          type: array
          description: The number of affected servers in this location.
          items:
            $ref: '#/components/schemas/ApiApplicationOutageAffectedServer'
    ApiNetworkOutageAffectedLocation:
      type: object
      properties:
        location:
          $ref: '#/components/schemas/OutageLocation'
        affectedInterfaces:
          type: array
          description: The affected interfaces in this location.
          items:
            type: string
            example: 50.51.52.53
    ApiNetworkOutageDetails:
      type: object
      properties:
        id:
          type: string
          description: The ID of the outage.
          example: 8EF2760862C705783A2F8BCBAAABB44F28DBC670DBA3B610
        providerName:
          type: string
          description: The name of the affected provider.
          example: Rackspace
        providerType:
          type: string
          description: The type of the affected provider.
          example: IAAS
        networkName:
          type: string
          description: The affected network.
          example: Rackspace Hosting
        asn:
          type: integer
          description: ASN number
          example: 19994
        startDate:
          type: string
          description: Date and time when the outage started.
          format: yyyy-MM-ddTHH:mm[:ss]Z
          example: '2023-01-27T20:50:51.256Z'
        startRoundId:
          type: integer
          description: Epoch time (seconds) when the outage started.
          format: int64
          example: 1674852600
        endDate:
          type: string
          description: Date and time when the outage ended.
          format: yyyy-MM-ddTHH:mm[:ss]Z
          example: '2023-01-27T20:53:51.256Z'
        endRoundId:
          type: integer
          description: Epoch time (seconds) when the outage ended.
          format: int64
          example: 1674852600
        duration:
          type: integer
          description: Duration of the outage in seconds.
          format: int64
          example: 180
        affectedTests:
          uniqueItems: true
          type: array
          description: List of affected tests.
          items:
            $ref: '#/components/schemas/InternetInsightsApiAffectedTest'
        affectedDomains:
          uniqueItems: true
          type: array
          description: List of affected domains.
          items:
            type: string
            example: periodic-failure.com
        affectedAgents:
          uniqueItems: true
          type: array
          description: List of affected agents.
          items:
            $ref: '#/components/schemas/InternetInsightsApiAffectedAgent'
        affectedLocations:
          uniqueItems: true
          type: array
          description: List of affected locations.
          items:
            $ref: '#/components/schemas/ApiNetworkOutageAffectedLocation'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    ApiApplicationOutageDetails:
      type: object
      properties:
        id:
          type: string
          description: The ID of the outage.
          example: 0CC4C4209887126DE42E92252FB43962CBB3193147F318EA
        providerName:
          type: string
          description: The name of the affected provider.
          example: Amazon Web Services
        providerType:
          type: string
          description: The type of the affected provider.
          example: SAAS
        applicationName:
          type: string
          description: The name of the affected application.
          example: Amazon Web Services
        startDate:
          type: string
          description: Date and time when the outage started.
          format: yyyy-MM-ddTHH:mm[:ss]Z
          example: '2023-01-27T20:50:51.256Z'
        startRoundId:
          type: integer
          description: Epoch time (seconds) when the outage started.
          format: int64
          example: 1674852600
        endDate:
          type: string
          description: Date and time when the outage ended.
          format: yyyy-MM-ddTHH:mm[:ss]Z
          example: '2023-01-27T20:53:51.256Z'
        endRoundId:
          type: integer
          description: Epoch time (seconds) when the outage ended.
          format: int64
          example: 1674852600
        duration:
          type: integer
          description: Duration of the outage in seconds.
          format: int64
          example: 180
        affectedTests:
          uniqueItems: true
          type: array
          description: List of affected tests.
          items:
            $ref: '#/components/schemas/InternetInsightsApiAffectedTest'
        affectedDomains:
          uniqueItems: true
          type: array
          description: List of affected domains.
          items:
            type: string
            example: amazon.com
        affectedAgents:
          uniqueItems: true
          type: array
          description: List of affected agents.
          items:
            $ref: '#/components/schemas/InternetInsightsApiAffectedAgent'
        errors:
          uniqueItems: true
          type: array
          description: List of errors.
          items:
            type: string
            example: HTTP_SERVER_TIMEOUT
        affectedLocations:
          uniqueItems: true
          type: array
          description: List of affected locations.
          items:
            $ref: '#/components/schemas/ApiApplicationOutageAffectedLocation'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    ApiOutageFilter:
      description: >-
        Advanced filter query used to filter the response. Can filter on: -
        outageScope (all, affected tests (e.g. my tests only)). - providerName -
        interfaceNetwork - applicationName - startDate, endDate - window
      type: object
      properties:
        startDate:
          type: string
          description: Start of the time range. Must be paired with `endDate`.
          format: yyyy-MM-ddTHH:mm[:ss]Z
          example: '2022-03-01T01:30:00Z'
        endDate:
          type: string
          description: End of the time range. Must be paired with `startDate`.
          format: yyyy-MM-ddTHH:mm[:ss]Z
          example: '2022-03-01T23:30:15Z'
        window:
          type: string
          description: >-
            Specify a time period in the past for which to retrieve data.
            Alternative to specifying `startDate` and `endDate`.
          format: ^[0-9]+[smhdw]?
          example: 1d
        outageScope:
          $ref: '#/components/schemas/OutageScope'
        providerName:
          type: array
          description: The name used to identify the provider.
          example:
            - Telia
            - Amazon
          items:
            type: string
        applicationName:
          type: array
          description: The name to identify the application.
          example:
            - slack
            - facebook
          items:
            type: string
        interfaceNetwork:
          type: array
          description: The name of the ASN (Interface Network).
          items:
            type: string
      example:
        startDate: '2022-03-01T01:30:00Z'
        endDate: '2022-03-01T23:30:15Z'
        outageScope: all
        providerName:
          - Telia
          - Amazon
        interfaceNetwork:
          - Telianet
          - Cloudflare
        applicationName:
          - slack
          - facebook
    OutageScope:
      type: string
      description: Scope of the outage
      enum:
        - all
        - with-affected-test
    ApiOutage:
      type: object
      properties:
        id:
          type: string
          description: The ID of the outage.
          example: xxxxxxxxxxxxxxxxxx1
        type:
          type: string
          description: The type of outage e.g. app.
          example: app
        providerName:
          type: string
          description: The name of the affected provider.
          example: Google
        providerType:
          type: string
          description: The type of the affected provider.
          example: SAAS
        name:
          type: string
          description: The name of the affected application.
          example: Google
        startDate:
          type: string
          description: Date and time when the outage started.
          format: yyyy-MM-ddTHH:mm[:ss]Z
          example: '2022-03-01T23:31:11Z'
        startRoundId:
          type: integer
          description: Epoch time (seconds) when the outage started.
          format: int64
          example: 1646177400
        endDate:
          type: string
          format: yyyy-MM-ddTHH:mm[:ss]Z
          description: Date and time when the outage ended.
          example: '2022-03-01T23:31:11Z'
        endRoundId:
          type: integer
          description: Epoch time (seconds) when the outage ended.
          format: int64
          example: 1646177700
        duration:
          type: integer
          description: Duration of the outage (seconds)
          format: int64
          example: 214
        affectedTestsCount:
          type: integer
          description: The number of affected tests
          format: int32
          example: 1
        affectedServersCount:
          type: integer
          description: The number of affected servers
          format: int32
          example: 2
        affectedLocationsCount:
          type: integer
          description: The number of affected locations.
          format: int32
          example: 1
        affectedInterfacesCount:
          type: integer
          description: The number of affected interfaces.
          format: int32
          example: 1
        asn:
          type: integer
          description: ASN number.
          example: 19994
        _links:
          $ref: '#/components/schemas/SelfLinks'
      description: List of outages.
    ApiOutagesResponse:
      type: object
      properties:
        outages:
          type: array
          description: List of application outages.
          items:
            $ref: '#/components/schemas/ApiOutage'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    ApiCatalogProviderFilter:
      description: >-
        Advanced filter query used to filter the response. The provider name,
        location, asn can be partial names. Can filter on: - Provider name -
        Provider type - Region - Location - ASN - included
      type: object
      properties:
        providerName:
          type: string
          description: The name of the catalog provider.
          example: Amazon Web Services
        providerType:
          type: string
          description: The type of catalog provider.
          example: IAAS
        region:
          type: string
          description: The catalog provider region.
          example: North America
        location:
          type: string
          description: Location of the catalog provider.
          example: San Jose, US
        asn:
          type: string
          description: Name of the ASN (Autonomous Systems Number) covered by providers.
          example: Amazon.com, Inc.
        included:
          type: boolean
          description: >-
            Indicates whether the catalog provider is included in the licensed
            packages. true returns providers covered by licensed packages, false
            returns providers not covered by licensed packages.
          example: true
      example:
        providerName: Amazon Web Services
        providerType: IAAS
        region: North America
        location: San Jose, US
        asn: Amazon.com, Inc.
        included: true
    ApiCatalogProvider:
      type: object
      description: Catalog provider
      properties:
        id:
          $ref: '#/components/schemas/CatalogId'
        providerName:
          $ref: '#/components/schemas/ProviderName'
        providerType:
          $ref: '#/components/schemas/ProviderType'
        region:
          $ref: '#/components/schemas/Region'
        dataType:
          $ref: '#/components/schemas/DataType'
        asnsCount:
          type: integer
          description: The number of ASN's covered by the provider.
          example: 10
        countriesCount:
          type: integer
          description: The number of countries covered by the provider.
          example: 2
        locationsCount:
          type: integer
          description: The number of locations covered by the provider.
          example: 50
        interfacesCount:
          type: integer
          description: The number of interfaces covered by the provider.
          example: 15
        included:
          type: boolean
          description: >-
            Indicates whether the catalog provider is included in the licensed
            packages.
          example: true
        _links:
          $ref: '#/components/schemas/SelfLinks'
    ApiCatalogProviderResponse:
      type: object
      properties:
        providers:
          type: array
          description: List of catalog providers.
          items:
            $ref: '#/components/schemas/ApiCatalogProvider'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    ApiCatalogProviderDetails:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/CatalogId'
        providerName:
          $ref: '#/components/schemas/ProviderName'
        providerType:
          $ref: '#/components/schemas/ProviderType'
        region:
          $ref: '#/components/schemas/Region'
        dataType:
          $ref: '#/components/schemas/DataType'
        asns:
          uniqueItems: true
          type: array
          description: List of ASN's covered by the Provider.
          items:
            $ref: '#/components/schemas/ApiAsn'
        locations:
          uniqueItems: true
          type: array
          description: List of locations covered by the Provider.
          items:
            $ref: '#/components/schemas/ProviderLocation'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    CatalogId:
      type: string
      format: uuid
      description: The catalog provider ID.
      example: 85602a0a-54a7-4e97-946e-67492ef1fa26
    ProviderLocation:
      type: object
      properties:
        location:
          type: string
          description: The location covered by the Provider.
          example: San Jose, US
        interfacesCount:
          type: integer
          description: The number of interfaces covered by the Provider at this location.
          example: 5
    ProviderName:
      type: string
      description: The name of the catalog provider.
      example: Amazon Web Services
    ProviderType:
      type: string
      description: The type of catalog provider.
      example: IAAS
    Region:
      type: string
      description: The catalog provider region.
      example: North America
    DataType:
      type: string
      description: The type of data produced by the provider.
      example: Application
    OutageLocation:
      type: string
      description: The affected location.
      example: Chicago, Illinois, US
    HandlebarsExpression:
      description: >
        A valid Handlebars expression. Can reference user inputs, such as
        `{{name}}`, or fields of other assets defined in the template.

        * `{{userInputs.<key>}}` - resolves to the user provided value the
        `userInput` identified its key.

        * `{{name}}` - resolves to the name of the deployed template.

        * `{{<asset key>.<field>}}` - resolves to the value of a field of
        another asset defined in the template identified by the asset key and
        field name. 

        For example, set the `testIds` field of an `alertRule` by referencing
        the `testId` field of a `tests` asset.
          **Note**: Due to dependencies, assets can only reference fields of other assets based on the heiarchy below (i.e. labels cannot reference other assets in the template, tests can only reference labels, etc.)
          - Labels
          - Tests
          - Endpoint Tests
          - Tags
          - Alert Rules
          - Dashboard Filters
          - Dashboards
      type: string
      pattern: .*{{.*}}.*
      example: '{{userInputs.testName}}'
    NumberTemplate:
      anyOf:
        - type: number
        - $ref: '#/components/schemas/HandlebarsExpression'
    StringTemplate:
      anyOf:
        - type: string
        - $ref: '#/components/schemas/HandlebarsExpression'
    BooleanNumber:
      type: integer
      enum:
        - 0
        - 1
      example: 0
    Template:
      title: Template
      required:
        - name
      description: The template to create or update.
      type: object
      properties:
        name:
          type: string
          description: The name of the template.
          example: My Template
        description:
          type: string
          description: Text that describes the template.
          example: A description of My Template
        icon:
          $ref: '#/components/schemas/TemplateIcon'
        isBuiltIn:
          type: boolean
          description: >-
            Indicates whether the template is a built-in template. This field is
            read-only for normal users.
          example: false
        certificationLevel:
          description: >
            The certification level of the Template. Normal users may only
            create `user` templates.
          example: user
          $ref: '#/components/schemas/CertificationLevel'
        userInputs:
          description: >
            A map of <key, UserInput>. User Inputs are values that the user must
            fill in order for

            the Template to deploy. User Inputs are like variables that can be
            used for dynamically setting just

            about any field in the Template, including fields for Tests, Labels,
            Dashboards, and most other template assets.

            User Inputs are referenced using Handlebars template substitution
            notation. For example:


            `"testName": "{{userInputs.targetDomain}} - HTTP"`


            The [Handlebars
            Syntax](https://handlebarsjs.com/guide/builtin-helpers.html) also
            supports basic logic operations

            and iterators that allow creating powerful and flexible templates.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/UserInput'
          example:
            targetDomain:
              name: Target Domain
              description: >-
                Name of target domain that will be used for configuring tests in
                this template.
              type: string
            region:
              name: Cloud Region
              description: The available cloud regions to target.
              type: string
              allowedValues:
                - name: West
                  value: us-west-1
                - name: East
                  value: us-east-2
            agents:
              name: Source Agents
              description: The agents that will be used by the tests in this template.
              type: agents
        groupings:
          uniqueItems: true
          type: array
          description: >-
            An ordered list of groupings that organize template objects, such as
            user inputs or tests.
          example:
            - name: personalize
              title: Personalize your dashboard
              description: Allow you to personalize your dashboard
              type: user-input
              items:
                - dashboardTitle
                - dashboardDescription
                - dashboardFilterTitle
            - name: dns-test-group
              title: DNS Tests
              description: Grouped by DNS test type
              type: test
              items:
                - dnsTest-microsoft365
                - dnsTest-sharepoint
                - dnsTest-microsoftlogin
                - dnsTest-onedrive
                - dnsTest-outlook
          items:
            $ref: '#/components/schemas/TemplateGrouping'
        labels:
          type: object
          description: >-
            A map of <name, Label> objects. These are ThousandEyes Labels that
            will be created when the template is deployed.
          additionalProperties:
            $ref: '#/components/schemas/LabelConfigurationTemplate'
          example:
            myLabel:
              name: My Label
              tests:
                - testId: 123
          externalDocs:
            url: https://developer.cisco.com/docs/thousandeyes/v6/update-a-label
        tests:
          type: object
          description: >
            A map of <name, TestConfiguration> objects. These are the
            ThousandEyes CEA/Synthetic tests that will be created when the
            template is deployed.
          additionalProperties:
            $ref: '#/components/schemas/TestConfigurationTemplate'
          example:
            httpServerTest:
              testName: '{{name}} - HTTP Server'
              type: http-server
              groups:
                - groupId: '{{labels.webHealthDashLabel.groupId}}'
                - groupId: '{{labels.templateLabel.groupId}}'
              interval: '{{userInputs.interval}}'
              url: https://{{userInputs.domain}}
              agents: '{{userInputs.agents}}'
            networkTest:
              testName: '{{name}} - Network'
              type: agent-to-server
              server: '{{userInputs.domain}}'
              protocol: TCP
              port: '{{userInputs.port}}'
              groups:
                - groupId: '{{labels.webHealthDashLabel.groupId}}'
                - groupId: '{{labels.templateLabel.groupId}}'
              interval: '{{userInputs.interval}}'
              url: https://{{userInputs.domain}}
              agents: '{{userInputs.agents}}'
            dnsTest:
              testName: '{{name}} - DNS'
              type: dns-server
              domain: '{{userInputs.domain}} A'
              groups:
                - groupId: '{{labels.webHealthDashLabel.groupId}}'
                - groupId: '{{labels.templateLabel.groupId}}'
              interval: '{{userInputs.interval}}'
              dnsServers: '{{userInputs.dnsServers}}'
              agents: '{{userInputs.agents}}'
        endpointTests:
          type: object
          description: >
            A map of <name, EndpointTestConfiguration> objects. These are the
            Endpoint tests that will be created when the template is deployed.
            Field values support Handlebars template substitution.
          additionalProperties:
            $ref: '#/components/schemas/EndpointTestConfigTemplate'
          example:
            endpointTests:
              scheduledHttpTest:
                name: Scheduled HTTP Test
                testType: Http
                testCategory: SCHEDULED_TEST
                genericConfig:
                  interval: 3600
                networkConfig:
                  flagPing: true
                httpConfig:
                  url: https://{{userInputs.tenantName}}-my.sharepoint.com
                machineConfig:
                  monitoringSettingsType: ANY_AGENT
                  agentIds: '{{userInputs.endpointAgents}}'
        alertRules:
          type: object
          description: >
            A map of <key, AlertRuleConfigurationTemplate> objects. These are
            the set of Alert Rules that will be created when the template is
            deployed.
          additionalProperties:
            $ref: '#/components/schemas/AlertRuleConfigurationTemplate'
            description: >
              An Alert Rule object. Values can be templated with Handlebars
              notation. As such, the Alert Rule object is defined here as

              a set of key/value pairs. See external docs for schema details.
          example:
            httpAlert:
              alertType: HTTP Server
              ruleName: '{{userInputs.tenantName}} - Alert Rule'
              expression: ((totalTime >= 500 ms) && (responseTime >= 500 ms))
              roundsViolatingRequired: 1
              roundsViolatingOutOf: 1
              testIds:
                - '{{tests.pageLoadTest.testId}}'
        dashboards:
          description: >
            A map of <key, DashboardConfiguration> objects. These are the set of
            dashboards that will be created when the template is deployed.
            Dashboard fields support Handlebars notation.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/DashboardConfigurationTemplate'
          example:
            myDashboard:
              title: My Dashboard
              widgets:
                - filters:
                    Test Labels: '[{{labels.templateLabel.groupId}}]'
                  type: 'Bar Chart: Stacked'
                  title: 'A Bar Chart: Stacked widget'
                  metricGroup: Web - HTTP Server
                  measure:
                    type: Median
                  metric: Response Time
                  axisGroupBy: Continents
                  dataSource: Cloud & Enterprise Agents
        dashboardFilters:
          type: object
          description: >-
            A map of <key, DashboardFilter> objects. These will be the dashboard
            filters created when the template is deployed.
          additionalProperties:
            $ref: '#/components/schemas/DashboardFilterConfigurationTemplate'
          example:
            netHealthDashboardFilter:
              name: '{{userInputs.dashboardFilterTitle}}'
              context:
                - dataSourceId: VIRTUAL_AGENT
                  filters:
                    - filterId: TEST_LABEL
                      metricIds:
                        - NET_LOSS
                        - NET_LATENCY
                        - NET_JITTER
                      values:
                        - '{{labels.testLabel.groupId}}'
        deploymentStrategy:
          description: >
            A map of <assetKey, DeploymentStrategy> values. The
            `deploymentStrategy` field defines how the system behaves when an
            asset (test, label, dashboard) defined in the template already
            exists.

            The `assetKey` identifies the asset that the deployment strategy
            will apply to.

            For tests, the system uses the test type and name to determine if a
            test already exists. For example, if a template contains an
            http-server test named `Test123` and an http-server test with the
            same name already exists, the system assumes that this test already
            exists. If the test had a different type (for example, page-load),
            then the system would not consider the test to already exist because
            the types are different.

            For Labels and Dashboards, the system uses only the name. (Note that
            current Templates only consider "test" Labels).

            Alert Rules do not currently support `deploymentStrategy`.

            Below are the possible deployment strategies and their behaviors:
              * `create` - The system will always attempt to create the asset. If an asset of the same name and type already exists, the system will generate an error. This behavior ensures that each asset created from a template is unique. This is the default behavior.
              * `update` - If an asset of the same type and name already exists, the existing asset is used instead of creating a new asset. If the configuration of the asset in the template is different from the existing one, the latest configuration is applied.
              * `ignore` - If an asset of the same type and name already exists, the existing asset is used instead of creating a new asset. If the configuration of the asset in the template is different from the existing one, the configuration of the existing asset is used and the configuration in the template is ignored.
            The `update` and `ignore` strategies essentially allow assets to be
            shared across templates. For example, the built-in "Custom Web
            Page", "Custom Web Server", and "Custom Device" templates all
            contain a Dashboard asset called "Health Overview". It's
            `deploymentStrategy` is set to `ignore`, which means that the first
            deployment of a template such as the "Custom Web Page" template
            creates the "Health Overview" dashboard. Subsequent deployments of
            the "Custom Web Page" template do not attempt to recreate the
            "Health Overview" dashboard. Instead, the existing dashboard is
            reused.

            Note: Assets that were not created using a template are not included
            when the system searches for existing assets; they are not used with
            `update` or `ignore`.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/DeploymentStrategy'
          example:
            testVoiceLabel: update
            testVideoLabel: update
            testLabel: update
            dnsTest: ignore
            webexDashboard: ignore
            serverTest: create
        resourceInclusion:
          description: >
            A map of `<assetKey, ResourceInclusion>` pairs. The
            `resourceInclusion` field specifies whether an asset (such as a
            test, endpoint test, label, dashboard, or alert rule) should be
            included in a deployment.

            The `assetKey` identifies the specific asset to which the inclusion
            rule applies.

            Possible possible resource inclusion values for each asset:
              * `included` - The system will always create the asset.
              * `skipped` - The system will not create the asset.
            If an `assetKey` is not present in the `resourceInclusion` map, it
            defaults to `included`.

            **Note**: The deployment payload can override the
            `resourceInclusion` value defined in a template.
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ResourceInclusion'
          example:
            testLabel: skipped
            dnsTest: skipped
            webexDashboard: included
        modules:
          uniqueItems: true
          type: array
          description: >-
            ThousandEyes modules this template belongs to. Regular users can
            only set this to `default`.
          example:
            - default
          items:
            $ref: '#/components/schemas/TemplateModule'
    UserInput:
      description: >
        A user input is a value that the user must provide when deploying a
        template.

        User Input values are provided by the user in the UI under the **Global
        Settings** section.

        When deploying via the API, User Inputs values are specified in the
        payload using the `userInputValues` field.
      required:
        - name
        - type
      type: object
      properties:
        name:
          type: string
          description: The name of the user input field.
          example: target
        type:
          $ref: '#/components/schemas/UserInputType'
        title:
          type: string
          description: The title of the user input field; may be used by UI.
          example: Test Target
        description:
          type: string
          description: Description of the user input field; used by UI.
          example: The target of the Tests
        defaultValue:
          description: Default value of user input field.
          $ref: '#/components/schemas/UserInputValue'
          example: https://google.com
        allowedValues:
          type: array
          description: >-
            Allowed values for the User Input. An array of name/value pairs that
            specify specific values that can be used with the User Input. In the
            UI, user inputs with `allowedValues` will be displayed as a drop
            down selector; the `name` will be used as the display text.
          items:
            $ref: '#/components/schemas/UserInputAllowedValue'
    UserInputAllowedValue:
      type: object
      description: The list of values that the user is allowed to use as inputs.
      properties:
        value:
          $ref: '#/components/schemas/UserInputValue'
        name:
          type: string
          description: >-
            The name of the value, which will be used for display in the UI and
            API messages.
          example: West
    UserInputValue:
      description: >-
        A user input value. The type of object depends on the user input `type`
        field.
      anyOf:
        - type: string
        - type: number
        - type: object
        - type: array
          items:
            type: string
        - type: array
          items:
            type: number
        - type: array
          items:
            type: object
      example: us-west-1
    UserInputType:
      type: string
      description: >
        The type of user input. This defines the value the user can provide as
        well as the UI component displayed when redering User Inputs.

        The type is used to validate the user provided value when deploying a
        template.

        - `string`: User input expects a string value; UI will be rendered as a
        text box.

        - `number`: User input expects a numeric value; UI will be rendered as a
        text box.

        - `boolean`: User input expects a boolean value; UI will be rendered as
        a check box.

        - `string[]`: User input expects an array of string values; UI will be
        rendered as drop down.

        - `number[]`: User input expects an array of numeric values; UI will be
        rendered as drop down.

        - `boolean[]`: User input expects an array of boolean values; UI will be
        rendered as drop down.

        - `agents`: User input expects an array of `agentId`s; UI will be
        rendered as an Agent Selector (CEA) drop down.

        - `tests`: User input expects an array of `testId`s; UI will be rendered
        as a Test Selector (CEA) drop down.

        - `any`: For any other user inputs that don't belong to the types listed
        above. These will be determined based on usage in template.
      example: string
      enum:
        - string
        - number
        - boolean
        - string[]
        - number[]
        - boolean[]
        - agents
        - tests
        - any
    TemplateGrouping:
      description: >-
        Represents a grouping of different template resources for display
        purposes in the UI. This grouping does not affect template deployment.
      example:
        name: web-page-tests
        title: Web Page Tests
        description: Used for testing web pages
        type: test
        items:
          - dnsTest
          - pageLoadTest
      properties:
        name:
          description: The name of the grouping.
          example: dashboard-inputs
          type: string
        title:
          description: The title of the grouping.
          example: Dashboard Inputs
          type: string
        type:
          $ref: '#/components/schemas/TemplateGroupingType'
        description:
          description: Description of the grouping.
          example: The target of the tests
          type: string
        items:
          uniqueItems: true
          description: >-
            A list of items within the group, corresponding to the keys in the
            `userInputs` or `tests` fields of the template. Each key must be
            unique within its respective group (`user-input` or `test`).
          example:
            - dnsTest
            - pageLoadTest
          items:
            description: The unique key for an item in this grouping.
            example:
              - dnsTest
              - pageLoadTest
            type: string
          type: array
      required:
        - name
        - title
        - type
      type: object
    TemplateGroupingType:
      type: string
      description: >-
        The type of resources included in the grouping. Supported types are
        `Tests` and `User Inputs`. Grouped tests are displayed under a shared
        `title` in the template test list view, while grouped user inputs are
        organized into sections in the Global Inputs area, using the provided
        `title` and `description`.
      enum:
        - test
        - user-input
      example: user-input
    DeploymentStrategy:
      type: string
      description: The deployment strategy to apply to the asset.
      example:
        pageLoadTest: update
        httpAlert: ignore
      enum:
        - create
        - update
        - ignore
    ResourceInclusion:
      type: string
      description: The deployment inclusion configuration for the asset.
      example: included
      enum:
        - skipped
        - included
    TemplateResponse:
      allOf:
        - $ref: '#/components/schemas/TemplateResponseBase'
        - $ref: '#/components/schemas/Template'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/SelfLinks'
    TemplateResponseBase:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The ID of the template.
          example: fcbb89a7-61cf-4616-9c4f-828fa3cb4684
        dateCreated:
          type: string
          format: date-time
          description: The date and time the template was created.
          example: '2023-07-17T22:00:54Z'
    TemplatesResponse:
      allOf:
        - $ref: '#/components/schemas/Templates'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/SelfLinks'
    Templates:
      type: object
      properties:
        templates:
          type: array
          items:
            $ref: '#/components/schemas/TemplateResponse'
    DeployTemplate:
      type: object
      properties:
        userInputValues:
          type: object
          description: >-
            Specifies the values to be used for all `userInputs` defined in the
            template. User must provide a value for each User Input defined in
            the template being deployed.
          additionalProperties:
            $ref: '#/components/schemas/UserInputValue'
        name:
          type: string
          description: >-
            The name of the deployed template. This value will be used anywhere
            the `{{name}}` expression is used in the template being deployed.
      example:
        userInputValues:
          interval: 120
          target: https://microsoft.com
          agents:
            - agentId: 11
          domain: microsoft.com
        name: Microsoft Suite
    CertificationLevel:
      type: string
      description: >
        The certification level of the Template. The accepted values are:

        - `user`: User created template; not verified by ThousandEyes

        - `thousandeyes`: Created by ThousandEyes

        - `partner`: Created by ThousandEyes and approved by Partner/Vendor

        - `certified`: Created and certified by ThousandEyes using included best
        practice guide (see `documentation` link).
      example: user
      enum:
        - user
        - thousandeyes
        - partner
        - certified
    TemplateModule:
      type: string
      description: >-
        A ThousandEyes module this template belongs to. Regular users can only
        set to `default`.
      example: default
      enum:
        - default
    TemplateIcon:
      type: string
      description: >
        Icon that will be used when displaying the template in UI. If none
        supplied, will display `thousandeyes` icon. Supported values include:

        - `api`

        - `custom`

        - `server`

        - `user-template`

        - `thousandeyes`
      example: server
    SharingSettings:
      required:
        - scope
      type: object
      properties:
        scope:
          $ref: '#/components/schemas/SharingScope'
      description: The Template to change the sharing settings for.
    SharingScope:
      type: string
      description: >
        The scope of the template sharing. The accepted values are:

        - `default`: The template is visible only within the account group that
        owns it.

        - `organization`: The template is visible by all the users within the
        organization that owns it.
      example: organization
      enum:
        - default
        - organization
    SharingSettingsResponse:
      allOf:
        - $ref: '#/components/schemas/SharingSettings'
        - type: object
          properties:
            _links:
              $ref: '#/components/schemas/SharingSettingsLinks'
    SharingSettingsLinks:
      type: object
      description: A list of links that can be accessed to get more information.
      properties:
        self:
          $ref: '#/components/schemas/SharingSettingsLink'
        template:
          $ref: '#/components/schemas/TemplateLink'
      readOnly: true
    TemplateLink:
      allOf:
        - description: A reference to the template.
          example:
            href: >-
              https://api.thousandeyes.com/v7/templates/fcbb89a7-61cf-4616-9c4f-828fa3cb4684
        - $ref: '#/components/schemas/Link'
    SharingSettingsLink:
      allOf:
        - description: A reference to the sharing settings.
          example:
            href: >-
              https://api.thousandeyes.com/v7/templates/fcbb89a7-61cf-4616-9c4f-828fa3cb4684/sharing-settings
        - $ref: '#/components/schemas/Link'
    LabelTypeTemplate:
      description: |
        The type of label. Acceptable values are:
        - `tests` - A Label that can be assigned to CEA/Synthetic tests
        - `endpoint_tests` - A Label that can be assigned to Endpoint tests
      type: string
      example: tests
      enum:
        - tests
        - endpoint_tests
    TestIdTemplate:
      description: Test identified by the test's ID.
      type: object
      properties:
        testId:
          description: ID of the test.
          $ref: '#/components/schemas/StringTemplate'
    LabelConfigurationTemplate:
      type: object
      description: >
        A label object that is compatible with [ThousandEyes V6
        API](https://developer.cisco.com/docs/thousandeyes/v6/create-a-label/#request).

        All field values can be templated with Handlebars expression unless
        otherwise noted.
      required:
        - name
      properties:
        name:
          description: The name of the label.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        type:
          anyOf:
            - $ref: '#/components/schemas/LabelTypeTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        tests:
          description: >-
            Array of CEA/Synthetic testId objects, if the type specified is
            `tests`.
          title: Label_tests
          anyOf:
            - type: array
              items:
                $ref: '#/components/schemas/TestIdTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        endpointTests:
          description: >-
            Array of Endpoint testId objects, if the type specified is
            `endpoint_tests`.
          title: Label_endpointTests
          anyOf:
            - type: array
              items:
                $ref: '#/components/schemas/TestIdTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
    TestTypeTemplate:
      type: string
      description: The type of test. Cannot be templated with Handlebars.
      enum:
        - agent-to-server
        - agent-to-agent
        - dns-server
        - dns-trace
        - http-server
        - page-load
        - web-transactions
        - sip-server
        - voice
      example: http-server
    AgentAssignmentTemplate:
      type: object
      properties:
        agentId:
          $ref: '#/components/schemas/NumberTemplate'
    LabelAssignmentTemplate:
      type: object
      description: Label to assign to a test, identified by the ID (`groupId`).
      properties:
        groupId:
          $ref: '#/components/schemas/NumberTemplate'
    TestBaseTemplate:
      type: object
      required:
        - testName
        - type
        - agents
      properties:
        type:
          $ref: '#/components/schemas/TestTypeTemplate'
        testName:
          description: The name of the test, must be unique.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        agents:
          description: The agents to assign to the test identified by `agentId`.
          title: Agents
          anyOf:
            - type: array
              items:
                $ref: '#/components/schemas/AgentAssignmentTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        groups:
          description: The Labels to assign to the test.
          anyOf:
            - type: array
              items:
                $ref: '#/components/schemas/LabelAssignmentTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        description:
          description: Description of the test.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
    PortTemplate:
      description: The network port.
      anyOf:
        - type: integer
        - $ref: '#/components/schemas/HandlebarsExpression'
    NumPathTracesTemplate:
      description: >-
        Number of path trace probes to run. Defaults to 3, with a range of 3 to
        10.
      type: integer
      example: 3
      minimum: 3
      maximum: 10
      default: 3
    PathTraceModeTemplate:
      description: >-
        The path trace mode. Choose `inSession` to perform the path trace within
        a TCP session. Defaults to `classic` for network path discovery.
      type: string
      default: classic
      example: classic
      enum:
        - classic
        - inSession
    ProbeModeTemplate:
      description: >-
        The probe mode used by the end-to-end Network test. Only valid if the
        protocol is set to `TCP`. Defaults to `AUTO`.
      type: string
      default: AUTO
      example: AUTO
      enum:
        - AUTO
        - SACK
        - SYN
    TransportProtocolTemplate:
      description: The network transport protocol to use for the test.
      type: string
      example: TCP
      enum:
        - TCP
        - UDP
    NetworkTestBaseTemplate:
      type: object
      properties:
        interval:
          description: How often the network test will run, in seconds.
          anyOf:
            - $ref: '#/components/schemas/TestInterval'
            - $ref: '#/components/schemas/HandlebarsExpression'
        port:
          $ref: '#/components/schemas/PortTemplate'
        bgpMeasurements:
          description: Enable/disable BGP measurements.
          title: BgpMeasurements
          anyOf:
            - $ref: '#/components/schemas/BooleanNumber'
            - $ref: '#/components/schemas/HandlebarsExpression'
        bandwidthMeasurements:
          description: Enable/disable bandwidth measurements.
          anyOf:
            - $ref: '#/components/schemas/BooleanNumber'
            - $ref: '#/components/schemas/HandlebarsExpression'
        mtuMeasurements:
          anyOf:
            - $ref: '#/components/schemas/BooleanNumber'
            - $ref: '#/components/schemas/HandlebarsExpression'
        numPathTraces:
          description: >-
            Number of path trace probes to run. Defaults to 3, with a range of 3
            to 10.
          title: NumPathTraces
          anyOf:
            - $ref: '#/components/schemas/NumPathTracesTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        pathTraceMode:
          description: >-
            The path trace mode. Choose `inSession` to perform the path trace
            within a TCP session. Defaults to `classic` for network path
            discovery.
          title: PathTraceMode
          anyOf:
            - $ref: '#/components/schemas/PathTraceModeTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        probeMode:
          description: >-
            The probe mode used by the end-to-end Network test. Only valid if
            the protocol is set to `TCP`. Defaults to `AUTO`.
          title: ProbeMode
          anyOf:
            - $ref: '#/components/schemas/ProbeModeTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        protocol:
          description: The network transport protocol that will be used. Defaults to `TCP`.
          title: TransportProtocol
          anyOf:
            - $ref: '#/components/schemas/TransportProtocolTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
    AgentToServerTestTypeTemplate:
      type: string
      description: The type of test. Cannot be templated with Handlebars.
      example: agent-to-server
      default: agent-to-server
    TargetServerTemplate:
      description: Target host name or IP address. Example "app.thousandeyes.com".
      anyOf:
        - type: string
        - $ref: '#/components/schemas/HandlebarsExpression'
    AgentToServerTestTemplate:
      allOf:
        - $ref: '#/components/schemas/TestBaseTemplate'
        - $ref: '#/components/schemas/NetworkTestBaseTemplate'
        - type: object
          required:
            - type
            - agents
            - interval
            - server
          properties:
            type:
              $ref: '#/components/schemas/AgentToServerTestTypeTemplate'
            server:
              $ref: '#/components/schemas/TargetServerTemplate'
            continuousMode:
              anyOf:
                - $ref: '#/components/schemas/BooleanNumber'
                - $ref: '#/components/schemas/HandlebarsExpression'
            fixedPacketRate:
              anyOf:
                - $ref: '#/components/schemas/BooleanNumber'
                - $ref: '#/components/schemas/HandlebarsExpression'
    AgentToAgentTestTypeTemplate:
      type: string
      description: The type of test. Cannot be templated with Handlebars.
      example: agent-to-agent
      default: agent-to-agent
    AgentToAgentTestDirectionTemplate:
      description: >-
        Direction of the test (affects how results are shown). Defaults to
        `TO_TARGET`.
      type: string
      default: TO_TARGET
      example: TO_TARGET
      enum:
        - TO_TARGET
        - FROM_TARGET
        - BIDIRECTIONAL
    AgentToAgentTestTemplate:
      allOf:
        - $ref: '#/components/schemas/TestBaseTemplate'
        - $ref: '#/components/schemas/NetworkTestBaseTemplate'
        - type: object
          required:
            - type
            - agents
            - interval
            - targetAgentId
          properties:
            type:
              $ref: '#/components/schemas/AgentToAgentTestTypeTemplate'
            direction:
              anyOf:
                - $ref: '#/components/schemas/AgentToAgentTestDirectionTemplate'
                - $ref: '#/components/schemas/HandlebarsExpression'
            dscpId:
              $ref: '#/components/schemas/NumberTemplate'
            targetAgentId:
              description: ID of the target agent for the test.
              $ref: '#/components/schemas/NumberTemplate'
            throughputMeasurements:
              anyOf:
                - $ref: '#/components/schemas/BooleanNumber'
                - $ref: '#/components/schemas/HandlebarsExpression'
            throughputDuration:
              $ref: '#/components/schemas/NumberTemplate'
              minimum: 5000
              maximum: 30000
              default: 10000
              example: 10000
            throughputRate:
              description: Throughput rate; For UDP only.
              $ref: '#/components/schemas/NumberTemplate'
              minimum: 1
              maximum: 1000
              example: 10
    DnsServerTestTypeTemplate:
      type: string
      description: The type of test. Cannot be templated with Handlebars.
      example: dns-server
      default: dns-server
    DnsServerEntryTemplate:
      description: Server host name (FQDN). Example "www.example.com".
      type: object
      properties:
        serverName:
          $ref: '#/components/schemas/StringTemplate'
      required:
        - serverName
    DnsServersTemplate:
      description: DNS Servers to target
      type: array
      items:
        $ref: '#/components/schemas/DnsServerEntryTemplate'
    DnsTargetDomainTemplate:
      description: >
        Specifies the target DNS host name for the test, suffixed by the record
        type (e.g., www.thousandeyes.com CNAME). If no record type is specified,
        the test will default to an ANY record.
      anyOf:
        - type: string
        - $ref: '#/components/schemas/HandlebarsExpression'
    DnsServerTestTemplate:
      allOf:
        - $ref: '#/components/schemas/TestBaseTemplate'
        - $ref: '#/components/schemas/NetworkTestBaseTemplate'
        - type: object
          required:
            - type
            - agents
            - dnsServers
            - domain
            - interval
          properties:
            type:
              $ref: '#/components/schemas/DnsServerTestTypeTemplate'
            dnsServers:
              anyOf:
                - $ref: '#/components/schemas/DnsServersTemplate'
                - $ref: '#/components/schemas/HandlebarsExpression'
            domain:
              $ref: '#/components/schemas/DnsTargetDomainTemplate'
    DnsTraceTestTypeTemplate:
      type: string
      description: The type of test. Cannot be templated with Handlebars.
      example: dns-trace
      default: dns-trace
    DnsTraceTestTemplate:
      allOf:
        - $ref: '#/components/schemas/TestBaseTemplate'
        - type: object
          required:
            - type
            - agents
            - domain
            - interval
          properties:
            type:
              $ref: '#/components/schemas/DnsTraceTestTypeTemplate'
            dnsTransportProtocolTemplate:
              $ref: '#/components/schemas/TransportProtocolTemplate'
            domain:
              $ref: '#/components/schemas/DnsTargetDomainTemplate'
    HttpVersionTemplate:
      description: The HTTP Version; 2 for default (prefer HTTP/2), 1 for HTTP/1.1 only.
      type: integer
      default: 2
      example: 2
      enum:
        - 1
        - 2
    AuthTypeTestTemplate:
      description: Authentication type to use when establishing connection.
      type: string
      enum:
        - NONE
        - BASIC
        - NTLM
        - KERBEROS
      default: NONE
      example: NONE
    CustomHeadersTemplate:
      description: Custom headers to use in HTTP request.
      type: object
      properties:
        all:
          type: object
          additionalProperties:
            type: string
        domains:
          type: object
          additionalProperties:
            type: string
        root:
          type: object
          additionalProperties:
            type: string
    SslVersionIdTemplate:
      description: >-
        The SSL Version; `0` for auto, `3` for SSLv3, `4` for TLS v1.0, `5` for
        TLS v1.1, `6` for TLS v1.2.
      type: integer
      default: 0
      example: 0
      enum:
        - 0
        - 3
        - 4
        - 5
        - 6
    HttpServerTestBaseTemplate:
      type: object
      properties:
        networkMeasurements:
          description: |
            `1` to enable network measurements, `0` to disable.
          title: NetworkMeasurements
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
        desiredStatusCode:
          description: Expected HTTP status response code.
          title: DesiredStatusCode
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        followRedirects:
          description: Whether or not transaction test should follow redirects.
          title: FollowRedirects
          anyOf:
            - $ref: '#/components/schemas/BooleanNumber'
            - $ref: '#/components/schemas/HandlebarsExpression'
        httpTargetTime:
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
          description: Target time for HTTP server completion; specified in milliseconds.
          minimum: 100
          maximum: 5000
        httpTimeLimit:
          $ref: '#/components/schemas/NumberTemplate'
        httpVersion:
          description: HTTP Version; 2 for default (prefer HTTP/2), 1 for HTTP/1.1 only.
          anyOf:
            - $ref: '#/components/schemas/HttpVersionTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        authType:
          description: The Authentication type.
          anyOf:
            - $ref: '#/components/schemas/AuthTypeTestTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        username:
          description: The username to be used for Basic/NTLM authentication.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        password:
          description: The password to be used for Basic/NTLM authentication.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        useNtlm:
          description: Whether test should use NTLM during auth.
          anyOf:
            - $ref: '#/components/schemas/BooleanNumber'
            - $ref: '#/components/schemas/HandlebarsExpression'
        userAgent:
          description: The user-agent string to be provided during the test.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        customHeaders:
          anyOf:
            - $ref: '#/components/schemas/CustomHeadersTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        verifyCertificate:
          anyOf:
            - $ref: '#/components/schemas/BooleanNumber'
            - $ref: '#/components/schemas/HandlebarsExpression'
        clientCertificate:
          description: >-
            The string representation (containing newline characters) of client
            certificate, if used.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        sslVersionId:
          description: >-
            The SSL Version; `0` for auto, `3` for SSLv3, `4` for TLS v1.0, `5`
            for TLS v1.1, `6` for TLS v1.2.
          anyOf:
            - $ref: '#/components/schemas/SslVersionIdTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
    HttpServerTestTypeTemplate:
      type: string
      description: The type of test. Cannot be templated with Handlebars.
      example: http-server
      default: http-server
    HttpServerTestTemplate:
      allOf:
        - $ref: '#/components/schemas/TestBaseTemplate'
        - $ref: '#/components/schemas/NetworkTestBaseTemplate'
        - $ref: '#/components/schemas/HttpServerTestBaseTemplate'
        - type: object
          required:
            - type
            - agents
            - interval
          properties:
            type:
              $ref: '#/components/schemas/HttpServerTestTypeTemplate'
            downloadLimit:
              description: >-
                Specify maximum number of bytes to download from the target
                object.
              $ref: '#/components/schemas/NumberTemplate'
            dnsOverride:
              description: IP address to use for DNS override.
              $ref: '#/components/schemas/StringTemplate'
            postBody:
              description: POST body to be sent with the request.
              $ref: '#/components/schemas/StringTemplate'
    PageLoadStrategyTemplate:
      type: string
      default: normal
      example: normal
      enum:
        - none
        - eager
        - normal
    BrowserTestBaseTemplate:
      type: object
      properties:
        url:
          description: The URL that the test will target.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        blockDomains:
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        allowMicAndCamera:
          anyOf:
            - $ref: '#/components/schemas/BooleanNumber'
            - $ref: '#/components/schemas/HandlebarsExpression'
        allowGeolocation:
          anyOf:
            - $ref: '#/components/schemas/BooleanNumber'
            - $ref: '#/components/schemas/HandlebarsExpression'
        pageLoadingStrategy:
          description: >
            The page loading strategy the browser should use when loading the
            target webpage.

            - `normal`: Wait for the entire page to load, meaning that HTML
            content and all resources have been downloaded and parsed before
            moving to the next action in the transaction test script. 

            - `eager`: Wait for the `DOMContentLoaded` event, meaning that HTML
            content is downloaded and parsed, and the document readiness state
            is “interactive” before moving to the next action in the test
            script. 

            - `none`: Wait only for HTML content to download. Once the HTML is
            downloaded, the test proceeds to the next action in the transaction
            test script. (Default is `normal`).
          anyOf:
            - $ref: '#/components/schemas/PageLoadStrategyTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        subinterval:
          description: >-
            Subinterval for round-robin testing (in seconds). Must be less than
            or equal to interval and must evenly divide interval. Defaults to
            null, which disables round-robin.
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
    PageLoadTestTypeTemplate:
      type: string
      description: The type of test. Cannot be templated with Handlebars.
      example: page-load
      default: page-load
    PageLoadTestBaseTemplate:
      type: object
      required:
        - type
        - agents
        - interval
        - url
      properties:
        type:
          $ref: '#/components/schemas/PageLoadTestTypeTemplate'
        httpInterval:
          description: How often the HTTP test will run, in seconds.
          anyOf:
            - $ref: '#/components/schemas/TestInterval'
            - $ref: '#/components/schemas/HandlebarsExpression'
        pageLoadTargetTime:
          description: >-
            Target time for page load completion in seconds; specified in
            seconds; cannot exceed `pageLoadTimeLimit` value.
          minimum: 1
          maximum: 30
          example: 10
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
        pageLoadTimeLimit:
          description: >-
            Page load timeout in seconds. Must be larger than `httpTimeLimit`.
            Defaults to 10 seconds.
          example: 10
          default: 10
          $ref: '#/components/schemas/NumberTemplate'
    PageLoadTestTemplate:
      allOf:
        - $ref: '#/components/schemas/TestBaseTemplate'
        - $ref: '#/components/schemas/NetworkTestBaseTemplate'
        - $ref: '#/components/schemas/HttpServerTestBaseTemplate'
        - $ref: '#/components/schemas/BrowserTestBaseTemplate'
        - $ref: '#/components/schemas/PageLoadTestBaseTemplate'
    TransactionTestTypeTemplate:
      type: string
      description: The type of test. Cannot be templated with Handlebars.
      example: web-transactions
      default: web-transactions
    TransactionScriptTemplate:
      description: >-
        Transaction script for transaction test. Must be a JavaScript string
        with escaped quotes.
      anyOf:
        - type: string
        - $ref: '#/components/schemas/HandlebarsExpression'
    TransactionTestBaseTemplate:
      type: object
      required:
        - type
        - agents
        - interval
        - transactionScript
        - url
      properties:
        type:
          $ref: '#/components/schemas/TransactionTestTypeTemplate'
        targetTime:
          description: The target time for transaction test to complete, in seconds.
          example: 30
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
        timeLimit:
          description: The time limit for transaction test in seconds; defaults to 30s.
          example: 30
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
        transactionScript:
          $ref: '#/components/schemas/TransactionScriptTemplate'
        disableScreenshot:
          anyOf:
            - $ref: '#/components/schemas/BooleanNumber'
            - $ref: '#/components/schemas/HandlebarsExpression'
    TransactionTestTemplate:
      allOf:
        - $ref: '#/components/schemas/TestBaseTemplate'
        - $ref: '#/components/schemas/NetworkTestBaseTemplate'
        - $ref: '#/components/schemas/HttpServerTestBaseTemplate'
        - $ref: '#/components/schemas/BrowserTestBaseTemplate'
        - $ref: '#/components/schemas/TransactionTestBaseTemplate'
    SipServerTestTypeTemplate:
      type: string
      description: The type of test. Cannot be templated with Handlebars.
      example: sip-server
      default: sip-server
    SipProtocolTemplate:
      description: >
        The SIP protocol to use for SIP transport layer; defaults to TCP. When
        creating or updating a SIP test, set this field as part of the
        `targetSipCredentials` field.
      anyOf:
        - type: string
        - $ref: '#/components/schemas/HandlebarsExpression'
    SipRegistrarTemplate:
      description: The target SIP server, without port.
      anyOf:
        - type: string
        - $ref: '#/components/schemas/HandlebarsExpression'
    TargetSipCredentialsTemplate:
      type: object
      properties:
        authUser:
          $ref: '#/components/schemas/StringTemplate'
        password:
          $ref: '#/components/schemas/StringTemplate'
        port:
          $ref: '#/components/schemas/PortTemplate'
        protocol:
          $ref: '#/components/schemas/SipProtocolTemplate'
        sipRegistrar:
          $ref: '#/components/schemas/SipRegistrarTemplate'
      required:
        - sipRegistrar
        - port
    SipServerTestBaseTemplate:
      type: object
      required:
        - type
        - agents
        - targetSipCredentials
      properties:
        type:
          $ref: '#/components/schemas/SipServerTestTypeTemplate'
        desiredStatusCode:
          description: The expected SIP response code.
          $ref: '#/components/schemas/NumberTemplate'
        server:
          description: The domain and port of the target SIP server.
          $ref: '#/components/schemas/StringTemplate'
        protocol:
          $ref: '#/components/schemas/SipProtocolTemplate'
        targetSipCredentials:
          $ref: '#/components/schemas/TargetSipCredentialsTemplate'
    SipServerTestTemplate:
      allOf:
        - $ref: '#/components/schemas/TestBaseTemplate'
        - $ref: '#/components/schemas/SipServerTestBaseTemplate'
    VoiceTestTypeTemplate:
      type: string
      description: The type of test. Cannot be templated with Handlebars.
      example: voice
      default: voice
    VoiceIntervalTemplate:
      description: Voice test interval in seconds.
      type: integer
      enum:
        - 300
        - 600
        - 900
        - 1800
        - 3600
      example: 300
    VoiceTestTemplate:
      allOf:
        - $ref: '#/components/schemas/TestBaseTemplate'
        - type: object
          required:
            - type
            - agents
            - interval
            - targetAgentId
          properties:
            type:
              $ref: '#/components/schemas/VoiceTestTypeTemplate'
            interval:
              description: How often the Voice test will run, in seconds.
              anyOf:
                - $ref: '#/components/schemas/VoiceIntervalTemplate'
                - $ref: '#/components/schemas/HandlebarsExpression'
            dscpId:
              description: The DSCP value.
              default: 46
              $ref: '#/components/schemas/NumberTemplate'
            dscp:
              description: The DSCP string.
              $ref: '#/components/schemas/StringTemplate'
            port:
              $ref: '#/components/schemas/NumberTemplate'
              description: The Port to target.
              default: 49152
              minimum: 1024
              maximum: 65535
              example: 49152
            targetAgentId:
              description: Id of the target agent for the test.
              $ref: '#/components/schemas/NumberTemplate'
    TestConfigurationTemplate:
      description: >
        A ThousandEyes CEA (Synthetic) test configuration that is compatible
        with [ThousandEyes V6
        API](https://developer.cisco.com/docs/thousandeyes/v6/tests-metadata/). 

        All field values can be templated with Handlebars expression unless
        otherwise noted.
      externalDocs:
        url: https://developer.cisco.com/docs/thousandeyes/v6/tests-metadata/
      oneOf:
        - $ref: '#/components/schemas/AgentToServerTestTemplate'
        - $ref: '#/components/schemas/HttpServerTestTemplate'
        - $ref: '#/components/schemas/PageLoadTestTemplate'
        - $ref: '#/components/schemas/AgentToAgentTestTemplate'
        - $ref: '#/components/schemas/VoiceTestTemplate'
        - $ref: '#/components/schemas/TransactionTestTemplate'
        - $ref: '#/components/schemas/SipServerTestTemplate'
        - $ref: '#/components/schemas/DnsServerTestTemplate'
        - $ref: '#/components/schemas/DnsTraceTestTemplate'
      discriminator:
        propertyName: type
        mapping:
          agent-to-server: '#/components/schemas/AgentToServerTestTemplate'
          agent-to-agent: '#/components/schemas/AgentToAgentTestTemplate'
          dns-server: '#/components/schemas/DnsServerTestTemplate'
          dns-trace: '#/components/schemas/DnsTraceTestTemplate'
          http-server: '#/components/schemas/HttpServerTestTemplate'
          page-load: '#/components/schemas/PageLoadTestTemplate'
          web-transactions: '#/components/schemas/TransactionTestTemplate'
          sip-server: '#/components/schemas/SipServerTestTemplate'
          voice: '#/components/schemas/VoiceTestTemplate'
    EndpointTestTypeOptionsTemplate:
      type: string
      enum:
        - Http
        - Network
      example: Http
    EndpointTestTypeTemplate:
      description: |
        The type of Endpoint scheduled test.

        Possible values are:

        - `Network` - endpoint network test
        - `Http` - endpoint http test
      anyOf:
        - $ref: '#/components/schemas/EndpointTestTypeOptionsTemplate'
        - $ref: '#/components/schemas/HandlebarsExpression'
    EndpointTestCategoryOptionsTemplate:
      type: string
      enum:
        - SCHEDULED_TEST
        - DYNAMIC_APP_TEST
      example: SCHEDULED_TEST
    EndpointTestCategoryTemplate:
      description: Whether the test is `SCHEDULED_TEST` or `DYNAMIC_APP_TEST`.
      anyOf:
        - $ref: '#/components/schemas/EndpointTestCategoryOptionsTemplate'
        - $ref: '#/components/schemas/HandlebarsExpression'
    EndpointAlertRuleConfigTemplate:
      description: Alert rules to associate with the test.
      required:
        - ruleId
      type: object
      properties:
        ruleId:
          description: The ID of the Alert rule to associate with test.
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
    EndpointTestIntervalTemplate:
      description: How often the test will run, in seconds.
      type: integer
      enum:
        - 60
        - 120
        - 300
        - 600
        - 900
        - 1800
        - 3600
      example: 60
    EndpointGenericConfigTemplate:
      description: Settings common to HTTP and Network tests.
      required:
        - interval
        - priority
      type: object
      properties:
        interval:
          description: Interval in seconds of when the test runs.
          anyOf:
            - $ref: '#/components/schemas/EndpointTestIntervalTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        priority:
          description: >-
            Define a priority for scheduling. Higher priority value will be
            scheduled first.
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
    EndpointMonitoringSettingsTypeTemplate:
      description: >
        The strategy to use for selecting Endpoint agents to include in a test.
        Possible values are:

        - `SPECIFIC_AGENTS` - use `agentIds` to select a specific set of agents

        - `ANY_AGENT` - select all agents available

        - `LIST_OF_LABELS` - use `labelIds` to select agents based on a set of
        matching labels
      type: string
      enum:
        - ANY_AGENT
        - SPECIFIC_AGENTS
        - LIST_OF_LABELS
      example: ANY_AGENT
    EndpointAgentSelectionConfigTemplate:
      description: >-
        Configration that will be used to determine what Endpoint Agents to
        assign to a test.
      required:
        - maxMachines
      type: object
      properties:
        monitoringSettingsType:
          anyOf:
            - $ref: '#/components/schemas/EndpointMonitoringSettingsTypeTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        agentIds:
          description: >-
            An array of agent IDs used to assign specific Endpoint Agents to the
            test. Used when `monitoringSettingsType` is `SPECIFIC_AGENTS`.
          anyOf:
            - type: array
              items:
                type: string
                description: Agent ID
            - $ref: '#/components/schemas/HandlebarsExpression'
        labelIds:
          description: >-
            An array of label IDs used to assign specific Endpoint Agents to the
            test. Used when `monitoringSettingsType` is `LIST_OF_LABELS`.
          anyOf:
            - type: array
              items:
                type: integer
                description: An Endpoint label ID.
                format: int64
            - $ref: '#/components/schemas/HandlebarsExpression'
        maxMachines:
          description: Maximum number of machines assigned to a test.
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
    EndpointTestConfigProtocolTemplate:
      type: string
      description: The protocol to use for ping/traceroute tests.
      example: AUTODETECT
      enum:
        - UNKNOWN
        - ICMP
        - TCP
        - UDP
        - PREFER_TCP
        - AUTODETECT
    EndpointTcpProbeModeTemplate:
      type: string
      description: Used in TCP mode only.
      enum:
        - UNKNOWN
        - AUTO
        - SYN
        - SACK
      example: SACK
    EndpointNetworkTestConfigTemplate:
      description: Network test settings.
      required:
        - flagPing
        - flagTraceroute
        - ipVersion
        - networkProtocol
        - pathtraceInSession
        - tcpConnect
        - tcpProbeMode
      type: object
      properties:
        flagPing:
          anyOf:
            - type: boolean
              description: Indicates if the test should run ping.
              example: true
            - $ref: '#/components/schemas/HandlebarsExpression'
        flagTraceroute:
          anyOf:
            - type: boolean
              description: Indicates if the test should run traceroute.
              example: true
            - $ref: '#/components/schemas/HandlebarsExpression'
        ipVersion:
          description: IP version the test should use for network tests.
          anyOf:
            - $ref: '#/components/schemas/EndpointIpVersionTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        networkProtocol:
          $ref: '#/components/schemas/EndpointTestConfigProtocolTemplate'
        pathtraceInSession:
          type: boolean
          description: Used in TCP mode only.
        tcpProbeMode:
          $ref: '#/components/schemas/EndpointTcpProbeModeTemplate'
        tcpConnect:
          type: boolean
          description: Indicates whether to use TCP Connect when running the ICMP test.
          default: false
          example: false
    EndpointServerConfigTemplate:
      description: Target server information.
      required:
        - port
        - serverName
      type: object
      properties:
        serverName:
          type: string
          description: Server host name or IP.
          example: www.example.com
        port:
          maximum: 65535
          minimum: 0
          type: integer
          description: Server port
          example: 80
    EndpointAuthTypeEnumTemplate:
      description: The authentication type.
      type: string
      enum:
        - NONE
        - BASIC
        - NTLM
        - KERBEROS
        - OAUTH
        - LEGACY
      example: BASIC
    EndpointAuthTypeTemplate:
      description: The authentication type.
      anyOf:
        - $ref: '#/components/schemas/EndpointAuthTypeEnumTemplate'
        - $ref: '#/components/schemas/HandlebarsExpression'
    EndpointHttpTestConfigTemplate:
      description: HTTP test settings.
      required:
        - httpTimeLimit
        - sslVersion
        - targetFetchTime
        - targetResponseTime
        - url
        - verifyCertHostname
      type: object
      properties:
        url:
          description: URL to target for the test.
          anyOf:
            - type: string
              example: https://meet.google.com
            - $ref: '#/components/schemas/HandlebarsExpression'
        targetResponseTime:
          description: Target response time in milliseconds.
          anyOf:
            - type: integer
              format: int64
            - $ref: '#/components/schemas/HandlebarsExpression'
        targetFetchTime:
          description: Target fetch time in milliseconds.
          anyOf:
            - type: integer
              format: int64
            - $ref: '#/components/schemas/HandlebarsExpression'
        headers:
          description: Headers to be used in the HTTP request.
          anyOf:
            - maxLength: 1024
              type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        verifyCertHostname:
          description: Flag indicating if we are to verify the certificate.
          anyOf:
            - type: boolean
            - $ref: '#/components/schemas/HandlebarsExpression'
        authType:
          anyOf:
            - $ref: '#/components/schemas/EndpointAuthTypeTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        bytesToDownload:
          description: >-
            Maximum number of bytes to download on a request. If not present it
            means no limit.
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
        httpTimeLimit:
          description: >-
            Maximum amount of time in milliseconds the HTTP Server test will
            run.
          anyOf:
            - maximum: 60000
              minimum: 5000
              type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
        username:
          description: Username if auth enabled.
          anyOf:
            - maximum: 255
              type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        password:
          description: Password if auth enabled.
          anyOf:
            - maximum: 255
              type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        postBody:
          description: Request body to be used with the POST request.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        contentRegex:
          description: >-
            Regular expression used to validate the received content. Must
            conform with the POSIX Extended Regular Expression Syntax.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        sslVersion:
          description: |
            SSL Version to be used: 
            - `0` - Auto
            - `3` - SSLv3
            - `4` - TLSv1.0
            - `5` - TLSv1.1
            - `6` - TLSv1.2
          anyOf:
            - maximum: 6
              minimum: 0
              type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
        expectedResponseCode:
          description: Expected HTTP response code. If not present 2xx or 3xx are expected.
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
        targetIpOverride:
          description: |
            If set to a valid IP address, this is where the request will
            be sent regardless of what the agent's DNS resolver says.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        clientCert:
          description: Client PEM certificate used during the request.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        userAgent:
          description: >-
            The user-agent string to be used by the request. It can be any
            user-agent string. If not provided, the default implementation
            user-agent is used.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        maxRedirects:
          description: Maximum allowed redirects.
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
        proxyId:
          description: Proxy used by the agent to execute the test.
          anyOf:
            - type: integer
            - $ref: '#/components/schemas/HandlebarsExpression'
        proxyDirect:
          description: Indicates if a direct proxy should be used when proxyId is not set.
          anyOf:
            - type: boolean
            - $ref: '#/components/schemas/HandlebarsExpression'
    EndpointTestLabelListTemplate:
      description: A list of label IDs identifying label to be assigned.
      type: array
      items:
        $ref: '#/components/schemas/NumberTemplate'
    EndpointTestConfigTemplate:
      description: >
        Configuration settings for a ThousandEyes Endpoint test. All test fields
        can be templated with Handlebars 

        expression unless otherwise noted.
      required:
        - name
        - testCategory
        - testType
        - genericConfig
        - machineConfig
        - networkConfig
      type: object
      properties:
        testName:
          description: The name of the test.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        description:
          description: The description of the test.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        testType:
          description: |
            The type of Endpoint scheduled test.

            Possible values are:

            - `Network` - endpoint network test
            - `Http` - endpoint http test
          anyOf:
            - $ref: '#/components/schemas/EndpointTestTypeTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        testCategory:
          $ref: '#/components/schemas/EndpointTestCategoryTemplate'
        flagEnabled:
          description: Flag indicating if the test is enabled.
          anyOf:
            - type: boolean
            - $ref: '#/components/schemas/HandlebarsExpression'
        alertRules:
          anyOf:
            - type: array
              description: Alert rules associated with the test config.
              items:
                $ref: '#/components/schemas/EndpointAlertRuleConfigTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        genericConfig:
          anyOf:
            - $ref: '#/components/schemas/EndpointGenericConfigTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        machineConfig:
          anyOf:
            - $ref: '#/components/schemas/EndpointAgentSelectionConfigTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        networkConfig:
          anyOf:
            - $ref: '#/components/schemas/EndpointNetworkTestConfigTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        server:
          anyOf:
            - $ref: '#/components/schemas/EndpointServerConfigTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        httpConfig:
          anyOf:
            - $ref: '#/components/schemas/EndpointHttpTestConfigTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        testLabelIds:
          description: >
            A list of labels to assign to the test. Typically this value will be
            set using Handlebars

            reference to a user input. Example: `"testLabelIds":
            "[{{labels.endpointLabel.groupId}}]"`
          anyOf:
            - $ref: '#/components/schemas/EndpointTestLabelListTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
    AlertRuleTypeTemplate:
      type: string
      enum:
        - Page Load
        - HTTP Server
        - End-to-End (Server)
        - End-to-End (Agent)
        - Voice
        - DNS Server
        - DNS Trace
        - DNSSEC
        - Web Transactions
        - BGP
        - Path Trace
        - FTP
        - SIP Server
      example: Page Load
    AlertRuleSeverityTemplate:
      type: string
      example: MINOR
      enum:
        - INFO
        - MAJOR
        - MINOR
        - CRITICAL
    AlertRuleConfigurationTemplate:
      type: object
      description: >-
        Alert Rule configuration. See [ThousandEyes v6 API
        spec](https://developer.cisco.com/docs/thousandeyes/v6/metadata/#alert-rule-metadata)
        for schema details.
      externalDocs:
        url: >-
          https://developer.cisco.com/docs/thousandeyes/v6/metadata/#alert-rule-metadata
      required:
        - ruleName
        - alertType
        - expression
        - roundsViolatingRequired
        - roundsViolatingOutOf
      properties:
        ruleName:
          description: The name of the alert rule.
          $ref: '#/components/schemas/StringTemplate'
        alertType:
          description: The type of the alert rule.
          anyOf:
            - $ref: '#/components/schemas/AlertRuleTypeTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        expression:
          description: >-
            The alert rule expression. Must be valid JSON. See [V6
            API](https://developer.cisco.com/docs/thousandeyes/v6/metadata/#expressions)
            documentation for examples.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
          example: ((totalTime >= 500 ms) && (responseTime >= 500 ms))
        roundsViolatingRequired:
          description: >-
            Specifies the numerator (X value) of the "X of Y times" condition in
            an alert rule.
          title: RoundsViolatingRequired
          anyOf:
            - $ref: '#/components/schemas/BooleanNumber'
            - $ref: '#/components/schemas/HandlebarsExpression'
        roundsViolatingOutOf:
          description: >-
            Specifies the divisor (Y value) of the "X of Y times" condition in
            an alert rule.
          title: RoundsViolatingOutOf
          anyOf:
            - $ref: '#/components/schemas/BooleanNumber'
            - $ref: '#/components/schemas/HandlebarsExpression'
        severity:
          description: >-
            The severity that will be assigned when an alert is generated by
            this alert rule.
          anyOf:
            - $ref: '#/components/schemas/AlertRuleSeverityTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        testIds:
          description: >-
            The tests that the alert rule will be assigned to identified by the
            test ID.
          title: TestIds
          anyOf:
            - type: array
              items:
                type: number
                example: 43289
            - $ref: '#/components/schemas/HandlebarsExpression'
        minimumSources:
          description: >-
            The minimum number of agents that must meet the specified criteria
            in order to trigger an alert.
          type: number
          example: 1
    ApiDurationTemplate:
      description: Specifies a fixed timespan for data aggregation.
      type: object
      properties:
        value:
          type: integer
          format: int32
          description: Timespan value.
          example: 10
        unit:
          $ref: '#/components/schemas/LegacyDurationUnit'
    DashboardWidgetTemplate:
      type: object
      description: Configuration of a dashboard widget.
      properties:
        title:
          description: The title of the widget.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        type:
          description: The type of widget.
          anyOf:
            - $ref: '#/components/schemas/WidgetType'
            - $ref: '#/components/schemas/HandlebarsExpression'
        visualMode:
          anyOf:
            - $ref: '#/components/schemas/VisualMode'
            - $ref: '#/components/schemas/HandlebarsExpression'
        metricGroup:
          anyOf:
            - $ref: '#/components/schemas/MetricGroup'
            - $ref: '#/components/schemas/HandlebarsExpression'
        direction:
          anyOf:
            - $ref: '#/components/schemas/DashboardMetricDirection'
            - $ref: '#/components/schemas/HandlebarsExpression'
        metric:
          anyOf:
            - $ref: '#/components/schemas/DashboardMetric'
            - $ref: '#/components/schemas/HandlebarsExpression'
        filters:
          anyOf:
            - $ref: '#/components/schemas/WidgetFilters'
            - $ref: '#/components/schemas/HandlebarsExpression'
        measure:
          anyOf:
            - $ref: '#/components/schemas/ApiWidgetMeasure'
            - $ref: '#/components/schemas/HandlebarsExpression'
        fixedTimespan:
          anyOf:
            - $ref: '#/components/schemas/ApiDurationTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        shouldExcludeAlertSuppressionWindows:
          description: Excludes alert suppression window data if set to `true`.
          anyOf:
            - type: boolean
            - $ref: '#/components/schemas/HandlebarsExpression'
    DashboardRefreshRateTemplate:
      type: string
      description: The refresh rate of the dashboard.
      default: 'OFF'
      example: 'OFF'
      enum:
        - 'OFF'
        - 2M
        - 5M
        - 10M
        - 15M
        - 30M
        - 60M
    DashboardConfigurationTemplate:
      type: object
      description: >-
        Configuration of a dashboard that will be created when template is
        deployed.
      properties:
        title:
          description: The title of the dashboard that will be displayed in UI.
          $ref: '#/components/schemas/StringTemplate'
        description:
          description: The description of the dashboard that will be displayed in UI.
          $ref: '#/components/schemas/StringTemplate'
        globalFilterId:
          description: >-
            The ID of a global dashboard filter to associate with this
            dashboard.
          example: 65babd9bb90bf55b17c96c8d
          $ref: '#/components/schemas/StringTemplate'
        widgets:
          description: The widgets that will be included in the dashboard.
          type: array
          items:
            $ref: '#/components/schemas/DashboardWidgetTemplate'
        refreshRate:
          anyOf:
            - $ref: '#/components/schemas/DashboardRefreshRateTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
      example:
        title: My Dashboard
        description: A dashboard for displaying test information.
        widgets:
          - type: 'Bar Chart: Stacked'
            title: 'A Bar Chart: Stacked widget'
            filters:
              Test Labels: '[{{labels.templateLabel.groupId}}]'
            metricGroup: Web - HTTP Server
            measure:
              type: Median
            metric: Response Time
            axisGroupBy: Continents
            dataSource: Cloud & Enterprise Agents
      externalDocs:
        url: https://developer.thousandeyes.com/v7/dashboards/#/dashboard-detail
    FilterContextDataSourceTemplate:
      description: Type of data source for dashboard global filter.
      type: string
      example: VIRTUAL_AGENT
      enum:
        - ALERT
        - APPDYNAMICS_SERVICE_HEALTH
        - DEVICES
        - DNSP
        - ENDPOINT_AGENTS
        - INTERNET_INSIGHTS
        - ROUTING
        - THIRD_PARTY_APPLICATIONS
        - VIRTUAL_AGENT
    ApiDataSourceFilterTemplate:
      type: object
      description: List of different filter properties for a single datasource.
      properties:
        filterId:
          description: Data source property to filter by. Example `TEST_LABEL`.
          example: TEST_LABEL
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        values:
          description: Values to filter by based on the specified `filterId`.
          anyOf:
            - type: array
              uniqueItems: true
              example:
                - '45862'
                - '59749'
              items:
                type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        metricIds:
          description: Dashboard metric associated with the filter property.
          anyOf:
            - type: array
              uniqueItems: true
              example:
                - WEB_PAGE_LOAD_COMPLETION_RATE
                - WEB_TTFB
                - WEB_AVAILABILITY
              items:
                type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
      required:
        - filterId
        - values
        - metricIds
    DashboardFilterContextTemplate:
      type: object
      description: List of dashboard filter contexts.
      properties:
        dataSourceId:
          description: Type of data source for dashboard global filter.
          anyOf:
            - $ref: '#/components/schemas/FilterContextDataSourceTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
        filters:
          description: List of filter properties.
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/ApiDataSourceFilterTemplate'
      required:
        - dataSourceId
        - filters
    DashboardFilterListTemplate:
      type: array
      description: List of filters to be applied to a dashboard.
      uniqueItems: true
      items:
        $ref: '#/components/schemas/DashboardFilterContextTemplate'
    DashboardFilterConfigurationTemplate:
      type: object
      description: >-
        A dashboard filter object. See [V7 API
        Documentation](https://developer.cisco.com/docs/thousandeyes/v7/list-dashboard-filters/)
        for more details on dashboard filters.
      properties:
        name:
          description: The name of the dashboard filter.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        description:
          description: An optional description of the filter.
          anyOf:
            - type: string
            - $ref: '#/components/schemas/HandlebarsExpression'
        context:
          description: The context of the dashboard filter.
          anyOf:
            - $ref: '#/components/schemas/DashboardFilterListTemplate'
            - $ref: '#/components/schemas/HandlebarsExpression'
    ExpandUsageOptions:
      type: string
      enum:
        - test
        - enterprise-agent
        - enterprise-agent-unit
        - endpoint-agent
        - endpoint-agent-essential
        - endpoint-agent-embedded
    OrganizationQuota:
      type: object
      required:
        - value
      properties:
        value:
          type: integer
          format: int64
          description: Value of the quota for the given Organization.
          example: 22500
        orgId:
          type: string
          description: Unique ID of the organization.
          example: '10'
    AccountGroupQuota:
      type: object
      properties:
        value:
          type: integer
          format: int64
          description: Value of the quota for the given Account Group.
          example: 12000
        aid:
          type: string
          description: Unique ID of the account group.
          example: '1234'
    Quota:
      type: object
      properties:
        organizationQuota:
          $ref: '#/components/schemas/OrganizationQuota'
        accountGroupQuotas:
          type: array
          items:
            $ref: '#/components/schemas/AccountGroupQuota'
          example:
            - value: 12000
              aid: '1234'
            - value: 10000
              aid: '12345'
    Quotas:
      type: object
      properties:
        quotas:
          type: array
          items:
            $ref: '#/components/schemas/Quota'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    UsageQuota:
      type: object
      properties:
        monthStart:
          type: string
          format: date-time
          description: Beginning of usage period in UTC (ISO date-time format).
          example: '2020-01-05T08:00:00Z'
        monthEnd:
          type: string
          format: date-time
          description: End of usage period in UTC (ISO date-time format)..
          example: '2020-02-05T08:00:00Z'
        cloudUnitsIncluded:
          type: integer
          format: int64
          example: 4320000000
          description: Monthly number of cloud units allocated, as part of the contract.
        deviceAgentsIncluded:
          type: integer
          format: int64
          example: 100
          description: >-
            Number of device agents (connected devices product) allocated
            monthly, as specified in the contract.
        endpointAgentsIncluded:
          type: integer
          format: int64
          example: 200
          description: >-
            Monthly number of endpoint agents allocated, as part of the
            contract.
        endpointAgentsEssentialsIncluded:
          type: integer
          format: int64
          example: 10
          description: >-
            Monthly number of endpoint agents essentials allocated, as part of
            the contract.
        endpointAgentsEmbeddedIncluded:
          type: integer
          format: int64
          example: 10
          description: >-
            Number of embedded endpoint agents allocated monthly, as specified
            in the contract.
        enterpriseAgentsIncluded:
          type: integer
          format: int64
          example: 25
          description: >-
            Monthly number of enterprise agents allocated, as part of the
            contract. Returns non-zero value only for organizations with legacy
            billing.
    Usage:
      type: object
      properties:
        usage:
          $ref: '#/components/schemas/UsageDetails'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    UsageDetails:
      type: object
      properties:
        quota:
          $ref: '#/components/schemas/UsageQuota'
        cloudUnitsUsed:
          type: integer
          format: int64
          example: 8500489
          description: Number of cloud units consumed thus far in the usage period.
        cloudUnitsProjected:
          type: integer
          format: int64
          example: 20993812
          description: >-
            Number of cloud units projected in the current usage period, based
            on units consumed to date and configuration of enabled tests. This
            value is updated hourly.
        cloudUnitsNextBillingPeriod:
          type: integer
          format: int64
          example: 25123456
          description: >-
            Number of cloud units projected in the upcoming usage period, based
            on configuration of enabled tests. This value is updated hourly.
        enterpriseUnitsUsed:
          type: integer
          format: int64
          example: 79640902
          description: >-
            Number of enterprise units consumed in the usage period. Returns
            non-zero value only for organizations with metered billing.
        enterpriseUnitsProjected:
          type: integer
          format: int64
          example: 108016317
          description: >-
            Number of enterprise units projected in the current usage period,
            based on units consumed to date and configuration of enabled tests.
            This value is updated hourly. Returns non-zero value only for
            organizations with metered billing.
        enterpriseUnitsNextBillingPeriod:
          type: integer
          format: int64
          example: 0
          description: >-
            Projected number of enterprise units for the upcoming usage period,
            based on the configuration of enabled tests. This value is updated
            hourly and returns a non-zero value only for organizations with
            metered billing.
        connectedDevicesUnitsUsed:
          type: integer
          format: int64
          example: 79640902
          description: Number of connected device units consumed in the usage period.
        connectedDevicesUnitsProjected:
          type: integer
          format: int64
          example: 108016317
          description: >-
            Projected number of connected device units for the current usage
            period. This projection is based on the units consumed to date and
            the configuration of enabled tests. The value is updated hourly.
        connectedDevicesUnitsNextBillingPeriod:
          type: integer
          format: int64
          example: 0
          description: >-
            Projected number of connected device units for the upcoming usage
            period. This projection is based on the configuration of enabled
            tests and is updated hourly.
        endpointAgentsUsed:
          type: integer
          format: int64
          example: 42
          description: >-
            Number of endpoint agents used in the current usage period. This
            number is calculated by taking the maximum number of agents enabled
            for any one-hour period in the usage period. Disabled agents are
            excluded from this calculation.
        endpointAgentsEssentialsUsed:
          type: integer
          format: int64
          example: 5
          description: >-
            Number of endpoint agents essentials used in the current usage
            period. This number is calculated by taking the maximum number of
            agents enabled for any one-hour period in the usage period. Disabled
            agents are excluded from this calculation.
        endpointAgentsEmbeddedUsed:
          type: integer
          format: int64
          example: 5
          description: >-
            Number of embedded endpoint agents used in the current usage period.
            This number is calculated by taking the maximum number of agents
            enabled for any one-hour period in the usage period. Disabled agents
            are excluded from this calculation.
        enterpriseAgentsUsed:
          type: integer
          format: int64
          example: 58
          description: >-
            Number of enterprise agents used in the current usage period. This
            number is calculated by taking the maximum number of agents enabled
            for any one-hour period in the usage period. Disabled agents are
            excluded from this calculation.
        enterpriseAgentUnits:
          type: array
          items:
            $ref: '#/components/schemas/EnterpriseAgentUnits'
          example:
            - aid: '1234'
              agentId: '121404'
              accountGroupName: Support
              agentName: TEVA-test-agent
              enterpriseUnitsUsed: 599878
              enterpriseUnitsProjected: 597808
              vagentId: '123456'
            - aid: '315'
              agentId: '121404'
              accountGroupName: Documentation
              agentName: lab-physical-appliance-1
              enterpriseUnitsUsed: 597123
              enterpriseUnitsProjected: 597808
              vagentId: '789'
          description: >-
            A breakdown of enterprise unit consumption for each agent during the
            current monthly period. Each entry provides data for both the
            current actual usage and the projected usage. Returns non-zero
            values for organizations with metered billing.
        tests:
          type: array
          items:
            $ref: '#/components/schemas/TestUsage'
          example:
            - aid: '1234'
              testId: '1158'
              accountGroupName: Documentation
              testName: https://app.thousandeyes.com
              testType: Web-Page Load
              cloudUnitsUsed: 14050
              cloudUnitsProjected: 340674
            - aid: '12345'
              testId: '1159'
              accountGroupName: Documentation
              testName: https://support.thousandeyes.com
              testType: Web - HTTP Server
              cloudUnitsUsed: 64390
              cloudUnitsProjected: 164457
          description: >-
            A breakdown of unit consumption for each test during the current
            monthly period. Each entry provides information about both the
            current actual usage and the projected usage.
        endpointAgents:
          type: array
          items:
            $ref: '#/components/schemas/EndpointAgentsUsage'
          example:
            - aid: '1234'
              accountGroupName: Support
              endpointAgentsUsed: 22
            - aid: '12345'
              accountGroupName: Documentation
              endpointAgentsUsed: 14
          description: Endpoint agents used by account group.
        endpointAgentsEssentials:
          type: array
          items:
            $ref: '#/components/schemas/EndpointAgentsEssentials'
          example:
            - aid: '1234'
              accountGroupName: Support
              endpointAgentsEssentialsUsed: 2
            - aid: '12345'
              accountGroupName: Documentation
              endpointAgentsEssentialsUsed: 3
          description: Endpoint agents essentials used by account group.
        endpointAgentsEmbedded:
          type: array
          items:
            $ref: '#/components/schemas/EndpointAgentsEmbedded'
          example:
            - aid: '1234'
              accountGroupName: Support
              endpointAgentsEmbeddedUsed: 2
            - aid: '12345'
              accountGroupName: Documentation
              endpointAgentsEmbeddedUsed: 3
          description: Endpoint agents embedded used by account group.
        enterpriseAgents:
          type: array
          items:
            $ref: '#/components/schemas/EnterpriseAgents'
          example:
            - aid: '1234'
              accountGroupName: Support
              enterpriseAgentsUsed: 7
            - aid: '12345'
              accountGroupName: Documentation
              enterpriseAgentsUsed: 1
          description: Enterprise agents used by account group.
    TestsUsage:
      type: object
      properties:
        breakdowns:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/UnitsByTests'
          example:
            - testId: '1158'
              testName: https://app.thousandeyes.com
              testType: Web-Page Load
              enterpriseUnitsUsed: 14050
              enterpriseUnitsProjected: 340674
              cloudUnitsUsed: 10000
              cloudUnitsProjected: 12000
              aid: '1234'
              accountGroupName: Support
            - testId: '1221'
              testName: https://app.thousandeyes.com
              testType: Web - HTTP Server
              enterpriseUnitsUsed: 194051
              enterpriseUnitsProjected: 30622
              cloudUnitsUsed: 12000
              cloudUnitsProjected: 13000
              aid: '1234'
              accountGroupName: Support
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    UnitsByTests:
      type: object
      properties:
        aid:
          type: string
          description: >-
            Unique ID of the account group owning the test that is generating
            units
          example: '1234'
        accountGroupName:
          type: string
          description: >-
            Name of the account group which owns the test that is generating the
            units
          example: Account A
        enterpriseUnitsUsed:
          type: integer
          description: Units generated by the by the enterprise agents running the test
        enterpriseUnitsProjected:
          type: integer
          description: >-
            Enterprise Units projected in the current usage period, based on
            units consumed to date and configuration of the test
        cloudUnitsUsed:
          type: integer
          description: Units generated by the by the cloud agents running the test
        cloudUnitsProjected:
          type: integer
          description: >-
            Cloud Units projected in the current usage period, based on units
            consumed to date and configuration of the test
        testId:
          type: string
          description: Unique ID of the test generating usage
        testName:
          type: string
          description: Name of the test generating usage
        testType:
          type: string
          description: >-
            Type of test generating usage. Note that this is a friendly testType
            entry (so it shouldn’t be parsed to discover the correct operation
            to query for configuration details).
        isInstantTest:
          type: boolean
          description: Indicates whether the test is scheduled or instant
    EnterpriseAgents:
      type: object
      properties:
        aid:
          type: string
          description: >-
            A unique identifier that specifies the account group that owns the
            enterprise agents.
          example: '1234'
        accountGroupName:
          type: string
          description: Name of the account group which owns the enterprise agents.
          example: Account A
        enterpriseAgentsUsed:
          type: integer
          format: int64
          description: >-
            Number of enterprise agents owned by the specific account group in
            the usage period.
    EnterpriseAgentsUsage:
      type: object
      properties:
        breakdowns:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/EnterpriseAgentUnitsByTestOwnerAccountGroup'
          example:
            - aid: '1234'
              agentId: '121404'
              accountGroupName: Support
              agentName: TEVA-test-agent
              enterpriseUnitsUsed: 599878
              enterpriseUnitsProjected: 597808
              vagentId: '123456'
            - aid: '315'
              agentId: '121404'
              accountGroupName: Documentation
              agentName: lab-physical-appliance-1
              enterpriseUnitsUsed: 597123
              enterpriseUnitsProjected: 597808
              vagentId: '789'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    EnterpriseAgentUnitsByTestOwnerAccountGroup:
      type: object
      properties:
        aid:
          description: >-
            Unique identifier of the account group where some tests are
            incurring the enterprise agent units.
          type: string
          example: '1234'
        accountGroupName:
          description: >-
            Name of the account group which owns the tests that are incurring
            enterprise agent units.
          type: string
          example: Account A
        agentId:
          type: string
          description: Unique identifier of the enterprise agent generating usage.
        agentName:
          type: string
          description: Name of the enterprise agent generating usage.
        enterpriseUnitsUsed:
          type: integer
          format: int64
          description: >-
            Number of enterprise agent units owned by the specific account group
            in the usage period.
        enterpriseUnitsProjected:
          type: integer
          format: int64
          description: >-
            Number of enterprise units projected in the current usage period,
            based on units consumed to date and configuration of enabled tests.
            This value is updated hourly. Returns non-zero value only for
            organizations with metered billing.
        vagentId:
          type: string
          description: Unique identifier of the virtual agent generating usage
    EnterpriseAgentUnits:
      type: object
      properties:
        aid:
          description: >-
            Unique identifier of the account group owning the enterprise agent
            units.
          type: string
          example: '1234'
        accountGroupName:
          description: Name of the account group which owns the enterprise agent units.
          type: string
          example: Account A
        agentId:
          type: string
          description: Unique identifier of the enterprise agent generating usage.
        agentName:
          type: string
          description: Name of the enterprise agent generating usage.
        enterpriseUnitsUsed:
          type: integer
          format: int64
          description: >-
            Number of enterprise agent units owned by the specific account group
            in the usage period.
        enterpriseUnitsProjected:
          type: integer
          format: int64
          description: >-
            Number of enterprise units projected in the current usage period,
            based on units consumed to date and configuration of enabled tests.
            This value is updated hourly. Returns non-zero value only for
            organizations with metered billing.
        vagentId:
          type: string
          description: Unique identifier of the virtual agent generating usage
    TestUsage:
      type: object
      properties:
        aid:
          type: string
          description: Unique identifier of the account group which owns the test.
          example: '1234'
        accountGroupName:
          type: string
          description: Name of the account group which owns the test.
          example: Account A
        testId:
          type: string
          description: Unique identifier of the test generating usage.
        testName:
          type: string
          description: Name of the test generating usage.
        testType:
          type: string
          description: >-
            The type of test that generated the usage data. Note that this
            parameter provides a user-friendly description of the test type and
            should not be parsed to determine the endpoint for querying
            configuration details.
        cloudUnitsUsed:
          type: integer
          format: int64
          description: >-
            Number of cloud units that the test has consumed in the usage
            period.
        cloudUnitsProjected:
          type: integer
          format: int64
          description: >-
            The estimated number of cloud units that the test is expected to
            consume during the usage period. This estimate is determined by
            considering the units consumed up to the current time and the test's
            configuration. It's important to note that this value is updated
            every hour. For new tests, the `cloudUnitsProjected` parameter is
            absent until the projection is calculated.
    EndpointAgentsUsage:
      type: object
      properties:
        aid:
          description: Unique identifier of the account group owning the endpoint agents.
          type: string
          example: '1234'
        accountGroupName:
          description: Name of the account group which owns the endpoint agents.
          type: string
          example: Account A
        endpointAgentsUsed:
          type: integer
          format: int64
          description: >-
            Number of endpoint agents owned by the specific account group in the
            usage period.
    EndpointAgentsEssentials:
      type: object
      properties:
        aid:
          description: >-
            Unique identifier of the account group owning the endpoint agents
            essentials.
          type: string
          example: '1234'
        accountGroupName:
          description: Name of the account group which owns the endpoint agents essentials.
          type: string
          example: Account A
        endpointAgentsEssentialsUsed:
          type: integer
          format: int64
          description: >-
            Number of endpoint agents essentials owned by the specific account
            group in the usage period.
    EndpointAgentsEmbedded:
      type: object
      properties:
        aid:
          description: >-
            Unique identifier of the account group that owns the embedded
            endpoint agents.
          type: string
          example: '1234'
        accountGroupName:
          description: Name of the account group that owns the embedded endpoint agents.
          type: string
          example: Account A
        endpointAgentsEmbeddedUsed:
          type: integer
          format: int64
          description: >-
            Number of endpoint agents embedded owned by the specific account
            group in the usage period.
    QuotasAssignRequest:
      type: object
      properties:
        organizations:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationQuota'
          example:
            - value: 12000
            - orgId: '1234'
              value: 10000
    QuotasAssignResponse:
      type: object
      properties:
        organizations:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationQuota'
          example:
            - orgId: '1234'
              value: 12000
            - orgId: '12345'
              value: 10000
    QuotasUnassign:
      type: object
      properties:
        organizations:
          type: array
          items:
            type: string
          example:
            - '1234'
            - '12345'
    OrganizationsQuotasAssign:
      type: object
      properties:
        organizations:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationQuotaAssignment'
    OrganizationQuotaAssignment:
      type: object
      properties:
        orgId:
          type: string
          description: Unique identifier of the organization.
          example: '1234'
        accountGroups:
          type: array
          description: List of account groups quotas.
          items:
            $ref: '#/components/schemas/AccountGroupQuota'
    OrganizationsQuotasUnassign:
      type: object
      properties:
        organizations:
          type: array
          items:
            $ref: '#/components/schemas/OrganizationQuotaUnassignment'
    OrganizationQuotaUnassignment:
      type: object
      properties:
        orgId:
          type: string
          description: Unique identifier of the organization.
          example: '1234'
        accountGroups:
          $ref: '#/components/schemas/AccountGroupIds'
    AccountGroupIds:
      type: array
      description: List of account group IDs.
      items:
        type: string
      example:
        - '1234'
        - '12345'
    SnapshotRequest:
      type: object
      required:
        - displayName
        - startDate
        - endDate
      properties:
        displayName:
          type: string
          description: Snapshot title.
          example: Snapshot created through API
        startDate:
          type: string
          format: date-time
          description: >-
            The start date for the snapshot in UTC time, formatted in ISO
            date-time.
          example: '2023-06-06T00:00:00Z'
        endDate:
          type: string
          format: date-time
          description: >-
            The end date for the snapshot in UTC time, formatted in ISO
            date-time.
          example: '2023-06-06T01:00:00Z'
        isPublic:
          type: boolean
          description: >-
            Set to `true` for saved events and `false` for share links. Its
            default value is `false`.
          example: false
    SnapshotResponse:
      type: object
      properties:
        id:
          type: string
          description: Snapshot ID.
          example: wdiac
        startRoundId:
          type: integer
          description: >-
            The start time of the test snapshot, represented in epoch time
            format (in seconds).
          example: 1538784000
          readOnly: true
        endRoundId:
          type: integer
          description: >-
            The end time of the test snapshot, represented in epoch time format
            (in seconds).
          example: 1538787600
          readOnly: true
        roundId:
          type: integer
          description: >-
            The selected time of the test snapshot, represented in epoch time
            format (in seconds).
          example: 1538784000
          readOnly: true
        shareDate:
          type: string
          format: date-time
          description: >-
            The date when the test snapshot was created in UTC time, formatted
            in ISO date-time.
          example: '2023-06-06T00:00:00Z'
        sourceTestId:
          type: string
          description: Snapshot test ID.
          example: '281474976710706'
        testId:
          type: string
          description: Snapshot test ID.
          example: '281474976710801'
        uid:
          type: string
          description: User ID.
          example: '281474976810911'
        displayName:
          type: string
          description: Snapshot title.
          example: Snapshot created through API
        extraParams:
          type: string
          description: Extra parameters.
          example: params
        test:
          $ref: '#/components/schemas/SnapshotTest'
        _links:
          $ref: '#/components/schemas/SnapshotLinks'
    SnapshotTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
    SnapshotLinks:
      allOf:
        - $ref: '#/components/schemas/AppAndSelfLinks'
        - example:
            self:
              href: http://api.thousandeyes.com/v7/tests/227103/snapshot
            appLink:
              href: >-
                https://app.stg.thousandeyes.com/view/tests/?testId=227103&__a=105
    UnexpandedTest:
      type: object
      properties:
        interval:
          $ref: '#/components/schemas/TestInterval'
        alertsEnabled:
          type: boolean
          description: Indicates if alerts are enabled.
          example: true
        enabled:
          $ref: '#/components/schemas/Enabled'
    UnexpandedInstantTest:
      type: object
      properties:
        createdBy:
          $ref: '#/components/schemas/TestCreatedBy'
        createdDate:
          $ref: '#/components/schemas/TestCreatedDate'
        description:
          type: string
          description: A description of the test.
          example: ThousandEyes Test
        liveShare:
          type: boolean
          description: Indicates if the test is shared with the account group.
          example: false
          readOnly: true
        modifiedBy:
          type: string
          description: User that modified the test.
          example: user@user.com
          readOnly: true
        modifiedDate:
          type: string
          format: date-time
          description: UTC last modification date (ISO date-time format).
          readOnly: true
          example: '2022-07-17T22:00:54Z'
        savedEvent:
          type: boolean
          description: Indicates if the test is a saved event.
          readOnly: true
        testId:
          type: string
          description: >-
            Each test is assigned an unique ID; this is used to access test
            information and results from other endpoints.
          readOnly: true
          example: '281474976710706'
        testName:
          type: string
          description: The name of the test. Test name must be unique.
          example: ThousandEyes Test
        type:
          $ref: '#/components/schemas/TestType'
        _links:
          $ref: '#/components/schemas/TestLinks'
    StreamType:
      description: |-
        The type of data stream to configure.
        When using `splunk-hec`:
          - `endpointType` must be `http`.
          - `customHeaders` must contain just one element with the key `token` and the value of the *Splunk HEC Token*.
      type: string
      enum:
        - opentelemetry
        - splunk-hec
      example: opentelemetry
    DataModelVersion:
      description: |-
        The version of the data model used in the data stream.
        When using `v1`:
          - The `signal` cannot be `trace`.
      default: v2
      type: string
      enum:
        - v1
        - v2
      example: v2
    AuditOperation:
      type: object
      properties:
        createdBy:
          type: integer
          format: int64
          description: ID of the user who created the integration
          example: 3962
        createdDate:
          type: integer
          format: int64
          description: Creation date of the integration
          example: 1679677853573
    AuditOperationWithUpdate:
      allOf:
        - $ref: '#/components/schemas/AuditOperation'
        - type: object
          properties:
            updatedBy:
              type: integer
              format: int64
              description: ID of the user who last updated the integration
              example: 3962
              nullable: true
            updatedDate:
              type: integer
              format: int64
              description: Date of the last update to the integration
              example: 1679677853573
              nullable: true
    PutStream:
      type: object
      properties:
        customHeaders:
          description: >-
            Custom headers.

            **Note**: When using the `splunk-hec` `type`, the `customHeaders`
            must contain just one element with the key `token` and the value of
            the *Splunk HEC Token*.
          type: object
          additionalProperties:
            type: string
          example:
            Authorization: '*****'
            Content-Type: '*****'
        streamEndpointUrl:
          $ref: '#/components/schemas/StreamEndpointUrl'
        tagMatch:
          description: >-
            A collection of tags that determine what tests are included in the
            data stream. These tag values are also included as attributes in the
            data stream metrics.
          type: array
          items:
            $ref: '#/components/schemas/TagMatch'
          example:
            - key: keyA
              value: valueA
            - key: keyB
              value: valueB
        testMatch:
          description: A collection of tests to be included in the data stream.
          type: array
          items:
            $ref: '#/components/schemas/TestMatch'
          example:
            - id: '1234'
              domain: cea
            - id: '5678'
              domain: endpoint
        enabled:
          description: Flag to enable or disable the stream integration.
          type: boolean
          example: true
        filters:
          $ref: '#/components/schemas/Filters'
        exporterConfig:
          $ref: '#/components/schemas/ExporterConfig'
    TagMatch:
      type: object
      properties:
        key:
          type: string
          description: The name of the tag key to match
          example: keyA
        value:
          type: string
          description: The value of the tag to match
          example: valueA
    TagMatchObjectType:
      type: string
      deprecated: true
      description: The object type of tag
      example: test
      enum:
        - test
    Filters:
      type: object
      description: >-
        Provides the ability to filter data points based on the specified test
        types.
      properties:
        testTypes:
          $ref: '#/components/schemas/FiltersTestTypes'
    FiltersTestTypes:
      type: object
      description: Test types that can be used for filtering data points.
      properties:
        values:
          $ref: '#/components/schemas/FiltersTestTypesValues'
    FiltersTestTypesValues:
      type: array
      description: A list of test types to filter data points.
      items:
        $ref: '#/components/schemas/TestType'
      example:
        - agent-to-server
        - bgp
        - http-server
    TestMatch:
      type: object
      properties:
        id:
          type: string
          description: The ID of the test to match.
          example: '1234'
        domain:
          $ref: '#/components/schemas/TestMatchDomain'
    TestMatchDomain:
      type: string
      description: |-
        The domain of the test to match.
         `cea` - Cloud and Enterprise Agent
         `endpoint` - Endpoint Agent
      example: cea
      enum:
        - cea
        - endpoint
    ExporterConfig:
      type: object
      description: Capability to set exporter configuration.
      properties:
        splunkHec:
          $ref: '#/components/schemas/ExporterConfigSplunkHec'
    ExporterConfigSplunkHec:
      type: object
      description: >-
        Splunk HEC configuration. This can only be configured when the `type` is
        `splunk-hec`.
      properties:
        token:
          type: string
          description: The Splunk HEC `token`. This is a required field.
          example: d0a91307-be2f-4218-a9f8-71c02d98846b
        source:
          type: string
          description: The Splunk HEC `source`. This field is optional.
          example: ThousandEyesOTel
          default: ThousandEyesOTel
        sourceType:
          type: string
          description: The Splunk HEC `sourceType`. This field is optional.
          example: ThousandEyesOTel
          default: ThousandEyesOTel
        index:
          type: string
          description: >-
            The name of the Splunk HEC index where the event data will be
            stored.  This field is optional.
          example: thousandeyes_otel_events_index
    Stream:
      allOf:
        - type: object
          properties:
            type:
              $ref: '#/components/schemas/StreamType'
            signal:
              $ref: '#/components/schemas/Signal'
            endpointType:
              $ref: '#/components/schemas/EndpointType'
            streamEndpointUrl:
              $ref: '#/components/schemas/StreamEndpointUrl'
            dataModelVersion:
              $ref: '#/components/schemas/DataModelVersion'
        - $ref: '#/components/schemas/PutStream'
    Signal:
      description: |-
        The OpenTelemetry signal of the stream integration.
        When using `trace`:
          - `dataModelVersion` must be `v2`.
      default: metric
      example: metric
      enum:
        - metric
        - trace
    EndpointType:
      type: string
      description: >-
        The type of connection used to send data to the endpoint.

        **Note**: When using the `splunk-hec` 'type', the `EndpointType` must be
        `http`.
      default: grpc
      example: grpc
      enum:
        - grpc
        - http
    StreamResponse:
      type: object
      properties:
        id:
          type: string
          example: 342ieu09
          description: The data stream ID
          readOnly: true
        enabled:
          type: boolean
          example: true
          description: Flag to indicate if the stream integration is currently enabled.
          readOnly: true
        _links:
          $ref: '#/components/schemas/StreamLinks'
    StreamEndpointUrl:
      type: string
      description: >-
        The URL ThousandEyes sends data stream to.

        For a URL to be valid, it needs to: - Be syntactically correct. - Be
        reachable. - Use the HTTPS protocol. - When using the `grpc`
        endpointType, streamEndpointUrl cannot contain paths:
            - Valid . `grpc` - `https://example.com`
            - Invalid . `grpc` - `https://example.com/collector`.
            - Valid . `http` - `https://example.com/collector`.

        - When using the `http` endpointType, the operation must match the exact
        final full URL (including the path if there is one) to which the data
        will be sent. Examples below:
            - `https://api.honeycomb.io:443/v1/metrics`
            - `https://ingest.eu0.signalfx.com/v2/datapoint/otlp`
      example: https://api.thousandeyes.otel-collector
    GetStreamResponse:
      allOf:
        - $ref: '#/components/schemas/StreamResponse'
        - $ref: '#/components/schemas/Stream'
        - type: object
          properties:
            auditOperation:
              $ref: '#/components/schemas/AuditOperationWithUpdate'
    CreateStreamResponse:
      allOf:
        - $ref: '#/components/schemas/StreamResponse'
        - $ref: '#/components/schemas/Stream'
        - type: object
          properties:
            auditOperation:
              $ref: '#/components/schemas/AuditOperation'
    StreamCollection:
      type: array
      items:
        $ref: '#/components/schemas/GetStreamResponse'
    BadRequestError:
      type: object
      properties:
        timestamp:
          type: integer
          format: int64
          example: 1679677853573
        httpStatus:
          type: string
          example: BAD_REQUEST
        errors:
          type: array
          items:
            type: string
            example: 'JSON parse error: invalid type'
        path:
          type: string
          format: url
          example: https://api.thousandeyes.com/v7/stream
    ApiErrorIntegrationLimits:
      type: object
      properties:
        timestamp:
          type: integer
          format: int64
          example: 1679677853573
        httpStatus:
          type: string
          example: PRECONDITION_FAILED
        errors:
          type: array
          items:
            type: string
            example: User cannot create more than 5 integrations
        path:
          type: string
          format: url
          example: https://api.thousandeyes.com/v7/stream
    StreamSelfLink:
      type: object
      properties:
        href:
          type: string
          format: url
          example: >-
            https://api.thousandeyes.com/v7/streams/575766da-9664-4e85-94fe-facbe1154799
    StreamLinks:
      type: object
      readOnly: true
      properties:
        self:
          $ref: '#/components/schemas/StreamSelfLink'
    TestAgent:
      type: object
      properties:
        agentId:
          type: string
          description: Identifier for the agent (get `agentId` from `/agents` endpoint).
        sourceIpAddress:
          type: string
          description: >-
            IP address from the agent's `ipAddresses` field (get `ipAddresses`
            from `/agents` endpoint). Used for interface selection.
      example:
        agentId: '125'
        sourceIpAddress: 1.1.1.1
    InstantTestRequest:
      type: object
      properties:
        labels:
          type: array
          description: >-
            A list of test label identifiers (get `labelId` from `/labels`
            endpoint).
          writeOnly: true
          readOnly: false
          items:
            type: string
          example:
            - '9842'
            - '1283'
        sharedWithAccounts:
          type: array
          description: >-
            A list of account group identifiers that the test is shared with
            (get `aid` from `/account-groups` endpoint).
          writeOnly: true
          readOnly: false
          items:
            type: string
          example:
            - '1234'
            - '12345'
        agents:
          type: array
          description: >-
            A list of objects with `agentId` (required) and `sourceIpAddress`
            (optional).
          items:
            $ref: '#/components/schemas/TestAgent'
      required:
        - agents
    AgentToAgentInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/AgentToAgentInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
    AgentToAgentInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/AgentToAgentInstantTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    AgentToServerInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/AgentToServerInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
    AgentToServerInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/AgentToServerInstantTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    DnsServerInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/DnsServerInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
        - $ref: '#/components/schemas/DnsServersRequest'
    DnsServerInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/DnsServerInstantTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    DnsTraceInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/DnsTraceInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
    DnsTraceInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/DnsTraceInstantTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    DnsSecInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/DnsSecInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
    DnsSecInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/DnsSecInstantTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    HttpServerInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/HttpServerInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
    HttpServerInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/HttpServerInstantTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    PageLoadInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/PageLoadInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
    PageLoadInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/PageLoadInstantTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    WebTransactionInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/WebTransactionInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
    WebTransactionInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/WebTransactionInstantTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    ApiInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/ApiInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
    ApiInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/ApiInstantTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    FtpServerInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/FtpServerInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
    FtpServerInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/FtpServerInstantTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    SipServerInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/SipServerInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
        - type: object
          required:
            - targetSipCredentials
          properties:
            targetSipCredentials:
              $ref: '#/components/schemas/TestSipCredentials'
    SipServerInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/SipServerInstantTest'
        - $ref: '#/components/schemas/TestSipCredentials'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    VoiceInstantTestRequest:
      allOf:
        - $ref: '#/components/schemas/VoiceInstantTest'
        - $ref: '#/components/schemas/InstantTestRequest'
    VoiceInstantTestResponse:
      allOf:
        - $ref: '#/components/schemas/VoiceInstantTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    ExpandInstantTestOptions:
      type: string
      enum:
        - agent
        - label
        - shared-with-account
      example: agent
    SharedWithAccount:
      type: object
      properties:
        aid:
          type: string
          description: Account group ID.
          example: '1234'
        name:
          type: string
          description: Account group name.
          example: Account name
    TestSharedAccounts:
      type: array
      readOnly: true
      items:
        $ref: '#/components/schemas/SharedWithAccount'
    InstantTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - type: object
          properties:
            labels:
              $ref: '#/components/schemas/TestLabels'
            sharedWithAccounts:
              $ref: '#/components/schemas/TestSharedAccounts'
    TestDirection:
      type: string
      enum:
        - to-target
        - from-target
        - bidirectional
      description: Direction of the test, which affects how results are shown.
      default: to-target
      example: to-target
    TestDscp:
      type: string
      description: DSCP label.
      readOnly: true
      example: Best Effort (DSCP 0)
    TestDscpId:
      type: string
      enum:
        - '0'
        - '8'
        - '16'
        - '24'
        - '32'
        - '40'
        - '48'
        - '56'
        - '10'
        - '12'
        - '14'
        - '18'
        - '20'
        - '22'
        - '26'
        - '28'
        - '30'
        - '34'
        - '36'
        - '38'
        - '46'
        - '44'
      description: >-
        DSCP ID [to see list for acceptable
        values](https://docs.thousandeyes.com/product-documentation/tests/dscp-options-in-network-tests)
      default: '0'
      example: '0'
    TestNumPathTraces:
      type: integer
      minimum: 1
      maximum: 10
      description: Number of path traces executed by the agent.
      default: 3
      example: 3
    TestPathTraceMode:
      type: string
      enum:
        - classic
        - in-session
      description: Select `inSession` to perform the path trace within a TCP session.
      default: classic
      example: classic
    AgentToAgentTestProtocol:
      type: string
      enum:
        - tcp
        - udp
      default: tcp
      example: tcp
    TestRandomizedStartTime:
      type: boolean
      description: >-
        Indicates whether agents should randomize the start time in each test
        round.
      default: false
      example: false
    TestFixedPacketRate:
      type: integer
      minimum: 0
      maximum: 100
      description: Sets packets rate sent to measure the network in packets per second.
      example: 50
    AgentToAgentProperties:
      type: object
      required:
        - targetAgentId
      properties:
        direction:
          $ref: '#/components/schemas/TestDirection'
        dscp:
          $ref: '#/components/schemas/TestDscp'
        dscpId:
          $ref: '#/components/schemas/TestDscpId'
        mss:
          type: integer
          minimum: 20
          maximum: 1400
          description: Maximum segment size, in bytes.
          example: 100
        numPathTraces:
          $ref: '#/components/schemas/TestNumPathTraces'
        pathTraceMode:
          $ref: '#/components/schemas/TestPathTraceMode'
        port:
          $ref: '#/components/schemas/TestPort'
        protocol:
          $ref: '#/components/schemas/AgentToAgentTestProtocol'
        randomizedStartTime:
          $ref: '#/components/schemas/TestRandomizedStartTime'
        targetAgentId:
          type: string
          description: '`agentId` of the target agent for the test.'
          example: '2954'
        throughputMeasurements:
          type: boolean
          description: >-
            Enable or disable throughput measurements. Throughput measurements
            cannot be enabled when the source or target of the test is a cloud
            agent.
          default: false
          example: false
        throughputDuration:
          type: integer
          minimum: 5000
          maximum: 30000
          description: The throughput duration.
          default: 10000
          example: 10000
        throughputRate:
          type: integer
          minimum: 8
          maximum: 1000
          description: The throughput rate, only applicable for UDP protocol.
          example: 10
        fixedPacketRate:
          $ref: '#/components/schemas/TestFixedPacketRate'
        type:
          type: string
          example: agent-to-agent
          readOnly: true
    AgentToAgentInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/AgentToAgentProperties'
    TestAgentsResponse:
      type: array
      description: Contains list of agents.
      items:
        $ref: '#/components/schemas/AgentResponse'
    TestBandwidthMeasurements:
      type: boolean
      description: >-
        Set to `true` to enable bandwidth measurements, only applies to
        Enterprise agents assigned to the test.
      example: true
    TestMtuMeasurements:
      type: boolean
      description: Set `true` to measure MTU sizes on network from agents to the target.
      example: false
    TestIpv6Policy:
      type: string
      enum:
        - force-ipv4
        - prefer-ipv6
        - force-ipv6
        - use-agent-policy
      description: >-
        IP version policy. Overrides the IPv6 policy configured at the agent
        level.
      default: use-agent-policy
      example: use-agent-policy
    AgentToServerProperties:
      type: object
      required:
        - server
      properties:
        bandwidthMeasurements:
          $ref: '#/components/schemas/TestBandwidthMeasurements'
        continuousMode:
          type: boolean
          description: |
            To enable continuous monitoring, set this parameter to `true` to. 
            When continuous monitoring is enabled, the following actions occur:
            * `fixedPacketRate` is enforced
            * `bandwidthMeasurements` are disabled
            * If the `protocol` is set to `tcp`, `probeMode` is set to `syn`.
          example: false
        fixedPacketRate:
          type: integer
          minimum: 0
          maximum: 100
          description: >-
            If continuousMode is `false`, set the fixedPacketRate to a value
            between 10-100. If `continuousMode` is `true`, set the
            `fixedPacketRate` to `1`
          example: 25
        mtuMeasurements:
          $ref: '#/components/schemas/TestMtuMeasurements'
        numPathTraces:
          $ref: '#/components/schemas/TestNumPathTraces'
        pathTraceMode:
          $ref: '#/components/schemas/TestPathTraceMode'
        port:
          $ref: '#/components/schemas/TestPort'
        probeMode:
          $ref: '#/components/schemas/TestProbeMode'
        protocol:
          $ref: '#/components/schemas/TestProtocol'
        randomizedStartTime:
          $ref: '#/components/schemas/TestRandomizedStartTime'
        server:
          type: string
          description: Target name or IP address.
          example: www.thousandeyes.com
        dscp:
          $ref: '#/components/schemas/TestDscp'
        dscpId:
          $ref: '#/components/schemas/TestDscpId'
        ipv6Policy:
          $ref: '#/components/schemas/TestIpv6Policy'
        pingPayloadSize:
          type: integer
          minimum: 0
          maximum: 1400
          description: >-
            Payload size (not total packet size) for the end-to-end metric's
            probes, ping payload size allows values from 0 to 1400 bytes. When
            set to null, payload sizes are 0 bytes for ICMP-based tests and 1
            byte for TCP-based tests.
        networkMeasurements:
          type: boolean
          description: >-
            View packet loss in 1-second intervals. This is only available for
            1-minute interval tests. Set to `true` to enable network
            measurements.
          default: false
          example: false
        type:
          type: string
          example: agent-to-server
          readOnly: true
    AgentToServerInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/AgentToServerProperties'
    TestDnsServer:
      type: object
      properties:
        serverId:
          type: string
          description: Unique identifier of the DNS server.
          example: '1447'
        serverName:
          type: string
          description: Fully qualified domain name (FQDN) of DNS server.
          example: dns-example.net
    TestDnsTransportProtocol:
      type: string
      enum:
        - udp
        - tcp
      description: Transport protocol used for DNS requests.
      default: udp
      example: udp
    TestDomain:
      type: string
      description: >-
        The target record for the test, with the record type suffixed. If no
        record type is specified, the test defaults to an ANY record.
      example: www.thousandeyes.com
    DnsQueryClass:
      type: string
      enum:
        - in
        - ch
      description: >-
        Domain class used by this test. 'in' stands for Internet, while 'ch'
        stands for Chaos.
      example: in
    DnsServerProperties:
      type: object
      required:
        - domain
        - dnsServers
      properties:
        bandwidthMeasurements:
          $ref: '#/components/schemas/TestBandwidthMeasurements'
        dnsServers:
          type: array
          items:
            $ref: '#/components/schemas/TestDnsServer'
        dnsTransportProtocol:
          $ref: '#/components/schemas/TestDnsTransportProtocol'
        domain:
          $ref: '#/components/schemas/TestDomain'
        mtuMeasurements:
          $ref: '#/components/schemas/TestMtuMeasurements'
        networkMeasurements:
          $ref: '#/components/schemas/TestNetworkMeasurements'
        numPathTraces:
          $ref: '#/components/schemas/TestNumPathTraces'
        pathTraceMode:
          $ref: '#/components/schemas/TestPathTraceMode'
        probeMode:
          $ref: '#/components/schemas/TestProbeMode'
        protocol:
          $ref: '#/components/schemas/TestProtocol'
        randomizedStartTime:
          $ref: '#/components/schemas/TestRandomizedStartTime'
        recursiveQueries:
          type: boolean
          description: Set true to run query with RD (recursion desired) flag enabled.
          example: true
        ipv6Policy:
          $ref: '#/components/schemas/TestIpv6Policy'
        fixedPacketRate:
          $ref: '#/components/schemas/TestFixedPacketRate'
        dnsQueryClass:
          $ref: '#/components/schemas/DnsQueryClass'
        type:
          type: string
          example: dns-server
          readOnly: true
    DnsServerInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/DnsServerProperties'
    DnsServersRequest:
      type: object
      properties:
        dnsServers:
          type: array
          description: A list of DNS server FQDN.
          writeOnly: true
          readOnly: false
          items:
            type: string
          example:
            - dns-example.net
            - 8.8.8.8
    DnsTraceProperties:
      type: object
      required:
        - domain
      properties:
        dnsTransportProtocol:
          $ref: '#/components/schemas/TestDnsTransportProtocol'
        domain:
          $ref: '#/components/schemas/TestDomain'
        dnsQueryClass:
          $ref: '#/components/schemas/DnsQueryClass'
        randomizedStartTime:
          $ref: '#/components/schemas/TestRandomizedStartTime'
        type:
          type: string
          example: dns-trace
          readOnly: true
    DnsTraceInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/DnsTraceProperties'
    DnsSecProperties:
      type: object
      required:
        - domain
      properties:
        domain:
          $ref: '#/components/schemas/TestDomain'
        dnsQueryClass:
          $ref: '#/components/schemas/DnsQueryClass'
        randomizedStartTime:
          $ref: '#/components/schemas/TestRandomizedStartTime'
        type:
          type: string
          example: dnssec
          readOnly: true
    DnsSecInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/DnsSecProperties'
    TestAuthType:
      type: string
      description: HTTP authentication type.
      enum:
        - none
        - basic
        - ntlm
        - kerberos
        - oauth
      default: none
      example: none
    AgentInterfaces:
      type: object
      properties:
        ipAddress:
          type: string
          example: 192.1.1.0
          description: IP address of the agent interface.
        agentId:
          type: string
          description: The agent ID of the enterprise agent for the test.
          example: '2954'
    TestClientCertificate:
      type: string
      description: >-
        String representation (containing newline characters) of client
        certificate, the private key must be placed first, then the certificate.
      example: |
        -----BEGIN PRIVATE KEY-----
        MIICUTCCAfugAwIBAgIBADANBgkqhkiG9w0BAQQFADBXMQswCQYDVQQGEwJDTjEL
        -----END PRIVATE KEY-----
        -----BEGIN CERTIFICATE-----
        MIICUTCCAfugAwIBAgIBADANBgkqhkiG9w0BAQQFADBXMQswCQYDVQQGEwJDTjEL
        -----END CERTIFICATE-----
    TestCustomHeaders:
      type: object
      properties:
        root:
          type: object
          description: Use these HTTP headers for root server request.
          additionalProperties:
            type: string
        domains:
          type: object
          description: Use these HTTP headers for the specified domains.
          additionalProperties:
            type: object
            additionalProperties:
              type: string
        all:
          type: object
          description: Use these HTTP headers for all domains.
          additionalProperties:
            type: string
      example:
        root:
          header1: value1
        domains:
          domain1.com:
            header2: value2
        all:
          header3: value3
    TestDesiredStatusCode:
      type: string
      description: >-
        Specify the HTTP status code value that indicates a successful response.
        The default value accepts any 2xx or 3xx status code.
      default: default
      example: '200'
    TestHttpTimeLimit:
      type: integer
      minimum: 5
      maximum: 60
      description: HTTP time limit in seconds.
      default: 5
      example: 5
    TestIncludeHeaders:
      type: boolean
      description: >-
        Set to `true` to capture response headers for objects loaded by the
        test.
      default: true
      example: true
    TestUrl:
      type: string
      description: Target for the test.
      example: www.thousandeyes.com
    RequestMethod:
      type: string
      enum:
        - get
        - post
        - put
        - delete
        - patch
        - options
        - trace
      description: HTTP request method.
      example: get
    OAuth:
      type: object
      properties:
        configId:
          type: string
          description: The ID of the OAuth configuration.
        testUrl:
          $ref: '#/components/schemas/TestUrl'
        requestMethod:
          $ref: '#/components/schemas/RequestMethod'
        postBody:
          type: string
          description: >-
            Enter the OAuth body for the HTTP POST request in this field when
            using OAuth as the authentication mechanism. No special escaping is
            required. If content is provided in the post body, the
            `requestMethod` is automatically set to POST.
        headers:
          type: string
          description: Request headers used for OAuth.
        authType:
          $ref: '#/components/schemas/TestAuthType'
        username:
          type: string
          description: OAuth username
        password:
          type: string
          description: OAuth password
      description: Use this only if you want to use OAuth as the authentication mechanism.
      example:
        configId: '123321123'
        testUrl: https://api.thousandeyes.com/v7/status
        requestMethod: get
        postBody: 'client_id: ************'
        headers: 'Authorization: Basic ************'
        authType: none
        username: user123
        password: '*******'
    TestUserAgent:
      type: string
      description: User-agent string to be provided during the test.
      example: curl
    TestVerifyCertificate:
      type: boolean
      description: >-
        Ignore or acknowledge certificate errors. Set to false to ignore
        certificate errors.
      default: false
      example: false
    TestAllowUnsafeLegacyRenegotiation:
      type: boolean
      description: >-
        Allows TLS renegotiation with servers not supporting RFC 5746. Default
        Set to true to allow unsafe legacy renegotiation.
      default: true
      example: true
    TestOverrideAgentProxy:
      type: boolean
      description: >-
        Flag indicating if a proxy other than the default should be used. To
        override the default proxy for agents, set to `true` and specify a value
        for `overrideProxyId`.
      default: false
      example: false
    TestOverrideProxyId:
      type: string
      description: ID of the proxy to be used if the default proxy is overridden.
      example: '281474976710706'
    TestCollectProxyNetworkData:
      type: boolean
      description: Indicates whether network data to the proxy should be collected.
      default: false
      example: false
    HttpServerBaseProperties:
      type: object
      properties:
        authType:
          $ref: '#/components/schemas/TestAuthType'
        agentInterfaces:
          $ref: '#/components/schemas/AgentInterfaces'
        bandwidthMeasurements:
          $ref: '#/components/schemas/TestBandwidthMeasurements'
        clientCertificate:
          $ref: '#/components/schemas/TestClientCertificate'
        contentRegex:
          type: string
          description: Content regex, this field does not require escaping.
          example: (regex)+
        customHeaders:
          $ref: '#/components/schemas/TestCustomHeaders'
        desiredStatusCode:
          $ref: '#/components/schemas/TestDesiredStatusCode'
        downloadLimit:
          type: integer
          description: >-
            Specifies maximum number of bytes to download from the target
            object.
          example: 2048
        dnsOverride:
          type: string
          format: ipv4
          description: IP address to use for DNS override.
          example: 8.8.8.8
        httpTargetTime:
          $ref: '#/components/schemas/TestHttpTargetTime'
        httpTimeLimit:
          $ref: '#/components/schemas/TestHttpTimeLimit'
        httpVersion:
          $ref: '#/components/schemas/TestHttpVersion'
        includeHeaders:
          $ref: '#/components/schemas/TestIncludeHeaders'
        mtuMeasurements:
          $ref: '#/components/schemas/TestMtuMeasurements'
        networkMeasurements:
          $ref: '#/components/schemas/TestNetworkMeasurements'
        numPathTraces:
          $ref: '#/components/schemas/TestNumPathTraces'
        oAuth:
          $ref: '#/components/schemas/OAuth'
        password:
          $ref: '#/components/schemas/TestPassword'
        pathTraceMode:
          $ref: '#/components/schemas/TestPathTraceMode'
        probeMode:
          $ref: '#/components/schemas/TestProbeMode'
        protocol:
          $ref: '#/components/schemas/TestProtocol'
        sslVersion:
          $ref: '#/components/schemas/TestSslVersion'
        sslVersionId:
          $ref: '#/components/schemas/TestSslVersionId'
        url:
          $ref: '#/components/schemas/TestUrl'
        useNtlm:
          $ref: '#/components/schemas/TestUseNtlm'
        userAgent:
          $ref: '#/components/schemas/TestUserAgent'
        username:
          $ref: '#/components/schemas/TestUsername'
        verifyCertificate:
          $ref: '#/components/schemas/TestVerifyCertificate'
        allowUnsafeLegacyRenegotiation:
          $ref: '#/components/schemas/TestAllowUnsafeLegacyRenegotiation'
        followRedirects:
          $ref: '#/components/schemas/TestFollowRedirects'
        fixedPacketRate:
          $ref: '#/components/schemas/TestFixedPacketRate'
        overrideAgentProxy:
          $ref: '#/components/schemas/TestOverrideAgentProxy'
        overrideProxyId:
          $ref: '#/components/schemas/TestOverrideProxyId'
        collectProxyNetworkData:
          $ref: '#/components/schemas/TestCollectProxyNetworkData'
    TestHeaders:
      type: array
      description: HTTP request headers used.
      items:
        type: string
      example:
        - 'header1: value1'
        - 'header2: value2'
    TestHttpType:
      type: string
      example: http-server
      readOnly: true
    HttpServerProperties:
      allOf:
        - $ref: '#/components/schemas/HttpServerBaseProperties'
        - type: object
          required:
            - url
          properties:
            headers:
              $ref: '#/components/schemas/TestHeaders'
            downloadLimit:
              type: integer
              description: >-
                Specifies maximum number of bytes to download from the target
                object.
              example: 2048
            dnsOverride:
              type: string
              format: ipv4
              description: IP address to use for DNS override.
              example: 8.8.8.8
            randomizedStartTime:
              $ref: '#/components/schemas/TestRandomizedStartTime'
            postBody:
              type: string
              description: >-
                Enter the body for the HTTP POST request in this field. No
                special escaping is necessary. If the post body is provided with
                content, the `requestMethod` is automatically set to POST.
              example: '{ "example" : "value"}'
            ipv6Policy:
              $ref: '#/components/schemas/TestIpv6Policy'
            type:
              $ref: '#/components/schemas/TestHttpType'
    HttpServerInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/HttpServerProperties'
    TestPageLoadTimeLimit:
      type: integer
      description: Page load time limit. Must be larger than the `httpTimeLimit`.
      minimum: 5
      maximum: 60
      default: 10
      example: 10
    TestBlockDomains:
      type: string
      description: >-
        Domains or full object URLs to be excluded from metrics and waterfall
        data for transaction tests.
      example: domain.com/
    TestDisableScreenshot:
      type: boolean
      description: Enables or disables screenshots on error. Set true to not capture
      default: false
      example: false
    TestAllowMicAndCamera:
      type: boolean
      description: Set true allow the use of a fake mic and camera in the browser.
      default: false
      example: false
    TestAllowGeolocation:
      type: boolean
      description: Set true to use the agent’s geolocation by the web page.
      default: false
      example: false
    TestBrowserLanguage:
      type: string
      description: >-
        Set one of the available browser language that you want to use to
        configure the browser.
      example: en-US
    TestPageLoadingStrategy:
      type: string
      enum:
        - normal
        - eager
        - none
      description: >
        * `normal`: The test waits until the entire page is fully loaded,
        including the downloading and parsing of HTML content as well as all
        associated resources, before advancing to the next action in the
        transaction test script. 

        * `eager`: The test waits for the DOMContentLoaded event, indicating
        that HTML content is downloaded and parsed, and the document reaches the
        "interactive" readiness state, before proceeding to the next action in
        the test script.

        * `none`: The test only waits for the download of HTML content. Once the
        HTML is downloaded, the test continues to the next action in the
        transaction test script without waiting for additional resources.
      default: normal
      example: normal
    TestPageLoadType:
      type: string
      example: page-load
      readOnly: true
    PageLoadProperties:
      allOf:
        - $ref: '#/components/schemas/HttpServerBaseProperties'
        - type: object
          required:
            - url
          properties:
            emulatedDeviceId:
              type: string
              description: >-
                ID of the emulated device, if one was given when the test was
                created.
              example: '2'
            pageLoadTargetTime:
              type: integer
              description: >-
                Target time for page load completion, specified in seconds and
                cannot exceed the `pageLoadTimeLimit`.
              minimum: 1
              maximum: 30
              example: 10
            pageLoadTimeLimit:
              $ref: '#/components/schemas/TestPageLoadTimeLimit'
            blockDomains:
              $ref: '#/components/schemas/TestBlockDomains'
            disableScreenshot:
              $ref: '#/components/schemas/TestDisableScreenshot'
            allowMicAndCamera:
              $ref: '#/components/schemas/TestAllowMicAndCamera'
            allowGeolocation:
              $ref: '#/components/schemas/TestAllowGeolocation'
            browserLanguage:
              $ref: '#/components/schemas/TestBrowserLanguage'
            pageLoadingStrategy:
              $ref: '#/components/schemas/TestPageLoadingStrategy'
            randomizedStartTime:
              $ref: '#/components/schemas/TestRandomizedStartTime'
            type:
              $ref: '#/components/schemas/TestPageLoadType'
    PageLoadInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/PageLoadProperties'
    TestWebTransactionTimeLimit:
      type: integer
      description: Time limit for transaction in seconds.
      minimum: 5
      maximum: 180
      default: 30
      example: 30
    TestWebTransactionType:
      type: string
      example: web-transactions
      readOnly: true
    WebTransactionProperties:
      allOf:
        - $ref: '#/components/schemas/HttpServerBaseProperties'
        - type: object
          required:
            - transactionScript
            - url
          properties:
            emulatedDeviceId:
              type: string
              description: >-
                ID of the emulated device, if specified when the test was
                created.
              example: '2'
            targetTime:
              type: integer
              description: >-
                Target completion time. The default is 50% of the specified time
                limit in seconds. (Set to 0 to use the default behavior).
              minimum: 0
              maximum: 60
              example: 1
            timeLimit:
              $ref: '#/components/schemas/TestWebTransactionTimeLimit'
            transactionScript:
              type: string
              description: >-
                JavaScript of a web transaction test. Quotes must be escaped
                (precede " characters with \ ).
              example: if (true) { return true; }
            blockDomains:
              $ref: '#/components/schemas/TestBlockDomains'
            disableScreenshot:
              $ref: '#/components/schemas/TestDisableScreenshot'
            allowMicAndCamera:
              $ref: '#/components/schemas/TestAllowMicAndCamera'
            allowGeolocation:
              $ref: '#/components/schemas/TestAllowGeolocation'
            browserLanguage:
              $ref: '#/components/schemas/TestBrowserLanguage'
            pageLoadingStrategy:
              $ref: '#/components/schemas/TestPageLoadingStrategy'
            randomizedStartTime:
              $ref: '#/components/schemas/TestRandomizedStartTime'
            type:
              $ref: '#/components/schemas/TestWebTransactionType'
    TestCredentials:
      type: array
      description: >-
        Contains a list of credential IDs (get `credentialId` from
        `/credentials` endpoint).
      items:
        type: string
      example:
        - '3247'
        - '1051'
    WebTransactionInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/WebTransactionProperties'
        - type: object
          properties:
            credentials:
              $ref: '#/components/schemas/TestCredentials'
    ApiPredefinedVariable:
      type: object
      properties:
        name:
          type: string
          description: Variable name. Must be unique.
          example: myUsername
        value:
          type: string
          description: Variable value, will be treated as string.
          example: ThousandEyesAccountUserName
    ApiRequestAssertionName:
      type: string
      enum:
        - status-code
        - response-body
      description: >-
        Set to `status-code` to assert the response status code. Set to
        `response-body` to assert data is present in the response body. Use
        `ApiRequestAssertion` to set the value for the assertion.
      example: status-code
    ApiRequestAssertionOperator:
      type: string
      enum:
        - is
        - is-not
        - includes
        - not-includes
      description: >-
        If `name = status-code``, accepted values are [is, is-not]. If `name =
        response-body``, accepted values are [includes, not-includes]`.
      example: is
    ApiRequestAssertion:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/ApiRequestAssertionName'
        operator:
          $ref: '#/components/schemas/ApiRequestAssertionOperator'
        value:
          type: string
          description: >-
            The value of the assertion. If name = `status-code`, the status code
            to assert. If name = `response-body`, the lookup value to assert.
          example: 200
    ApiRequestAuthType:
      type: string
      enum:
        - none
        - basic
        - bearer-token
        - oauth2
      description: Will override the Authorization request header.
      default: none
      example: none
    ApiClientAuthentication:
      type: string
      description: The OAuth2 client authentication location type.
      enum:
        - basic-auth-header
        - in-body
      example: basic-auth-header
    ApiRequestHeader:
      type: object
      properties:
        key:
          type: string
          description: Request header key.
          example: x-custom-header
        value:
          type: string
          description: Request header value. Supports variables `{{variableName}}`.
          example: keep-alive
    ApiRequestMethod:
      type: string
      description: HTTP request method.
      enum:
        - get
        - post
        - put
        - delete
        - patch
      example: get
    ApiRequestVariable:
      type: object
      properties:
        name:
          type: string
          description: Variable name
          example: myTestName
        value:
          type: string
          description: >-
            The JSON path of data within the Response Body to assign to this
            variable.
          example: tests[0].name
    ApiRequest:
      type: object
      required:
        - name
        - url
      properties:
        assertions:
          type: array
          description: List of assertion objects.
          items:
            $ref: '#/components/schemas/ApiRequestAssertion'
        authType:
          $ref: '#/components/schemas/ApiRequestAuthType'
        bearerToken:
          type: string
          writeOnly: true
          description: The bearer token if `authType = bearer-token`.
          example: abcd-1234-...
        body:
          type: string
          description: POST/PUT request body. Must be in JSON format.
        clientAuthentication:
          $ref: '#/components/schemas/ApiClientAuthentication'
        clientId:
          type: string
          description: The application ID used when `authType` is set to "oauth2".
          writeOnly: true
          example: client-id
        clientSecret:
          type: string
          description: The private client secret used when `authType` is set to "oauth2".
          writeOnly: true
          example: client-secret
        collectApiResponse:
          type: boolean
          description: >-
            Set to `true` if API response body should be collected and saved.
            Set to `false` if API response body should not be saved.
          default: true
          example: true
        headers:
          type: array
          description: Array of API Request Header objects.
          items:
            $ref: '#/components/schemas/ApiRequestHeader'
        method:
          $ref: '#/components/schemas/ApiRequestMethod'
        name:
          type: string
          description: API step name, must be unique.
          example: Step 1
        password:
          type: string
          writeOnly: true
          description: The password if `authType = basic`.
          example: basic_pw123
        scope:
          type: string
          description: >-
            Application-specific scope values for the access token when
            `authType` is "oauth2".
          example: read, write, deploy
        tokenUrl:
          type: string
          description: >-
            The endpoint used to request the access token when `authType` is
            "oauth2".
          example: https://id.cisco.com/oauth2/default/v1/token
        url:
          type: string
          description: Request url. Supports variables in the format `{{variableName}}`.
          example: https://api.thousandeyes.com/v7/status
        username:
          type: string
          description: The username if `authType = basic`.
          example: ThousandEyesUserName
        variables:
          type: array
          description: Array of API post request variable objects.
          items:
            $ref: '#/components/schemas/ApiRequestVariable'
        waitTimeMs:
          type: integer
          description: >-
            Post request delay before executing the next API requests, in
            milliseconds.
          example: 0
    ApiProperties:
      type: object
      required:
        - requests
        - url
      properties:
        collectProxyNetworkData:
          $ref: '#/components/schemas/TestCollectProxyNetworkData'
        followRedirects:
          $ref: '#/components/schemas/TestFollowRedirects'
        mtuMeasurements:
          $ref: '#/components/schemas/TestMtuMeasurements'
        networkMeasurements:
          $ref: '#/components/schemas/TestNetworkMeasurements'
        numPathTraces:
          $ref: '#/components/schemas/TestNumPathTraces'
        overrideAgentProxy:
          $ref: '#/components/schemas/TestOverrideAgentProxy'
        overrideProxyId:
          $ref: '#/components/schemas/TestOverrideProxyId'
        pathTraceMode:
          $ref: '#/components/schemas/TestPathTraceMode'
        predefinedVariables:
          type: array
          items:
            $ref: '#/components/schemas/ApiPredefinedVariable'
        probeMode:
          $ref: '#/components/schemas/TestProbeMode'
        protocol:
          $ref: '#/components/schemas/TestProtocol'
        randomizedStartTime:
          $ref: '#/components/schemas/TestRandomizedStartTime'
        requests:
          type: array
          items:
            $ref: '#/components/schemas/ApiRequest'
        sslVersionId:
          $ref: '#/components/schemas/TestSslVersionId'
        targetTime:
          type: integer
          description: >-
            Target time for completion metric, defaults to 50% of time limit
            specified in seconds. (0 means default behavior)
          minimum: 0
          maximum: 60
          example: 1
        timeLimit:
          type: integer
          description: >-
            Time limit for transaction in seconds. Exceeding this limit will
            result in a Timeout error.
          minimum: 5
          maximum: 180
          default: 30
        url:
          $ref: '#/components/schemas/TestUrl'
        type:
          type: string
          example: api
          readOnly: true
    ApiInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/ApiProperties'
        - type: object
          properties:
            credentials:
              $ref: '#/components/schemas/TestCredentials'
    FtpServerRequestType:
      type: string
      enum:
        - download
        - upload
        - list
      description: Set the type of activity for the test.
      example: download
    FtpServerProperties:
      type: object
      required:
        - password
        - requestType
        - url
        - username
      properties:
        bandwidthMeasurements:
          $ref: '#/components/schemas/TestBandwidthMeasurements'
        downloadLimit:
          type: integer
          description: Specify maximum number of bytes to download from the target object.
          example: 1048576
        ftpTargetTime:
          type: integer
          description: Target time for operation completion; specified in milliseconds.
          minimum: 1000
          maximum: 6000
        ftpTimeLimit:
          type: integer
          description: Set the time limit for the test in seconds.
          minimum: 10
          maximum: 60
          default: 10
          example: 10
        mtuMeasurements:
          $ref: '#/components/schemas/TestMtuMeasurements'
        networkMeasurements:
          $ref: '#/components/schemas/TestNetworkMeasurements'
        numPathTraces:
          $ref: '#/components/schemas/TestNumPathTraces'
        password:
          $ref: '#/components/schemas/TestPassword'
        pathTraceMode:
          $ref: '#/components/schemas/TestPathTraceMode'
        probeMode:
          $ref: '#/components/schemas/TestProbeMode'
        protocol:
          $ref: '#/components/schemas/TestProtocol'
        randomizedStartTime:
          $ref: '#/components/schemas/TestRandomizedStartTime'
        requestType:
          $ref: '#/components/schemas/FtpServerRequestType'
        url:
          $ref: '#/components/schemas/TestUrl'
        useActiveFtp:
          type: boolean
          description: Explicitly set the flag to use active FTP.
          default: false
          example: false
        useExplicitFtps:
          type: boolean
          description: >-
            Use explicit FTPS (ftp over SSL). By default, tests will autodetect
            when it is appropriate to use FTPS.
          example: false
        username:
          $ref: '#/components/schemas/TestUsername'
        fixedPacketRate:
          $ref: '#/components/schemas/TestFixedPacketRate'
        ipv6Policy:
          $ref: '#/components/schemas/TestIpv6Policy'
        type:
          type: string
          example: ftp-server
          readOnly: true
    FtpServerInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/FtpServerProperties'
    SipServerProperties:
      type: object
      required:
        - port
        - targetSipCredentials
      properties:
        mtuMeasurements:
          $ref: '#/components/schemas/TestMtuMeasurements'
        networkMeasurements:
          $ref: '#/components/schemas/TestNetworkMeasurements'
        numPathTraces:
          $ref: '#/components/schemas/TestNumPathTraces'
        optionsRegex:
          type: string
          description: Options regex, this field does not require escaping.
          example:
            - a-z
        pathTraceMode:
          $ref: '#/components/schemas/TestPathTraceMode'
        probeMode:
          $ref: '#/components/schemas/TestProbeMode'
        randomizedStartTime:
          $ref: '#/components/schemas/TestRandomizedStartTime'
        registerEnabled:
          type: boolean
          description: >-
            Set to true to perform SIP registration on the test target with the
            SIP REGISTER command.
          default: false
          example: false
        sipTargetTime:
          type: integer
          minimum: 100
          maximum: 5000
          description: Target time for test completion in milliseconds.
          example: 1000
        sipTimeLimit:
          type: integer
          minimum: 5
          maximum: 10
          description: Time limit in milliseconds.
          default: 5
          example: 5
        fixedPacketRate:
          $ref: '#/components/schemas/TestFixedPacketRate'
        ipv6Policy:
          $ref: '#/components/schemas/TestIpv6Policy'
        type:
          type: string
          example: sip-server
          readOnly: true
    SipServerInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/SipServerProperties'
    TestSipAuthUser:
      type: string
      description: Username for authentication with SIP server.
      example: username
    SipTestProtocol:
      type: string
      enum:
        - tcp
        - tls
        - udp
      description: Transport layer for SIP communication.
      default: tcp
      example: tcp
    TestSipRegistrar:
      type: string
      description: SIP server to be tested, specified by domain name or IP address.
      example: voice.thousandeyes.com
    TestSipUser:
      type: string
      description: >-
        Username for SIP registration, should be unique within a ThousandEyes
        account group.
      example: username
    TestSipCredentials:
      type: object
      required:
        - port
      properties:
        authUser:
          $ref: '#/components/schemas/TestSipAuthUser'
        password:
          $ref: '#/components/schemas/TestPassword'
        port:
          $ref: '#/components/schemas/TestPort'
        protocol:
          $ref: '#/components/schemas/SipTestProtocol'
        sipRegistrar:
          $ref: '#/components/schemas/TestSipRegistrar'
        user:
          $ref: '#/components/schemas/TestSipUser'
    VoiceProperties:
      type: object
      required:
        - targetAgentId
      properties:
        codec:
          type: string
          description: Codec label
          example: G.711 @ 64 Kbps
          readOnly: true
        codecId:
          type: string
          description: >-
            Coded ID, [see the list of acceptable
            values](https://docs.thousandeyes.com/product-documentation/internet-and-wan-monitoring/tests/working-with-test-settings#rtp-stream-advanced-settings-tab)
          example: '0'
        dscp:
          $ref: '#/components/schemas/TestDscp'
        dscpId:
          $ref: '#/components/schemas/TestDscpId'
        duration:
          type: integer
          minimum: 5
          maximum: 30
          description: Duration of the test in seconds.
          default: 5
          example: 5
        jitterBuffer:
          type: integer
          minimum: 0
          maximum: 150
          description: De-jitter buffer size in seconds.
          default: 40
          example: 40
        numPathTraces:
          $ref: '#/components/schemas/TestNumPathTraces'
        port:
          type: integer
          minimum: 1024
          maximum: 65535
          description: Port number for the chosen protocol.
          example: 1024
        randomizedStartTime:
          $ref: '#/components/schemas/TestRandomizedStartTime'
        targetAgentId:
          type: string
          description: Agent ID of the target agent for the test.
          example: '281474976710706'
        type:
          type: string
          example: voice
          readOnly: true
    VoiceInstantTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - $ref: '#/components/schemas/VoiceProperties'
    Expand:
      type: string
      enum:
        - header
        - certificate
      example: header
    NetworkTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/NetworkTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    NetworkTestResult:
      allOf:
        - type: object
          properties:
            availableBandwidth:
              type: number
              description: >-
                The bandwidth from the client to the server measured in Mbps.
                This value is not available if bandwidth testing is disabled, if
                no value could be calculated, or if the target is a proxy.
              example: 9.100464
              format: double
              readOnly: true
            avgLatency:
              type: number
              description: Average RTT for packets sent to destination
              example: 167.04
              format: double
              readOnly: true
            bandwidth:
              type: number
              example: 4.3313155
              format: double
              readOnly: true
            capacity:
              type: number
              description: >-
                The capacity from the client to the server measured in Mbps.
                This value is not available if bandwidth testing is disabled, if
                no value could be calculated, or if the target is a proxy.
              example: 210.10854
              format: double
              readOnly: true
            jitter:
              type: number
              description: Standard deviation of latency
              example: 0.076808
              format: double
              readOnly: true
            loss:
              type: number
              description: Percentage of packets not reaching destination
              example: 0
              format: double
              readOnly: true
            maxLatency:
              type: number
              description: Maximum RTT for packets sent to destination
              example: 168
              format: double
              readOnly: true
            minLatency:
              type: number
              description: Minimum RTT for packets sent to destination
              example: 167
              format: double
              readOnly: true
            packetsBySecond:
              type: array
              description: Number of packets sent and received in a second.
              example:
                - []
                - - 0
                - - 2
                - - 2
                  - 1
                - - 1
                  - 1
              items:
                type: array
                items:
                  type: integer
              readOnly: true
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            date:
              type: string
              description: Data point date in UTC (ISO date-time format).
              format: date-time
              example: '2022-07-17T22:00:54Z'
              readOnly: true
            roundId:
              type: integer
              description: Epoch time (seconds) indicating the start time of the round
              example: 1384309800
              readOnly: true
            serverIp:
              type: string
              description: IP of target server
              example: 50.18.127.223
              readOnly: true
            server:
              type: string
              description: Target server, including port (if method used is TCP)
              example: www.thousandeyes.com:80
              readOnly: true
            healthScore:
              type: number
              description: >-
                A normalized value (0.0-1.0) representing the network connection
                health of the test target. Returns negative values as error
                codes. -1.0 indicates there was insufficient data to calculate
                the health score.
              example: 0.98
            direction:
              $ref: '#/components/schemas/TestDirection'
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
    PathVisDetailTestResults:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/PathVisDetailTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    PathVisDetailTestResult:
      allOf:
        - $ref: '#/components/schemas/PathVisBaseTestResult'
        - type: object
          properties:
            pathTraces:
              type: array
              description: >-
                Shows 3 iterations of path trace, with each iteration specified
                by a pathId
              items:
                $ref: '#/components/schemas/PathVisRoute'
    PathVisTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/PathVisTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    PathVisTestResult:
      allOf:
        - type: object
          properties:
            pathTraces:
              type: array
              description: >-
                Shows all iterations of path trace, with each iteration
                specified by a pathId
              items:
                $ref: '#/components/schemas/PathTrace'
        - $ref: '#/components/schemas/PathVisBaseTestResult'
    PathVisBaseTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            server:
              type: string
              description: Target server, including port (if method used is TCP)
              example: www.google.com:443
              readOnly: true
            serverIp:
              type: string
              description: IP of target server
              example: 172.217.170.68
              readOnly: true
            sourceIp:
              type: string
              description: IP address of source agent
              example: 196.40.106.237
              readOnly: true
            sourcePrefix:
              type: string
              description: IP prefix of source agent
              example: 196.40.96.0/20
              readOnly: true
            targetIsProxy:
              type: boolean
              description: >-
                Specifies whether the traces are targeting a proxy. If not set,
                it is considered as false.
              example: true
              readOnly: true
            direction:
              $ref: '#/components/schemas/PathVisDirection'
    PathVisRoute:
      type: object
      properties:
        pathId:
          type: string
          description: Unique ID of path trace
          example: '4711301366345855606023718047703941305741293841502186803'
          readOnly: true
        hops:
          type: array
          description: Array of hop objects indicating each step in the traceroute
          items:
            $ref: '#/components/schemas/PathVisHop'
    PathVisHop:
      type: object
      properties:
        hop:
          type: integer
          description: Hop index
          example: 1
          readOnly: true
        ipAddress:
          type: string
          description: IP address of the hop
          example: 196.40.106.237
          readOnly: true
        prefix:
          type: string
          description: Prefix of IP address shown in CIDR
          example: 196.40.96.0/20
          readOnly: true
        rdns:
          type: string
          description: Reverse DNS entry of IP, if available
          example: core-router1.cpt2.host-h.net
          readOnly: true
        network:
          type: string
          description: Autonomous System originating the prefix
          example: HETZNER (Pty) Ltd (AS 37153)
          readOnly: true
        responseTime:
          type: integer
          description: RTT to the hop’s IP in milliseconds
          example: 1
          readOnly: true
        location:
          type: string
          description: Location information for the hop
          example: Cape Town, South Africa
          readOnly: true
        mpls:
          type: string
          description: Multiprotocol Label Switching information, if available
          readOnly: true
    PathTrace:
      type: object
      properties:
        ipAddress:
          type: string
          description: IP address of the hop
          example: 196.40.106.237
          readOnly: true
        mss:
          type: integer
          description: Maximum segment size in bytes
          example: 1460
          readOnly: true
        numberOfHops:
          type: integer
          description: Number of hops for path trace to destination
          example: 15
          readOnly: true
        pathId:
          type: string
          description: Unique ID of path trace
          example: '1230899668701775614109128428722974545787322404682781961521'
          readOnly: true
        pathMtu:
          type: integer
          description: MTU sizes on network from agents to the target
          example: 1500
          readOnly: true
        responseTime:
          type: integer
          description: RTT of the path trace to the destination in milliseconds
          example: 1500
          readOnly: true
    PathVisDirection:
      type: string
      enum:
        - to-target
        - from-target
      description: Direction of the path trace.
      example: to-target
    HttpTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/HttpTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    HttpTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            serverIp:
              type: string
              description: IP address of destination server
              example: 193.2.1.88
              readOnly: true
            responseCode:
              type: integer
              description: HTTP response code
              example: 200
            numRedirects:
              type: integer
              description: Number of redirects
              example: 0
            redirectTime:
              type: integer
              description: Cumulative redirect timing in milliseconds
              example: 10
            dnsTime:
              type: integer
              description: Time required to resolve DNS in milliseconds
              example: 0
            sslTime:
              type: integer
              description: Time to negotiate SSL/TLS in milliseconds
              example: 9
            connectTime:
              type: integer
              description: Time required to establish a TCP connection to the server
              example: 2
            waitTime:
              type: integer
              description: >-
                Time elapsed between completion of request and first byte of
                response in milliseconds
              example: 3
            receiveTime:
              type: integer
              description: >-
                Elapsed time between first and last byte of response in
                milliseconds
              example: 1
            wireSize:
              type: integer
              description: Size of content in bytes
              example: 9993
            responseTime:
              type: integer
              description: Time to first byte in milliseconds
              example: 14
            throughput:
              type: number
              format: double
              description: WireSize divided by receiveTime in byter per second
              example: 123
            totalTime:
              type: integer
              description: response time + receive time
              example: 15
            headers:
              $ref: '#/components/schemas/HttpTestResultHeaders'
            errorType:
              type: string
              description: Type of error encountered; corresponds to phase of connection
              example: None
              readOnly: true
            errorDetails:
              $ref: '#/components/schemas/TestResultErrorDetails'
            sslCipher:
              type: string
              description: Cipher suite
            sslVersion:
              type: string
              description: TLS version
              example: TLSv1.3
            sslCertificates:
              type: array
              items:
                $ref: '#/components/schemas/SslCert'
            healthScore:
              type: number
              description: >-
                A normalized value (0.0-1.0) representing the web application
                connection health of the test target. Returns negative values as
                error codes. -1.0 indicates there was insufficient data to
                calculate the health score.
              example: 0.98
    HttpTestResultHeaders:
      type: object
      description: Expandable object containing both request and response headers
      properties:
        requestHeaders:
          type: string
          description: 'Crlf-delimited list of request headers in header: value format'
          example: "GET / HTTP/1.1\r\nHost: www.thousandeyes.com\r\nUser-Agent: curl/7.58.0-DEV\r\nAccept: */*\r\nAccept-Encoding: deflate, gzip\r\nX-ThousandEyes-Agent: yes\r\n"
        responseHeaders:
          type: string
          description: 'crlf-delimited list of response headers in header: value format'
          example: "HTTP/1.1 200 OK\r\nContent-Type: text/html;charset=UTF-8\r\nContent-Length: 9993\r\nConnection: keep-alive\r\nDate: Mon, 04 May 2020 16:13:00 GMT\r\nServer: Apache\r\nContent-Language: en-US\r\nContent-Encoding: gzip\r\nX-Frame-Options: sameorigin\r\nCache-Control: max-age=600, must-revalidate\r\nStrict-Transport-Security: max-age=31536000\r\nX-Content-Type-Options: nosniff\r\nX-XSS-Protection: 1; mode=block\r\nVary: Accept-Encoding\r\nX-Cache: Hit from cloudfront\r\nVia: 1.1 7ba3caf71ae7a52dd411d1a543e80cd8.cloudfront.net (CloudFront)\r\nX-Amz-Cf-Pop: SFO5-C3\r\nX-Amz-Cf-Id: w4h42tkoJD-rEpkRDZUvnQBmy26GVGe6pUsuRr1Dphf7oajYbjXaOA==\r\nAge: 132\r\n"
    SslCert:
      type: object
      properties:
        daysUntilExpiry:
          type: integer
          description: >-
            Days until certificate expires, rounded down. 0 is shown if there
            are less than 24 hours remaining. Calculated when the test was
            executed.
          example: 0
        isFetchDateInValidCertDateRange:
          type: boolean
          description: >-
            True when certificate fetch date is within the valid certificate
            date range, false otherwise
          example: true
        hasValidSigningCert:
          type: boolean
          description: >-
            This field is implicitly true; it is output only when false. false
            indicates this certificate was missing a valid signing certificate
            in the chain.
          example: false
        issuerName:
          type: string
          description: Certificate issuer
          example: DigiCert SHA2 Extended Validation Server CA
        validBefore:
          type: string
          format: date-time
          description: Certificate is not valid after this date
          example: '2020-05-12T12:00:00Z'
        validAfter:
          type: string
          format: date-time
          description: Certificate is not valid before this date
          example: '2018-03-27T00:00:00Z'
        subjectAlternativeNames:
          type: array
          description: >-
            Alternative name(s) of the certificate subject, extracted from the
            Subject Alternative Name (SAN) X.509 certificate extension, for
            example example.com, www2.example.com
          items:
            type: string
          example:
            - www.thousandeyes.com
            - thousandeyes.com
        subjectName:
          type: string
          description: >-
            certificate’s subject name - a value of the common name (CN) RDN
            from the certificate’s Subject attribute, for example
            www.example.com
          example: www.thousandeyes.com
    PageLoadTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/PageLoadTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    PageLoadTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            responseTime:
              type: number
              format: double
              description: Time to first byte in milliseconds
              example: 34.35
              readOnly: true
            totalSize:
              type: integer
              description: Sum of wire size of all objects on page in bytes
              example: 403301
              readOnly: true
            numObjects:
              type: integer
              description: Number of objects found on the page
              example: 17
              readOnly: true
            numErrors:
              type: integer
              description: Number of objects which encountered errors during download
              example: 0
              readOnly: true
            domLoadTime:
              type: integer
              description: Time to interaction in milliseconds
              example: 352
              readOnly: true
            pageLoadTime:
              type: integer
              description: Time to completely load page in milliseconds
              example: 352
              readOnly: true
    PageLoadDetailTestResults:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/PageLoadDetailTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    PageLoadDetailTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/PageLoadTestResult'
        - type: object
          properties:
            har:
              $ref: '#/components/schemas/PageHar'
    PageHar:
      type: object
      description: >-
        See [HAR specification](http://www.softwareishard.com/blog/har-12-spec/)
        for details
      readOnly: true
      example:
        log:
          creator:
            name: ThousandEyes DB Exporter
          entries:
            - pageref: page_0
              request:
                headers:
                  - name: ':authority'
                    value: google.com
                  - name: ':method'
                    value: GET
                  - name: ':path'
                    value: /
                  - name: ':scheme'
                    value: https
                  - name: accept
                    value: >-
                      text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
                  - name: accept-encoding
                    value: gzip, deflate, br
                  - name: accept-language
                    value: en-US,en;q=0.9
                  - name: upgrade-insecure-requests
                    value: '1'
                  - name: user-agent
                    value: >-
                      Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,
                      like Gecko) Chrome/68.0.3440.83 Safari/537.36
                  - name: x-thousandeyes-agent
                    value: 'yes'
                method: GET
                url: https://google.com/
              response:
                bodySize: 220
                content:
                  mimeType: text/html
                  size: 220
                headers:
                  - name: alt-svc
                    value: >-
                      quic=":443"; ma=2592000; v="46,43",h3-Q050=":443";
                      ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443";
                      ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443";
                      ma=2592000
                  - name: cache-control
                    value: public, max-age=2592000
                  - name: content-length
                    value: '220'
                  - name: content-type
                    value: text/html; charset=UTF-8
                  - name: date
                    value: Fri, 15 Nov 2019 16:41:54 GMT
                  - name: expires
                    value: Sun, 15 Dec 2019 16:41:54 GMT
                  - name: location
                    value: https://www.google.com/
                  - name: server
                    value: gws
                  - name: status
                    value: '301'
                  - name: x-frame-options
                    value: SAMEORIGIN
                  - name: x-xss-protection
                    value: '0'
                headersSize: 471
                redirectURL: ''
                status: 301
                statusText: MOVED_PERMANENTLY
              serverIPAddress: 172.217.6.110
              startedDateTime: '2019-11-15T16:41:54.798Z'
              time: 71
              timings:
                blocked: 2
                connect: 16
                dns: 1
                receive: 1
                send: 0
                ssl: 14
                wait: 50
            - pageref: page_0
              request:
                headers:
                  - name: ':authority'
                    value: www.google.com
                  - name: ':method'
                    value: GET
                  - name: ':path'
                    value: /
                  - name: ':scheme'
                    value: https
                  - name: accept
                    value: >-
                      text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
                  - name: accept-encoding
                    value: gzip, deflate, br
                  - name: accept-language
                    value: en-US,en;q=0.9
                  - name: upgrade-insecure-requests
                    value: '1'
                  - name: user-agent
                    value: >-
                      Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,
                      like Gecko) Chrome/68.0.3440.83 Safari/537.36
                  - name: x-thousandeyes-agent
                    value: 'yes'
                method: GET
                url: https://www.google.com/
              response:
                bodySize: 65214
                content:
                  mimeType: text/html
                  size: 225039
                headers:
                  - name: alt-svc
                    value: >-
                      quic=":443"; ma=2592000; v="46,43",h3-Q050=":443";
                      ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443";
                      ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443";
                      ma=2592000
                  - name: cache-control
                    value: private, max-age=0
                  - name: content-encoding
                    value: br
                  - name: content-length
                    value: '65214'
                  - name: content-type
                    value: text/html; charset=UTF-8
                  - name: date
                    value: Fri, 15 Nov 2019 16:41:54 GMT
                  - name: expires
                    value: '-1'
                  - name: p3p
                    value: >-
                      CP="This is not a P3P policy! See g.co/p3phelp for more
                      info."
                  - name: server
                    value: gws
                  - name: set-cookie
                    value: (removed)
                  - name: status
                    value: '200'
                  - name: strict-transport-security
                    value: max-age=31536000
                  - name: x-frame-options
                    value: SAMEORIGIN
                  - name: x-xss-protection
                    value: '0'
                headersSize: 915
                redirectURL: ''
                status: 200
                statusText: OK
              serverIPAddress: 172.217.4.196
              startedDateTime: '2019-11-15T16:41:54.870Z'
              time: 182
              timings:
                blocked: 2
                connect: 4
                dns: 0
                receive: 58
                send: 0
                ssl: 2
                wait: 118
          pages:
            - id: page_0
              pageTimings:
                onContentLoad: 367
                onLoad: 737
              responseCode: 0
              startedDateTime: '2019-11-15T16:41:54.796Z'
              title: Google
          version: '1.2'
    WebTransactionTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/WebTransactionTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    WebTransactionTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            componentErrors:
              type: integer
              description: Number of components which did not successfully load
              example: 5
              readOnly: true
            transactionTime:
              type: integer
              description: >-
                Elapsed execution time of the web transaction script in
                milliseconds
              example: 2379
              readOnly: true
            errorType:
              type: string
              description: Type of error encountered; corresponds to phase of connection
              example: None
              readOnly: true
            errorDetails:
              $ref: '#/components/schemas/TestResultErrorDetails'
    WebTransactionDetailTestResults:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/WebTransactionDetailTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    WebTransactionDetailTestResult:
      allOf:
        - $ref: '#/components/schemas/WebTransactionTestResult'
        - type: object
          properties:
            markers:
              type: array
              items:
                $ref: '#/components/schemas/Marker'
            pages:
              type: array
              items:
                $ref: '#/components/schemas/Page'
    ApiTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/ApiTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    ApiTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            apiTransactionTime:
              type: number
              format: float
              description: Elapsed execution time of the API steps.
              example: 990.1
              readOnly: true
            completion:
              type: number
              format: float
              description: >-
                Percentage of steps which completed successfully and passed
                assertions.
              example: 100
              readOnly: true
            errorType:
              type: string
              description: Type of error encountered.
              example: None
              readOnly: true
            errorDetails:
              $ref: '#/components/schemas/TestResultErrorDetails'
    ApiDetailTestResults:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/ApiDetailTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    ApiDetailTestResult:
      allOf:
        - $ref: '#/components/schemas/ApiTestResult'
        - type: object
          properties:
            requests:
              type: array
              items:
                $ref: '#/components/schemas/ApiRequestDetail'
    ApiRequestDetail:
      type: object
      properties:
        apiCallTime:
          type: number
          format: float
          description: Total time specific to the API call.
          example: 900.9
        assertErrorCount:
          type: integer
          description: Count of assertion errors.
          example: 0
        blockedTime:
          type: number
          format: float
          description: Time to establish a socket connection for this request.
          example: 49.9
        connectTime:
          type: number
          format: float
          description: Time to establish a TCP connection.
          example: 12.1
        completion:
          type: number
          format: float
          description: 100 if the request responded with no assertion errors, otherwise 0.
          example: 100
        dnsTime:
          type: number
          format: float
          description: >-
            Time for the agent to perform a DNS resolution of the hostname in
            the URL.
          example: 11.1
        name:
          type: string
          description: Name of the API step.
          example: First Step to Acquire Token
        processingTime:
          type: number
          format: float
          description: >-
            Time for the agent to process the API step, including the waitTimeMs
            delay specified in the post request options.
          example: 59.9
        receiveTime:
          type: number
          format: float
          description: Time to receive the response from the server.
          example: 224.1
        responseTime:
          type: number
          format: float
          description: Time for server to send the response.
          example: 440.8
        sendTime:
          type: number
          format: float
          description: Time to send the request.
          example: 8.1
        stepNumber:
          type: integer
          description: Index of the API step within requests, starting at 1.
          example: 1
        stepTime:
          type: number
          format: float
          description: >-
            Total time for an API step, including API call time and processing
            time.
          example: 990.1
        stepType:
          $ref: '#/components/schemas/ApiRequestStepType'
        url:
          type: string
          description: URL of request
          example: https://api.thousandeyes.com/v7/status
        waitTime:
          type: number
          format: float
          description: >-
            Total time between when the agent completes sending the HTTP request
            to the web server and when the agent receives the first byte of the
            response from the web server.
          example: 18.1
        assertions:
          type: array
          items:
            $ref: '#/components/schemas/ApiRequestDetailAssertion'
    ApiRequestStepType:
      type: string
      description: >-
        The value of `stepType` is "oauth2" if the step was generated by
        Browserbot to fetch an OAuth2 access token.
      enum:
        - default
        - oauth2
      example: default
    ApiRequestDetailAssertion:
      type: object
      properties:
        step:
          type: integer
          description: Index of the assertion, starting at 1.
          example: 1
        hasFailed:
          type: boolean
          description: >-
            Indicates if the assertion passed or failed. `true` if the assertion
            failed; `false` if the assertion passed.
          example: false
    WebTransactionPageDetailTestResults:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/WebTransactionPageDetailTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    WebTransactionPageDetailTestResult:
      allOf:
        - $ref: '#/components/schemas/WebTransactionDetailTestResult'
        - type: object
          properties:
            har:
              $ref: '#/components/schemas/PageHar'
    Marker:
      type: object
      properties:
        name:
          type: string
          description: Name assigned to marker in transaction script
          example: SearchForWebdriver
          readOnly: true
        duration:
          type: integer
          description: Total time recorded by marker in milliseconds
          example: 1360
          readOnly: true
    Page:
      type: object
      properties:
        pageNum:
          type: integer
          description: Page index
          example: 0
          readOnly: true
        pageName:
          type: string
          description: Meta title value for page visited
          example: Google
          readOnly: true
        componentCount:
          type: integer
          description: Number of components on target page
          example: 136
          readOnly: true
        errorCount:
          type: integer
          description: Number of errors encountered during page load
          example: 0
          readOnly: true
        duration:
          type: number
          format: float
          description: Time spent on page in milliseconds
          example: 1117.5660001039505
          readOnly: true
    FtpServerTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/FtpServerTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    FtpServerTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            serverIp:
              type: string
              description: IP address of destination server
              example: 193.2.1.88
              readOnly: true
            responseCode:
              type: integer
              description: FTP response code
              example: 226
              readOnly: true
            dnsTime:
              type: number
              format: float
              description: Time required to resolve DNS  in milliseconds
              example: 0.589
              readOnly: true
            connectTime:
              type: number
              format: float
              description: >-
                Time required to establish a TCP connection to the server in
                milliseconds
              example: 50.153
              readOnly: true
            negotiationTime:
              type: number
              format: float
              description: >-
                Time negotiate the connection and authenticate with the
                destination server in milliseconds
              example: 503.413
              readOnly: true
            waitTime:
              type: number
              format: float
              description: >-
                Time elapsed between completion of request and first byte of
                response in milliseconds
              example: 52.1
              readOnly: true
            responseTime:
              type: number
              format: float
              description: Sum of DNS, connect, negotiation and wait times in milliseconds
              example: 0.589
              readOnly: true
            transferTime:
              type: number
              format: float
              description: >-
                Elapsed time between first and last byte of the transfer in
                milliseconds
              example: 99.865
              readOnly: true
            wireSize:
              type: integer
              description: Size of content in bytes
              example: 22172
              readOnly: true
            totalTime:
              type: number
              format: float
              description: Sum of response + transfer time in milliseconds
              example: 705.554
              readOnly: true
            errorType:
              type: string
              description: Type of error encountered; corresponds to phase of connection
              example: None
              readOnly: true
            errorDetails:
              $ref: '#/components/schemas/TestResultErrorDetails'
            throughput:
              type: integer
              description: WireSize divided by receiveTime in byter per second
              example: 123
              readOnly: true
    DnsTraceTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/DnsTraceTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    DnsTraceTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            output:
              type: string
              description: Verbose output from the trace request
              example: "com.\t172800\tIN\tNS\ta.gtld-servers.net.\ncom.\t172800\tIN\tNS\tf.gtld-servers.net.\ncom.\t172800\tIN\tNS\tc.gtld-servers.net.\ncom.\t172800\tIN\tNS\tb.gtld-servers.net.\ncom.\t172800\tIN\tNS\td.gtld-servers.net.\ncom.\t172800\tIN\tNS\te.gtld-servers.net.\ncom.\t172800\tIN\tNS\tg.gtld-servers.net.\ncom.\t172800\tIN\tNS\tm.gtld-servers.net.\ncom.\t172800\tIN\tNS\th.gtld-servers.net.\ncom.\t172800\tIN\tNS\tj.gtld-servers.net.\ncom.\t172800\tIN\tNS\ti.gtld-servers.net.\ncom.\t172800\tIN\tNS\tl.gtld-servers.net.\ncom.\t172800\tIN\tNS\tk.gtld-servers.net.\n;; Received 498 bytes from 199.7.91.13(d.root-servers.net.) in 119 ms\n\nthousandeyes.com.\t172800\tIN\tNS\ta1.verisigndns.com.\nthousandeyes.com.\t172800\tIN\tNS\ta2.verisigndns.com.\nthousandeyes.com.\t172800\tIN\tNS\ta3.verisigndns.com.\nthousandeyes.com.\t172800\tIN\tNS\tu1.verisigndns.com.\n;; Received 266 bytes from 192.5.6.30(a.gtld-servers.net.) in 178 ms\n\napp.thousandeyes.com.\t300\tIN\tCNAME\tweb.thousandeyes.com.\nweb.thousandeyes.com.\t300\tIN\tCNAME\tlb-app.thousandeyes.com.\nlb-app.thousandeyes.com.\t3600\tIN\tA\t208.185.7.120\n;; Received 173 bytes from 209.112.113.33(a1.verisigndns.com.) in 178 ms\n\n"
              readOnly: true
            errorDetails:
              $ref: '#/components/schemas/TestResultErrorDetails'
            queries:
              type: integer
              description: How many queries were required to get to the requested result
              example: 3
              readOnly: true
            failedQueries:
              type: integer
              description: How many queries failed while getting to the requested result
              example: 0
              readOnly: true
            finalServerQueried:
              type: string
              description: DNS server that provided the final result
              example: a1.verisigndns.com.
              readOnly: true
            finalQueryTime:
              type: integer
              description: How long the final query took to return a response
              example: 178
              readOnly: true
            mappings:
              type: string
              description: Final mappings returned from the request
              example: 208.185.7.120
              readOnly: true
    DnsServerTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/DnsServerTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    DnsServerTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            serverId:
              type: string
              description: Internal ID of DNS server being tested
              example: '456'
              readOnly: true
            server:
              type: string
              description: Canonical name of server being tested
              example: a1.verisigndns.com.
              readOnly: true
            resolutionTime:
              type: integer
              description: >-
                How long it took to run the query against the serverow long it
                took to run the query against the server
              example: 3
              readOnly: true
            errorDetails:
              $ref: '#/components/schemas/TestResultErrorDetails'
            mappings:
              type: string
              description: Final mappings returned from the request
              example: 208.185.7.120
              readOnly: true
    DnssecTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/DnssecTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    DnssecTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            isValid:
              type: boolean
              description: Indicates if keychain is valid (if false see errorDetails field)
              example: true
              readOnly: true
            errorDetails:
              $ref: '#/components/schemas/TestResultErrorDetails'
    SipServerTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/SipServerTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    SipServerTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            serverIp:
              type: string
              description: Target agent IP address
              example: 193.2.1.88
              readOnly: true
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            availability:
              type: number
              format: float
              description: availability of the service
              example: 100
              readOnly: true
            connectTime:
              type: integer
              description: >-
                Time required to establish a TCP connection to the server in
                milliseconds, only available when TCP is configured as protocol
              example: 5
              readOnly: true
            dnsTime:
              type: integer
              description: Time required to resolve DNS in milliseconds
              example: 2
              readOnly: true
            inviteTime:
              type: integer
              description: Time to complete INVITE in milliseconds
              example: 10
              readOnly: true
            optionsTime:
              type: integer
              description: Time to complete OPTIONS in milliseconds
              example: 17
              readOnly: true
            numRedirects:
              type: integer
              description: Number of redirects
              example: 0
              readOnly: true
            optionsRequest:
              type: string
              description: Entire OPTIONS request
              example: "OPTIONS sip:6054@voice.sfo2.notarealco.com SIP/2.0\r\nVia: SIP/2.0/TCP 38.140.61.68:55431;branch=z9hG4bKRTzPzMoVh0;rport\r\nFrom: <sip:6054@voice.sfo2.notarealco.com>;tag=cGaJDNKQFE\r\nTo: <sip:6054@voice.sfo2.notarealco.com>\r\nCall-ID: oO9WaL3av8@38.140.61.68\r\nCSeq: 3 OPTIONS\r\nContact: <sip:6054@38.140.61.68:55431;transport=tcp>\r\nUser-Agent: ThousandEyes Test Call\r\nAllow: INVITE, ACK, CANCEL, BYE\r\nSupported: outbound, path\r\nMax-Forwards: 70\r\nExpires: 60\r\nContent-Length: 0\r\n\r\n\nOPTIONS sip:6054@voice.sfo2.notarealco.com SIP/2.0\r\nVia: SIP/2.0/TCP 38.140.61.68:55431;branch=z9hG4bKRTzPzMoVh0;rport\r\nFrom: <sip:6054@voice.sfo2.notarealco.com>;tag=cGaJDNKQFE\r\nTo: <sip:6054@voice.sfo2.notarealco.com>\r\nCall-ID: oO9WaL3av8@38.140.61.68\r\nCSeq: 4 OPTIONS\r\nContact: <sip:6054@38.140.61.68:55431;transport=tcp>\r\nAuthorization: Digest username=\"al6054\", realm=\"asterisk\", nonce=\"1598728080/4e3bef2c789bdfa45ce9123221e08c8f\", uri=\"sip:6054@voice.sfo2.notarealco.com\", response=\"83c538a39ff766cf75ffd1d62317b442\", algorithm=MD5, cnonce=\"0a4f113b\", opaque=\"748ffa241d840721\", qop=auth, nc=00000001\r\nUser-Agent: ThousandEyes Test Call\r\nAllow: INVITE, ACK, CANCEL, BYE\r\nSupported: outbound, path\r\nMax-Forwards: 70\r\nExpires: 60\r\nContent-Length: 0\r\n\r\n"
              readOnly: true
            optionsResponse:
              type: string
              description: Entire OPTIONS response
              example: "SIP/2.0 401 Unauthorized\r\nVia: SIP/2.0/TCP 38.140.61.68:55431;rport=55431;received=38.140.61.68;branch=z9hG4bKRTzPzMoVh0\r\nCall-ID: oO9WaL3av8@38.140.61.68\r\nFrom: <sip:6054@voice.sfo2.notarealco.com>;tag=cGaJDNKQFE\r\nTo: <sip:6054@voice.sfo2.notarealco.com>;tag=z9hG4bKRTzPzMoVh0\r\nCSeq: 3 OPTIONS\r\nWWW-Authenticate: Digest  realm=\"asterisk\",nonce=\"1598728080/4e3bef2c789bdfa45ce9123221e08c8f\",opaque=\"748ffa241d840721\",algorithm=md5,qop=\"auth\"\r\nServer: Asterisk PBX 16.4.0\r\nContent-Length:  0\r\n\r\n\nSIP/2.0 200 OK\r\nVia: SIP/2.0/TCP 38.140.61.68:55431;rport=55431;received=38.140.61.68;branch=z9hG4bKRTzPzMoVh0\r\nCall-ID: oO9WaL3av8@38.140.61.68\r\nFrom: <sip:6054@voice.sfo2.notarealco.com>;tag=cGaJDNKQFE\r\nTo: <sip:6054@voice.sfo2.notarealco.com>;tag=z9hG4bKRTzPzMoVh0\r\nCSeq: 4 OPTIONS\r\nAccept: application/xpidf+xml, application/cpim-pidf+xml, application/simple-message-summary, application/pidf+xml, application/dialog-info+xml, application/simple-message-summary, application/pidf+xml, application/dialog-info+xml, application/sdp, message/sipfrag;version=2.0\r\nAllow: OPTIONS, REGISTER, SUBSCRIBE, NOTIFY, PUBLISH, INVITE, ACK, BYE, CANCEL, UPDATE, PRACK, MESSAGE, REFER\r\nSupported: 100rel, timer, replaces, norefersub\r\nAccept-Encoding: text/plain\r\nAccept-Language: en\r\nServer: Asterisk PBX 16.4.0\r\nContent-Length:  0\r\n\r\n"
              readOnly: true
            registerTime:
              type: integer
              description: Time to complete REGISTER in milliseconds
              example: 21
              readOnly: true
            responseCode:
              type: integer
              description: SIP server response code
              example: 200
              readOnly: true
            responseTime:
              type: integer
              description: Time to first byte
              example: 12
              readOnly: true
            totalTime:
              type: integer
              description: Total time
              example: 40
              readOnly: true
            waitTime:
              type: integer
              description: >-
                Time elapsed between completion of request and first byte of
                response
              example: 5
              readOnly: true
            errorType:
              $ref: '#/components/schemas/SipServerErrorType'
            problemDetail:
              type: string
              description: Error details, if an error was encountered
              readOnly: true
    SipServerErrorType:
      type: string
      enum:
        - none
        - dns
        - connect
        - register
        - invite
        - option
        - server
        - ssl
      description: Error type, none if there is no error
      example: none
      readOnly: true
    RtpStreamTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/RtpStreamTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    RtpStreamTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            agent:
              $ref: '#/components/schemas/TestResultAgent'
            serverIp:
              type: string
              description: Target agent IP address
              example: 172.97.102.37
              readOnly: true
            dscp:
              type: string
              description: DSCP value received by the server from the agent
              example: '46'
              readOnly: true
            dscpName:
              type: string
              description: Name of DSCP value received by the server from the agent
              example: EF (DSCP 46)
              readOnly: true
            mos:
              type: number
              format: float
              description: Mean opinion score for agent’s stream
              example: 4.351024
              readOnly: true
            codecName:
              type: string
              description: Name of codec used by agen
              example: G.711 @ 64 Kbps
              readOnly: true
            codecMaxMos:
              type: number
              format: float
              description: Maximum value of Mean Opinion Score based on codec selection
              example: 4.41
              readOnly: true
            loss:
              type: number
              format: float
              description: >-
                Percentage value of packets sent from agent not received by
                server
              example: 0
              readOnly: true
            discards:
              type: number
              format: float
              description: Percentage of packets discarded
              example: 0
              readOnly: true
            latency:
              type: integer
              description: Time to send packets from source to server in milliseconds
              example: 103
              readOnly: true
            pdv:
              type: integer
              description: Variation in packet delay in milliseconds
              example: 1
              readOnly: true
            errorDetail:
              type: string
              description: Error details, if an error was encountered
              example: Connection error
              readOnly: true
    TestResultAgent:
      type: object
      properties:
        agentId:
          type: string
          description: Unique agent ID
          example: '281474976710706'
          readOnly: true
        agentName:
          type: string
          description: Agent name
          example: thousandeyes-stg-va-254
          readOnly: true
        countryId:
          type: string
          description: 2-digit ISO country code
          example: US
          readOnly: true
        location:
          type: string
          description: Location of the agent.
          example: San Francisco Bay Area
          readOnly: true
    TestResultErrorDetails:
      type: string
      description: Error details, if an error were encountered
      example: Connection error
      readOnly: true
    StartTime:
      type: integer
      description: Epoch time (seconds) indicating the start time of the round
      example: 1384309800
      readOnly: true
    EndTime:
      type: integer
      description: Epoch time (seconds) indicating the end time of the round
      example: 1384309800
      readOnly: true
    EpochTimeWindow:
      type: object
      properties:
        startTime:
          $ref: '#/components/schemas/StartTime'
        endTime:
          $ref: '#/components/schemas/EndTime'
    BgpTestResults:
      type: object
      properties:
        results:
          x-paginated-items: true
          type: array
          items:
            $ref: '#/components/schemas/BgpTestResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        startDate:
          $ref: '#/components/schemas/StartDate'
        endDate:
          $ref: '#/components/schemas/EndDate'
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    BgpTestResult:
      allOf:
        - $ref: '#/components/schemas/BgpBasicTestResult'
        - $ref: '#/components/schemas/EpochTimeWindow'
        - type: object
          properties:
            updates:
              type: number
              format: double
              description: Number of updates tracked against this prefix by this monitor.
              example: 0
            pathChanges:
              type: number
              format: double
              description: >-
                Number of path changes tracked against this prefix by this
                monitor.
              example: 0
            reachability:
              type: number
              format: double
              description: Percentage reachability
              example: 0
    BgpBasicTestResult:
      allOf:
        - $ref: '#/components/schemas/TestResult'
        - type: object
          properties:
            monitor:
              $ref: '#/components/schemas/TestResultMonitor'
            prefixId:
              type: string
              description: Internally tracked prefix ID.
              example: '215'
            prefix:
              type: string
              description: Prefix being tracked.
              example: 99.128.0.0/11
    TestResultMonitor:
      type: object
      properties:
        monitorId:
          type: string
          description: Unique monitor ID.
          example: '281474976710706'
          readOnly: true
        monitorName:
          type: string
          description: The name of the Monitor.
          example: Vancouver, Canada - Bell Canada (AS 6539)
          readOnly: true
        countryId:
          type: string
          description: 2-digit ISO country code.
          example: US
          readOnly: true
    BgpTestRouteInformationResults:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/BgpTestRouteInformationResult'
        test:
          $ref: '#/components/schemas/SimpleTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    BgpTestRouteInformationResult:
      allOf:
        - $ref: '#/components/schemas/BgpBasicTestResult'
        - type: object
          properties:
            isActive:
              type: boolean
              description: >-
                Represents whether the route is active or inactive. An inactive
                route was an active route in the previous test round and is now
                superseded by another active (preferred) route. When requesting
                data for the test round in which a route change happened, both
                routes (active and inactive one) are included in the response.
              example: true
            hops:
              type: array
              items:
                $ref: '#/components/schemas/BgpHop'
    BgpHop:
      type: object
      properties:
        asn:
          type: integer
          description: ASN of transit autonomous system
          readOnly: true
          example: 852
        asName:
          type: string
          description: Name of autonomous system.
          readOnly: true
          example: Telus Advanced Communications
    TestResult:
      type: object
      properties:
        date:
          type: string
          description: Data point date UTC (ISO date-time format).
          format: date-time
          example: '2022-07-17T22:00:54Z'
          readOnly: true
        roundId:
          type: integer
          description: Epoch time (seconds) indicating the start time of the round
          example: 1384309800
          readOnly: true
        _links:
          $ref: '#/components/schemas/TestResultAppLinks'
    TestResultAppLinks:
      allOf:
        - $ref: '#/components/schemas/AppLinks'
        - example:
            appLink:
              href: >-
                https://app.thousandeyes.com/view/tests?__a=105&testId=195&roundId=1692916680&agentId=125
    AppLinks:
      type: object
      description: A links object containing the ThousandEyes App link
      readOnly: true
      properties:
        appLink:
          $ref: '#/components/schemas/Link'
    ExpandTestOptions:
      type: string
      enum:
        - agent
        - alert-rule
        - monitor
        - label
        - shared-with-account
      example: agent
    ExpandBgpTestOptions:
      type: string
      enum:
        - alert-rule
        - monitor
        - label
        - shared-with-account
      example: monitor
    Tests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/SimpleTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    TestRequest:
      allOf:
        - $ref: '#/components/schemas/BaseRequest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsRequest'
      required:
        - agents
    BaseRequest:
      type: object
      properties:
        labels:
          type: array
          description: >-
            Contains list of test label IDs (get `labelId` from `/labels`
            endpoint)
          writeOnly: true
          readOnly: false
          items:
            type: string
          example:
            - '9842'
            - '1283'
        sharedWithAccounts:
          type: array
          description: >-
            Contains list of account group IDs. Test is shared with the listed
            account groups (get `aid` from `/account-groups` endpoint)
          writeOnly: true
          readOnly: false
          items:
            type: string
          example:
            - '1234'
            - '12345'
        alertRules:
          type: array
          items:
            type: string
          description: >-
            List of alert rules IDs to apply to the test (get `ruleId` from
            `/alerts/rules` endpoint. If `alertsEnabled` is set to `true` and
            `alertRules` is not included on test creation or update, applicable
            user default alert rules will be used)
          writeOnly: true
          readOnly: false
          example:
            - '344753'
            - '212697'
    MonitorsRequest:
      type: object
      properties:
        monitors:
          type: array
          description: >-
            Contains list of BGP monitor IDs (get `monitorId` from `/monitors`
            endpoint)
          writeOnly: true
          readOnly: false
          items:
            type: string
          example:
            - '17410'
            - '5'
    BgpTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedBgpTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    BgpTestRequest:
      allOf:
        - $ref: '#/components/schemas/BgpTest'
        - $ref: '#/components/schemas/BaseRequest'
        - $ref: '#/components/schemas/MonitorsRequest'
    UpdateBgpTestRequest:
      allOf:
        - $ref: '#/components/schemas/BaseBgpTest'
        - $ref: '#/components/schemas/BaseRequest'
        - $ref: '#/components/schemas/MonitorsRequest'
    BgpTestResponse:
      allOf:
        - $ref: '#/components/schemas/BgpTest'
    AgentToServerTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedAgentToServerTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    AgentToServerTestRequest:
      allOf:
        - $ref: '#/components/schemas/AgentToServerTest'
        - $ref: '#/components/schemas/TestRequest'
        - $ref: '#/components/schemas/MonitorsRequest'
    AgentToServerTestResponse:
      allOf:
        - $ref: '#/components/schemas/AgentToServerTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    AgentToAgentTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedAgentToAgentTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    AgentToAgentTestRequest:
      allOf:
        - $ref: '#/components/schemas/AgentToAgentTest'
        - $ref: '#/components/schemas/TestRequest'
        - $ref: '#/components/schemas/MonitorsRequest'
    AgentToAgentTestResponse:
      allOf:
        - $ref: '#/components/schemas/AgentToAgentTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    DnsServerTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedDnsServerTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    DnsServerTestRequest:
      allOf:
        - $ref: '#/components/schemas/DnsServerTest'
        - $ref: '#/components/schemas/TestRequest'
        - $ref: '#/components/schemas/MonitorsRequest'
        - $ref: '#/components/schemas/DnsServersRequest'
    DnsServerTestResponse:
      allOf:
        - $ref: '#/components/schemas/DnsServerTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    DnsTraceTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedDnsTraceTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    DnsTraceTestRequest:
      allOf:
        - $ref: '#/components/schemas/DnsTraceTest'
        - $ref: '#/components/schemas/TestRequest'
    DnsTraceTestResponse:
      allOf:
        - $ref: '#/components/schemas/DnsTraceTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    DnsSecTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedDnsSecTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    DnsSecTestRequest:
      allOf:
        - $ref: '#/components/schemas/DnsSecTest'
        - $ref: '#/components/schemas/TestRequest'
    DnsSecTestResponse:
      allOf:
        - $ref: '#/components/schemas/DnsSecTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    HttpServerTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedHttpServerTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    HttpServerTestRequest:
      allOf:
        - $ref: '#/components/schemas/HttpServerTest'
        - $ref: '#/components/schemas/TestRequest'
        - $ref: '#/components/schemas/MonitorsRequest'
    HttpServerTestResponse:
      allOf:
        - $ref: '#/components/schemas/HttpServerTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    PageLoadTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedPageLoadTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    PageLoadTestRequest:
      allOf:
        - $ref: '#/components/schemas/PageLoadTest'
        - $ref: '#/components/schemas/TestRequest'
        - $ref: '#/components/schemas/MonitorsRequest'
    PageLoadTestResponse:
      allOf:
        - $ref: '#/components/schemas/PageLoadTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    WebTransactionTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedWebTransactionTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    WebTransactionTestRequest:
      allOf:
        - $ref: '#/components/schemas/WebTransactionTest'
        - $ref: '#/components/schemas/TestRequest'
        - $ref: '#/components/schemas/MonitorsRequest'
    WebTransactionTestResponse:
      allOf:
        - $ref: '#/components/schemas/WebTransactionTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    ApiTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedApiTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    ApiTestRequest:
      allOf:
        - $ref: '#/components/schemas/ApiTest'
        - $ref: '#/components/schemas/TestRequest'
    ApiTestResponse:
      allOf:
        - $ref: '#/components/schemas/ApiTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    FtpServerTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedFtpServerTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    FtpServerTestRequest:
      allOf:
        - $ref: '#/components/schemas/FtpServerTest'
        - $ref: '#/components/schemas/TestRequest'
        - $ref: '#/components/schemas/MonitorsRequest'
    FtpServerTestResponse:
      allOf:
        - $ref: '#/components/schemas/FtpServerTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    SipServerTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedSipServerTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    SipServerTestRequest:
      allOf:
        - $ref: '#/components/schemas/UpdateSipServerTest'
        - $ref: '#/components/schemas/TestRequest'
    SipServerTestResponse:
      allOf:
        - $ref: '#/components/schemas/SipServerTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    VoiceTests:
      type: object
      properties:
        tests:
          type: array
          items:
            $ref: '#/components/schemas/UnexpandedVoiceTest'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    VoiceTestRequest:
      allOf:
        - $ref: '#/components/schemas/VoiceTest'
        - $ref: '#/components/schemas/TestRequest'
    VoiceTestResponse:
      allOf:
        - $ref: '#/components/schemas/VoiceTest'
        - type: object
          properties:
            agents:
              $ref: '#/components/schemas/TestAgentsResponse'
    InterfaceGroups:
      type: object
      properties:
        pathVisInterfaceGroups:
          type: array
          items:
            $ref: '#/components/schemas/InterfaceGroup'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    InterfaceGroup:
      type: object
      properties:
        aid:
          type: string
          description: Account Group Id
          readOnly: true
          example: '1234'
        groupId:
          type: string
          description: Group ID
          readOnly: true
          example: '281474976710706'
        groupName:
          type: string
          description: Name of the path visualization interface group
          example: PathVis Interface Group
        ipAddresses:
          type: array
          items:
            type: string
          description: Array of IP addresses associated with the interface group
          example:
            - 1.1.1.1
            - 8.8.8.8
        rdnsRegexes:
          type: array
          readOnly: true
          items:
            type: string
          description: Array of RDNS Regexes associated with the interface group
          example:
            - aggr403b-1.iad3.rackspace.net
            - aggr403c-1.iad3.rackspace.net
    TestUsePublicBgp:
      type: boolean
      description: >-
        Indicate if all available public BGP monitors should be used, when
        ommited defaults to `bgpMeasurements` value.
      default: true
      example: true
    UnexpandedBgpTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - type: object
          required:
            - prefix
          properties:
            enabled:
              $ref: '#/components/schemas/Enabled'
            includeCoveredPrefixes:
              type: boolean
              description: >-
                Indicate if queries for subprefixes detected under this prefix
                should included.
              example: true
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
            alertsEnabled:
              type: boolean
              description: Indicates if alerts are enabled.
              example: true
            createdBy:
              $ref: '#/components/schemas/TestCreatedBy'
            createdDate:
              $ref: '#/components/schemas/TestCreatedDate'
            type:
              type: string
              example: bgp
              readOnly: true
            prefix:
              type: string
              description: >-
                a.b.c.d is a network address, with the prefix length defined as
                e. Prefixes can be any length from 8 to 24.
    TestBgpMonitors:
      type: array
      description: Contains list of enabled BGP monitors.
      readOnly: true
      items:
        $ref: '#/components/schemas/Monitor'
    AlertRule:
      type: object
      properties:
        ruleId:
          $ref: '#/components/schemas/RuleId'
        ruleName:
          type: string
          description: Name of the alert rule
          example: The End of the Internet
          readOnly: true
        expression:
          type: string
          description: String expression of alert rule
          example: ((hops((hopDelay >= 100 ms))))
          readOnly: true
        direction:
          $ref: '#/components/schemas/AlertDirection'
        isDefault:
          type: boolean
          description: >-
            Alert rules allow up to 1 alert rule to be selected as a default for
            each type. By checking the default option, this alert rule will be
            automatically included on subsequently created tests that test a
            metric used in alerting here
          example: true
          readOnly: true
        alertType:
          $ref: '#/components/schemas/AlertType'
        minimumSources:
          type: integer
          description: >-
            The minimum number of agents or monitors that must meet the
            specified criteria in order to trigger the alert
          example: 10
          readOnly: true
        minimumSourcesPct:
          type: integer
          description: >-
            the minimum percentage of all assigned agents or monitors that must
            meet the specified criteria in order to trigger the alert
          example: 99
          readOnly: true
        roundsViolatingMode:
          $ref: '#/components/schemas/AlertRoundsViolationMode'
        roundsViolatingOutOf:
          type: integer
          description: Specifies the divisor (y value) for the “X of Y times” condition.
          example: 5
          readOnly: true
        roundsViolatingRequired:
          type: integer
          description: Specifies the numerator (x value) for the “X of Y times” condition
          example: 2
          readOnly: true
        sensitivityLevel:
          $ref: '#/components/schemas/SensitivityLevel'
        severity:
          $ref: '#/components/schemas/Severity'
    TestBgpType:
      type: string
      example: bgp
      readOnly: true
    BaseBgpTest:
      allOf:
        - $ref: '#/components/schemas/InstantTest'
        - type: object
          properties:
            enabled:
              $ref: '#/components/schemas/Enabled'
            monitors:
              $ref: '#/components/schemas/TestBgpMonitors'
            includeCoveredPrefixes:
              type: boolean
              description: >-
                Indicate if queries for subprefixes detected under this prefix
                should included.
              example: true
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
            alertsEnabled:
              type: boolean
              description: Indicates if alerts are enabled.
              example: true
            alertRules:
              type: array
              description: A list of enabled alert rule objects.
              items:
                $ref: '#/components/schemas/AlertRule'
            createdBy:
              $ref: '#/components/schemas/TestCreatedBy'
            createdDate:
              $ref: '#/components/schemas/TestCreatedDate'
            type:
              $ref: '#/components/schemas/TestBgpType'
    BgpTest:
      allOf:
        - $ref: '#/components/schemas/BaseBgpTest'
        - type: object
          required:
            - prefix
          properties:
            prefix:
              type: string
              description: >-
                a.b.c.d is a network address, with the prefix length defined as
                e. Prefixes can be any length from 8 to 24.
    TestBgpMeasurements:
      type: boolean
      description: Set to `true` to enable bgp measurements.
      default: true
      example: true
    UnexpandedAgentToServerTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/AgentToServerProperties'
        - type: object
          required:
            - interval
          properties:
            bgpMeasurements:
              $ref: '#/components/schemas/TestBgpMeasurements'
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
    BaseTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - type: object
          properties:
            alertRules:
              type: array
              description: Contains list of enabled alert rule objects.
              items:
                $ref: '#/components/schemas/AlertRule'
    TestMonitorsProperties:
      type: object
      properties:
        bgpMeasurements:
          $ref: '#/components/schemas/TestBgpMeasurements'
        usePublicBgp:
          $ref: '#/components/schemas/TestUsePublicBgp'
        monitors:
          $ref: '#/components/schemas/TestBgpMonitors'
    AgentToServerTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/AgentToServerInstantTest'
        - $ref: '#/components/schemas/TestMonitorsProperties'
        - type: object
          required:
            - interval
    TestAgentRequest:
      type: object
      required:
        - agentId
      properties:
        agentId:
          type: string
          description: The agent ID. Get `agentId` from `/agents` endpoint.
        sourceIpAddress:
          type: string
          description: >-
            The IP address from the `ipAddresses` field in agent details, used
            for interface selection. Get `ipAddresses` from the `/agents`
            endpoint.
      example:
        agentId: '125'
        sourceIpAddress: 1.1.1.1
    TestAgentsRequest:
      type: array
      description: Contains list of Agent IDs (get `agentId` from `/agents` endpoint).
      items:
        $ref: '#/components/schemas/TestAgentRequest'
    UnexpandedAgentToAgentTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/AgentToAgentProperties'
        - type: object
          required:
            - interval
          properties:
            bgpMeasurements:
              $ref: '#/components/schemas/TestBgpMeasurements'
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
    AgentToAgentTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/AgentToAgentInstantTest'
        - $ref: '#/components/schemas/TestMonitorsProperties'
        - type: object
          required:
            - interval
    UnexpandedDnsServerTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/DnsServerProperties'
        - type: object
          required:
            - interval
          properties:
            bgpMeasurements:
              $ref: '#/components/schemas/TestBgpMeasurements'
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
    DnsServerTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/DnsServerInstantTest'
        - $ref: '#/components/schemas/TestMonitorsProperties'
        - type: object
          required:
            - interval
    UnexpandedDnsTraceTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/DnsTraceProperties'
        - type: object
          required:
            - interval
    DnsTraceTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/DnsTraceInstantTest'
        - type: object
          required:
            - interval
    UnexpandedDnsSecTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/DnsSecProperties'
        - type: object
          required:
            - interval
    DnsSecTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/DnsSecInstantTest'
        - type: object
          required:
            - interval
    UnexpandedHttpServerTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/HttpServerProperties'
        - type: object
          required:
            - interval
          properties:
            bgpMeasurements:
              $ref: '#/components/schemas/TestBgpMeasurements'
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
    HttpServerTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/HttpServerInstantTest'
        - $ref: '#/components/schemas/TestMonitorsProperties'
        - type: object
          required:
            - interval
    TestHttpInterval:
      type: integer
      enum:
        - 60
        - 120
        - 300
        - 600
        - 900
        - 1800
        - 3600
      description: >-
        HTTP test run interval. The interval between HTTP test runs in seconds
        cannot exceed the specified interval value and defaults to the same
        value as the interval if not set.
      example: 120
    TestSubInterval:
      type: integer
      enum:
        - 60
        - 120
        - 300
        - 600
        - 900
        - 1200
        - 1800
        - 3600
      description: >-
        Subinterval for round-robin testing (in seconds). Must be less than or
        equal to interval and must evenly divide interval.
      example: 60
    UnexpandedPageLoadTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/PageLoadProperties'
        - type: object
          required:
            - interval
          properties:
            httpInterval:
              $ref: '#/components/schemas/TestHttpInterval'
            subinterval:
              $ref: '#/components/schemas/TestSubInterval'
            bgpMeasurements:
              $ref: '#/components/schemas/TestBgpMeasurements'
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
    PageLoadTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/PageLoadInstantTest'
        - $ref: '#/components/schemas/TestMonitorsProperties'
        - type: object
          required:
            - interval
          properties:
            httpInterval:
              $ref: '#/components/schemas/TestHttpInterval'
            subinterval:
              $ref: '#/components/schemas/TestSubInterval'
    UnexpandedWebTransactionTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/WebTransactionProperties'
        - type: object
          required:
            - interval
          properties:
            subinterval:
              $ref: '#/components/schemas/TestSubInterval'
            bgpMeasurements:
              $ref: '#/components/schemas/TestBgpMeasurements'
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
    WebTransactionTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/WebTransactionInstantTest'
        - $ref: '#/components/schemas/TestMonitorsProperties'
        - type: object
          required:
            - interval
          properties:
            subinterval:
              $ref: '#/components/schemas/TestSubInterval'
    UnexpandedApiTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/ApiProperties'
        - type: object
          required:
            - interval
          properties:
            bgpMeasurements:
              $ref: '#/components/schemas/TestBgpMeasurements'
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
    ApiTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/ApiInstantTest'
        - $ref: '#/components/schemas/TestMonitorsProperties'
        - type: object
          required:
            - interval
    UnexpandedFtpServerTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/FtpServerProperties'
        - type: object
          required:
            - interval
          properties:
            bgpMeasurements:
              $ref: '#/components/schemas/TestBgpMeasurements'
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
    FtpServerTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/FtpServerInstantTest'
        - $ref: '#/components/schemas/TestMonitorsProperties'
        - type: object
          required:
            - interval
    UnexpandedSipServerTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/SipServerProperties'
        - type: object
          required:
            - interval
            - port
          properties:
            authUser:
              $ref: '#/components/schemas/TestSipAuthUser'
            password:
              $ref: '#/components/schemas/TestPassword'
            port:
              $ref: '#/components/schemas/TestPort'
            protocol:
              $ref: '#/components/schemas/SipTestProtocol'
            sipRegistrar:
              $ref: '#/components/schemas/TestSipRegistrar'
            user:
              $ref: '#/components/schemas/TestSipUser'
            bgpMeasurements:
              $ref: '#/components/schemas/TestBgpMeasurements'
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
    UpdateSipServerTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/SipServerInstantTest'
        - $ref: '#/components/schemas/TestMonitorsProperties'
        - type: object
          required:
            - interval
            - targetSipCredentials
          properties:
            targetSipCredentials:
              $ref: '#/components/schemas/TestSipCredentials'
    SipServerTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/TestMonitorsProperties'
        - $ref: '#/components/schemas/SipServerInstantTest'
        - $ref: '#/components/schemas/TestSipCredentials'
      required:
        - interval
    UnexpandedVoiceTest:
      allOf:
        - $ref: '#/components/schemas/UnexpandedTest'
        - $ref: '#/components/schemas/UnexpandedInstantTest'
        - $ref: '#/components/schemas/VoiceProperties'
        - type: object
          required:
            - interval
          properties:
            bgpMeasurements:
              $ref: '#/components/schemas/TestBgpMeasurements'
            usePublicBgp:
              $ref: '#/components/schemas/TestUsePublicBgp'
    VoiceTest:
      allOf:
        - $ref: '#/components/schemas/BaseTest'
        - $ref: '#/components/schemas/VoiceInstantTest'
        - $ref: '#/components/schemas/TestMonitorsProperties'
        - type: object
          required:
            - interval
  responses:
    '204':
      description: No content
    '400':
      description: Bad Request
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ValidationError'
          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
    '401':
      description: Unauthorized
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/UnauthorizedError'
    '403':
      description: Insufficient permissions to query endpoint
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Error'
    '404':
      description: Not found
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Error'
          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
    '429':
      description: Exhausted rate limit for the organization
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Error'
    '500':
      description: Internal server error
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            type: about:blank
            title: Internal server error
            status: 500
            detail: Optional detail about the internal error message.
            instance: /v7
    '502':
      description: Bad Gateway
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Error'
    GeneralError:
      description: An error occurred
    SingleAgent:
      description: The agent's current state.
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/EndpointAgent'
  headers:
    Location:
      schema:
        type: string
        format: uri
        example: https://api.thousandeyes.com/v7/link/to/resource/id
      description: The absolute path to created resource.
    DashboardSnapshotRateLimit:
      schema:
        type: integer
        example: 100
      description: >-
        The maximum number of dashboard snapshot requests allowed within a
        specified time frame. The limit is 100 requests per hour.
    DashboardSnapshotRateLimitRemaining:
      schema:
        type: integer
        example: 45
      description: >-
        The number of remaining dashboard snapshot requests that can be made
        within the current time frame. This value indicates how many of the
        allowed 100 requests per hour are still available.
    DashboardSnapshotRateLimitReset:
      schema:
        type: integer
        example: 160
      description: >-
        The amount of time remaining until the rate limit resets and the full
        quota of requests is available again. If the value is 0, it means the
        rate limit currently allows access.
  requestBodies:
    AgentSearch:
      description: The filter options for advanced search filtering for agents.
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AgentSearchRequest'
    AgentTransfer:
      description: The request to move an agent between accounts.
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AgentTransferRequest'
    AgentTransfers:
      description: A collection of `AgentTransfers`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkAgentTransferRequest'
        text/csv:
          schema:
            type: string
          examples:
            CSV File:
              $ref: '#/components/examples/TransferCSV'
        text/plain:
          schema:
            type: string
          examples:
            CSV File:
              $ref: '#/components/examples/TransferCSV'
    assignRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TagAssignment'
    bulkAssignRequest:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BulkTagAssignments'
  examples:
    TransferCSV:
      value: |
        agent_id,from_aid,to_aid
        5d0764ac-7e42-4ec8-a0d4-39fc53edccba,111,222
        1234abcd-7e42-4ec8-a0d4-39fc53abcdef,222,333
x-tagGroups:
  - name: Administrative API
    tags:
      - Account Groups
      - Users
      - Roles
      - Permissions
      - User Events
  - name: Agents API
    tags:
      - Cloud and Enterprise Agents
      - Enterprise Agent Cluster
      - Cloud and Enterprise Agent Notification Rules
      - Agent Proxies
  - name: Alerts API
    tags:
      - Alerts
      - Alert Rules
      - Alert Suppression Windows
  - name: BGP Monitors API
    tags:
      - BGP monitors
  - name: Credentials API
    tags:
      - Credentials
  - name: Dashboards API
    tags:
      - Dashboards
      - Dashboard Snapshots
      - Dashboards Filters
  - name: Emulation API
    tags:
      - Emulation
  - name: Endpoint Agents API
    tags:
      - Endpoint Agents
      - Endpoint Agents Transfer
  - name: Endpoint Instant Scheduled Tests API
    tags:
      - Agent to Server Endpoint Instant Scheduled Tests
      - HTTP Server Endpoint Instant Scheduled Tests
      - Run Endpoint Instant Scheduled Tests
  - name: Endpoint Agent Labels API
    tags:
      - Endpoint Agent Labels
  - name: Endpoint Test Results API
    tags:
      - Network Endpoint Scheduled Test Results
      - HTTP Server Endpoint Scheduled Test Results
      - Network Dynamic Endpoint Test Results
      - Real User Endpoint Test Results
      - Local Network Endpoint Test Results
  - name: Endpoint Tests API
    tags:
      - Endpoint Scheduled Tests
      - Agent to Server Endpoint Scheduled Tests
      - HTTP Server Endpoint Scheduled Tests
      - Agent To Server Endpoint Dynamic Tests
  - name: Event Detection API
    tags:
      - Events
  - name: Tags API
    tags:
      - Tags
      - Tag Assignment
  - name: Internet Insights API
    tags:
      - Internet Insights Catalog Providers
      - Internet Insights Outages
  - name: Templates API
    tags:
      - Templates
  - name: Usage API
    tags:
      - Usage
      - Quotas
  - name: Test Snapshots API
    tags:
      - Test Snapshots
  - name: ThousandEyes for OpenTelemetry API
    tags:
      - Streaming
  - name: Instant Tests API
    tags:
      - Instant Tests
      - Agent to Agent Instant Tests
      - Agent to Server Instant Tests
      - DNS Server Instant Tests
      - DNS Trace Instant Tests
      - DNSSEC Instant Tests
      - HTTP Server Instant Tests
      - HTTP Page Load Instant Tests
      - Web Transaction Instant Tests
      - API Instant Tests
      - FTP Server Instant Tests
      - SIP Server Instant Tests
      - Voice Instant Tests
  - name: Test Results API
    tags:
      - Network Test Results
      - Web HTTP Server Test Results
      - Web Page Load Test Results
      - Web Transactions Test Results
      - API Test Results
      - Web FTP Server Test Results
      - DNS Trace Test Results
      - DNS Server Test Results
      - DNSSEC Test Results
      - Voice SIP Server Test Results
      - Voice RTP Server Test Results
      - Network BGP Test Results
  - name: Tests API
    tags:
      - Tests
      - Agent to Server Tests
      - Agent to Agent Tests
      - BGP Tests
      - DNS Server Tests
      - DNS Trace Tests
      - DNSSEC Tests
      - HTTP Server Tests
      - Page Load Tests
      - Web Transaction Tests
      - API Tests
      - FTP Server Tests
      - SIP Server Tests
      - Voice Tests
      - Path Visualization Interface Groups
