Domino APIs to analyze costs

The Domino FinOps APIs only allow aggregation by the Domino domain objects label. It does not extend to arbitrary Kubernetes objects, such as clusters.

The Domino REST API reference contains a complete listing of supported Domino REST APIs. You’ll need the SysAdmin role to use the /allocation and /asset API paths.

Sample Domino API building blocks

You’ll need to obtain the Domino API key in order to get started. You can generate a key from Domino by going to Account Settings > API Key.

Cost aggregated by cluster (today)

curl -H "X-Domino-Api-Key: $API_KEY" -H "Accept: application/json" https://$DOMAIN/api/cost/v1/allocation -d window=today -d aggregate=cluster -G

Cost aggregated by organization (today)

curl -H "X-Domino-Api-Key: $API_KEY" -H "Accept: application/json" https://$DOMAIN/api/cost/v1/allocation -d window=today -d aggregate=label:dominodatalab.com/organization-name -G

Cost aggregated by Project (today)

curl -H "X-Domino-Api-Key: $API_KEY" -H "Accept: application/json" https://$DOMAIN/api/cost/v1/allocation -d window=today -d aggregate=label:dominodatalab.com/project-id -G

Cost aggregated by billing tag (today)

curl -H "X-Domino-Api-Key: $API_KEY" -H "Accept: application/json" https://$DOMAIN/api/cost/v1/allocation -d window=today -d aggregate=label:dominodatalab.com/billing-tag -G

FinOps API Schema

The window query parameter is required. For more details on possible window values, see FinOps’s window documentation.

The trial version of Domino FinOps only supports up to 90 days of data storage. Contact your Domino representative if you want to use a window parameter of more than 90 days (90d).

The following field options are available with FinOps APIs:

FieldFieldDescription

name

Name of each relevant Kubernetes concept described by the allocation, delimited by slashes, e.g., cluster/node/namespace/pod/container.

properties

Map of name-to-value for all relevant property fields, including: cluster, node, namespace, controller, controllerKind, pod, container, labels, annotation, etc. Note: Prometheus only supports underscores (_) in label names. Dashes (-) and dots (.), while supported by Kubernetes, will be translated to underscores by Prometheus. This may cause the merging of labels, which could result in aggregated costs being charged to a single label.

window

Period of time over which the allocation is defined.

start

Precise starting time of the allocation. By definition must be within the window.

end

Precise ending time of the allocation. By definition must be within the window.

minutes

Number of minutes running; i.e., the minutes from start until end.

totalCost

Total cumulative cost.

rawAllocationOnly

Object with fields cpuCoreUsageMax and ramByteUsageMax, which are the maximum usages in the window for the Allocation. If the Allocation query is aggregated or accumulated, this object will be null because the meaning of maximum is ambiguous in these situations. Consider aggregating by namespace: should the maximum be the maximum of each Allocation individually, or the maximum combined usage of all Allocations (at any point in time in the window) in the namespace?