ThousandEyes Dashboards API

Dashboards and Widgets operations

Operations 11

GET /dashboards List dashboards #
POST /dashboards Create dashboard #
GET /dashboards/{dashboardId} Retrieve dashboard #
PUT /dashboards/{dashboardId} Update dashboard #
DELETE /dashboards/{dashboardId} Delete dashboard #
POST /dashboards/{dashboardId}/clone Clone dashboard #
PUT /dashboards/{dashboardId}/actions/schedule Create or update dashboard snapshot schedule #
DELETE /dashboards/{dashboardId}/actions/schedule Delete dashboard snapshot schedule #
GET /dashboards/{dashboardId}/widgets/{widgetId} Retrieve dashboard widget data #
GET /dashboards/{dashboardId}/widgets/{widgetId}/cards/{cardId} Retrieve individual card data from numbers widget #
GET /dashboards/{dashboardId}/widgets/{widgetId}/columns/{columnId} Retrieve individual column data from multi-metric table widget #

Documentation

📖
APIReference
https://developer.cisco.com/docs/thousandeyes/administration-administrative-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/api-token-management-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/agents-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/alerts-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/autonomous-systems-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/bgp-monitors-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/cloud-insights-integrations-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/credentials-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/dashboards-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/emulation-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/endpoint-agents-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/endpoint-instant-scheduled-tests-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/endpoint-labels-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/endpoint-test-results-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/endpoint-tests-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/event-detection-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/integrations-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/internet-insights-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/snapshots-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/tags-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/templates-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/tests-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/instant-tests-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/test-results-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/thousandeyes-for-opentelemetry-api-overview/
📖
APIReference
https://developer.cisco.com/docs/thousandeyes/usage-api-overview/

Specifications

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/thousandeyes-dashboards-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

thousandeyes-dashboards-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 7.0.100
  title: Dashboards API
  description: Manage ThousandEyes Dashboards.
  x-provenance:
    method: harvested
    authored_by: Cisco ThousandEyes
    harvested_by: API Evangelist
    harvested_on: '2026-08-19'
    first_party: true
    provider_published: true
    source_host: pubhub.devnetcloud.com
    note: 27 OpenAPI 3.0 documents (26 per-area plus a unified 326-operation document) served anonymously from Cisco's DevNet CDN. api.thousandeyes.com itself 401s every path, so the contract is public while the API host is gated.
  x-evidence:
  - type: source
    url: https://pubhub.devnetcloud.com/media/000-v7-apis/docs/reference/
  - type: source
    url: https://developer.cisco.com/docs/thousandeyes/
servers:
- description: ThousandEyes API production URL
  url: https://api.thousandeyes.com/v7
security:
- BearerAuth: []
tags:
- name: Dashboards
  description: Dashboards and Widgets operations
paths:
  /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'
    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'
  /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'
    put:
      tags:
      - Dashboards
      summary: Update dashboard
      operationId: updateDashboard
      description: "Updates an existing dashboard in your account group. \n\n**Note**: \n* Users with the `Edit dashboard templates for all users in account group` permission (Account Admin) can update any dashboard.\n* Users with the `Edit own dashboard templates` permission (Regular User) can only update the dashboards they have created themselves.\n"
      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'
    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'
  /dashboards/{dashboardId}/clone:
    post:
      tags:
      - Dashboards
      operationId: cloneDashboard
      summary: Clone dashboard
      description: 'Creates a dashboard by cloning an existing dashboard. By default, the clone inherits the source dashboard''s widgets, layout, default timespan, tags, and other supported settings. Values provided in the request override the corresponding source dashboard settings. Sharing settings are not inherited. If `title` is omitted, the API generates a unique title for the clone.


        **Note**:

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

        * Users with the `Edit own dashboard templates` permission (Regular User) can clone dashboards they can view. The current user owns the cloned dashboard.

        '
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/DashboardIdPath'
      requestBody:
        description: Optional overrides for the cloned dashboard.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CloneDashboardRequest'
        required: false
      responses:
        '201':
          description: Dashboard cloned successfully.
          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'
  /dashboards/{dashboardId}/actions/schedule:
    put:
      tags:
      - Dashboards
      operationId: updateDashboardSchedule
      summary: Create or update dashboard snapshot schedule
      description: 'Creates or replaces the snapshot schedule for a dashboard. Set `repeat` to `NONE` to generate one snapshot at `startTime`. Other `repeat` values create recurring snapshots. Schedule settings control when snapshots are generated, the data time range included in each snapshot, and email delivery options.

        '
      parameters:
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/DashboardIdPath'
      requestBody:
        required: true
        description: Snapshot schedule configuration.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DashboardScheduleRequest'
      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'
        '409':
          description: The dashboard changed while the schedule operation was being applied.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                type: about:blank
                title: Conflict
                status: 409
                detail: The dashboard changed while its schedule was being updated. Retry the request.
                instance: /v7/dashboards/{dashboardId}/actions/schedule
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
    delete:
      tags:
      - Dashboards
      operationId: deleteDashboardSchedule
      summary: Delete dashboard snapshot schedule
      description: 'Removes the snapshot schedule from a dashboard. Existing snapshots are not deleted.

        '
      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'
        '409':
          description: The dashboard changed while the schedule operation was being applied.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                type: about:blank
                title: Conflict
                status: 409
                detail: The dashboard changed while its schedule was being deleted. Retry the request.
                instance: /v7/dashboards/{dashboardId}/actions/schedule
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
  /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'
  /dashboards/{dashboardId}/widgets/{widgetId}/cards/{cardId}:
    get:
      tags:
      - Dashboards
      operationId: getIndividualCardData
      summary: Retrieve individual card data from numbers widget
      description: 'Returns the raw data for an individual card within a numbers widget in the dashboard.

        '
      parameters:
      - $ref: '#/components/parameters/DashboardIdPath'
      - $ref: '#/components/parameters/WidgetId'
      - $ref: '#/components/parameters/CardId'
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/Window'
      - $ref: '#/components/parameters/StartDateParameter'
      - $ref: '#/components/parameters/EndDateParameter'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiNumbersCardData'
        '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'
  /dashboards/{dashboardId}/widgets/{widgetId}/columns/{columnId}:
    get:
      tags:
      - Dashboards
      operationId: getIndividualColumnData
      summary: Retrieve individual column data from multi-metric table widget
      description: 'Returns the raw data for an individual column within a multi-metric table widget in the dashboard.

        '
      parameters:
      - $ref: '#/components/parameters/DashboardIdPath'
      - $ref: '#/components/parameters/WidgetId'
      - $ref: '#/components/parameters/ColumnId'
      - $ref: '#/components/parameters/AccountGroupId'
      - $ref: '#/components/parameters/Window'
      - $ref: '#/components/parameters/StartDateParameter'
      - $ref: '#/components/parameters/EndDateParameter'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ApiMultiMetricColumnData'
        '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'
components:
  schemas:
    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'
    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'
    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'
    DashboardScheduleTimespanPeriod:
      type: string
      enum:
      - DAY
      - WEEK
      - MONTH
      example: WEEK
    DashboardScheduleAfterEndCondition:
      type: object
      required:
      - endConditionType
      - value
      properties:
        endConditionType:
          type: string
          pattern: ^AFTER$
          description: Identifies a schedule that ends after a number of occurrences.
          example: AFTER
        value:
          type: integer
          format: int64
          minimum: 1
          description: Number of schedule occurrences after which the recurrence ends.
          example: 10
    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
    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
    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
      - TRAFFIC_INSIGHTS_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
      - TRAFFIC_INSIGHTS_MONITORING
      example: ENDPOINT_AGENTS
    LegacyApiDashboard:
      type: object
      deprecated: true
      properties:
        accountId:
          deprecated: true
          type: integer
          format: int64
          readOnly: true
          example: 1234
          description: Identifier for the account group associated with a dashboard.
        createdBy:
          deprecated: true
          type: integer
          format: int64
          readOnly: true
          example: 1
          description: Identifier for the user that created a dashboard.
        modifiedBy:
          deprecated: true
          type: integer
          format: int64
          readOnly: true
          example: 1
          description: Identifier for the user that last modified a dashboard.
        modifiedDate:
          deprecated: true
          type: string
          readOnly: true
          example: '2023-05-16 10:14:28'
          description: UTC date/time when a dashboard was last modified.
        globalOverride:
          deprecated: true
          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:
          deprecated: true
          type: boolean
          readOnly: true
          description: True if this dashboard was previously a report.
          example: false
        apiLink:
          deprecated: true
          type: array
          description: A links array containing the self and the snapshots links.
          items:
            type: object
            additionalProperties: true
    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'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    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
      - TRAFFIC_INSIGHTS_MONITORING
      example: CLOUD_AND_ENTERPRISE_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
      - TRAFFIC_INSIGHTS_MONITORING
      example: INTERNET_INSIGHTS
    LegacyDefaultTimespan:
      type: object
      deprecated: true
      properties:
        timespanDuration:
          deprecated: true
          type: integer
          format: int64
          description: Relative timespan in seconds.
          example: 7200
        timespanStart:
          deprecated: true
          type: string
          description: UTC start date of the timespan range.
          example: '2023-05-16 10:14:28'
        timespanEnd:
          deprecated: true
          type: string
          description: UTC end date of the timespan range.
          example: '2023-05-16 11:14:28'
    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'
    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
      - TRAFFIC_INSIGHTS_MONITORING
      example: ENDPOINT_AGENTS
    DashboardSchedule:
      description: Snapshot schedule for a dashboard. A `repeat` value of `NONE` represents a one-time schedule.
      type: object
      required:
      - cronSpec
      - dataSource
      - dataTimespan
      - flagEnabled
      properties:
        cronSpec:
          $ref: '#/components/schemas/DashboardScheduleCronSpec'
        dataSource:
          $ref: '#/components/schemas/DashboardScheduleDataSource'
        dataTimespan:
          $ref: '#/components/schemas/DashboardScheduleTimespan'
        flagEnabled:
          type: boolean
          description: When `true`, the schedule is active and snapshots are generated according to `cronSpec`.
          example: true
        flagLocked:
          type: boolean
          description: When `true`, the schedule configuration is locked and cannot be edited through the web application.
          example: false
        flagAutoShare:
          type: boolean
          description: When `true`, generated snapshots are automatically shared with schedule recipients.
          example: false
        flagIsIncludePiiUserData:
          type: boolean
          description: When `true`, generated snapshots include personally identifiable user data when permitted by account policy.
          example: false
        flagAttachPdfToEmail:
          type: boolean
          description: When `true`, a PDF attachment is included in snapshot notification emails.
          example: true
        recipients:
          type: array
          description: Email addresses of active dashboard account users who receive snapshot notifications.
          items:
            type: string
            format: email
          example:
          - alice@example.com
          - bob@example.com
        expiresAfter:
          type: integer
          format: int64
          minimum: 86400
          maximum: 157680000
          description: Snapshot retention period in seconds. Allowed range is 24 hours to 5 years.
          example: 157680000
        nextDate:
          type: string
          format: date-time
          readOnly: true
          description: UTC date of the next scheduled snapshot run. Computed by the server.
          example: '2026-10-01T07:00:00Z'
    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
      - api
      - 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
    DashboardScheduleNonCustomCronSpec:
      type: object
      not:
        required:
        - customRepeat
      properties:
        repeat:
          $ref: '#/components/schemas/DashboardScheduleNonCustomRepeat'
    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
      - TRAFFIC_INSIGHTS_MONITORING
      example: ENDPOINT_AGENTS
    DashboardScheduleDateEndCondition:
      type: object
      required:
      - endConditionType
      - value
      properties:
        endConditionType:
          type: string
          pattern: ^DATE$
          description: Identifies a schedule that ends on a specified date.
          example: DATE
        value:
          type: integer
          format: int64
          minimum: 0
          description: Unix timestamp in seconds when the recurrence ends.
          example: 1753200000
    AlertListWidgetType:
      type: string
      pattern: ^Alert List$
      description: Alert List widget type.
      example: Alert List
    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
    MapWidgetType:
      type: string
      pattern: ^Map$
      description: Map widget type.
      example: Map
    WidgetSortDirection:
      $ref: '#/components/schemas/LegacyWidgetSortDirection'
    LegacyWidgetSortProperty:
      type: string
      deprecated: true
      description: Determines the card sorting criterion.
      example: Alphabetical
      enum:
      - Alphabetical
      - Value
    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
   

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