Skip to main content

Dashboard API

Usageโ€‹

import { epilot } from '@epilot/sdk'

epilot.authorize(() => '<token>')
const { data } = await epilot.dashboard.listDashboards(...)

Tree-shakeable importโ€‹

import { getClient, authorize } from '@epilot/sdk/dashboard'

const dashboardClient = getClient()
authorize(dashboardClient, () => '<token>')
const { data } = await dashboardClient.listDashboards(...)

Operationsโ€‹

Dashboards

Visualisations

Examples

Schemas

listDashboardsโ€‹

List dashboards available to the user

GET /v1/dashboard/dashboards

const { data } = await client.listDashboards()
Response
{
"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

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
{
"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}

const { data } = await client.getDashboard({
id: '123e4567-e89b-12d3-a456-426614174000',
})
Response
{
"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}

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
{
"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}

const { data } = await client.deleteDashboard({
id: '123e4567-e89b-12d3-a456-426614174000',
})
Response
{
"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

const { data } = await client.listAvailableVisualisations()
Response
{
"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

const { data } = await client.listAvailableExamples()
Response
{
"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

type DashboardID = string // uuid

Dashboardโ€‹

Adashboard configuration with tiles

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

type DashboardTileID = string // uuid

DashboardTileโ€‹

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<string, unknown>
}
}

VisualisationConfigโ€‹

type VisualisationConfig = {
query?: {
dataset?: string
measure?: string
dimensions?: Record<string, unknown>[]
filters?: Record<string, unknown>[]
}
options?: Record<string, unknown>
}

timechartVisualisationConfigโ€‹

type timechartVisualisationConfig = {
query?: {
dataset?: string
measure?: string
dimensions?: Record<string, unknown>[]
filters?: Record<string, unknown>[]
}
options?: Record<string, unknown>
}

ExampleIDโ€‹

Unique identifier for a visualisation examples for tiles in a dashboard

type ExampleID = string // uuid

Exampleโ€‹

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<string, unknown>[]
filters?: Record<string, unknown>[]
}
}

DatalakeQueryโ€‹

type DatalakeQuery = {
dataset?: string
measure?: string
dimensions?: Record<string, unknown>[]
filters?: Record<string, unknown>[]
}

VisualisationIdโ€‹

Unique identifier for a Visualisation

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

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
}