Reports API

Programmatically obtain cost, usage and savings information for your cloud infrastructure with easy-to-use RESTful API.

DoiT Cloud Analytics Reports give you instant visibility into your cloud cost. With Cloud Analytics Reports, you can slice and dice your cloud spend and identify cost & performance optimization opportunities for your organization.

📘

Required Permissions

  • Cloud Analytics (part of Standard User built-in role)
  • Depending on the features you want to use, you may need extra permissions, for example, Attributions Manager. See Roles and permissions.

Endpoints

Schema

Common properties

Below are the common properties you'll find in response bodies of GET /analytics/v1/reports and GET /analytics/v1/reports/{id}.

PropertyTypeDescription
idstringReport ID. See Resource IDs.
reportNamestringReport name.
ownerstringThe owner of the report.
typestringReport type. Possible values: preset, custom, managed
createTimeint64The time when the report was created, epoch time in milliseconds.
updateTimeint64The time when the report was last modified, epoch time in milliseconds.
urlUIstringThe URL of the report in the DoiT console.

Result object

The result object contains the results of a report run. It's returned in the response bodies of GET /analytics/v1/reports/{id} and POST /analytics/v1/reports/query.

PropertyTypeDescription
schema[object]JSON object representing the rows values:

- name
- type
mlFeatures[string]The list of Advanced analysis features enabled on the report:

- increasing: Trending up
- decreasing: Trending down
- none: Not trending
- forecast: Forecast
rows[[query_result_object]]Rows of report results.
forecastRows[[forecast_result_object]]Rows of forecast results.

Config object

The config object contains a report's configuration. Its attributes correspond to the Report settings in the DoiT console.

PropertyTypeDescription
metricobjectThe metric to apply to the report. See Report settings: Metric.
Attributes:

- type: metric type. Possible values: basic, custom, extended
- value: metric name. For example, basic metrics are cost, usage, and savings.
metricFilterobjectTo limit the report results by metric values. See Limit by value.
Attributes:

- metric
- operator
- values
aggregationstringThe aggregation option of the data. See Aggregation.
advancedAnalysisobjectThe Advanced analysis features and whether they are enabled: forecast, notTrending, trendingUp, trendingDown
timeIntervalstringSee Time interval. For example, hour, day, week, month, quarter, year.
dimensions[dimension_object]To define the columns that appear in the tabular formats. See Dimensions.
Dimension object attributes:

- id: Dimension ID.
- type: Dimension type.
You can use the Dimensions API to check dimension IDs and types.
timeRangeobjectSpecify a predefined or custom time range for the report. See Time range.
includePromotionalCreditsbooleanSee Promotional credits.
includeSubtotalsbooleanSee Include subtotals.
filters[filter_object]To filter the results of a report. See Filter results.
Filter object attributes:

- id: Dimension ID.
- type: Dimension type.
- inverse(boolean): Set to true to exclude the specified values.
- value[string]: Values to filter on.
Note: To use an attribution as a filter, both the type and the ID must be attribution, and the value array must contain the attribution IDs.
group[group_by_object]To define the rows that appear in the tabular formats. See Group by.
Group-by object attributes:

- id: Dimension ID.
- type: Dimension type.
- limit(object): To limit the number of results based on ranking. See Limit by top/bottom.
- metric(object): Metric type and name.
- sort: Sort option. Possible values: asc, desc, a_to_z.
-value: The number of items to show.
layoutstringThe visualization option of the report. See View as.
displayValuesstringSee View data as (Comparative report).
currencystringThe currency in which the billing data is reported. See Currency.
sortGroupsstringThe sort option for groups. See Sort groups. Possible values:

- asc: Row total ascending.
- desc: Row total descending.
- a_to_z: Alphabetical sort by group name.
sortDimensionsstringThe sort option for dimensions. See Sort dimensions. Possible values:

- asc: Column total ascending.
- desc: Column total descending.
- a_to_z: Alphabetical sort by column title.
dataSourcestringData source of the report. See Data source. Possible values:

- billing: Use cloud billing data as the data source.
- billing_datahub: Use the combined dataset of cloud billing data and data imported via DoiT DataHub.
- bqlens: Use the BigQuery Lens audit log sink as the data source. See BigQuery Lens as data source.
splitsobjectTo split costs using attribution groups. See Split costs.
Attributes:

- id: Dimension ID.
- type: Dimension type. Must be attribution_group.
- includeOrigin(boolean)
- mode: Cost distribution method. Possible values: even, custom, proportional.
- origin(object)
- targets ([target_object])
customTimeRangeobjectAttributes:

- from: The start timestamp of the time range in RFC3339 format.
- to: The end timestamp of the time range in RFC3339 format.

Examples

👍

your-api-key

Always replace "your-api-key" with your actual API key as explained at Getting Started.

List all reports

The List reports method lists all reports accessible by your user account according to the report's access control list (ACL) as described at Share Cloud Analytics Reports.

You can filter the results using the following query parameters.

ParameterTypeDescription
minCreationTimestringMin value for a report's creation time, in milliseconds since the POSIX epoch. If set, only reports created after or at this timestamp are returned.
maxCreationTimestringMax value for a report's creation time, in milliseconds since the POSIX epoch. If set, only reports created before or at this timestamp are returned.
filterstringAn expression to filter the results of the request. The syntax is key:[<value>]. For example, using type:custom will return only custom reports. Learn more about filters.
Supported filter keys:

- type: Report type. Possible values: custom, preset
- owner: Owner of the report. Example: [email protected]
- reportName: Report name.
- updateTime: The time when the report was last modified, epoch time in milliseconds.

Sample request:

curl --location \
--request GET 'https://api.doit.com/analytics/v1/reports?maxResults=5' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer your-api-key' \
--data-raw ''

Sample response body:

{
  "pageToken": "djVmZnFPZDc0czkxNVBySzI4OVc",
  "rowCount": 5,
  "reports": [
    {
      "id": "rrVOklaQxh74xh2gPEzQ",
      "reportName": "EC2 Instance Amortised Cost by Coverage Type",
      "owner": "doit.com",
      "type": "preset",
      "createTime": 1712326184470,
      "updateTime": 1712327214694,
      "urlUI": "https://console.doit.com/customers/{CUSTOMER_ID}/analytics/reports/rrVOklaQxh74xh2gPEzQ"
    },
    {
      "id": "mTJwWWgI6PMC13pP0p3t",
      "reportName": "GCS Uploads by Bucket",
      "owner": "doit.com",
      "type": "preset",
      "createTime": 1709553127060,
      "updateTime": 1709553145612,
      "urlUI": "https://console.doit.com/customers/{CUSTOMER_ID}/analytics/reports/mTJwWWgI6PMC13pP0p3t"
    },
    {
      "id": "m0QjqmjOC9f6f0LPX4GA",
      "reportName": "GCS by Cost Type",
      "owner": "doit.com",
      "type": "preset",
      "createTime": 1709504558240,
      "updateTime": 1709504919076,
      "urlUI": "https://console.doit.com/customers/{CUSTOMER_ID}/analytics/reports/m0QjqmjOC9f6f0LPX4GA"
    },
    {
      "id": "KyPf3v17CueP6xlZ2vJK",
      "reportName": "GCS Cost by Bucket",
      "owner": "doit.com",
      "type": "preset",
      "createTime": 1709503968466,
      "updateTime": 1709504904672,
      "urlUI": "https://console.doit.com/customers/{CUSTOMER_ID}/analytics/reports/KyPf3v17CueP6xlZ2vJK"
    },
    {
      "id": "XjK5I6Eql5dNFgPw4Qh3",
      "reportName": "EKS Interactive Cost Explorer by Clusters and Pod owner",
      "owner": "doit.com",
      "type": "preset",
      "createTime": 1707210125547,
      "updateTime": 1708617155142,
      "urlUI": "https://console.doit.com/customers/{CUSTOMER_ID}/analytics/reports/XjK5I6Eql5dNFgPw4Qh3"
    }
  ]
}

Get report results

The Get report results method returns the results of a Cloud Analytics Report.

Sample request:

curl --request GET \
     --url 'https://api.doit.com/analytics/v1/reports/ViSpueEq1iXNMcL1n6Un' \
     --header 'Authorization: Bearer your-api-key' \
     --header 'accept: application/json'

Sample response body:

{
  "id": "ViSpueEq1iXNMcL1n6Un",
  "reportName": "Historical Cloud Native Costs by Platform",
  "owner": "doit.com",
  "type": "preset",
  "createTime": 1609229892750,
  "updateTime": 1712448000355,
  "urlUI": "https://console.doit.com/customers/EE8CtpzYiKp0dVAESVrB/analytics/reports/ViSpueEq1iXNMcL1n6Un",
  "result": {
    "schema": [
      {
        "name": "cloud_provider",
        "type": "string"
      },
      {
        "name": "year",
        "type": "string"
      },
      {
        "name": "month",
        "type": "string"
      },
      {
        "name": "cost",
        "type": "float"
      },
      {
        "name": "timestamp",
        "type": "timestamp"
      }
    ],
    "mlFeatures": [
      "forecast"
    ],
    "rows": [
      [
        "amazon-web-services",
        "2023",
        "10",
        330941.7693793848,
        1696118400
      ],
      [
        "amazon-web-services",
        "2023",
        "11",
        305171.4947461792,
        1698796800
      ],
      [
        "amazon-web-services",
        "2023",
        "12",
        312004.42597404466,
        1701388800
      ],
      [
        "amazon-web-services",
        "2024",
        "01",
        313523.0173567938,
        1704067200
      ],
      [
        "amazon-web-services",
        "2024",
        "02",
        299471.6298391634,
        1706745600
      ],
      [
        "amazon-web-services",
        "2024",
        "03",
        104042.84870879125,
        1709251200
      ],
      [
        "amazon-web-services",
        "2024",
        "04",
        91039.54142940845,
        1711929600
      ],
      [
        "amazon-web-services",
        "2024",
        "05",
        72912.15826542026,
        1714521600
      ],
      [
        "amazon-web-services",
        "2024",
        "06",
        44885.68562664757,
        1717200000
      ],
      [
        "amazon-web-services",
        "2024",
        "07",
        331956.2241485975,
        1719792000
      ],
      [
        "amazon-web-services",
        "2024",
        "08",
        268081.4014359781,
        1722470400
      ],
      [
        "amazon-web-services",
        "2024",
        "09",
        9430.640448551749,
        1725148800
      ],
      [
        "google-cloud",
        "2023",
        "10",
        156741.32602723103,
        1696118400
      ],
(omitted...)
      [
        "google-cloud",
        "2024",
        "09",
        22354.92029756825,
        1725148800
      ]
    ],
    "forecastRows": [
      [
        "Forecast",
        "2023",
        "10",
        null,
        1696118400
      ],
      [
        "Forecast",
        "2023",
        "11",
        null,
        1698796800
      ],
(omitted...)
      [
        "Forecast",
        "2025",
        "07",
        296300.8125,
        1751328000
      ]
    ]
  }
}

🚧

Experimental feature

You can pass an optional timeRange query parameter to override the time range of the report. You can either specify a period or startDate/endDate pair.

Examples:

To specify a period, use P[n]Y[n]M[n]D notation, where Y is the year(s), M is the month(s), and D is the day(s). For example, P28D means the last 28 days, and P1Y means the last year.