---
title: "Update Dashboard"
method: PUT
path: "/custom_dashboards/{dashboard_id}"
tags: ["custom_dashboards"]
---

# Update Dashboard

`PUT /custom_dashboards/{dashboard_id}`

## Path parameters

- `dashboard_id` string, uuid4, required

## Request body

- CustomDashboardUpdateRequest — Request to update a custom dashboard. All fields are optional.
  - `name` string, nullable
  - `description` string, nullable
  - `interval_mins` integer, nullable
  - `layout_map` object, nullable
  - `start_time` integer, nullable
  - `end_time` integer, nullable
  - `relative_time` string, nullable — Rolling window from now, e.g. last_7_days, last_12_hours (max 5 years)
  - `filter_tree` union
    - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
      - `filter` union, required
        - LogRecordsIDFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'one_of' | 'not_in' | 'contains'
          - `value` union, required
            - string, uuid4
            - union[]
              - …
            - string
          - `type` 'id'
        - LogRecordsDateFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte', required
          - `value` string, date-time, required
          - `type` 'date'
        - LogRecordsNumberFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required
          - `value` union, required
            - integer
            - number
            - integer[]
            - number[]
          - `type` 'number'
        - LogRecordsBooleanFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne'
          - `value` boolean, required
          - `type` 'boolean'
        - LogRecordsCollectionFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'contains' | 'one_of' | 'not_in', required
          - `value` union, required
            - string
            - string[]
          - `case_sensitive` boolean
          - `type` 'collection'
        - LogRecordsTextFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'contains' | 'one_of' | 'not_in', required
          - `value` union, required
            - string
            - string[]
          - `case_sensitive` boolean
          - `type` 'text'
        - LogRecordsFullyAnnotatedFilter — Queue-scoped filter for records rated across all queue templates.
          - `column_id` 'fully_annotated' — Queue-scoped filter identifier. This filter only works for annotation-queue searches that provide queue context.
          - `type` 'fully_annotated'
          - `user_ids` string[], nullable — Optional queue member IDs to require for full annotation in a queue-scoped search. If omitted, all tracked queue members visible to the requester are used.
    - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
      - `and` union[], required
        - union
          - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
            - `filter` union, required
              - …
          - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput — recursive
          - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
            - `or` union[], required
              - …
          - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
            - `not` union, required
              - …
    - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
      - `or` union[], required
        - union
          - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
            - `filter` union, required
              - …
          - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
            - `and` union[], required
              - …
          - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput — recursive
          - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
            - `not` union, required
              - …
    - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
      - `not` union, required
        - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
          - `filter` union, required
            - LogRecordsIDFilter
              - …
            - LogRecordsDateFilter
              - …
            - LogRecordsNumberFilter
              - …
            - LogRecordsBooleanFilter
              - …
            - LogRecordsCollectionFilter
              - …
            - LogRecordsTextFilter
              - …
            - LogRecordsFullyAnnotatedFilter — Queue-scoped filter for records rated across all queue templates.
              - …
        - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
          - `and` union[], required
            - union
              - …
        - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput
          - `or` union[], required
            - union
              - …
        - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeInput — recursive
  - `group_by` string, nullable

## Response `200`

Successful Response

- CustomDashboardResponse
  - `id` string, uuid4, required
  - `organization_id` string, uuid4, required
  - `created_by` string, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `name` string, required
  - `description` string, nullable
  - `layout_map` object, required
  - `interval_mins` integer, required
  - `group_by` string, nullable
  - `filter_tree` union
    - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
      - `filter` union, required
        - LogRecordsIDFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'one_of' | 'not_in' | 'contains'
          - `value` union, required
            - string, uuid4
            - union[]
              - …
            - string
          - `type` 'id'
        - LogRecordsDateFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte', required
          - `value` string, date-time, required
          - `type` 'date'
        - LogRecordsNumberFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between', required
          - `value` union, required
            - integer
            - number
            - integer[]
            - number[]
          - `type` 'number'
        - LogRecordsBooleanFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne'
          - `value` boolean, required
          - `type` 'boolean'
        - LogRecordsCollectionFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'contains' | 'one_of' | 'not_in', required
          - `value` union, required
            - string
            - string[]
          - `case_sensitive` boolean
          - `type` 'collection'
        - LogRecordsTextFilter
          - `column_id` string, required — ID of the column to filter.
          - `operator` 'eq' | 'ne' | 'contains' | 'one_of' | 'not_in', required
          - `value` union, required
            - string
            - string[]
          - `case_sensitive` boolean
          - `type` 'text'
        - LogRecordsFullyAnnotatedFilter — Queue-scoped filter for records rated across all queue templates.
          - `column_id` 'fully_annotated' — Queue-scoped filter identifier. This filter only works for annotation-queue searches that provide queue context.
          - `type` 'fully_annotated'
          - `user_ids` string[], nullable — Optional queue member IDs to require for full annotation in a queue-scoped search. If omitted, all tracked queue members visible to the requester are used.
    - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput
      - `and` union[], required
        - union
          - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
            - `filter` union, required
              - …
          - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput — recursive
          - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput
            - `or` union[], required
              - …
          - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput
            - `not` union, required
              - …
    - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput
      - `or` union[], required
        - union
          - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
            - `filter` union, required
              - …
          - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput
            - `and` union[], required
              - …
          - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput — recursive
          - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput
            - `not` union, required
              - …
    - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput
      - `not` union, required
        - FilterLeafAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorType
          - `filter` union, required
            - LogRecordsIDFilter
              - …
            - LogRecordsDateFilter
              - …
            - LogRecordsNumberFilter
              - …
            - LogRecordsBooleanFilter
              - …
            - LogRecordsCollectionFilter
              - …
            - LogRecordsTextFilter
              - …
            - LogRecordsFullyAnnotatedFilter — Queue-scoped filter for records rated across all queue templates.
              - …
        - AndNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput
          - `and` union[], required
            - union
              - …
        - OrNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput
          - `or` union[], required
            - union
              - …
        - NotNodeAnnotatedUnionLogRecordsIDFilterLogRecordsDateFilterLogRecordsNumberFilterLogRecordsBooleanFilterLogRecordsCollectionFilterLogRecordsTextFilterLogRecordsFullyAnnotatedFilterFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorTypeOutput — recursive
  - `start_time` integer, nullable
  - `end_time` integer, nullable
  - `relative_time` string, nullable
  - `is_favorite` boolean
  - `widgets` CustomDashboardWidgetResponse[]
    - `id` string, uuid4, required
    - `name` string, required
    - `description` string, nullable
    - `type` 'bar_chart' | 'line_chart' | 'number' | 'table', required
    - `dataset` object[], nullable
    - `metric` string, required
    - `aggregation` 'Count' | 'Sum' | 'Average' | 'Min' | 'Max' | 'P50' | 'P90' | 'P95' | 'P99' | 'PercentageFalse' | 'PercentageTrue', required
    - `section_id` string, uuid4, nullable
    - `analysis_mode` 'compare' | 'combine'
  - `sections` CustomDashboardSectionResponse[]
    - `id` string, uuid4, required
    - `name` string, required
    - `description` string, nullable
    - `color` string, nullable
    - `widgets` CustomDashboardWidgetResponse[]
      - `id` string, uuid4, required
      - `name` string, required
      - `description` string, nullable
      - `type` 'bar_chart' | 'line_chart' | 'number' | 'table', required
      - `dataset` object[], nullable
      - `metric` string, required
      - `aggregation` 'Count' | 'Sum' | 'Average' | 'Min' | 'Max' | 'P50' | 'P90' | 'P95' | 'P99' | 'PercentageFalse' | 'PercentageTrue', required
      - `section_id` string, uuid4, nullable
      - `analysis_mode` 'compare' | 'combine'

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/galileo/apis/galileo-api-server.md) · [All operations](https://skmtc.net/galileo/apis/galileo-api-server/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/galileo/galileo-api-server/versions/933e8c8e6366/schema)
