# Dashboard API - **Base URL:** `https://dashboard.sls.epilot.io` - **Full API Docs:** [https://docs.epilot.io/api/dashboard](https://docs.epilot.io/api/dashboard) ## Usage ```ts import { epilot } from '@epilot/sdk' epilot.authorize(() => '') const { data } = await epilot.dashboard.listDashboards(...) ``` ### Tree-shakeable import ```ts import { getClient, authorize } from '@epilot/sdk/dashboard' const dashboardClient = getClient() authorize(dashboardClient, () => '') const { data } = await dashboardClient.listDashboards(...) ``` ## Operations **Dashboards** - [`listDashboards`](#listdashboards) - [`createDashboard`](#createdashboard) - [`getDashboard`](#getdashboard) - [`putDashboard`](#putdashboard) - [`deleteDashboard`](#deletedashboard) **Visualisations** - [`listAvailableVisualisations`](#listavailablevisualisations) **Examples** - [`listAvailableExamples`](#listavailableexamples) **Schemas** - [`DashboardID`](#dashboardid) - [`Dashboard`](#dashboard) - [`DashboardTileID`](#dashboardtileid) - [`DashboardTile`](#dashboardtile) - [`VisualisationConfig`](#visualisationconfig) - [`timechartVisualisationConfig`](#timechartvisualisationconfig) - [`ExampleID`](#exampleid) - [`Example`](#example) - [`DatalakeQuery`](#datalakequery) - [`VisualisationId`](#visualisationid) - [`Visualisation`](#visualisation) ### `listDashboards` List dashboards available to the user `GET /v1/dashboard/dashboards` ```ts const { data } = await client.listDashboards() ```
Response ```json { "results": [ { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "title": "Employee Dashboard", "tiles": [ { "id": "e4af1297-1fd6-440f-9846-f475f580d40f", "coordinates": {}, "visualisation": "timechart", "visualisation_config": { "query": { "dataset": "entity_operations", "measure": "count_operations", "filters": [ { "operation": ["createEntity"] }, { "entity_schema": ["opportunity"] } ], "dimensions": [ { "time_with_granularity": "month" }, { "entity_attribute": "source.title" } ] }, "options": { "type": "line" } } } ] } ] } ```
--- ### `createDashboard` Create new dashboard `POST /v1/dashboard/dashboards` ```ts const { data } = await client.createDashboard( null, { id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', title: 'Employee Dashboard', tiles: [ { id: 'e4af1297-1fd6-440f-9846-f475f580d40f', coordinates: {}, visualisation: 'timechart', visualisation_config: { query: { dataset: 'entity_operations', measure: 'count_operations', filters: [ { operation: ['createEntity'] }, { entity_schema: ['opportunity'] } ], dimensions: [ { time_with_granularity: 'month' }, { entity_attribute: 'source.title' } ] }, options: { type: 'line' } } } ] }, ) ```
Response ```json { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "title": "Employee Dashboard", "tiles": [ { "id": "e4af1297-1fd6-440f-9846-f475f580d40f", "coordinates": {}, "visualisation": "timechart", "visualisation_config": { "query": { "dataset": "entity_operations", "measure": "count_operations", "filters": [ { "operation": ["createEntity"] }, { "entity_schema": ["opportunity"] } ], "dimensions": [ { "time_with_granularity": "month" }, { "entity_attribute": "source.title" } ] }, "options": { "type": "line" } } } ] } ```
--- ### `getDashboard` Get dashboard by ID `GET /v1/dashboard/dashboards/{id}` ```ts const { data } = await client.getDashboard({ id: '123e4567-e89b-12d3-a456-426614174000', }) ```
Response ```json { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "title": "Employee Dashboard", "tiles": [ { "id": "e4af1297-1fd6-440f-9846-f475f580d40f", "coordinates": {}, "visualisation": "timechart", "visualisation_config": { "query": { "dataset": "entity_operations", "measure": "count_operations", "filters": [ { "operation": ["createEntity"] }, { "entity_schema": ["opportunity"] } ], "dimensions": [ { "time_with_granularity": "month" }, { "entity_attribute": "source.title" } ] }, "options": { "type": "line" } } } ] } ```
--- ### `putDashboard` Update a dashboard by ID `PUT /v1/dashboard/dashboards/{id}` ```ts const { data } = await client.putDashboard( { id: '123e4567-e89b-12d3-a456-426614174000', }, { id: '3fa85f64-5717-4562-b3fc-2c963f66afa6', title: 'Employee Dashboard', tiles: [ { id: 'e4af1297-1fd6-440f-9846-f475f580d40f', coordinates: {}, visualisation: 'timechart', visualisation_config: { query: { dataset: 'entity_operations', measure: 'count_operations', filters: [ { operation: ['createEntity'] }, { entity_schema: ['opportunity'] } ], dimensions: [ { time_with_granularity: 'month' }, { entity_attribute: 'source.title' } ] }, options: { type: 'line' } } } ] }, ) ```
Response ```json { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "title": "Employee Dashboard", "tiles": [ { "id": "e4af1297-1fd6-440f-9846-f475f580d40f", "coordinates": {}, "visualisation": "timechart", "visualisation_config": { "query": { "dataset": "entity_operations", "measure": "count_operations", "filters": [ { "operation": ["createEntity"] }, { "entity_schema": ["opportunity"] } ], "dimensions": [ { "time_with_granularity": "month" }, { "entity_attribute": "source.title" } ] }, "options": { "type": "line" } } } ] } ```
--- ### `deleteDashboard` Delete a dashboard by ID `DELETE /v1/dashboard/dashboards/{id}` ```ts const { data } = await client.deleteDashboard({ id: '123e4567-e89b-12d3-a456-426614174000', }) ```
Response ```json { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "title": "Employee Dashboard", "tiles": [ { "id": "e4af1297-1fd6-440f-9846-f475f580d40f", "coordinates": {}, "visualisation": "timechart", "visualisation_config": { "query": { "dataset": "entity_operations", "measure": "count_operations", "filters": [ { "operation": ["createEntity"] }, { "entity_schema": ["opportunity"] } ], "dimensions": [ { "time_with_granularity": "month" }, { "entity_attribute": "source.title" } ] }, "options": { "type": "line" } } } ] } ```
--- ### `listAvailableVisualisations` Returns list of available Visualisations to configure new dashboard tiles `GET /v1/dashboard/visualisations` ```ts const { data } = await client.listAvailableVisualisations() ```
Response ```json { "results": [ { "visualisation": "timechart", "title": "Time Series Visualisation", "description": "Visualise your metrics with respect to time series", "package_name": "@epilot360/highcharts" }, { "visualisation": "kpi", "title": "KPI Visualisation", "description": "Visualise your key performance indicators", "package_name": "@epilot360/kpi" } ] } ```
--- ### `listAvailableExamples` Returns list of available exampless for visualisations to configure new dashboard tiles `GET /v1/dashboard/examples` ```ts const { data } = await client.listAvailableExamples() ```
Response ```json { "results": [ { "id": "e4af1297-1fd6-440f-9846-f475f580d40f", "title": "Number of opportunities created by journeys every month", "visualisation": "timechart", "query": { "dataset": "entity_operations", "measure": "count_operations", "dimensions": [ { "time_with_granularity": "year-month" } ], "filters": [ { "entity_schema": "opportunity" } ] } } ] } ```
--- ## Schemas ### `DashboardID` Unique identifier for dashboard ```ts type DashboardID = string // uuid ``` ### `Dashboard` Adashboard configuration with tiles ```ts type Dashboard = { id?: string // uuid title: string tiles: Array<{ id?: string // uuid coordinates?: object title?: string visualisation_id?: "kpi" | "funnel" | "toplist" | "timechart" | "pie" | "bar" | "entity_list" | "markdown" | "news_feed" | "workflow" visualisation_config?: { query?: { ... } options?: { ... } } }> } ``` ### `DashboardTileID` Unique identifier for a tile in a dashboard ```ts type DashboardTileID = string // uuid ``` ### `DashboardTile` ```ts type DashboardTile = { id?: string // uuid coordinates?: object title?: string visualisation_id?: "kpi" | "funnel" | "toplist" | "timechart" | "pie" | "bar" | "entity_list" | "markdown" | "news_feed" | "workflow" visualisation_config?: { query?: { dataset?: { ... } measure?: { ... } dimensions?: { ... } filters?: { ... } } options?: Record } } ``` ### `VisualisationConfig` ```ts type VisualisationConfig = { query?: { dataset?: string measure?: string dimensions?: Record[] filters?: Record[] } options?: Record } ``` ### `timechartVisualisationConfig` ```ts type timechartVisualisationConfig = { query?: { dataset?: string measure?: string dimensions?: Record[] filters?: Record[] } options?: Record } ``` ### `ExampleID` Unique identifier for a visualisation examples for tiles in a dashboard ```ts type ExampleID = string // uuid ``` ### `Example` ```ts type Example = { id?: string // uuid title?: string visualisation?: "kpi" | "funnel" | "toplist" | "timechart" | "pie" | "bar" | "entity_list" | "markdown" | "news_feed" | "workflow" query?: { dataset?: string measure?: string dimensions?: Record[] filters?: Record[] } } ``` ### `DatalakeQuery` ```ts type DatalakeQuery = { dataset?: string measure?: string dimensions?: Record[] filters?: Record[] } ``` ### `VisualisationId` Unique identifier for a Visualisation ```ts type VisualisationId = "kpi" | "funnel" | "toplist" | "timechart" | "pie" | "bar" | "entity_list" | "markdown" | "news_feed" | "workflow" ``` ### `Visualisation` A Visualisation that can be used to configure tiles in dashboards ```ts type Visualisation = { visualisation?: "kpi" | "funnel" | "toplist" | "timechart" | "pie" | "bar" | "entity_list" | "markdown" | "news_feed" | "workflow" title?: string description?: string package_name?: string import_url?: string // uri } ```