ThousandEyes Dashboard Snapshots API

Dashboard Snapshots CRUD operations

Operations 6

GET /dashboard-snapshots List dashboard snapshots #
POST /dashboard-snapshots Create dashboard snapshot #
GET /dashboard-snapshots/{snapshotId} Retrieve dashboard snapshot #
PATCH /dashboard-snapshots/{snapshotId} Update snapshot expiration #
DELETE /dashboard-snapshots/{snapshotId} Delete dashboard snapshot #
GET /dashboard-snapshots/{snapshotId}/widgets/{widgetId} Retrieve dashboard snapshot data #

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-dashboard-snapshots-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-dashboard-snapshots-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 7.0.100
  title: Dashboards Dashboard Snapshots 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: Dashboard Snapshots
  description: Dashboard Snapshots CRUD operations
paths:
  /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'
    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'
  /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'
    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'
    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'
  /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'
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
    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
          items:
            $ref: '#/components/schemas/ApiAlertListAlert'
        summary:
          $ref: '#/components/schemas/ApiAgentStatusSummary'
        agents:
          type: array
          items:
            $ref: '#/components/schemas/ApiAgentStatusAgent'
        rows:
          $ref: '#/components/schemas/ApiListWidgetRows'
        legend:
          $ref: '#/components/schemas/ApiListWidgetLegend'
        status:
          $ref: '#/components/schemas/WidgetStatus'
    LegacyDashboardSnapshot:
      deprecated: true
      type: object
      properties:
        accountId:
          deprecated: true
          type: integer
          format: int64
          description: Identifier of the account group that the snapshot belongs to.
          example: 1234
        createdDate:
          deprecated: true
          type: string
          description: UTC date when dashboard snapshot was created.
          example: '2023-05-16 10:14:28'
        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'
        permalink:
          deprecated: true
          type: string
          description: Hyperlink to dashboard snapshot in ThousandEyes Application
          example: https://app.thousandeyes.com/dashboard/?snapshotId=d28bb71f-5a47-4783-8f12-d4b115e61b0c
        apiLinks:
          deprecated: true
          type: array
          description: A links array containing the self link.
          items:
            type: object
            additionalProperties: true
    ApiDuration:
      description: Specifies a fixed timespan for data aggregation.
      type: object
      properties:
        value:
          $ref: '#/components/schemas/DurationValue'
        unit:
          $ref: '#/components/schemas/LegacyDurationUnit'
    SelfLinks:
      type: object
      description: A links object containing the self link.
      readOnly: true
      properties:
        self:
          $ref: '#/components/schemas/Link'
    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'
    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
      - TRAFFIC_INSIGHTS_MONITORING-SUM
      - TRAFFIC_INSIGHTS_MONITORING-MEAN
    ListWidgetType:
      type: string
      pattern: ^List$
      description: List widget type. Currently supports only `List`.
      example: List
    EnterpriseAgentState:
      type: string
      description: State of the agent.
      enum:
      - online
      - offline
      - disabled
      example: online
      readOnly: true
    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'
        _links:
          $ref: '#/components/schemas/SelfLinks'
    ApiListWidget:
      type: object
      description: A widget that displays a list of items, such as events. It can use a time range to limit the items shown.
      allOf:
      - $ref: '#/components/schemas/Widget'
      - type: object
        required:
        - type
        properties:
          type:
            $ref: '#/components/schemas/ListWidgetType'
          sortDirection:
            $ref: '#/components/schemas/WidgetSortDirection'
          activeWithin:
            $ref: '#/components/schemas/ActiveWithin'
          dataSource:
            $ref: '#/components/schemas/ListDatasource'
    DashboardGlobalFilterId:
      properties:
        globalFilterId:
          type: string
          description: Default global dashboard filter ID (obtained from `/dashboards/filters` endpoint).
          example: 65babd9bb90bf55b17c96c8d
    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: {}
    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'
          _links:
            $ref: '

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