OpenAPI Specification
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