# <a id="bitdrift.public.unary.dashboards.v1.DashboardService"></a>DashboardService

**Source definition:** [`src/bitdrift/public/unary/dashboards/v1/api.proto#L377-L395`](<https://github.com/bitdriftlabs/api/blob/main/src/bitdrift/public/unary/dashboards/v1/api.proto#L377-L395>)

Provides access to dashboards and chart data, including layout and time series metrics.

### <a id="GetChartsData"></a>GetChartsData

Retrieves chart data for one or more charts.

 Returns rendered chart output such as time-series values, labels, and table rows. For grouped
 charts, callers can reuse each returned `TimeSeries.id` together with its full `labels` set to
 build `charts.v1.LimitStrategy.IdentifierMatch` in a later request.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">dashboards</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetChartsDataRequest</i>](bitdrift_public_unary_dashboards_v1_GetChartsDataRequest.md "bitdrift.public.unary.dashboards.v1.GetChartsDataRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">dashboards</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetChartsDataResponse</i>](bitdrift_public_unary_dashboards_v1_GetChartsDataResponse.md "bitdrift.public.unary.dashboards.v1.GetChartsDataResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.dashboards.v1.DashboardService/GetChartsData`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "and_filter": {
    "filter": [
      {
        "name": "name",
        "value": "value"
      }
    ]
  },
  "charts": [
    {
      "chart_id": {
        "workflow": {
          "aggregated_action_id": "count/fkQ1PfAZhdYvJexzY6DYuoYCZTEaWO0Y7spxwjr7akc",
          "chart_rule_id": "_i1yUnHjKfmWpCaD5Tazo",
          "workflow_id": "DFg5"
        }
      },
      "counter_configuration": {
        "aggregation_type": "SUM"
      },
      "histogram_configuration": {
        "percentile": 1.0,
        "percentiles": [
          1.0
        ]
      },
      "insight_comparison_configuration": {
        "lhs_id": "count/fkQ1PfAZhdYvJexzY6DYuoYCZTEaWO0Y7spxwjr7akc",
        "rhs_id": "count/fkQ1PfAZhdYvJexzY6DYuoYCZTEaWO0Y7spxwjr7akc"
      },
      "limit_strategy": {
        "exclusions": {
          "dimension_identifiers": [
            {
              "id": "time_series_id_opaque_example",
              "labels": [
                {
                  "name": "name",
                  "value": "value"
                }
              ]
            }
          ],
          "return_other": false
        },
        "sort_order": "MAX",
        "top_k_limit": {
          "top_k": 5
        }
      },
      "rate_configuration": {
        "aggregation_type": "AVG"
      },
      "sankey_configuration": {
        "compaction_target": 1,
        "top_k_paths": 1
      },
      "time_series_display_mode": {}
    }
  ],
  "platform_filter": [
    {
      "apple": {
        "apps": [
          {
            "app_id": "com.example.app"
          }
        ]
      }
    }
  ],
  "time_range": {
    "relative_time_range": {
      "duration": "3600s",
      "offset": "3600s"
    }
  }
}
```

<p class="h4">Example Response</p>
```json
{
  "data": [
    {
      "chart_id": {
        "workflow": {
          "aggregated_action_id": "count/fkQ1PfAZhdYvJexzY6DYuoYCZTEaWO0Y7spxwjr7akc",
          "chart_rule_id": "_i1yUnHjKfmWpCaD5Tazo",
          "workflow_id": "DFg5"
        }
      },
      "line_data": {
        "time_series": [
          {
            "aggregated_rollup": 1.0,
            "aggregation_window": "3600s",
            "cardinality_overflows": {
              "group_by_overflows": 1,
              "query_group_by_collapsed": false,
              "total_overflows": 42
            },
            "data": [
              {
                "rate_details": {
                  "denominator_count": 42,
                  "numerator_count": 42
                },
                "timestamp": "2024-01-15T09:30:00Z",
                "unique_devices": 1,
                "value": 1.0
              }
            ],
            "id": "abc-123-def",
            "labels": [
              {
                "name": "name",
                "value": "value"
              }
            ],
            "legend": {
              "title": "Legend title"
            },
            "title": "Time series title",
            "unique_devices": 1
          }
        ]
      }
    }
  ]
}
```

### <a id="GetUniqueAppIds"></a>GetUniqueAppIds

Returns the distinct platform, app ID, and app version combinations seen in
 the specified time range.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">dashboards</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetUniqueAppIdsRequest</i>](bitdrift_public_unary_dashboards_v1_GetUniqueAppIdsRequest.md "bitdrift.public.unary.dashboards.v1.GetUniqueAppIdsRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">dashboards</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetUniqueAppIdsResponse</i>](bitdrift_public_unary_dashboards_v1_GetUniqueAppIdsResponse.md "bitdrift.public.unary.dashboards.v1.GetUniqueAppIdsResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.dashboards.v1.DashboardService/GetUniqueAppIds`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "end_time": "2024-01-31T23:59:59Z",
  "platform_filter": [
    {
      "apple": {
        "apps": [
          {
            "app_id": "com.example.app"
          }
        ]
      }
    }
  ],
  "start_time": "2024-01-01T00:00:00Z"
}
```

<p class="h4">Example Response</p>
```json
{
  "platforms": [
    "mobile"
  ]
}
```

### <a id="GetWorkflowCharts"></a>GetWorkflowCharts

Retrieves the chart configuration for a single workflow.

 Returns a list of all charts to be displayed for this workflow. The chart
 IDs should be used to fetch the data.

<section class="proto-service-table" markdown>

| Request | Response |
| - | - |
| <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">dashboards</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetWorkflowChartsRequest</i>](bitdrift_public_unary_dashboards_v1_GetWorkflowChartsRequest.md "bitdrift.public.unary.dashboards.v1.GetWorkflowChartsRequest")</span> | <span class="proto-type proto-type-message">[<i class="proto-type-part">bitdrift</i><i class="proto-type-dot">.</i><i class="proto-type-part">public</i><i class="proto-type-dot">.</i><i class="proto-type-part">unary</i><i class="proto-type-dot">.</i><i class="proto-type-part">dashboards</i><i class="proto-type-dot">.</i><i class="proto-type-part">v1</i><i class="proto-type-dot">.</i><i class="proto-type-part">GetWorkflowChartsResponse</i>](bitdrift_public_unary_dashboards_v1_GetWorkflowChartsResponse.md "bitdrift.public.unary.dashboards.v1.GetWorkflowChartsResponse")</span> |

</section>

<p class="h4">Example Request</p>
**URL:** `https://api-public.bitdrift.io/bitdrift.public.unary.dashboards.v1.DashboardService/GetWorkflowCharts`

See [calling the API](../api-guide/calling-the-api.md) for authentication and request details.

```json
{
  "workflow_id": "DFg5"
}
```

<p class="h4">Example Response</p>
```json
{
  "charts": [
    {
      "id": {
        "workflow": {
          "aggregated_action_id": "count/fkQ1PfAZhdYvJexzY6DYuoYCZTEaWO0Y7spxwjr7akc",
          "chart_rule_id": "_i1yUnHjKfmWpCaD5Tazo",
          "workflow_id": "DFg5"
        }
      },
      "line": {
        "configurable_percentiles": [
          99.0
        ],
        "supports_multiple_percentiles": true
      },
      "metadata": {
        "metric_chart_metadata": {
          "metadata": [
            {
              "connector_export_config": [
                {
                  "cloudwatch_connector_export_config": {
                    "fixed_dimensions": {
                      "key": ""
                    },
                    "metric_name": "foreground_launches",
                    "namespace": "mobile_metrics"
                  },
                  "connector_name": "cloudwatch-primary"
                }
              ],
              "limit_strategy": {
                "exclusions": {
                  "dimension_identifiers": [
                    {
                      "id": "time_series_id_opaque_example",
                      "labels": [
                        {
                          "name": "name",
                          "value": "value"
                        }
                      ]
                    }
                  ],
                  "return_other": false
                },
                "sort_order": "MAX",
                "top_k_limit": {
                  "top_k": 5
                }
              },
              "sort_order": "DESC",
              "title": "Time series title",
              "top_k_algorithm": "MAX",
              "y_axis": {
                "description": "Count",
                "unit": "COUNT"
              }
            }
          ],
          "time_series_display_mode": {}
        },
        "no_data_message": "Example text",
        "summary": {
          "description": "Example text"
        },
        "title": "Chart title"
      }
    }
  ]
}
```

