OpenObserve Dashboards API

Dashboard operations

OpenAPI Specification

openobserve-dashboards-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: openobserve Actions Dashboards API
  description: OpenObserve API documents [https://openobserve.ai/docs/](https://openobserve.ai/docs/)
  contact:
    name: OpenObserve
    url: https://openobserve.ai/
    email: hello@zinclabs.io
  license:
    name: AGPL-3.0
    identifier: AGPL-3.0
  version: 0.90.0
tags:
- name: Dashboards
  description: Dashboard operations
paths:
  /api/{org_id}/dashboards:
    get:
      tags:
      - Dashboards
      summary: List organization dashboards
      description: Retrieves a list of dashboards within the organization, with optional filtering by folder and pagination support
      operationId: ListDashboards
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: folder
        in: query
        description: 'Optional folder ID filter parameter


          If neither `folder` nor any other filter parameter are set then this

          will search for all dashboards in the "default" folder.


          If `folder` is not set and another filter parameter, such as `title`, is

          set then this will search for dashboards in all folders.'
        required: false
        schema:
          type: string
        style: form
      - name: title
        in: query
        description: 'The optional case-insensitive title substring with which to filter

          dashboards.'
        required: false
        schema:
          type: string
        style: form
      - name: pageSize
        in: query
        description: 'The optional number of dashboards to retrieve. If not set then all

          dashboards that match the query parameters will be returned.


          Currently this parameter is only untilized by the API when the `title`

          parameter is also set.'
        required: false
        schema:
          type: integer
          format: int64
          minimum: 0
        style: form
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                description: HTTP response body for `ListDashboards` endpoint.
                required:
                - dashboards
                properties:
                  dashboards:
                    type: array
                    items:
                      $ref: '#/components/schemas/ListDashboardsResponseBodyItem'
      security:
      - Authorization: []
      x-o2-ratelimit:
        module: Dashboards
        operation: list
      x-o2-mcp:
        description: List all dashboards in organization
        category: dashboards
        summary_fields:
        - dashboard_id
        - title
        - description
        - owner
        - folder_name
    post:
      tags:
      - Dashboards
      summary: Create new dashboard
      description: Creates a new dashboard with specified title, description, and visualization panels. The dashboard will be saved in the specified folder
      operationId: CreateDashboard
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: folder
        in: query
        description: Folder ID where the dashboard will be created. Used for RBAC checks in enterprise version. Defaults to 'default' if not specified
        required: false
        schema:
          type: string
      requestBody:
        description: Dashboard details
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              description: HTTP request body for the `CreateDashboard`/`UpdateDashboard` endpoints.
            example:
              title: Network Traffic Overview
              description: Traffic patterns and network performance of the infrastructure
        required: true
      responses:
        '201':
          description: Dashboard created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dashboard'
                description: HTTP response body for `CreateDashboard`/`UpdateDashboard` endpoints.
        '404':
          description: Folder not found
          content:
            application/json:
              schema:
                default: null
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-mcp:
        description: 'Create a dashboard with visualization panels. LAYOUT: 192-column grid with {x, y, w, h, i} where x=column(0-191), y=row, w=width, h=height, i=panel_id. Common widths: full=192, half=96, third=64. PANEL QUERIES: Each panel query needs ''fields'' with x/y/z arrays populated EVEN when customQuery=true. AXIS RULES: x=dimension/time field, y=metric field(s), z=only for heatmaps(color intensity)/stacked-charts(breakdown field)/geo-maps(value). For most charts (line/area/bar/pie), leave z=[]. Use SELECT aliases as column values. Example: ''SELECT histogram(_timestamp) as ts, COUNT(*) as cnt'' needs x=[{label:''ts'',alias:''ts'',column:''ts'',aggregationFunction:null}], y=[{label:''cnt'',alias:''cnt'',column:''cnt'',aggregationFunction:null}], z=[]. FILTER: The ''filter'' field in ''fields'' MUST be an object (NOT an array). Use: {type:''list'',values:[],logicalOperator:''AND'',filterType:''list''} for no filters.'
        category: dashboards
      x-o2-ratelimit:
        module: Dashboards
        operation: create
  /api/{org_id}/dashboards/move:
    patch:
      tags:
      - Dashboards
      summary: Move multiple dashboards
      description: Moves multiple dashboards to a specified destination folder in a single batch operation. Useful for organizing dashboards efficiently
      operationId: MoveDashboards
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      requestBody:
        description: Identifies dashboards and the destination folder
        content:
          application/json:
            schema:
              type: object
              description: HTTP request body for `MoveDashboards` endpoint.
              required:
              - dashboard_ids
              - dst_folder_id
              properties:
                dashboard_ids:
                  type: array
                  items:
                    type: string
                  description: IDs of the dashboards to move.
                dst_folder_id:
                  type: string
                  description: Indicates the folder to which dashboard should be moved.
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                default: null
        '500':
          description: Failure
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-ratelimit:
        module: Dashboards
        operation: update
      x-o2-mcp:
        description: Move multiple dashboards to folder
        category: dashboards
  /api/{org_id}/dashboards/{dashboard_id}:
    get:
      tags:
      - Dashboards
      summary: Get dashboard details
      description: Retrieves complete details of a specific dashboard including its panels, queries, and visualization configurations
      operationId: GetDashboard
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        description: Dashboard ID
        required: true
        schema:
          type: string
      - name: folder
        in: query
        description: Folder ID where the dashboard is located. Used for RBAC permission checks in enterprise version
        required: false
        schema:
          type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dashboard'
                description: HTTP response body for `CreateDashboard`/`UpdateDashboard` endpoints.
        '403':
          description: Unauthorized Access
          content:
            application/json:
              schema:
                default: null
        '404':
          description: Dashboard not found
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-mcp:
        description: Get dashboard details by ID
        category: dashboards
      x-o2-ratelimit:
        module: Dashboards
        operation: get
    put:
      tags:
      - Dashboards
      summary: Update existing dashboard
      description: Updates an existing dashboard with new content, panels, or settings. Supports concurrent edit conflict detection using hash values
      operationId: UpdateDashboard
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        description: Dashboard ID
        required: true
        schema:
          type: string
      - name: folder
        in: query
        description: Folder ID where the dashboard is located
        required: true
        schema:
          type: string
      - name: hash
        in: query
        description: Hash value for conflict detection. Required when updating an existing dashboard to prevent concurrent edit conflicts
        required: false
        schema:
          type: string
      requestBody:
        description: Dashboard details
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              - $ref: '#/components/schemas/Dashboard'
              description: HTTP request body for the `CreateDashboard`/`UpdateDashboard` endpoints.
        required: true
      responses:
        '200':
          description: Dashboard updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Dashboard'
                description: HTTP response body for `CreateDashboard`/`UpdateDashboard` endpoints.
        '404':
          description: Dashboard not found
          content:
            application/json:
              schema:
                default: null
        '409':
          description: 'Conflict: Failed to save due to concurrent changes'
          content:
            application/json:
              schema:
                default: null
        '500':
          description: Failed to update the dashboard
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-mcp:
        description: Update an existing dashboard
        category: dashboards
      x-o2-ratelimit:
        module: Dashboards
        operation: update
    delete:
      tags:
      - Dashboards
      summary: Delete dashboard
      description: Permanently deletes a dashboard and all its associated panels and configurations. This action cannot be undone
      operationId: DeleteDashboard
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        description: Dashboard ID
        required: true
        schema:
          type: string
      - name: folder
        in: query
        description: Folder ID where the dashboard is located. Used for RBAC permission checks in enterprise version
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
        '403':
          description: Unauthorized Access
          content:
            application/json:
              schema:
                default: null
        '404':
          description: NotFound
          content:
            application/json:
              schema:
                default: null
        '500':
          description: Error
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-mcp:
        description: Delete a dashboard by ID
        category: dashboards
        requires_confirmation: true
      x-o2-ratelimit:
        module: Dashboards
        operation: delete
  /api/{org_id}/dashboards/{dashboard_id}/annotations:
    get:
      tags:
      - Dashboards
      summary: Get timed annotations for dashboard
      description: Retrieves timed annotations for dashboard panels within a specified time range
      operationId: GetAnnotations
      parameters:
      - name: panels
        in: query
        description: Commas separated list of panels
        required: false
        schema:
          type: string
        style: form
      - name: start_time
        in: query
        description: Time in microseconds
        required: true
        schema:
          type: integer
          format: int64
        style: form
      - name: end_time
        in: query
        description: Time in microseconds
        required: true
        schema:
          type: integer
          format: int64
        style: form
      - name: org_id
        in: path
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Timed annotations retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TimedAnnotation'
        '400':
          description: Invalid query parameters
          content:
            application/json: {}
        '500':
          description: Failed to get timed annotations
          content:
            application/json: {}
      security:
      - Authorization: []
      x-o2-ratelimit:
        module: Dashboards
        operation: list
      x-o2-mcp:
        description: Get annotations
        category: dashboards
    post:
      tags:
      - Dashboards
      summary: Create timed annotations for dashboard
      description: Creates new timed annotations for specific panels within a dashboard
      operationId: CreateAnnotations
      parameters:
      - name: org_id
        in: path
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: Timed annotation request payload
        content:
          application/json:
            schema:
              type: object
              required:
              - timed_annotations
              properties:
                timed_annotations:
                  type: array
                  items:
                    $ref: '#/components/schemas/TimedAnnotation'
        required: true
      responses:
        '200':
          description: Timed annotations created successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TimedAnnotation'
        '500':
          description: Failed to create timed annotations
          content:
            application/json: {}
      security:
      - Authorization: []
      x-o2-mcp:
        description: Create time annotations
        category: dashboards
      x-o2-ratelimit:
        module: Dashboards
        operation: create
    delete:
      tags:
      - Dashboards
      summary: Delete timed annotations from dashboard
      description: Removes timed annotations from dashboard panels based on specified criteria
      operationId: DeleteAnnotations
      parameters:
      - name: org_id
        in: path
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: Timed annotation delete request payload
        content:
          application/json:
            schema:
              type: object
              required:
              - annotation_ids
              properties:
                annotation_ids:
                  type: array
                  items:
                    type: string
        required: true
      responses:
        '200':
          description: Timed annotations deleted successfully
        '500':
          description: Failed to delete timed annotations
          content:
            application/json: {}
      security:
      - Authorization: []
      x-o2-mcp:
        description: Delete annotations
        category: dashboards
        requires_confirmation: true
      x-o2-ratelimit:
        module: Dashboards
        operation: delete
  /api/{org_id}/dashboards/{dashboard_id}/annotations/panels/{timed_annotation_id}:
    delete:
      tags:
      - Dashboards
      summary: Remove timed annotation from panel
      description: Removes a specific timed annotation from a dashboard panel
      operationId: RemoveTimedAnnotationFromPanel
      parameters:
      - name: org_id
        in: path
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        required: true
        schema:
          type: string
      - name: timed_annotation_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: IDs of dashboard panels from which to remove the timed annotation
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
        required: true
      responses:
        '200':
          description: Removed timed annotation from dashboard panels successfully
        '500':
          description: Failed to remove timed annotation from panels
          content:
            application/json: {}
      security:
      - Authorization: []
      x-o2-ratelimit:
        module: Dashboards
        operation: delete
      x-o2-mcp:
        description: Remove annotation from panel
        category: dashboards
        requires_confirmation: true
  /api/{org_id}/dashboards/{dashboard_id}/annotations/{timed_annotation_id}:
    put:
      tags:
      - Dashboards
      summary: Update timed annotation
      description: Updates an existing timed annotation with new content or metadata
      operationId: UpdateAnnotations
      parameters:
      - name: org_id
        in: path
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        required: true
        schema:
          type: string
      - name: timed_annotation_id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        description: Timed annotation update request payload
        content:
          application/json:
            schema:
              type: object
              properties:
                annotation_id:
                  type:
                  - string
                  - 'null'
                  default: null
                end_time:
                  type:
                  - integer
                  - 'null'
                  format: int64
                  default: null
                panels:
                  type: array
                  items:
                    type: string
                  default: []
                start_time:
                  type: integer
                  format: int64
                  default: 0
                tags:
                  type: array
                  items:
                    type: string
                  default: []
                text:
                  type:
                  - string
                  - 'null'
                  default: null
                title:
                  type: string
                  default: ''
        required: true
      responses:
        '200':
          description: Timed annotations updated successfully
        '500':
          description: Failed to update timed annotations
          content:
            application/json: {}
      security:
      - Authorization: []
      x-o2-ratelimit:
        module: Dashboards
        operation: update
      x-o2-mcp:
        description: Update annotations
        category: dashboards
  /api/{org_id}/dashboards/{dashboard_id}/panels:
    post:
      tags:
      - Dashboards
      summary: Add a panel to a dashboard
      description: Add a panel to an existing dashboard. Layout auto-computed if not specified. Returns new hash for chaining.
      operationId: AddPanel
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        description: Dashboard ID
        required: true
        schema:
          type: string
      - name: folder
        in: query
        description: Folder ID where the dashboard is located
        required: false
        schema:
          type: string
      - name: hash
        in: query
        description: Hash value for conflict detection
        required: true
        schema:
          type: string
      requestBody:
        description: Panel to add
        content:
          application/json:
            schema:
              type: object
              description: Request body for AddPanel and UpdatePanel endpoints.
              required:
              - panel
              properties:
                panel:
                  $ref: '#/components/schemas/Panel'
                tabId:
                  type:
                  - string
                  - 'null'
        required: true
      responses:
        '200':
          description: Panel added
          content:
            application/json:
              schema:
                type: object
                description: Response body for AddPanel and UpdatePanel endpoints.
                required:
                - panel
                - hash
                - tabId
                properties:
                  hash:
                    type: string
                  panel:
                    $ref: '#/components/schemas/Panel'
                  tabId:
                    type: string
        '400':
          description: Unsupported dashboard version
          content:
            application/json:
              schema:
                default: null
        '404':
          description: Dashboard or tab not found
          content:
            application/json:
              schema:
                default: null
        '409':
          description: Panel ID already exists or hash conflict
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-ratelimit:
        module: Dashboards
        operation: update
      x-o2-mcp:
        description: Add a panel to an existing dashboard. Layout auto-computed. Returns new hash for chaining.
        category: dashboards
  /api/{org_id}/dashboards/{dashboard_id}/panels/{panel_id}:
    put:
      tags:
      - Dashboards
      summary: Update a single panel in a dashboard
      description: Update a single panel in a dashboard by panel ID. Preserves layout if not explicitly set.
      operationId: UpdatePanel
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        description: Dashboard ID
        required: true
        schema:
          type: string
      - name: panel_id
        in: path
        description: Panel ID
        required: true
        schema:
          type: string
      - name: folder
        in: query
        description: Folder ID where the dashboard is located
        required: false
        schema:
          type: string
      - name: hash
        in: query
        description: Hash value for conflict detection
        required: true
        schema:
          type: string
      requestBody:
        description: Panel data to update
        content:
          application/json:
            schema:
              type: object
              description: Request body for AddPanel and UpdatePanel endpoints.
              required:
              - panel
              properties:
                panel:
                  $ref: '#/components/schemas/Panel'
                tabId:
                  type:
                  - string
                  - 'null'
        required: true
      responses:
        '200':
          description: Panel updated
          content:
            application/json:
              schema:
                type: object
                description: Response body for AddPanel and UpdatePanel endpoints.
                required:
                - panel
                - hash
                - tabId
                properties:
                  hash:
                    type: string
                  panel:
                    $ref: '#/components/schemas/Panel'
                  tabId:
                    type: string
        '400':
          description: Unsupported dashboard version
          content:
            application/json:
              schema:
                default: null
        '404':
          description: Dashboard, tab, or panel not found
          content:
            application/json:
              schema:
                default: null
        '409':
          description: Hash conflict
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-ratelimit:
        module: Dashboards
        operation: update
      x-o2-mcp:
        description: Update a single panel in a dashboard by panel ID. Preserves layout if not explicitly set.
        category: dashboards
    delete:
      tags:
      - Dashboards
      summary: Delete a single panel from a dashboard
      description: Delete a single panel from a dashboard by panel ID.
      operationId: DeletePanel
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        description: Dashboard ID
        required: true
        schema:
          type: string
      - name: panel_id
        in: path
        description: Panel ID
        required: true
        schema:
          type: string
      - name: folder
        in: query
        description: Folder ID where the dashboard is located
        required: false
        schema:
          type: string
      - name: hash
        in: query
        description: Hash value for conflict detection
        required: true
        schema:
          type: string
      - name: tabId
        in: query
        description: Tab ID to search for the panel
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Panel deleted
          content:
            application/json:
              schema:
                type: object
                description: Response body for DeletePanel endpoint.
                required:
                - hash
                - panelId
                properties:
                  hash:
                    type: string
                  panelId:
                    type: string
        '400':
          description: Unsupported dashboard version
          content:
            application/json:
              schema:
                default: null
        '404':
          description: Dashboard, tab, or panel not found
          content:
            application/json:
              schema:
                default: null
        '409':
          description: Hash conflict
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-mcp:
        description: Delete a single panel from a dashboard by panel ID.
        category: dashboards
        requires_confirmation: true
      x-o2-ratelimit:
        module: Dashboards
        operation: update
  /api/{org_id}/folders/dashboards/{dashboard_id}:
    put:
      tags:
      - Dashboards
      summary: Move dashboard to folder
      description: Moves a dashboard from one folder to another within the organization. The dashboard content remains unchanged
      operationId: MoveDashboard
      parameters:
      - name: org_id
        in: path
        description: Organization name
        required: true
        schema:
          type: string
      - name: dashboard_id
        in: path
        description: Dashboard ID
        required: true
        schema:
          type: string
      requestBody:
        description: MoveDashboard details
        content:
          application/json:
            schema:
              type: object
              description: HTTP request body for `MoveDashboard` endpoint.
              required:
              - from
              - to
              properties:
                from:
                  type: string
                to:
                  type: string
            example:
              from: Source folder id
              to: Destination folder id
        required: true
      responses:
        '200':
          description: Dashboard Moved
          content:
            application/json:
              schema:
                type: object
        '404':
          description: Dashboard not found
          content:
            application/json:
              schema:
                default: null
      security:
      - Authorization: []
      x-o2-mcp:
        description: Move dashboard to another folder
        category: dashboards
      x-o2-ratelimit:
        module: Dashboards
        operation: update
components:
  schemas:
    DrillDownVariables:
      type: object
      properties:
        name:
          type:
          - string
          - 'null'
          default: null
        value:
          type:
          - string
          - 'null'
          default: null
    ColorBySeries:
      type: object
      properties:
        color:
          type:
          - string
          - 'null'
          default: null
        type:
          type:
          - string
          - 'null'
          default: null
        value:
          type:
          - string
          - 'null'
          default: null
    PanelFields:
      type: object
      required:
      - stream
      - stream_type
      - x
      - y
      - filter
      properties:
        breakdown:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/AxisItem'
        filter:
          $ref: '#/components/schemas/PanelFilter'
        latitude:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/AxisItem'
        longitude:
 

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