---
title: "Update a report"
method: PATCH
path: "/analytics/v1/reports/{id}"
tags: ["Reports"]
---

# Update a report

`PATCH /analytics/v1/reports/{id}`

Updates a report with the specified configuration.

Only specified fields will be updated.

## Path parameters

- `id` string, required

## Request body

- ExternalUpdateReport — Partial report object used for updates.
  - `config` ExternalConfig — Report configuration.
    - `metric` ExternalMetric — Metric selector used in reports and filters.
      - `type` 'basic' | 'custom' | 'extended' — Type of metric to use.
      - `value` string — For basic metrics, the value can be one of: ["cost", "usage", "savings"] If using custom metrics, the value must refer to an existing custom metric ID.
    - `metrics` ExternalMetric[] — The list of metrics to apply to the report. Custom metric can be used only once. Maximum number of metrics is 4.
      - `type` 'basic' | 'custom' | 'extended' — Type of metric to use.
      - `value` string — For basic metrics, the value can be one of: ["cost", "usage", "savings"] If using custom metrics, the value must refer to an existing custom metric ID.
    - `metricFilter` ExternalConfigMetricFilter — Metric filter to limit report rows by metric value.
      - `metric` ExternalMetric — Metric selector used in reports and filters.
        - `type` 'basic' | 'custom' | 'extended' — Type of metric to use.
        - `value` string — For basic metrics, the value can be one of: ["cost", "usage", "savings"] If using custom metrics, the value must refer to an existing custom metric ID.
      - `operator` 'gt' | 'lt' | 'lte' | 'gte' | 'b' | 'nb' | 'e' | 'ne' — Comparison operator for filtering metric values. Uses short names (`gt`, `gte`, …). `limitByChange.operator` uses SQL-style symbols (`>`, `>=`, …) instead.
      - `values` number[]
      - `operand` 'single_value' | 'series_total' — Whether the threshold applies to each value (default) or the series total. Same field as the DoiT Console metric filter `operand` (`OperandSingleValue` / `OperandSeriesTotal`). On input, omitted defaults to `single_value`. GET responses echo the effective value (`single_value` or `series_total`).
    - `limitAggregation` 'none' | 'top' | 'all' — Controls how rows excluded by limits are rendered. Applies when any limit type is active (`metricFilter`, `limitByChange`, or a `group` entry with a `limit`). A report may configure at most two of those three limit types — not all three. When `displayValues` is not `actuals_only`, this field must be `none` (or omitted, which defaults to `none`).
    - `limitByChange` ExternalLimitByChange — Limit by change filter. A report may configure at most two of `metricFilter`, `limitByChange`, and top/bottom `group` limits — not all three.
      - `metric` ExternalMetric, required — Metric selector used in reports and filters.
        - `type` 'basic' | 'custom' | 'extended' — Type of metric to use.
        - `value` string — For basic metrics, the value can be one of: ["cost", "usage", "savings"] If using custom metrics, the value must refer to an existing custom metric ID.
      - `changeType` 'percentage' | 'absolute', required
      - `operator` '>' | '>=' | '<' | '<=' | 'between' | 'not_between', required — Comparison operator for period-over-period deltas.
      - `values` number[], required — Threshold value(s). Unary operators use one entry; `between` and `not_between` require two ordered entries.
      - `includeIncompleteData` boolean, required — When true, keeps rows whose deltas could not be evaluated.
    - `aggregation` 'total' | 'percent_total' | 'percent_col' | 'percent_row' | 'total_over_total' | 'count' — How to aggregate data values in the report.
    - `advancedAnalysis` AdvancedAnalysis — Advanced analysis options. Each can be set independently.
      - `forecast` boolean
      - `notTrending` boolean
      - `trendingDown` boolean
      - `trendingUp` boolean
    - `forecastSettings` ExternalForecastSettings — Settings for cost forecasting on the report. Historical fields choose which past data the model learns from. Future fields choose how far ahead predicted costs are projected. When a custom date range is set for a side, it takes precedence over the corresponding interval count. futureCustomDateRange is converted to futureTimeIntervals using the report timeInterval. Providing forecastSettings enables forecast (advancedAnalysis.forecast) automatically. On PATCH, omit forecastSettings to leave forecasting unchanged; send forecastSettings: null to clear/disable forecasting (also removes the forecast feature flag). An empty object enables forecast with default mode totals. Interval counts outside the allowed min/max for the report timeInterval are rejected with a validation error that includes the allowed range.
      - `mode` 'totals' | 'grouping' — Forecast granularity mode.
      - `historicalTimeIntervals` integer — How many past timeInterval periods of data the model learns from. Allowed ranges by timeInterval: hour 2-1000, day 2-500, week 2-100, month 2-36, quarter 2-12, year 2-6.
      - `futureTimeIntervals` integer — How many future timeInterval periods of predicted costs to project. Allowed ranges by timeInterval: hour 1-1000, day 1-100, week 1-52, month 1-12, quarter 1-4, year 1-3.
      - `historicalCustomDateRange` ExternalForecastDateRange — Start and end timestamps in RFC3339 format.
        - `from` string, date-time — Start timestamp in RFC3339 format.
        - `to` string, date-time — End timestamp in RFC3339 format.
      - `futureCustomDateRange` ExternalForecastDateRange — Start and end timestamps in RFC3339 format.
        - `from` string, date-time — Start timestamp in RFC3339 format.
        - `to` string, date-time — End timestamp in RFC3339 format.
    - `timeInterval` 'hour' | 'day' | 'dayCumSum' | 'week' | 'isoweek' | 'month' | 'quarter' | 'year' | 'week_day' — Time interval for grouping data in the report.
    - `dimensions` Dimension[] — See [Dimensions](https://help.doit.com/docs/cloud-analytics/reports/editing-your-cloud-report#dimensions).
      - `id` string — The identifier of the dimension.
      - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'allocation' | 'allocation_rule' | 'gke' | 'gke_label' — Dimension filter type. Always pair `type` with `id` on scope filters. Discover valid `id` + `type` pairs for your account with `GET /analytics/v1/dimensions`. `allocation_rule` replaces `attribution`; `allocation` replaces `attribution_group`.
    - `timeRange` TimeSettings — Specify a predefined or custom time range for the report. For example, to specify a custom time range of "last 2 days", set the mode to `last`, the amount to `2`, and the unit to `day`. If `includeCurrent` is `true`, the range will be yesterday and today; otherwise, the range will be yesterday and the day before yesterday. If "custom" type is specified, you need to provide a custom time range in the `customTimeRange` field.
      - `amount` integer — Number of time units to include in the time range.
      - `includeCurrent` boolean — Whether to include the current time period.
      - `mode` 'last' | 'current' | 'custom' — Time range mode (last N periods, current period, or custom).
      - `unit` 'day' | 'week' | 'month' | 'quarter' | 'year' — Time unit for the time range.
    - `secondaryTimeRange` TimeSettingsSecondary — Secondary time range for comparative reports.
      - `amount` integer — Number of periods to shift back.
      - `includeCurrent` boolean — Whether to align to complete previous periods (full year/quarter/month) vs shifting dates by amount. When `true`, selects complete periods (e.g., full previous year Jan 1-Dec 31, not up to today). When `false`, shifts dates by amount, which may result in partial periods extending to today.
      - `unit` 'day' | 'month' | 'quarter' | 'year' — Time interval unit for shifting.
      - `customTimeRange` object — Custom date range for the secondary time range.
        - `from` string, date-time — Start date.
        - `to` string, date-time — End date.
    - `includePromotionalCredits` boolean — Whether to include [promotional credits](https://help.doit.com/docs/cloud-analytics/reports/editing-your-cloud-report#promotional-credits). If set to **true**, the report must use time interval `month`, `quarter`, or `year`.
    - `includeSubtotals` boolean — Whether to include subgroup totals in the report. This option has no impact when reading a report via API.
    - `filters` ExternalConfigFilter[] — The filters to apply to the report.
      - `id` string, required — Dimension key to filter on. Must pair with `type` and match a dimension returned by `GET /analytics/v1/dimensions` (for example, `service_description` with `type: fixed`). For `allocation_rule`, use `allocation_rule`. For `allocation`, use the allocation group ID. See `DimensionsTypes` for how each `type` uses `id`.
      - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'allocation' | 'allocation_rule' | 'gke' | 'gke_label', required — Dimension filter type. Always pair `type` with `id` on scope filters. Discover valid `id` + `type` pairs for your account with `GET /analytics/v1/dimensions`. `allocation_rule` replaces `attribution`; `allocation` replaces `attribution_group`.
      - `values` string[] — List of values to include or exclude. Must match exact strings from your billing or DataHub data for the dimension (for example, `Amazon Simple Storage Service` for AWS S3 on `service_description`). For `allocation_rule`, use allocation rule IDs.
      - `mode` 'is' | 'starts_with' | 'ends_with' | 'contains' | 'regexp' — Controls how the dimension’s `values` are matched when the alert query runs. If mode is omitted, behavior defaults to is.
      - `inverse` boolean — Set to `true` to exclude the set values. If inverse is omitted, behavior defaults to `false`.
      - `caseInsensitive` boolean — If true, string matching is case-insensitive. Effective only for starts_with, ends_with, and contains modes; ignored otherwise.
      - `includeNull` boolean — Include rows where the dimension is null. If includeNull is omitted, behavior defaults to `false`.
    - `group` Group[] — The rows that appear in the tabular format of the report. See [Group by](https://help.doit.com/docs/cloud-analytics/reports/editing-your-cloud-report#group-by).
      - `id` string — Dimension ID.
      - `limit` Limit — To limit the number of results based on ranking. See [Limit by top/bottom](https://help.doit.com/docs/cloud-analytics/reports/editing-your-cloud-report#limit-by-topbottom).
        - `metric` ExternalMetric — Metric selector used in reports and filters.
          - `type` 'basic' | 'custom' | 'extended' — Type of metric to use.
          - `value` string — For basic metrics, the value can be one of: ["cost", "usage", "savings"] If using custom metrics, the value must refer to an existing custom metric ID.
        - `sort` 'a_to_z' | 'asc' | 'desc' — Sort order for ranking results.
        - `value` integer — The number of items to show
      - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'allocation' | 'allocation_rule' | 'gke' | 'gke_label' — Dimension filter type. Always pair `type` with `id` on scope filters. Discover valid `id` + `type` pairs for your account with `GET /analytics/v1/dimensions`. `allocation_rule` replaces `attribution`; `allocation` replaces `attribution_group`.
    - `layout` 'column_chart' | 'stacked_column_chart' | 'bar_chart' | 'stacked_bar_chart' | 'line_chart' | 'spline_chart' | 'area_chart' | 'area_spline_chart' | 'stacked_area_chart' | 'treemap_chart' | 'table' | 'table_heatmap' | 'table_row_heatmap' | 'table_col_heatmap' | 'csv_export' | 'sheets_export' — Type of visualization or output format.
    - `displayValues` 'actuals_only' | 'absolute_change' | 'percentage_change' | 'absolute_and_percentage' — See [View data as (Comparative report)](https://help.doit.com/docs/cloud-analytics/reports/editing-your-cloud-report#view-as).
    - `currency` 'USD' | 'ILS' | 'EUR' | 'AUD' | 'CAD' | 'GBP' | 'DKK' | 'NOK' | 'SEK' | 'BRL' | 'SGD' | 'MXN' | 'CHF' | 'MYR' | 'TWD' | 'EGP' | 'ZAR' | 'JPY' | 'IDR' | 'AED' | 'THB' | 'COP' — Currency code for monetary values.
    - `sortGroups` 'asc' | 'desc' | 'a_to_z' — This option has no impact when reading reports via API.
    - `sortDimensions` 'asc' | 'desc' | 'a_to_z' — This option has no impact when reading reports via API.
    - `dataSource` 'billing' | 'bqlens' | 'billing-datahub' | 'kubernetes-utilization' — Data source of the report.
    - `splits` ExternalSplit[] — The splits to use in the report.
      - `id` string — ID of the field to split.
      - `includeOrigin` boolean — Indicate whether to include the origin.
      - `mode` 'even' | 'custom' | 'proportional'
      - `origin` ExternalOrigin — Origin info for cost splitting.
        - `id` string — ID of the origin.
        - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'gke' | 'gke_label' | 'unallocated' — Type of the origin.
      - `targets` ExternalSplitTarget[] — Targets for the split.
        - `id` string — ID of the target.
        - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'gke' | 'gke_label' — Type of the target. If split type is "attribution_group", then target type must be "attribution". Otherwise split types and target types must be the same.
        - `value` number, double — Percent of the target, represented in float format. E.g. 30% is 0.3. Required only if the Split Mode is custom.
      - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'gke' | 'gke_label' — Type of the split.
    - `displaySettings` ExternalDisplaySettings — Display settings for the report.
      - `themeId` string — Identifier of the theme applied to the report. The reserved sentinel `"default"` is returned on GET when no theme is stored and clears the stored value on PATCH. Omit the field on PATCH to leave the stored value unchanged.
      - `dataLabelFontSize` 'auto' | 'small' | 'medium' | 'large' — Font size used for data labels on charts.
      - `axisLabelFontSize` 'auto' | 'small' | 'medium' | 'large' — Font size used for axis labels on charts.
      - `numberScale` 'auto' | 'thousands' | 'millions' | 'billions' | 'raw' — Scale applied to numeric values when rendering the report.
      - `decimalPrecision` integer — Number of decimal places shown for numeric values.
    - `customTimeRange` object — Required when the time range is set to "custom".
      - `from` string, date-time — The start timestamp of the time range in RFC3339 format.
      - `to` string, date-time — The end timestamp of the time range in RFC3339 format.
    - `count` object — The field to count distinct values of. Only applicable when aggregation is set to "count".
      - `id` string, required — The field identifier to count distinct values of.
      - `type` 'fixed' | 'label' | 'tag' | 'project_label' | 'system_label', required — The metadata field type.
  - `description` string — Report description
  - `name` string — Report name
  - `labels` string[] — Array of label IDs assigned to the report
  - `folderId` string — Identifier of the folder that contains the report. Set to "root" if the report is at the top level (not in a folder).

## Response `200`

OK - Report updated.

- ExternalReport — Configuration and metadata of a stored report.
  - `id` string — Report ID.
  - `name` string, required — Report name.
  - `description` string — Report description.
  - `type` 'custom' | 'preset' | 'managed' — Report type.
  - `config` ExternalConfig — Report configuration.
    - `metric` ExternalMetric — Metric selector used in reports and filters.
      - `type` 'basic' | 'custom' | 'extended' — Type of metric to use.
      - `value` string — For basic metrics, the value can be one of: ["cost", "usage", "savings"] If using custom metrics, the value must refer to an existing custom metric ID.
    - `metrics` ExternalMetric[] — The list of metrics to apply to the report. Custom metric can be used only once. Maximum number of metrics is 4.
      - `type` 'basic' | 'custom' | 'extended' — Type of metric to use.
      - `value` string — For basic metrics, the value can be one of: ["cost", "usage", "savings"] If using custom metrics, the value must refer to an existing custom metric ID.
    - `metricFilter` ExternalConfigMetricFilter — Metric filter to limit report rows by metric value.
      - `metric` ExternalMetric — Metric selector used in reports and filters.
        - `type` 'basic' | 'custom' | 'extended' — Type of metric to use.
        - `value` string — For basic metrics, the value can be one of: ["cost", "usage", "savings"] If using custom metrics, the value must refer to an existing custom metric ID.
      - `operator` 'gt' | 'lt' | 'lte' | 'gte' | 'b' | 'nb' | 'e' | 'ne' — Comparison operator for filtering metric values. Uses short names (`gt`, `gte`, …). `limitByChange.operator` uses SQL-style symbols (`>`, `>=`, …) instead.
      - `values` number[]
      - `operand` 'single_value' | 'series_total' — Whether the threshold applies to each value (default) or the series total. Same field as the DoiT Console metric filter `operand` (`OperandSingleValue` / `OperandSeriesTotal`). On input, omitted defaults to `single_value`. GET responses echo the effective value (`single_value` or `series_total`).
    - `limitAggregation` 'none' | 'top' | 'all' — Controls how rows excluded by limits are rendered. Applies when any limit type is active (`metricFilter`, `limitByChange`, or a `group` entry with a `limit`). A report may configure at most two of those three limit types — not all three. When `displayValues` is not `actuals_only`, this field must be `none` (or omitted, which defaults to `none`).
    - `limitByChange` ExternalLimitByChange — Limit by change filter. A report may configure at most two of `metricFilter`, `limitByChange`, and top/bottom `group` limits — not all three.
      - `metric` ExternalMetric, required — Metric selector used in reports and filters.
        - `type` 'basic' | 'custom' | 'extended' — Type of metric to use.
        - `value` string — For basic metrics, the value can be one of: ["cost", "usage", "savings"] If using custom metrics, the value must refer to an existing custom metric ID.
      - `changeType` 'percentage' | 'absolute', required
      - `operator` '>' | '>=' | '<' | '<=' | 'between' | 'not_between', required — Comparison operator for period-over-period deltas.
      - `values` number[], required — Threshold value(s). Unary operators use one entry; `between` and `not_between` require two ordered entries.
      - `includeIncompleteData` boolean, required — When true, keeps rows whose deltas could not be evaluated.
    - `aggregation` 'total' | 'percent_total' | 'percent_col' | 'percent_row' | 'total_over_total' | 'count' — How to aggregate data values in the report.
    - `advancedAnalysis` AdvancedAnalysis — Advanced analysis options. Each can be set independently.
      - `forecast` boolean
      - `notTrending` boolean
      - `trendingDown` boolean
      - `trendingUp` boolean
    - `forecastSettings` ExternalForecastSettings — Settings for cost forecasting on the report. Historical fields choose which past data the model learns from. Future fields choose how far ahead predicted costs are projected. When a custom date range is set for a side, it takes precedence over the corresponding interval count. futureCustomDateRange is converted to futureTimeIntervals using the report timeInterval. Providing forecastSettings enables forecast (advancedAnalysis.forecast) automatically. On PATCH, omit forecastSettings to leave forecasting unchanged; send forecastSettings: null to clear/disable forecasting (also removes the forecast feature flag). An empty object enables forecast with default mode totals. Interval counts outside the allowed min/max for the report timeInterval are rejected with a validation error that includes the allowed range.
      - `mode` 'totals' | 'grouping' — Forecast granularity mode.
      - `historicalTimeIntervals` integer — How many past timeInterval periods of data the model learns from. Allowed ranges by timeInterval: hour 2-1000, day 2-500, week 2-100, month 2-36, quarter 2-12, year 2-6.
      - `futureTimeIntervals` integer — How many future timeInterval periods of predicted costs to project. Allowed ranges by timeInterval: hour 1-1000, day 1-100, week 1-52, month 1-12, quarter 1-4, year 1-3.
      - `historicalCustomDateRange` ExternalForecastDateRange — Start and end timestamps in RFC3339 format.
        - `from` string, date-time — Start timestamp in RFC3339 format.
        - `to` string, date-time — End timestamp in RFC3339 format.
      - `futureCustomDateRange` ExternalForecastDateRange — Start and end timestamps in RFC3339 format.
        - `from` string, date-time — Start timestamp in RFC3339 format.
        - `to` string, date-time — End timestamp in RFC3339 format.
    - `timeInterval` 'hour' | 'day' | 'dayCumSum' | 'week' | 'isoweek' | 'month' | 'quarter' | 'year' | 'week_day' — Time interval for grouping data in the report.
    - `dimensions` Dimension[] — See [Dimensions](https://help.doit.com/docs/cloud-analytics/reports/editing-your-cloud-report#dimensions).
      - `id` string — The identifier of the dimension.
      - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'allocation' | 'allocation_rule' | 'gke' | 'gke_label' — Dimension filter type. Always pair `type` with `id` on scope filters. Discover valid `id` + `type` pairs for your account with `GET /analytics/v1/dimensions`. `allocation_rule` replaces `attribution`; `allocation` replaces `attribution_group`.
    - `timeRange` TimeSettings — Specify a predefined or custom time range for the report. For example, to specify a custom time range of "last 2 days", set the mode to `last`, the amount to `2`, and the unit to `day`. If `includeCurrent` is `true`, the range will be yesterday and today; otherwise, the range will be yesterday and the day before yesterday. If "custom" type is specified, you need to provide a custom time range in the `customTimeRange` field.
      - `amount` integer — Number of time units to include in the time range.
      - `includeCurrent` boolean — Whether to include the current time period.
      - `mode` 'last' | 'current' | 'custom' — Time range mode (last N periods, current period, or custom).
      - `unit` 'day' | 'week' | 'month' | 'quarter' | 'year' — Time unit for the time range.
    - `secondaryTimeRange` TimeSettingsSecondary — Secondary time range for comparative reports.
      - `amount` integer — Number of periods to shift back.
      - `includeCurrent` boolean — Whether to align to complete previous periods (full year/quarter/month) vs shifting dates by amount. When `true`, selects complete periods (e.g., full previous year Jan 1-Dec 31, not up to today). When `false`, shifts dates by amount, which may result in partial periods extending to today.
      - `unit` 'day' | 'month' | 'quarter' | 'year' — Time interval unit for shifting.
      - `customTimeRange` object — Custom date range for the secondary time range.
        - `from` string, date-time — Start date.
        - `to` string, date-time — End date.
    - `includePromotionalCredits` boolean — Whether to include [promotional credits](https://help.doit.com/docs/cloud-analytics/reports/editing-your-cloud-report#promotional-credits). If set to **true**, the report must use time interval `month`, `quarter`, or `year`.
    - `includeSubtotals` boolean — Whether to include subgroup totals in the report. This option has no impact when reading a report via API.
    - `filters` ExternalConfigFilter[] — The filters to apply to the report.
      - `id` string, required — Dimension key to filter on. Must pair with `type` and match a dimension returned by `GET /analytics/v1/dimensions` (for example, `service_description` with `type: fixed`). For `allocation_rule`, use `allocation_rule`. For `allocation`, use the allocation group ID. See `DimensionsTypes` for how each `type` uses `id`.
      - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'allocation' | 'allocation_rule' | 'gke' | 'gke_label', required — Dimension filter type. Always pair `type` with `id` on scope filters. Discover valid `id` + `type` pairs for your account with `GET /analytics/v1/dimensions`. `allocation_rule` replaces `attribution`; `allocation` replaces `attribution_group`.
      - `values` string[] — List of values to include or exclude. Must match exact strings from your billing or DataHub data for the dimension (for example, `Amazon Simple Storage Service` for AWS S3 on `service_description`). For `allocation_rule`, use allocation rule IDs.
      - `mode` 'is' | 'starts_with' | 'ends_with' | 'contains' | 'regexp' — Controls how the dimension’s `values` are matched when the alert query runs. If mode is omitted, behavior defaults to is.
      - `inverse` boolean — Set to `true` to exclude the set values. If inverse is omitted, behavior defaults to `false`.
      - `caseInsensitive` boolean — If true, string matching is case-insensitive. Effective only for starts_with, ends_with, and contains modes; ignored otherwise.
      - `includeNull` boolean — Include rows where the dimension is null. If includeNull is omitted, behavior defaults to `false`.
    - `group` Group[] — The rows that appear in the tabular format of the report. See [Group by](https://help.doit.com/docs/cloud-analytics/reports/editing-your-cloud-report#group-by).
      - `id` string — Dimension ID.
      - `limit` Limit — To limit the number of results based on ranking. See [Limit by top/bottom](https://help.doit.com/docs/cloud-analytics/reports/editing-your-cloud-report#limit-by-topbottom).
        - `metric` ExternalMetric — Metric selector used in reports and filters.
          - `type` 'basic' | 'custom' | 'extended' — Type of metric to use.
          - `value` string — For basic metrics, the value can be one of: ["cost", "usage", "savings"] If using custom metrics, the value must refer to an existing custom metric ID.
        - `sort` 'a_to_z' | 'asc' | 'desc' — Sort order for ranking results.
        - `value` integer — The number of items to show
      - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'allocation' | 'allocation_rule' | 'gke' | 'gke_label' — Dimension filter type. Always pair `type` with `id` on scope filters. Discover valid `id` + `type` pairs for your account with `GET /analytics/v1/dimensions`. `allocation_rule` replaces `attribution`; `allocation` replaces `attribution_group`.
    - `layout` 'column_chart' | 'stacked_column_chart' | 'bar_chart' | 'stacked_bar_chart' | 'line_chart' | 'spline_chart' | 'area_chart' | 'area_spline_chart' | 'stacked_area_chart' | 'treemap_chart' | 'table' | 'table_heatmap' | 'table_row_heatmap' | 'table_col_heatmap' | 'csv_export' | 'sheets_export' — Type of visualization or output format.
    - `displayValues` 'actuals_only' | 'absolute_change' | 'percentage_change' | 'absolute_and_percentage' — See [View data as (Comparative report)](https://help.doit.com/docs/cloud-analytics/reports/editing-your-cloud-report#view-as).
    - `currency` 'USD' | 'ILS' | 'EUR' | 'AUD' | 'CAD' | 'GBP' | 'DKK' | 'NOK' | 'SEK' | 'BRL' | 'SGD' | 'MXN' | 'CHF' | 'MYR' | 'TWD' | 'EGP' | 'ZAR' | 'JPY' | 'IDR' | 'AED' | 'THB' | 'COP' — Currency code for monetary values.
    - `sortGroups` 'asc' | 'desc' | 'a_to_z' — This option has no impact when reading reports via API.
    - `sortDimensions` 'asc' | 'desc' | 'a_to_z' — This option has no impact when reading reports via API.
    - `dataSource` 'billing' | 'bqlens' | 'billing-datahub' | 'kubernetes-utilization' — Data source of the report.
    - `splits` ExternalSplit[] — The splits to use in the report.
      - `id` string — ID of the field to split.
      - `includeOrigin` boolean — Indicate whether to include the origin.
      - `mode` 'even' | 'custom' | 'proportional'
      - `origin` ExternalOrigin — Origin info for cost splitting.
        - `id` string — ID of the origin.
        - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'gke' | 'gke_label' | 'unallocated' — Type of the origin.
      - `targets` ExternalSplitTarget[] — Targets for the split.
        - `id` string — ID of the target.
        - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'gke' | 'gke_label' — Type of the target. If split type is "attribution_group", then target type must be "attribution". Otherwise split types and target types must be the same.
        - `value` number, double — Percent of the target, represented in float format. E.g. 30% is 0.3. Required only if the Split Mode is custom.
      - `type` 'datetime' | 'fixed' | 'optional' | 'label' | 'tag' | 'project_label' | 'system_label' | 'attribution' | 'attribution_group' | 'gke' | 'gke_label' — Type of the split.
    - `displaySettings` ExternalDisplaySettings — Display settings for the report.
      - `themeId` string — Identifier of the theme applied to the report. The reserved sentinel `"default"` is returned on GET when no theme is stored and clears the stored value on PATCH. Omit the field on PATCH to leave the stored value unchanged.
      - `dataLabelFontSize` 'auto' | 'small' | 'medium' | 'large' — Font size used for data labels on charts.
      - `axisLabelFontSize` 'auto' | 'small' | 'medium' | 'large' — Font size used for axis labels on charts.
      - `numberScale` 'auto' | 'thousands' | 'millions' | 'billions' | 'raw' — Scale applied to numeric values when rendering the report.
      - `decimalPrecision` integer — Number of decimal places shown for numeric values.
    - `customTimeRange` object — Required when the time range is set to "custom".
      - `from` string, date-time — The start timestamp of the time range in RFC3339 format.
      - `to` string, date-time — The end timestamp of the time range in RFC3339 format.
    - `count` object — The field to count distinct values of. Only applicable when aggregation is set to "count".
      - `id` string, required — The field identifier to count distinct values of.
      - `type` 'fixed' | 'label' | 'tag' | 'project_label' | 'system_label', required — The metadata field type.
  - `labels` string[] — Array of label IDs assigned to the report
  - `folderId` string — Identifier of the folder that contains the report. Set to "root" if the report is at the top level (not in a folder).

## Other responses

- `400` — Bad Request - The server cannot process the request, often due to a malformed request.
- `401` — Unauthorized - Invalid API key.
- `403` — Forbidden - The client is not authorized to perform the request.
- `500` — Internal Server Error - Something went wrong with the DoiT API server.

---

[API](https://skmtc.dev/doit/apis/doit-cloud-intelligence.md) · [All operations](https://skmtc.dev/doit/apis/doit-cloud-intelligence/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/doit/doit-cloud-intelligence/revisions/9416402fc119/schema)
