Properties
| Name | Type | Description |
|---|---|---|
| name | object | |
| description | object | |
| time_range | object | |
| panels | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/okareo/json-schema/okareo-dashboard-update-schema.json",
"title": "DashboardUpdate",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/okareo-dashboards-api-openapi.yml#/components/schemas/DashboardUpdate",
"properties": {
"name": {
"anyOf": [
{
"type": "string",
"maxLength": 255,
"minLength": 1
},
{
"type": "null"
}
],
"title": "Name"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
},
"time_range": {
"anyOf": [
{
"$ref": "#/$defs/TimeRange"
},
{
"type": "null"
}
]
},
"panels": {
"anyOf": [
{
"items": {
"$ref": "#/$defs/PanelConfig-Input"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Panels"
}
},
"type": "object",
"$defs": {
"AnalyticsFilter": {
"properties": {
"member": {
"type": "string",
"title": "Member"
},
"operator": {
"$ref": "#/$defs/ComparisonOperator",
"default": "equal"
},
"values": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "string",
"format": "uuid"
}
]
},
"type": "array",
"title": "Values"
}
},
"type": "object",
"required": [
"member"
],
"title": "AnalyticsFilter"
},
"AnalyticsFilterGroup-Input": {
"properties": {
"op": {
"type": "string",
"enum": [
"and",
"or"
],
"title": "Op"
},
"filters": {
"items": {
"anyOf": [
{
"$ref": "#/$defs/AnalyticsFilter"
},
{
"$ref": "#/$defs/AnalyticsFilterGroup-Input"
}
]
},
"type": "array",
"minItems": 1,
"title": "Filters"
}
},
"type": "object",
"required": [
"op",
"filters"
],
"title": "AnalyticsFilterGroup"
},
"ComparisonOperator": {
"type": "string",
"enum": [
"equal",
"not_equal",
"contains",
"not_contains",
"greater_than",
"greater_than_or_equal",
"less_than",
"less_than_or_equal",
"is_set",
"not_set"
],
"title": "ComparisonOperator"
},
"PanelConfig-Input": {
"properties": {
"id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Id"
},
"title": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"title": "Title"
},
"chart_type": {
"type": "string",
"enum": [
"line",
"bar",
"composed",
"area",
"radar",
"stat",
"table"
],
"title": "Chart Type"
},
"query": {
"$ref": "#/$defs/PanelQuery-Input"
},
"table_config": {
"anyOf": [
{
"$ref": "#/$defs/PanelTableConfig"
},
{
"type": "null"
}
]
},
"layout": {
"$ref": "#/$defs/PanelLayout"
}
},
"type": "object",
"required": [
"title",
"chart_type",
"query",
"layout"
],
"title": "PanelConfig"
},
"PanelLayout": {
"properties": {
"x": {
"type": "integer",
"minimum": 0.0,
"title": "X"
},
"y": {
"type": "integer",
"minimum": 0.0,
"title": "Y"
},
"w": {
"type": "integer",
"minimum": 1.0,
"title": "W"
},
"h": {
"type": "integer",
"minimum": 1.0,
"title": "H"
}
},
"type": "object",
"required": [
"x",
"y",
"w",
"h"
],
"title": "PanelLayout"
},
"PanelQuery-Input": {
"properties": {
"cube": {
"type": "string",
"title": "Cube",
"default": "check_trend"
},
"measures": {
"items": {
"type": "string"
},
"type": "array",
"title": "Measures"
},
"dimensions": {
"items": {
"type": "string"
},
"type": "array",
"title": "Dimensions"
},
"filters": {
"items": {
"anyOf": [
{
"$ref": "#/$defs/AnalyticsFilter"
},
{
"$ref": "#/$defs/AnalyticsFilterGroup-Input"
}
]
},
"type": "array",
"title": "Filters"
},
"segments": {
"items": {
"type": "string"
},
"type": "array",
"title": "Segments"
},
"time_dimensions": {
"items": {
"$ref": "#/$defs/TimeDimension"
},
"type": "array",
"title": "Time Dimensions"
},
"order": {
"additionalProperties": {
"type": "string",
"enum": [
"asc",
"desc"
]
},
"type": "object",
"title": "Order"
}
},
"type": "object",
"required": [
"measures"
],
"title": "PanelQuery",
"description": "Query template stored per panel.\n\nDoes NOT include project_id. ``time_range`` is injected by the frontend\nfrom the dashboard context and global time picker. Panels may include\noptional ``time_dimensions`` and ``order`` for Cube-style query shape."
},
"PanelTableConfig": {
"properties": {
"mode": {
"type": "string",
"enum": [
"flat",
"pivot"
],
"title": "Mode",
"default": "flat"
},
"row_dimensions": {
"items": {
"type": "string"
},
"type": "array",
"title": "Row Dimensions"
},
"column_dimension": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Column Dimension"
},
"value_measure": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Value Measure"
}
},
"type": "object",
"title": "PanelTableConfig"
},
"TimeDimension": {
"properties": {
"dimension": {
"type": "string",
"title": "Dimension"
},
"date_range": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array",
"maxItems": 2,
"minItems": 2
},
{
"type": "null"
}
],
"title": "Date Range"
},
"granularity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Granularity"
}
},
"type": "object",
"required": [
"dimension"
],
"title": "TimeDimension"
},
"TimeRange": {
"type": "string",
"enum": [
"LAST_HOUR",
"LAST_24_HOURS",
"LAST_7_DAYS",
"LAST_14_DAYS",
"LAST_30_DAYS",
"LAST_90_DAYS"
],
"title": "TimeRange"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/okareo-dashboard-update"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.