OpenAPI Specification
openapi: 3.0.0
info:
description: The Eon.io REST API
title: Eon accounts billing API
version: 1.0.0
servers:
- url: /
security:
- ApiKeyAuth: []
tags:
- description: Access billing and usage metering information.
name: billing
x-displayName: Billing
paths:
/v1/cost-data:
post:
description: 'Description: Retrieves cost and usage data for the given time frame.
Use Query Cost Data to analyze backup costs by cloud provider, resource type, and resource.
For details on exploring your costs visually in the Eon console, see [About Cost Explorer](/user-guide/administration/cost-explorer/about-the-cost-explorer).
'
operationId: queryCostData
parameters:
- description: Maximum number of cost records to return in a single response.
example: 100
explode: true
in: query
name: pageSize
required: false
schema:
minimum: 1
type: integer
style: form
- allowEmptyValue: true
description: 'Cursor that points to the first record of the next page of results.
Get this value from the previous response.
To preserve the results in the same order, use the same time frame, grouping, and filters in the first request as all subsequent requests.
'
explode: true
in: query
name: pageToken
required: false
schema:
format: tobedefined
type: string
style: form
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/QueryCostDataRequest'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/QueryCostDataResponse'
description: Cost data retrieved.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/queryCostData_400_response'
description: Invalid request.
1XX:
description: Informational
3XX:
description: Redirect
4XX:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Client Error
5XX:
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Internal Server Error
summary: Query Cost Data
tags:
- billing
x-mcp: true
x-internal: false
x-data-access:
excluded: true
x-permissions:
- read:cost_data
x-audit-log:
action: read
entityRefs:
- entityType: account
in: reqBody
key: filters.accountId
- entityType: project
in: reqBody
key: filters.projectId
components:
schemas:
TagKeyValuesFilters:
additionalProperties: false
example:
containsAllOf:
- environment=staging
- app=web
containsNoneOf:
- environment=staging
- app=web
containsAnyOf:
- environment=production
- app=web
properties:
containsAllOf:
description: Matches if any `{key}={value}` pair in this list is in the `tags` list.
example:
- environment=staging
- app=web
items:
type: string
type: array
containsAnyOf:
description: Matches if none of the `{key}={value}` pairs in this list are in the `tags` list.
example:
- environment=production
- app=web
items:
type: string
type: array
containsNoneOf:
description: Matches if all `{key}={value}` pairs in this list are in the `tags` list.
example:
- environment=staging
- app=web
items:
type: string
type: array
type: object
CostDataRecordCost:
description: 'Cost and usage breakdown for a specific billable usage type.
'
example:
cost:
amount: 150.75
unit: CREDITS
usage:
amount: 1073741824
unit: BYTES
meteringDimension: AWS_EC2_METERING_DIMENSION
properties:
meteringDimension:
$ref: '#/components/schemas/MeteringDimension'
cost:
$ref: '#/components/schemas/Cost'
usage:
$ref: '#/components/schemas/Usage'
required:
- cost
- meteringDimension
- usage
type: object
Provider:
description: 'Cloud provider.
`PROVIDER_UNSPECIFIED` is supported only in responses.
'
enum:
- AWS
- AZURE
- GCP
- MONGO_ATLAS
- GOOGLE_WORKSPACE
- MICROSOFT_365
- PROVIDER_UNSPECIFIED
example: AWS
type: string
x-docs-internal-enum:
- GOOGLE_WORKSPACE
- MICROSOFT_365
CostDataRecordDimensions:
description: 'Grouping dimensions that categorize this cost record.
Contains metadata about the cloud provider, resource type, resource ID, and source account that generated these costs.
'
example:
resourceId: 123e4567-e89b-12d3-a456-426614174000
cloudProvider: AWS
sourceAccountProviderId: '123456789012'
resourceType: AWS_EC2
properties:
cloudProvider:
$ref: '#/components/schemas/Provider'
resourceType:
$ref: '#/components/schemas/ResourceType'
resourceId:
description: 'Eon-assigned resource ID.
'
example: 123e4567-e89b-12d3-a456-426614174000
format: uuid
type: string
sourceAccountProviderId:
description: 'Cloud-provider-assigned account ID for the source account.
'
example: '123456789012'
type: string
type: object
MeteringDimension:
description: 'Type of resource usage being metered and billed across different cloud providers.
Each dimension represents a specific billable resource type, such as compute instances, storage volumes, database services, or data transfer.
Used to categorize costs by service type for detailed analysis and chargeback reporting.
'
enum:
- AWS_EC2_METERING_DIMENSION
- AWS_EC2_NATIVE_METERING_DIMENSION
- AWS_RDS_METERING_DIMENSION
- AWS_RDS_ORACLE_METERING_DIMENSION
- AWS_S3_METERING_DIMENSION
- AWS_S3_DLSG_METERING_DIMENSION
- AWS_DYNAMO_DB_METERING_DIMENSION
- AWS_EKS_METERING_DIMENSION
- AZURE_VIRTUAL_MACHINE_METERING_DIMENSION
- AZURE_STORAGE_ACCOUNT_METERING_DIMENSION
- AZURE_SQL_VIRTUAL_MACHINE_METERING_DIMENSION
- AZURE_SQL_DATABASE_METERING_DIMENSION
- GCP_VM_INSTANCE_METERING_DIMENSION
- GCP_VM_NATIVE_METERING_DIMENSION
- GCP_CLOUD_STORAGE_METERING_DIMENSION
- GCP_CLOUD_SQL_POSTGRES_SQL_METERING_DIMENSION
- GCP_CLOUD_SQL_MYSQL_METERING_DIMENSION
- GCP_CLOUD_SQL_SQL_SERVER_METERING_DIMENSION
- GCP_BIG_QUERY_METERING_DIMENSION
- MONGO_ATLAS_CLUSTER_METERING_DIMENSION
- DATA_TRANSFER_METERING_DIMENSION
- AWS_EC2_TO_AZURE_VAULT_METERING_DIMENSION
- AWS_S3_TO_AZURE_VAULT_METERING_DIMENSION
- AWS_RDS_TO_AZURE_VAULT_METERING_DIMENSION
- AWS_DYNAMO_DB_TO_AZURE_VAULT_METERING_DIMENSION
- AWS_EKS_TO_AZURE_VAULT_METERING_DIMENSION
- AZURE_VIRTUAL_MACHINE_TO_AWS_VAULT_METERING_DIMENSION
- AZURE_STORAGE_ACCOUNT_TO_AWS_VAULT_METERING_DIMENSION
- AZURE_SQL_VIRTUAL_MACHINE_TO_AWS_VAULT_METERING_DIMENSION
- GCP_VM_INSTANCE_TO_AZURE_VAULT_METERING_DIMENSION
- GCP_CLOUD_STORAGE_TO_AZURE_VAULT_METERING_DIMENSION
- GCP_CLOUD_SQL_POSTGRES_TO_AZURE_VAULT_METERING_DIMENSION
- GCP_CLOUD_SQL_MYSQL_TO_AZURE_VAULT_METERING_DIMENSION
- GCP_CLOUD_SQL_SQL_SERVER_TO_AZURE_VAULT_METERING_DIMENSION
- AWS_EC2_TO_GCP_VAULT_METERING_DIMENSION
- AWS_S3_TO_GCP_VAULT_METERING_DIMENSION
- AWS_RDS_TO_GCP_VAULT_METERING_DIMENSION
- AWS_DYNAMO_DB_TO_GCP_VAULT_METERING_DIMENSION
- AWS_EKS_TO_GCP_VAULT_METERING_DIMENSION
- AZURE_VIRTUAL_MACHINE_TO_GCP_VAULT_METERING_DIMENSION
- AZURE_STORAGE_ACCOUNT_TO_GCP_VAULT_METERING_DIMENSION
- AZURE_SQL_VIRTUAL_MACHINE_TO_GCP_VAULT_METERING_DIMENSION
- GCP_VM_INSTANCE_TO_AWS_VAULT_METERING_DIMENSION
- GCP_CLOUD_STORAGE_TO_AWS_VAULT_METERING_DIMENSION
- GCP_CLOUD_SQL_POSTGRES_TO_AWS_VAULT_METERING_DIMENSION
- GCP_CLOUD_SQL_MYSQL_TO_AWS_VAULT_METERING_DIMENSION
- GCP_CLOUD_SQL_SQL_SERVER_TO_AWS_VAULT_METERING_DIMENSION
- STORAGE_GATEWAY_METERING_DIMENSION
- RANSOMWARE_PROTECTED_STORAGE_METERING_DIMENSION
example: AWS_EC2_METERING_DIMENSION
type: string
x-docs-internal-enum:
- AWS_RDS_ORACLE_METERING_DIMENSION
- AWS_S3_DLSG_METERING_DIMENSION
- GCP_VM_NATIVE_METERING_DIMENSION
- GCP_CLOUD_SQL_POSTGRES_TO_AZURE_VAULT_METERING_DIMENSION
- GCP_CLOUD_SQL_MYSQL_TO_AZURE_VAULT_METERING_DIMENSION
- GCP_CLOUD_SQL_SQL_SERVER_TO_AZURE_VAULT_METERING_DIMENSION
- AWS_RDS_TO_GCP_VAULT_METERING_DIMENSION
- AWS_DYNAMO_DB_TO_GCP_VAULT_METERING_DIMENSION
- AZURE_SQL_VIRTUAL_MACHINE_TO_GCP_VAULT_METERING_DIMENSION
- GCP_CLOUD_SQL_POSTGRES_TO_AWS_VAULT_METERING_DIMENSION
- GCP_CLOUD_SQL_MYSQL_TO_AWS_VAULT_METERING_DIMENSION
- GCP_CLOUD_SQL_SQL_SERVER_TO_AWS_VAULT_METERING_DIMENSION
CostDataFilters:
additionalProperties: false
example:
resourceId:
in:
- 1ee34dc5-0a7c-4e56-a820-917371e05c8d
- 2ff45ed6-1b8d-5f67-b931-028482f16e0e
notIn:
- 6aecc4b5-9d75-4787-88ab-fa6ab98933e0
tagKeyValues:
containsAllOf:
- environment=staging
- app=web
containsNoneOf:
- environment=staging
- app=web
containsAnyOf:
- environment=production
- app=web
tagKeys:
containsAllOf:
- environment
- app
containsNoneOf:
- environment
- app
containsAnyOf:
- environment
- app
cloudProvider:
in:
- AWS
- AZURE
notIn:
- GCP
sourceAccountProviderId:
in:
- '123456789012'
- ce865f0b-3e4a-5455-8dae-826803bd5ca7
notIn:
- '111222333444'
- 9b28c6e9-2423-52f8-af66-3c2a0ec3e536
resourceType:
in:
- AWS_EC2
notIn:
- AWS_RDS
properties:
sourceAccountProviderId:
$ref: '#/components/schemas/SourceAccountProviderIdFilters'
cloudProvider:
$ref: '#/components/schemas/CloudProviderFilters'
resourceType:
$ref: '#/components/schemas/ResourceTypeFilters'
resourceId:
$ref: '#/components/schemas/IdFilters'
tagKeys:
$ref: '#/components/schemas/TagKeysFilters'
tagKeyValues:
$ref: '#/components/schemas/TagKeyValuesFilters'
type: object
CostDataGroupBy:
default: SOURCE_ACCOUNT
description: 'Dimension to group cost data by in the response.
'
enum:
- PRODUCT
- USAGE_TYPE
- DSG_BUCKET
- DSG_ENVIRONMENT
- SOURCE_ACCOUNT
- CLOUD_PROVIDER
- RESOURCE_TYPE
- RESOURCE
- RESOURCE_AND_VAULT
example: SOURCE_ACCOUNT
type: string
x-docs-internal-enum:
- PRODUCT
- USAGE_TYPE
- DSG_BUCKET
- DSG_ENVIRONMENT
x-enum-varnames:
- COST_GROUP_BY_PRODUCT
- COST_GROUP_BY_USAGE_TYPE
- COST_GROUP_BY_DSG_BUCKET
- COST_GROUP_BY_DSG_ENVIRONMENT
- COST_GROUP_BY_SOURCE_ACCOUNT
- COST_GROUP_BY_CLOUD_PROVIDER
- COST_GROUP_BY_RESOURCE_TYPE
- COST_GROUP_BY_RESOURCE
- COST_GROUP_BY_RESOURCE_AND_VAULT
ResourceTypeFilters:
additionalProperties: false
example:
in:
- AWS_EC2
notIn:
- AWS_RDS
properties:
in:
description: Matches if any value in this list equals `resourceType`.
example:
- AWS_EC2
items:
$ref: '#/components/schemas/ResourceType'
type: array
notIn:
description: Matches if no value in this list equals `resourceType`.
example:
- AWS_RDS
items:
$ref: '#/components/schemas/ResourceType'
type: array
type: object
CostGranularity:
default: MONTHLY
description: Time granularity for aggregating cost data.
enum:
- HOURLY
- DAILY
- MONTHLY
- TOTAL
example: MONTHLY
type: string
x-enum-varnames:
- COST_GRANULARITY_HOURLY
- COST_GRANULARITY_DAILY
- COST_GRANULARITY_MONTHLY
- COST_GRANULARITY_TOTAL
Error:
example:
error: error
properties:
error:
type: string
type: object
TagKeysFilters:
additionalProperties: false
example:
containsAllOf:
- environment
- app
containsNoneOf:
- environment
- app
containsAnyOf:
- environment
- app
properties:
containsAllOf:
description: Matches if any key in this list is in the `tags` keys list.
example:
- environment
- app
items:
type: string
type: array
containsAnyOf:
description: Matches if none of the keys in this list are in the `tags` keys list.
example:
- environment
- app
items:
type: string
type: array
containsNoneOf:
description: Matches if all keys in this list are in the `tags` keys list.
example:
- environment
- app
items:
type: string
type: array
type: object
CloudProviderFilters:
additionalProperties: false
example:
in:
- AWS
- AZURE
notIn:
- GCP
properties:
in:
description: Matches if any value in this list equals `cloudProvider`.
example:
- AWS
- AZURE
items:
$ref: '#/components/schemas/Provider'
type: array
notIn:
description: Matches if none of the values in this list equal `cloudProvider`.
example:
- GCP
items:
$ref: '#/components/schemas/Provider'
type: array
type: object
SourceAccountProviderIdFilters:
additionalProperties: false
example:
in:
- '123456789012'
- ce865f0b-3e4a-5455-8dae-826803bd5ca7
notIn:
- '111222333444'
- 9b28c6e9-2423-52f8-af66-3c2a0ec3e536
properties:
in:
description: Matches if any value in this list equals `sourceAccountProviderId`.
example:
- '123456789012'
- ce865f0b-3e4a-5455-8dae-826803bd5ca7
items:
type: string
type: array
notIn:
description: Matches if none of the values in this list equal `sourceAccountProviderId`.
example:
- '111222333444'
- 9b28c6e9-2423-52f8-af66-3c2a0ec3e536
items:
type: string
type: array
type: object
QueryCostDataResponse:
example:
records:
- costs:
- cost:
amount: 150.75
unit: CREDITS
usage:
amount: 1073741824
unit: BYTES
meteringDimension: AWS_EC2_METERING_DIMENSION
- cost:
amount: 150.75
unit: CREDITS
usage:
amount: 1073741824
unit: BYTES
meteringDimension: AWS_EC2_METERING_DIMENSION
resourceCount: 10
recordTimeFrame:
startTime: 2025-01-01 00:00:00+00:00
endTime: 2025-01-31 23:59:59+00:00
dimensions:
resourceId: 123e4567-e89b-12d3-a456-426614174000
cloudProvider: AWS
sourceAccountProviderId: '123456789012'
resourceType: AWS_EC2
- costs:
- cost:
amount: 150.75
unit: CREDITS
usage:
amount: 1073741824
unit: BYTES
meteringDimension: AWS_EC2_METERING_DIMENSION
- cost:
amount: 150.75
unit: CREDITS
usage:
amount: 1073741824
unit: BYTES
meteringDimension: AWS_EC2_METERING_DIMENSION
resourceCount: 10
recordTimeFrame:
startTime: 2025-01-01 00:00:00+00:00
endTime: 2025-01-31 23:59:59+00:00
dimensions:
resourceId: 123e4567-e89b-12d3-a456-426614174000
cloudProvider: AWS
sourceAccountProviderId: '123456789012'
resourceType: AWS_EC2
nextToken: eyJvZmZzZXQiOjEwMCwic29ydCI6InRpbWVGcmFtZSJ9
resourceCount: 2000
totalCount: 1543
properties:
records:
description: 'Array of cost data records matching the requested query criteria.
Each record contains cost and usage information grouped by the specified dimensions and time granularity.
'
items:
$ref: '#/components/schemas/CostDataRecord'
type: array
totalCount:
description: 'Total number of cost records that matched the time frame and filter options.
'
example: 1543
minimum: 0
type: integer
resourceCount:
description: 'Total number of resources that incurred costs during the specified time frame.
'
example: 2000
minimum: 0
type: integer
nextToken:
description: 'Cursor that points to the first record of the next page of results.
Pass this value in the next request.
'
example: eyJvZmZzZXQiOjEwMCwic29ydCI6InRpbWVGcmFtZSJ9
type: string
required:
- records
- resourceCount
- totalCount
- totalUniqueResources
type: object
TimeFrame:
example:
startTime: 2025-01-01 00:00:00+00:00
endTime: 2025-01-31 23:59:59+00:00
properties:
startTime:
description: 'Start time for the cost data query in ISO 8601 format.
Must be at least 24 hours before end time.
'
example: 2025-01-01 00:00:00+00:00
format: date-time
type: string
endTime:
description: 'End time for the cost data query in ISO 8601 format.
'
example: 2025-01-31 23:59:59+00:00
format: date-time
type: string
required:
- endTime
- startTime
type: object
IdFilters:
additionalProperties: false
example:
in:
- 1ee34dc5-0a7c-4e56-a820-917371e05c8d
- 2ff45ed6-1b8d-5f67-b931-028482f16e0e
notIn:
- 6aecc4b5-9d75-4787-88ab-fa6ab98933e0
properties:
in:
description: Matches if any string in this list equals `id`.
example:
- 1ee34dc5-0a7c-4e56-a820-917371e05c8d
- 2ff45ed6-1b8d-5f67-b931-028482f16e0e
items:
type: string
type: array
notIn:
description: Matches if no string in this list equals `id`.
example:
- 6aecc4b5-9d75-4787-88ab-fa6ab98933e0
items:
type: string
type: array
type: object
ResourceType:
description: 'Resource type identifier combining cloud provider and service type.
`RESOURCE_TYPE_UNSPECIFIED` is supported only in responses.
'
enum:
- AWS_EC2
- AWS_RDS
- AWS_S3
- AWS_EFS
- AWS_FSX
- AWS_EKS_NAMESPACE
- AWS_DYNAMO_DB
- AWS_EBS_VOLUME
- AWS_KEYSPACES_TABLE
- AWS_CASSANDRA_CLUSTER
- AWS_DOCUMENTDB
- AWS_NEPTUNE
- AZURE_VIRTUAL_MACHINE
- AZURE_FILE_SHARE
- AZURE_STORAGE_ACCOUNT
- AZURE_DISK
- AZURE_SQL_DATABASE
- AZURE_SQL_MANAGED_INSTANCE
- AZURE_SQL_VIRTUAL_MACHINE
- AZURE_SAP_HANA_VM
- AZURE_MYSQL
- AZURE_POSTGRESQL
- AZURE_COSMOSDB_MONGODB
- AZURE_COSMOSDB_NOSQL
- AZURE_AKS_NAMESPACE
- AZURE_CASSANDRA_CLUSTER
- ATLAS_MONGODB_CLUSTER
- GCP_COMPUTE_ENGINE_INSTANCE
- GCP_CLOUD_SQL_INSTANCE
- GCP_CLOUD_STORAGE_BUCKET
- GCP_GKE_NAMESPACE
- GCP_BIG_QUERY
- GCP_CLOUD_FIRESTORE
- GCP_DISK
- GCP_SAP_HANA_VM
- GCP_CASSANDRA_CLUSTER
- GOOGLE_WORKSPACE_RESOURCE
- MICROSOFT_365_RESOURCE
- RESOURCE_TYPE_UNSPECIFIED
example: AWS_EC2
type: string
x-docs-internal-enum:
- AWS_EBS_VOLUME
- AWS_KEYSPACES_TABLE
- AWS_CASSANDRA_CLUSTER
- GCP_CASSANDRA_CLUSTER
- AZURE_CASSANDRA_CLUSTER
- AWS_DOCUMENTDB
- AWS_NEPTUNE
- AZURE_SAP_HANA_VM
- AZURE_AKS_NAMESPACE
- GCP_GKE_NAMESPACE
- GCP_BIG_QUERY
- GCP_CLOUD_FIRESTORE
- GCP_DISK
- GCP_SAP_HANA_VM
- GOOGLE_WORKSPACE_RESOURCE
- MICROSOFT_365_RESOURCE
UsageUnit:
default: BYTE_MONTHS
description: 'Whether usage is returned in byte-months, raw bytes, operations, or object-months for the specified `timeFrame`.
`UNSPECIFIED` is supported only in responses.
'
enum:
- BYTE_MONTHS
- BYTES
- UNSPECIFIED
- OPERATIONS
- OBJECT_MONTHS
example: BYTES
type: string
x-docs-internal-enum:
- OPERATIONS
- OBJECT_MONTHS
x-enum-varnames:
- USAGE_UNIT_BYTE_MONTHS
- USAGE_UNIT_BYTES
- USAGE_UNIT_UNSPECIFIED
- USAGE_UNIT_OPERATIONS
- USAGE_UNIT_OBJECT_MONTHS
queryCostData_400_response:
example:
error: start time should be at least 24 hours before end time
properties:
error:
example: start time should be at least 24 hours before end time
format: tobedefined
type: string
type: object
Usage:
description: Raw usage amount and unit that generated the associated cost.
example:
amount: 1073741824
unit: BYTES
properties:
amount:
description: 'Raw usage quantity that generated the cost.
'
example: 1073741824
format: double
minimum: 0
type: number
unit:
$ref: '#/components/schemas/UsageUnit'
required:
- amount
- unit
type: object
CostUnit:
default: CREDITS
description: 'Currency unit for cost amounts.
Use `CREDITS` for Eon credits and `USD` for U.S. dollars.
`UNSPECIFIED` is supported only in responses.
'
enum:
- CREDITS
- USD
- UNSPECIFIED
example: CREDITS
type: string
x-enum-varnames:
- COST_UNIT_CREDITS
- COST_UNIT_USD
- COST_UNIT_UNSPECIFIED
Cost:
example:
amount: 150.75
unit: CREDITS
properties:
amount:
description: 'Cost amount in the specified currency unit.
1 credit is equivalent to 0.01 USD.
'
example: 150.75
format: double
minimum: 0
type: number
unit:
$ref: '#/components/schemas/CostUnit'
required:
- amount
- unit
type: object
QueryCostDataRequest:
example:
usageUnit: BYTES
costUnit: CREDITS
granularity: MONTHLY
filters:
resourceId:
in:
- 1ee34dc5-0a7c-4e56-a820-917371e05c8d
- 2ff45ed6-1b8d-5f67-b931-028482f16e0e
notIn:
- 6aecc4b5-9d75-4787-88ab-fa6ab98933e0
tagKeyValues:
containsAllOf:
- environment=staging
- app=web
containsNoneOf:
- environment=staging
- app=web
containsAnyOf:
- environment=production
- app=web
tagKeys:
containsAllOf:
- environment
- app
containsNoneOf:
- environment
- app
containsAnyOf:
- environment
- app
cloudProvider:
in:
- AWS
- AZURE
notIn:
- GCP
sourceAccountProviderId:
in:
- '123456789012'
- ce865f0b-3e4a-5455-8dae-826803bd5ca7
notIn:
- '111222333444'
- 9b28c6e9-2423-52f8-af66-3c2a0ec3e536
resourceType:
in:
- AWS_EC2
notIn:
- AWS_RDS
groupBy: SOURCE_ACCOUNT
timeFrame:
startTime: 2025-01-01 00:00:00+00:00
endTime: 2025-01-31 23:59:59+00:00
topN: 1
properties:
costUnit:
$ref: '#/components/schemas/CostUnit'
usageUnit:
$ref: '#/components/schemas/UsageUnit'
timeFrame:
$ref: '#/components/schemas/TimeFrame'
granularity:
$ref: '#/components/schemas/CostGranularity'
filters:
$ref: '#/components/schemas/CostDataFilters'
groupBy:
$ref: '#/components/schemas/CostDataGroupBy'
topN:
description: 'Limits the response to the top _n_ resources by total cost over `timeFrame`, and folds all other matching resources into one aggregated record per time period in `granularity`.
Use this when a resource-level query would return too many records—for example, to build an efficient top-spenders chart without requesting every resource for every period.
Applies only when grouping by `RESOURCE` or `RESOURCE_AND_VAULT`.
Otherwise, ignored.
Omit to return all matching resources.
Aggregated records have no dimensions and typically have `resourceCount` greater than 1.
'
minimum: 1
type: integer
required:
- timeFrame
type: object
CostDataRecord:
description: Total cost for this metering dimension in the specified currency unit.
example:
costs:
- cost:
amount: 150.75
unit: CREDITS
usage:
amount: 1073741824
unit: BYTES
meteringDimension: AWS_EC2_METERING_DIMENSION
- cost:
amount: 150.75
unit: CREDITS
usage:
amount: 1073741824
unit: BYTES
meteringDimension: AWS_EC2_METERING_DIMENSION
resourceCount: 10
recordTimeFrame:
startTime: 2025-01-01 00:00:00+00:00
endTime: 2025-01-31 23:59:59+00:00
dimensions:
resourceId: 123e4567-e89b-12d3-a456-426614174000
cloudProvider: AWS
sourceAccountProviderId: '123456789012'
resourceType: AWS_EC2
properties:
recordTimeFrame:
$ref: '#/components/schemas/TimeFrame'
resourceCount:
description: 'Number of unique resources that contributed to costs in this record''s time frame.
'
example: 10
minimum: 0
type: integer
dimensions:
$ref: '#/components/schemas/CostDataRecordDimensions'
costs:
description: 'Array of cost breakdowns by metering dimension.
'
items:
$ref: '#/components/schemas/CostDataRecordCost'
type: array
required:
- costs
- recordTimeFrame
type: object
securitySchemes:
ApiKeyAuth:
bearerFormat: JWT
scheme: bearer
type: http