> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashduty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get dashboard revision

> Get one revision of a dashboard with its full definition.

## Restrictions

| Aspect | Value |
| - | - |
| Rate limits | **1,000 requests/minute**; **50 requests/second** per account |
| Permissions | Any valid `app_key` |

## Usage

* Reading a revision that has been pruned from the history returns HTTP 404.
* A dashboard in the trash returns HTTP 410 `DashboardDeleted`.


## OpenAPI

````yaml /api-reference/rum.openapi.en.json post /rum/dashboard/revisions/get
openapi: 3.1.0
info:
  description: >-
    Public HTTP API for the Flashduty incident management platform — incidents,
    notification templates, channels, schedules, monitors, RUM, and platform
    administration. Every operation is authenticated with an `app_key` query
    parameter created in the Flashduty console under My → APP Key (or sent in
    the `Fd-App-Key` header). Responses follow a uniform envelope: `{
    request_id, data }` on success, `{ request_id, error }` on failure.
  title: Flashduty Open API
  version: 1.0.0
servers:
  - description: Flashduty Open API
    url: https://api.flashcat.cloud
security:
  - AppKeyAuth: []
tags:
  - description: Manage Real User Monitoring (RUM) applications.
    name: RUM/Applications
  - description: Run RUM analytics queries over event data.
    name: RUM/Data query
  - description: Query and manage RUM error tracking issues and preset severity rules.
    name: RUM/Issues
  - description: >-
      Query RUM facet fields and their value distributions for building
      analytics filters.
    name: RUM/Facets
  - description: >-
      Manage and query RUM sourcemap files for browser, Android, and iOS error
      symbolication.
    name: RUM/Sourcemaps
  - description: Retrieve session replay metadata and recorded segments for RUM sessions.
    name: RUM/Session replay
  - description: >-
      Configure and inspect the rules that decide which RUM errors get ingested
      and stored for an application, including their edit history.
    name: RUM/Error ingestion rules
  - description: >-
      Manage per-application rules that assign a severity to matching front-end
      errors, plus their evaluation order and change history.
    name: RUM/Issue preset severity rules
  - description: Query the RUM resource record and current usage for the account.
    name: RUM/Resources
  - description: >-
      Create and manage RUM custom dashboards, their revision history and the
      trash.
    name: RUM/Dashboards
paths:
  /rum/dashboard/revisions/get:
    post:
      tags:
        - RUM/Dashboards
      summary: Get dashboard revision
      description: Get one revision of a dashboard with its full definition.
      operationId: rum-dashboard-read-revision-get
      requestBody:
        content:
          application/json:
            example:
              dashboard_id: 0192f3a4-5b6c-7d8e-9f01-234567890abc
              revision: 3
            schema:
              $ref: '#/components/schemas/RumDashboardRevisionGetRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  actor:
                    id: 2477033058177
                    name: Mei Lin
                  created_at: 1792404240000
                  dashboard_id: 0192f3a4-5b6c-7d8e-9f01-234567890abc
                  definition:
                    default_time_range:
                      from: now-1h
                      to: now
                    description: Loading time and error rate of the storefront.
                    refresh_interval: 1m
                    tabs:
                      - id: 0192f3a4-5b6c-7d8e-9f01-234567890abd
                        sections:
                          - collapsed: false
                            id: 0192f3a4-5b6c-7d8e-9f01-234567890abe
                            panels:
                              - datasource_ref:
                                  datasource_type: rum
                                  kind: fixed
                                grid:
                                  h: 8
                                  w: 16
                                  x: 0
                                  'y': 4
                                id: 0192f3a4-5b6c-7d8e-9f01-234567890ac0
                                queries:
                                  - query:
                                      args:
                                        agg: p95
                                        application_id: qLpu24Dz4CAzWsESPbJYWA
                                        draw_style: bar
                                        field: view.loading_time
                                        group_by: view.url_path
                                        limit: '20'
                                        scope: view
                                      expr: page:${page}
                                      min_step_seconds: 60
                                      mode: range
                                    ref_id: A
                                title: Slowest pages by p95
                                viz_config:
                                  column_options:
                                    A:
                                      display_name: p95
                                      threshold:
                                        critical: 3000
                                        mode: higher_is_worse
                                        warning: 1500
                                      threshold_display: background
                                      unit: milliseconds
                                    view.url_path:
                                      display_name: Page
                                      width_px: 320
                                  kind: table
                                  link_columns:
                                    - dashboard_id: 0192f3a4-5b6c-7d8e-9f01-234567890ac1
                                      pass_time: true
                                      variable_mappings:
                                        page:
                                          column: view.url_path
                                          source: row_column
                                  options:
                                    dense: true
                                  sort:
                                    - direction: desc
                                      field: A
                            title: Slowest pages
                        title: Overview
                        top_panels:
                          - datasource_ref:
                              datasource_type: rum
                              kind: fixed
                            grid:
                              h: 4
                              w: 8
                              x: 0
                              'y': 0
                            id: 0192f3a4-5b6c-7d8e-9f01-234567890abf
                            queries:
                              - legend_alias: p95 loading time
                                query:
                                  args:
                                    agg: p95
                                    application_id: qLpu24Dz4CAzWsESPbJYWA
                                    field: view.loading_time
                                    scope: view
                                  expr: env:${env}
                                  min_step_seconds: 60
                                  mode: range
                                ref_id: A
                            title: p95 loading time
                            viz_config:
                              decimals: 0
                              kind: stat
                              options:
                                sparkline: true
                              reducer: max
                              unit: milliseconds
                              value_fields:
                                - view.loading_time
                    title: Web performance overview
                    variables:
                      - default:
                          kind: all
                        kind: custom
                        label: Environment
                        name: env
                        options:
                          - text: Production
                            value: prod
                          - text: Staging
                            value: staging
                        selection:
                          include_all: true
                          mode: multi
                      - datasource_ref:
                          datasource_type: rum
                          kind: fixed
                        default:
                          kind: values
                          values:
                            - /checkout
                        kind: query
                        label: Page
                        name: page
                        refresh: on_dashboard_load
                        selection:
                          include_all: false
                          mode: single
                        variable_query:
                          field: view.url_path
                          kind: rum_field
                  message: Raise the p95 threshold
                  revision: 3
                  schema_version: dashboard.v1
                request_id: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
              schema:
                allOf:
                  - $ref: '#/components/schemas/SuccessEnvelope'
                  - properties:
                      data:
                        $ref: '#/components/schemas/RumDashboardRevisionResource'
                    type: object
          description: Success
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The dashboard or the revision does not exist; old revisions are
            pruned. HTTP 404 `DashboardNotFound`.
        '410':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The dashboard is in the trash. HTTP 410 `DashboardDeleted`.
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/ServerError'
components:
  schemas:
    RumDashboardRevisionGetRequest:
      description: Request for one revision of a dashboard.
      properties:
        dashboard_id:
          description: Dashboard ID, a canonical UUIDv7.
          pattern: >-
            ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        revision:
          description: Revision number to read. Must be at least 1.
          minimum: 1
          type: integer
      required:
        - dashboard_id
        - revision
      type: object
    SuccessEnvelope:
      description: >-
        Success response envelope. On every 2xx response, `request_id`
        identifies the call (also mirrored in the `Flashcat-Request-Id` header)
        and `data` holds the endpoint-specific payload. Failure responses use a
        different shape — see `ErrorResponse`.
      properties:
        data:
          description: >-
            Operation-specific payload, documented in each operation's 200
            response. Operations without a payload return `{}` or omit `data`
            entirely.
        request_id:
          description: >-
            Unique ID for this request. Mirrored in the Flashcat-Request-Id
            response header. Include it when reporting issues.
          example: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
          type: string
      required:
        - request_id
      type: object
    RumDashboardRevisionResource:
      description: One revision with its full definition.
      properties:
        dashboard_id:
          description: Dashboard ID, a canonical UUIDv7.
          pattern: >-
            ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        schema_version:
          description: Wire schema of the definition. Always `dashboard.v1`.
          enum:
            - dashboard.v1
          type: string
        revision:
          description: Revision number.
          minimum: 1
          type: integer
        definition:
          $ref: '#/components/schemas/RumDashboardDefinition'
        message:
          description: Change message supplied with the update, at most 1024 characters.
          maxLength: 1024
          type: string
        actor:
          $ref: '#/components/schemas/RumDashboardActor'
        created_at:
          description: Creation time of this revision as a Unix timestamp in milliseconds.
          format: int64
          type: integer
      required:
        - dashboard_id
        - schema_version
        - revision
        - definition
        - actor
        - created_at
      type: object
    ErrorResponse:
      description: Response envelope for errors. `error` is required; `data` is absent.
      properties:
        error:
          $ref: '#/components/schemas/DutyError'
        request_id:
          description: >-
            Unique trace ID of this request; include it when reporting issues so
            logs can be located.
          example: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
          type: string
      required:
        - request_id
        - error
      type: object
    RumDashboardDefinition:
      description: >-
        The dashboard body: title, default time range, variables, and tabs. A
        dashboard is capped at 10 tabs, 100 panels and 300 queries. A tab holds
        at most 30 panels and 100 queries, top panels and sections together.
      properties:
        title:
          description: Dashboard title, 1–189 characters.
          type: string
        description:
          description: Dashboard description, at most 1024 characters.
          maxLength: 1024
          type: string
        default_time_range:
          $ref: '#/components/schemas/RumDashboardRelativeTimeRange'
        refresh_interval:
          description: >-
            Auto-refresh interval of the dashboard. One of `off`, `30s`, `1m`,
            `5m`.
          enum:
            - 'off'
            - 30s
            - 1m
            - 5m
          type: string
        variables:
          description: >-
            Variable bar entries, at most 20. The built-in `app` switch is not
            declared here.
          items:
            $ref: '#/components/schemas/RumDashboardVariable'
          maxItems: 20
          type: array
        tabs:
          description: Tabs of the dashboard, 1–10.
          items:
            $ref: '#/components/schemas/RumDashboardTab'
          maxItems: 10
          type: array
      required:
        - title
        - default_time_range
        - refresh_interval
        - variables
        - tabs
      type: object
    RumDashboardActor:
      description: Person who created or last changed the dashboard or a revision.
      properties:
        id:
          description: Person ID.
          format: int64
          type: integer
        name:
          description: Person name.
          type: string
      required:
        - id
        - name
      type: object
    DutyError:
      description: >-
        Error payload inside the response envelope. Present only on non-2xx
        responses.
      properties:
        code:
          $ref: '#/components/schemas/ErrorCode'
        message:
          type: string
          description: >-
            Human-readable error message in the response language (`locale` /
            `lang` query parameter or `Accept-Language` header). May name the
            offending field; do not parse it.
          example: The specified parameter template_id is not valid.
      required:
        - code
        - message
      type: object
    RumDashboardRelativeTimeRange:
      description: >-
        Time range a dashboard opens with. `from` is a relative offset and `to`
        is fixed at `now`.
      properties:
        from:
          description: >-
            Relative start of the default time range. One of `now-15m`,
            `now-30m`, `now-1h`, `now-3h`, `now-6h`, `now-12h`, `now-24h`,
            `now-7d`.
          enum:
            - now-15m
            - now-30m
            - now-1h
            - now-3h
            - now-6h
            - now-12h
            - now-24h
            - now-7d
          type: string
        to:
          description: End of the range. Always `now`.
          enum:
            - now
          type: string
      required:
        - from
        - to
      type: object
    RumDashboardVariable:
      description: >-
        One entry of the variable bar. The `kind` field selects the shape:
        `custom` carries a fixed option list, `query` reads the values of a RUM
        field.
      discriminator:
        propertyName: kind
      oneOf:
        - $ref: '#/components/schemas/RumDashboardCustomVariable'
        - $ref: '#/components/schemas/RumDashboardQueryVariable'
    RumDashboardTab:
      description: >-
        One tab of the dashboard. At most 30 panels and 100 queries, top panels
        and sections together.
      properties:
        id:
          description: Tab ID, a canonical UUIDv7, unique in the dashboard.
          pattern: >-
            ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        title:
          description: Tab title, 1–189 characters.
          type: string
        description:
          description: Tab description, at most 1024 characters.
          maxLength: 1024
          type: string
        top_panels:
          description: Panels pinned above the sections.
          items:
            $ref: '#/components/schemas/RumDashboardPanel'
          type: array
        sections:
          description: Sections of the tab, at most 10.
          items:
            $ref: '#/components/schemas/RumDashboardSection'
          maxItems: 10
          type: array
      required:
        - id
        - title
        - top_panels
        - sections
      type: object
    ErrorCode:
      description: >-
        Error code. Every failed response sets `error.code` to one of these
        stable strings; branch on it rather than on the HTTP status.


        | Code | HTTP | Meaning |

        |---|---|---|

        | `OK` | 200 | Reserved; never returned on a failed request. |

        | `InvalidParameter` | 400 | A parameter is missing, has the wrong type,
        or failed validation; `message` usually names the field. |

        | `BadRequest` | 400 | The request breaks a business rule or conflicts
        with the current state of an object; `message` says which. |

        | `InvalidContentType` | 400 | The body is not sent as
        `application/json`. |

        | `ResourceNotFound` | 400 | The referenced object does not exist in
        this account or was deleted. Returned as HTTP 400, not 404. |

        | `NoLicense` | 400 | The account's plan does not include the feature, a
        plan quota is used up, the plan has expired, or credits are
        insufficient. |

        | `ReferenceExist` | 400 | The object is still referenced by other
        objects, so it cannot be deleted. |

        | `Unauthorized` | 401 | The APP Key is missing, invalid, or deleted. |

        | `BalanceNotEnough` | 402 | Console-only (billing); not returned by
        Open API operations. |

        | `AccessDenied` | 403 | The APP Key's permission scope or the creator's
        role does not allow this operation or object. |

        | `RouteNotFound` | 404 | No operation matches the HTTP method and path.
        |

        | `MethodNotAllowed` | 405 | The path exists but not for this HTTP
        method. |

        | `UndonedOrderExist` | 409 | Console-only (billing); not returned by
        Open API operations. |

        | `EntityTooLarge` | 413 | The request body exceeds the size limit. |

        | `RequestLocked` | 423 | Console-only (sign-in protection); not
        returned by Open API operations. |

        | `RequestVerifyRequired` | 428 | Console-only (verification code); not
        returned by Open API operations. |

        | `DangerousOperation` | 428 | Console-only (MFA for high-risk actions);
        not returned by Open API operations. |

        | `RequestTooFrequently` | 429 | A rate limit was hit; wait for the
        `Flashcat-Request-Rate-Limit-Delay` response header (seconds) before
        retrying. |

        | `InternalError` | 500 | Unexpected server error; retry with backoff
        and include `request_id` when reporting. |

        | `ServiceUnavailable` | 503 | A backend dependency is overloaded or
        unavailable; retry with backoff. |
      enum:
        - OK
        - InvalidParameter
        - BadRequest
        - InvalidContentType
        - ResourceNotFound
        - NoLicense
        - ReferenceExist
        - Unauthorized
        - BalanceNotEnough
        - AccessDenied
        - RouteNotFound
        - MethodNotAllowed
        - UndonedOrderExist
        - EntityTooLarge
        - RequestLocked
        - RequestVerifyRequired
        - DangerousOperation
        - RequestTooFrequently
        - InternalError
        - ServiceUnavailable
      example: InvalidParameter
      type: string
      x-enumDescriptions:
        OK: Reserved; never returned on a failed request.
        InvalidParameter: >-
          A parameter is missing, has the wrong type, or failed validation;
          `message` usually names the field.
        BadRequest: >-
          The request breaks a business rule or conflicts with the current state
          of an object; `message` says which.
        InvalidContentType: The body is not sent as `application/json`.
        ResourceNotFound: >-
          The referenced object does not exist in this account or was deleted.
          Returned as HTTP 400, not 404.
        NoLicense: >-
          The account's plan does not include the feature, a plan quota is used
          up, the plan has expired, or credits are insufficient.
        ReferenceExist: >-
          The object is still referenced by other objects, so it cannot be
          deleted.
        Unauthorized: The APP Key is missing, invalid, or deleted.
        BalanceNotEnough: Console-only (billing); not returned by Open API operations.
        AccessDenied: >-
          The APP Key's permission scope or the creator's role does not allow
          this operation or object.
        RouteNotFound: No operation matches the HTTP method and path.
        MethodNotAllowed: The path exists but not for this HTTP method.
        UndonedOrderExist: Console-only (billing); not returned by Open API operations.
        EntityTooLarge: The request body exceeds the size limit.
        RequestLocked: >-
          Console-only (sign-in protection); not returned by Open API
          operations.
        RequestVerifyRequired: Console-only (verification code); not returned by Open API operations.
        DangerousOperation: >-
          Console-only (MFA for high-risk actions); not returned by Open API
          operations.
        RequestTooFrequently: >-
          A rate limit was hit; wait for the `Flashcat-Request-Rate-Limit-Delay`
          response header (seconds) before retrying.
        InternalError: >-
          Unexpected server error; retry with backoff and include `request_id`
          when reporting.
        ServiceUnavailable: A backend dependency is overloaded or unavailable; retry with backoff.
    RumDashboardCustomVariable:
      description: Variable whose options are a fixed list.
      properties:
        kind:
          description: Variable kind. Always `custom`.
          enum:
            - custom
          type: string
        name:
          description: >-
            Variable name, referenced as `${name}` in panel queries. 1–64
            characters starting with a letter or underscore. `app` and names
            starting with `__` are reserved; names must be unique.
          pattern: ^[A-Za-z_][A-Za-z0-9_]{0,63}$
          type: string
        label:
          description: Label shown in the variable bar, 1-189 characters when set.
          type: string
        selection:
          $ref: '#/components/schemas/RumDashboardSelectionConfig'
        options:
          description: Fixed list of options, 1–1000 entries with unique `value`s.
          items:
            $ref: '#/components/schemas/RumDashboardCandidate'
          type: array
        default:
          $ref: '#/components/schemas/RumDashboardSelection'
      required:
        - kind
        - name
        - selection
        - options
      type: object
    RumDashboardQueryVariable:
      description: Variable whose options are the values of a RUM field.
      properties:
        kind:
          description: Variable kind. Always `query`.
          enum:
            - query
          type: string
        name:
          description: >-
            Variable name, referenced as `${name}` in panel queries. 1–64
            characters starting with a letter or underscore. `app` and names
            starting with `__` are reserved; names must be unique.
          pattern: ^[A-Za-z_][A-Za-z0-9_]{0,63}$
          type: string
        label:
          description: >-
            Label shown in the variable bar, 1-189 characters when set. When
            omitted, the console shows the field's display name.
          type: string
        selection:
          $ref: '#/components/schemas/RumDashboardSelectionConfig'
        default:
          $ref: '#/components/schemas/RumDashboardSelection'
        datasource_ref:
          $ref: '#/components/schemas/RumDashboardDatasourceRef'
        variable_query:
          $ref: '#/components/schemas/RumDashboardVariableQuery'
        refresh:
          description: >-
            When the candidates are re-read: `on_dashboard_load` or
            `on_time_range_change`.
          enum:
            - on_dashboard_load
            - on_time_range_change
          type: string
      required:
        - kind
        - name
        - selection
        - datasource_ref
        - variable_query
        - refresh
      type: object
    RumDashboardPanel:
      description: One panel of a tab.
      properties:
        id:
          description: Panel ID, a canonical UUIDv7, unique in the dashboard.
          pattern: >-
            ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        title:
          description: Panel title, 1–189 characters.
          type: string
        description:
          description: Panel description, at most 1024 characters.
          maxLength: 1024
          type: string
        grid:
          $ref: '#/components/schemas/RumDashboardGridPosition'
        datasource_ref:
          $ref: '#/components/schemas/RumDashboardDatasourceRef'
          description: Required for every panel kind except `text`, which must omit it.
        queries:
          description: >-
            Queries of the panel, each with a unique `ref_id`. `time_series` and
            `top_list` take 1-26 queries, `table`, `stat` and `bar` exactly 1,
            `text` none.
          items:
            $ref: '#/components/schemas/RumDashboardPanelQuery'
          maxItems: 26
          type: array
        viz_config:
          $ref: '#/components/schemas/RumDashboardVizConfig'
      required:
        - id
        - title
        - grid
        - queries
        - viz_config
      type: object
    RumDashboardSection:
      description: Collapsible section inside a tab.
      properties:
        id:
          description: Section ID, a canonical UUIDv7, unique in the dashboard.
          pattern: >-
            ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        title:
          description: Section title, 1–189 characters.
          type: string
        description:
          description: Section description, at most 1024 characters.
          maxLength: 1024
          type: string
        collapsed:
          description: Whether the section starts collapsed.
          type: boolean
        panels:
          description: Panels of the section.
          items:
            $ref: '#/components/schemas/RumDashboardPanel'
          type: array
      required:
        - id
        - title
        - collapsed
        - panels
      type: object
    RumDashboardSelectionConfig:
      description: How the variable bar lets the viewer pick values.
      properties:
        mode:
          description: '`single` allows one value, `multi` allows several.'
          enum:
            - single
            - multi
          type: string
        include_all:
          description: >-
            Whether an `All` entry is offered, which a selection of kind `all`
            requires.
          type: boolean
      required:
        - mode
      type: object
    RumDashboardCandidate:
      description: One option of a custom variable.
      properties:
        text:
          description: >-
            Label shown in the variable bar. Defaults to `value` when empty. At
            most 1024 characters.
          type: string
        value:
          description: >-
            Value substituted into the query, 1-1024 characters. Cannot be
            `$__all`.
          type: string
      required:
        - value
      type: object
    RumDashboardSelection:
      description: A variable's selected value(s).
      properties:
        kind:
          description: >-
            `values` selects the listed values; `all` selects everything and
            must carry no values.
          enum:
            - values
            - all
          type: string
        values:
          description: >-
            Selected values. Required for kind `values`, forbidden for kind
            `all`. Must be non-empty and unique, and none may equal `$__all`.
            With selection `mode` `single`, exactly one value.
          items:
            description: One allowed value.
            type: string
          type: array
      required:
        - kind
      type: object
    RumDashboardDatasourceRef:
      description: >-
        Datasource a panel or query variable reads. RUM dashboards only read the
        built-in RUM datasource, so the reference is always fixed.
      properties:
        kind:
          description: Reference kind. Always `fixed`.
          enum:
            - fixed
          type: string
        datasource_type:
          description: Datasource type. Always `rum`.
          enum:
            - rum
          type: string
        datasource_id:
          description: Reserved, and always `0` for the built-in RUM datasource.
          enum:
            - 0
          type: integer
      required:
        - kind
        - datasource_type
      type: object
    RumDashboardVariableQuery:
      description: >-
        Where a query variable takes its candidates from. RUM lists the values
        of one RUM field.
      properties:
        kind:
          description: Query kind. Always `rum_field`.
          enum:
            - rum_field
          type: string
        field:
          description: RUM field key whose values become the candidates.
          type: string
      required:
        - kind
        - field
      type: object
    RumDashboardGridPosition:
      description: >-
        Panel position on the tab's 24-column grid. `x + w` must not exceed 24.
        Panels in the same `top_panels` list or the same section must not
        overlap.
      properties:
        x:
          description: Zero-based column of the left edge, 0–23.
          minimum: 0
          type: integer
        'y':
          description: Zero-based row of the top edge.
          minimum: 0
          type: integer
        w:
          description: Width in columns, 1–24.
          maximum: 24
          minimum: 1
          type: integer
        h:
          description: Height in rows, 1–100.
          maximum: 100
          minimum: 1
          type: integer
      required:
        - x
        - 'y'
        - w
        - h
      type: object
    RumDashboardPanelQuery:
      description: One query inside a panel, identified by a single-letter reference.
      properties:
        ref_id:
          description: >-
            Query reference, a single uppercase letter `A`–`Z`, unique within
            the panel.
          pattern: ^[A-Z]$
          type: string
        query:
          $ref: '#/components/schemas/RumDashboardQuery'
        legend_alias:
          description: Legend label for the query's series. At most 1024 characters.
          maxLength: 1024
          type: string
      required:
        - ref_id
        - query
      type: object
    RumDashboardVizConfig:
      description: >-
        How a panel renders its queries. The `kind` field selects one of six
        shapes: `time_series`, `table`, `stat`, `bar`, `top_list`, `text`.
      discriminator:
        propertyName: kind
      oneOf:
        - $ref: '#/components/schemas/RumDashboardTimeSeriesViz'
        - $ref: '#/components/schemas/RumDashboardTableViz'
        - $ref: '#/components/schemas/RumDashboardStatViz'
        - $ref: '#/components/schemas/RumDashboardBarViz'
        - $ref: '#/components/schemas/RumDashboardTopListViz'
        - $ref: '#/components/schemas/RumDashboardTextViz'
    RumDashboardQuery:
      description: >-
        One analytics question of a panel: a DQL filter plus the analytics spec
        and the application it reads.
      properties:
        mode:
          description: Query mode. Always `range`.
          enum:
            - range
          type: string
        expr:
          description: >-
            DQL filter over the RUM events of the scope. At most 16 KiB.
            `${name}` must name a variable declared in the dashboard; formatters
            such as `${name:fmt}` and a bare `$name` are rejected.
          maxLength: 16384
          type: string
        args:
          $ref: '#/components/schemas/RumDashboardQueryArgs'
        min_step_seconds:
          description: Minimum step of the series in seconds; a duration, not a timestamp.
          format: int64
          minimum: 1
          type: integer
      required:
        - mode
        - expr
        - args
      type: object
    RumDashboardTimeSeriesViz:
      description: Line or area chart over time.
      properties:
        kind:
          description: Panel kind. Always `time_series`.
          enum:
            - time_series
          type: string
        options:
          additionalProperties: {}
          description: Free-form display options stored with the panel; not validated.
          type: object
        unit:
          description: >-
            Display unit of the panel value. One of `unitless`, `ratio`,
            `percent`, `milliseconds`, `seconds`, `bytes`, `bits`,
            `count_per_second`, `bytes_per_second`, `bits_per_second`.
          enum:
            - unitless
            - ratio
            - percent
            - milliseconds
            - seconds
            - bytes
            - bits
            - count_per_second
            - bytes_per_second
            - bits_per_second
          type: string
        decimals:
          description: Number of decimal places to show.
          maximum: 15
          minimum: 0
          type: integer
        threshold:
          $ref: '#/components/schemas/RumDashboardThreshold'
      required:
        - kind
        - options
      type: object
    RumDashboardTableViz:
      description: Table of grouped rows.
      properties:
        kind:
          description: Panel kind. Always `table`.
          enum:
            - table
          type: string
        options:
          additionalProperties: {}
          description: Free-form display options stored with the panel; not validated.
          type: object
        column_options:
          additionalProperties:
            $ref: '#/components/schemas/RumDashboardColumnOption'
          description: Per-column presentation, keyed by column name. At most 100 columns.
          type: object
        sort:
          description: Initial sort order of the table.
          items:
            $ref: '#/components/schemas/RumDashboardFieldSort'
          type: array
        link_columns:
          description: >-
            Data links rendered as extra columns. Together with the `data_link`s
            in `column_options`, at most 5 per table.
          items:
            $ref: '#/components/schemas/RumDashboardDataLink'
          type: array
      required:
        - kind
        - options
      type: object
    RumDashboardStatViz:
      description: Single reduced value.
      properties:
        kind:
          description: Panel kind. Always `stat`.
          enum:
            - stat
          type: string
        options:
          additionalProperties: {}
          description: Free-form display options stored with the panel; not validated.
          type: object
        unit:
          description: >-
            Display unit of the panel value. One of `unitless`, `ratio`,
            `percent`, `milliseconds`, `seconds`, `bytes`, `bits`,
            `count_per_second`, `bytes_per_second`, `bits_per_second`.
          enum:
            - unitless
            - ratio
            - percent
            - milliseconds
            - seconds
            - bytes
            - bits
            - count_per_second
            - bytes_per_second
            - bits_per_second
          type: string
        decimals:
          description: Number of decimal places to show.
          maximum: 15
          minimum: 0
          type: integer
        threshold:
          $ref: '#/components/schemas/RumDashboardThreshold'
        value_fields:
          description: >-
            Field keys whose values are reduced into the displayed number. Must
            be non-empty with unique names; `frame_index` and `field_index` are
            not allowed.
          items:
            description: Field key.
            type: string
          type: array
        reducer:
          description: >-
            How the series are reduced to one value. One of `last_non_null`,
            `min`, `max`, `mean`, `sum`.
          enum:
            - last_non_null
            - min
            - max
            - mean
            - sum
          type: string
      required:
        - kind
        - options
        - value_fields
        - reducer
      type: object
    RumDashboardBarViz:
      description: Category bars built from grouped series.
      properties:
        kind:
          description: Panel kind. Always `bar`.
          enum:
            - bar
          type: string
        options:
          additionalProperties: {}
          description: Free-form display options stored with the panel; not validated.
          type: object
        unit:
          description: >-
            Display unit of the panel value. One of `unitless`, `ratio`,
            `percent`, `milliseconds`, `seconds`, `bytes`, `bits`,
            `count_per_second`, `bytes_per_second`, `bits_per_second`.
          enum:
            - unitless
            - ratio
            - percent
            - milliseconds
            - seconds
            - bytes
            - bits
            - count_per_second
            - bytes_per_second
            - bits_per_second
          type: string
        decimals:
          description: Number of decimal places to show.
          maximum: 15
          minimum: 0
          type: integer
        threshold:
          $ref: '#/components/schemas/RumDashboardThreshold'
        category_field:
          description: Field key that supplies the category axis.
          type: string
        value_fields:
          description: >-
            Field keys plotted as bars. Must be non-empty with unique names;
            `frame_index` and `field_index` are not allowed.
          items:
            description: Field key.
            type: string
          type: array
        data_link:
          $ref: '#/components/schemas/RumDashboardDataLink'
      required:
        - kind
        - options
        - category_field
        - value_fields
      type: object
    RumDashboardTopListViz:
      description: Ranked bar list of reduced series.
      properties:
        kind:
          description: Panel kind. Always `top_list`.
          enum:
            - top_list
          type: string
        options:
          additionalProperties: {}
          description: Free-form display options stored with the panel; not validated.
          type: object
        unit:
          description: >-
            Display unit of the panel value. One of `unitless`, `ratio`,
            `percent`, `milliseconds`, `seconds`, `bytes`, `bits`,
            `count_per_second`, `bytes_per_second`, `bits_per_second`.
          enum:
            - unitless
            - ratio
            - percent
            - milliseconds
            - seconds
            - bytes
            - bits
            - count_per_second
            - bytes_per_second
            - bits_per_second
          type: string
        decimals:
          description: Number of decimal places to show.
          maximum: 15
          minimum: 0
          type: integer
        threshold:
          $ref: '#/components/schemas/RumDashboardThreshold'
        reducer:
          description: >-
            How the series are reduced to one value. One of `last_non_null`,
            `min`, `max`, `mean`, `sum`.
          enum:
            - last_non_null
            - min
            - max
            - mean
            - sum
          type: string
        sort:
          description: 'Ranking direction: `asc` or `desc`.'
          enum:
            - asc
            - desc
          type: string
        limit:
          description: Number of entries shown, 1–100. Omit to show all.
          maximum: 100
          minimum: 1
          type: integer
      required:
        - kind
        - options
        - reducer
        - sort
      type: object
    RumDashboardTextViz:
      description: Markdown text block.
      properties:
        kind:
          description: Panel kind. Always `text`.
          enum:
            - text
          type: string
        options:
          additionalProperties: {}
          description: Free-form display options stored with the panel; not validated.
          type: object
        markdown:
          description: >-
            Markdown body, at most 64 KiB. Text panels take no datasource or
            query. Images, raw HTML and `${` templates are rejected; links must
            be HTTPS or start with `/`.
          maxLength: 65536
          type: string
      required:
        - kind
        - options
        - markdown
      type: object
    RumDashboardQueryArgs:
      additionalProperties: false
      description: >-
        The analytics spec of a query: which scope, aggregation, field and
        grouping it reads. Unknown keys are rejected.
      properties:
        scope:
          description: >-
            RUM explorer scope the query reads. One of `session`, `view`,
            `resource`, `action`, `error`, `long_task`, `vital`.
          enum:
            - session
            - view
            - resource
            - action
            - error
            - long_task
            - vital
          type: string
        agg:
          description: >-
            Aggregation applied to the scope. One of `count`, `count_distinct`,
            `avg`, `sum`, `min`, `max`, `p50`, `p75`, `p90`, `p95`, `p99`.
          enum:
            - count
            - count_distinct
            - avg
            - sum
            - min
            - max
            - p50
            - p75
            - p90
            - p95
            - p99
          type: string
        field:
          description: Field key the aggregation reads. Required unless `agg` is `count`.
          type: string
        group_by:
          description: >-
            Field key to group by, 1-255 characters. Cannot be an event ID such
            as `session_id` or `view_id`. For a high-cardinality field, `agg`
            must be `count` or `sum`.
          maxLength: 255
          type: string
        limit:
          description: Maximum number of series returned. One of `5`, `10`, `20`, `50`.
          enum:
            - '5'
            - '10'
            - '20'
            - '50'
          type: string
        draw_style:
          description: 'How the series is drawn: `line` or `bar`.'
          enum:
            - line
            - bar
          type: string
        application_id:
          description: >-
            Application the query reads: a concrete application ID, or `$app` to
            follow the application selected on the dashboard. Required, at most
            64 characters. Saving fails if the application does not exist or you
            cannot read it.
          maxLength: 64
          type: string
      required:
        - scope
        - agg
        - application_id
      type: object
    RumDashboardThreshold:
      description: >-
        Warning/critical thresholds drawn on a numeric panel. At least one of
        `warning` and `critical` is required.
      properties:
        mode:
          description: 'Which direction is worse: `higher_is_worse` or `lower_is_worse`.'
          enum:
            - higher_is_worse
            - lower_is_worse
          type: string
        warning:
          description: >-
            Warning threshold. Not above `critical` when `mode` is
            `higher_is_worse`, not below it otherwise.
          type: number
        critical:
          description: Critical threshold.
          type: number
      required:
        - mode
      type: object
    RumDashboardColumnOption:
      description: Per-column presentation of a table panel.
      properties:
        display_name:
          description: Column header. Defaults to the field key when empty.
          type: string
        hidden:
          description: >-
            Whether the column is hidden. `false` hides nothing; omit to
            inherit.
          type:
            - boolean
            - 'null'
        width_px:
          description: Column width in pixels, 80-1200.
          type:
            - integer
            - 'null'
          minimum: 80
          maximum: 1200
        unit:
          description: >-
            Display unit of the panel value. One of `unitless`, `ratio`,
            `percent`, `milliseconds`, `seconds`, `bytes`, `bits`,
            `count_per_second`, `bytes_per_second`, `bits_per_second`.
          enum:
            - unitless
            - ratio
            - percent
            - milliseconds
            - seconds
            - bytes
            - bits
            - count_per_second
            - bytes_per_second
            - bits_per_second
          type: string
        threshold:
          $ref: '#/components/schemas/RumDashboardThreshold'
        threshold_display:
          description: >-
            How the threshold is drawn: `text` colours the value, `background`
            colours the cell.
          enum:
            - text
            - background
          type: string
        data_link:
          $ref: '#/components/schemas/RumDashboardDataLink'
      type: object
    RumDashboardFieldSort:
      description: Sort order of a table column.
      properties:
        field:
          description: Field key to sort by.
          type: string
        direction:
          description: 'Sort direction: `asc` or `desc`.'
          enum:
            - asc
            - desc
          type: string
      required:
        - field
        - direction
      type: object
    RumDashboardDataLink:
      description: Link from a panel cell to another dashboard.
      properties:
        dashboard_id:
          description: Target dashboard ID, a canonical UUIDv7.
          pattern: >-
            ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        target_id:
          description: >-
            Target tab or panel ID inside the dashboard, a canonical UUIDv7 when
            set.
          pattern: >-
            ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        pass_time:
          description: Whether the current time range is forwarded.
          type: boolean
        variable_mappings:
          additionalProperties:
            $ref: '#/components/schemas/RumDashboardLinkMapping'
          description: Target variable name to its mapping.
          type: object
      required:
        - dashboard_id
        - pass_time
        - variable_mappings
      type: object
    RumDashboardLinkMapping:
      description: >-
        How one variable of the target dashboard is filled when the link is
        followed.
      properties:
        source:
          description: >-
            Where the value comes from: `variable` (another variable),
            `row_column` (the clicked row's column), or for bar panels
            `category`, `series`, `value`.
          enum:
            - variable
            - row_column
            - category
            - series
            - value
          type: string
        column:
          description: Column of a `row_column` source. At most 1024 characters.
          maxLength: 1024
          type: string
        name:
          description: >-
            Variable name of a `variable` source. 1–64 characters starting with
            a letter or underscore.
          pattern: ^[A-Za-z_][A-Za-z0-9_]{0,63}$
          type: string
      required:
        - source
      type: object
  responses:
    BadRequest:
      content:
        application/json:
          examples:
            missingParameter:
              value:
                error:
                  code: InvalidParameter
                  message: The specified parameter is not valid.
                request_id: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Invalid request — usually a missing or malformed parameter.
    Unauthorized:
      content:
        application/json:
          examples:
            missingAppKey:
              value:
                error:
                  code: Unauthorized
                  message: You are unauthorized.
                request_id: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Missing or invalid app_key.
    Forbidden:
      content:
        application/json:
          examples:
            noEditPermission:
              value:
                error:
                  code: AccessDenied
                  message: Access Denied.
                request_id: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: >-
        The app_key is valid, but its permission scope or the creator's role
        does not allow this operation or object.
    TooManyRequests:
      content:
        application/json:
          examples:
            rateLimited:
              value:
                error:
                  code: RequestTooFrequently
                  message: Request too frequently.
                request_id: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: >-
        Rate limit hit (per-account limit or the operation's platform-wide
        limit). Wait for the number of seconds in
        `Flashcat-Request-Rate-Limit-Delay`, then retry.
      headers:
        Flashcat-Request-Rate-Limit-Delay:
          description: >-
            Seconds until the current rate-limit window resets. Absent when the
            request was rejected by the gateway's global protection limit.
          schema:
            type: integer
            minimum: 0
    ServerError:
      content:
        application/json:
          examples:
            internal:
              value:
                error:
                  code: InternalError
                  message: >-
                    We encountered an internal error, and it has been reported.
                    Please try again later.
                request_id: 01HK8XQE3Z7JM2NTFQ5YJ8P9R4
          schema:
            $ref: '#/components/schemas/ErrorResponse'
      description: Unexpected server-side error. Include the request_id when reporting.
  securitySchemes:
    AppKeyAuth:
      description: >-
        APP Key created in the Flashduty console under My → APP Key. Send it as
        the `app_key` query parameter or in the `Fd-App-Key` request header. Its
        effective access is the intersection of the key's permission scope and
        the creator's current role permissions. Keep it secret.
      in: query
      name: app_key
      type: apiKey

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.