Validate budget
https://api.datadoghq.com/api/v2/cost/budget/validatehttps://api.us3.datadoghq.com/api/v2/cost/budget/validatehttps://api.us5.datadoghq.com/api/v2/cost/budget/validatehttps://api.datadoghq.eu/api/v2/cost/budget/validatehttps://api.ap1.datadoghq.com/api/v2/cost/budget/validatehttps://api.ap2.datadoghq.com/api/v2/cost/budget/validatehttps://api.uk1.datadoghq.com/api/v2/cost/budget/validatehttps://api.ddog-gov.com/api/v2/cost/budget/validatehttps://api.us2.ddog-gov.com/api/v2/cost/budget/validateDescripción general
Validate a budget configuration without creating or modifying it
Solicitud
Body Data (required)
dataThe data object for a budget validation request, containing the resource type, ID, and budget attributes to validate.
attributesThe attributes of a budget including all its monthly entries.
created_atThe timestamp when the budget was created.
created_byThe ID of the user that created the budget.
end_monthThe month when the budget ends, in YYYYMM format.
entriesThe list of monthly budget entries.
amountThe budgeted amount for this entry.
costsCost data for this entry. Present only when actual=true or forecast=true is requested.
actualThe actual cost for this entry. Present only when actual=true is requested.
amountThe budgeted amount for this entry.
custom_forecastThe custom forecast override for this entry. null when forecast=true is requested but no custom forecast has been set for this entry's month. A numeric value, including 0, indicates an explicit custom forecast override. Omitted when forecast=false or the feature is not available for the organization.
forecastThe final forecast for this entry, with any custom forecast override applied. Present only when forecast=true is requested.
ootb_forecastThe out-of-the-box ML forecast for this entry, before custom overrides. Present only when forecast=true is requested.
monthThe month this budget entry applies to, in YYYYMM format.
tag_filtersThe list of tag filters that scope this budget entry to specific resources.
tag_keyThe tag key to filter on.
tag_valueThe tag value to filter on.
metrics_queryThe cost query used to track spending against the budget.
nameThe name of the budget.
org_idThe ID of the organization the budget belongs to.
start_monthThe month when the budget starts, in YYYYMM format.
total_amountThe total budget amount across all entries.
updated_atThe timestamp when the budget was last updated.
updated_byThe ID of the user that last updated the budget.
idThe unique identifier of the budget to validate.
type [required]Budget resource type.
budgetbudget{
"data": {
"attributes": {
"created_at": "integer",
"created_by": "string",
"end_month": "integer",
"entries": [
{
"amount": "number",
"costs": {
"actual": "number",
"amount": "number",
"custom_forecast": "number",
"forecast": "number",
"ootb_forecast": "number"
},
"month": "integer",
"tag_filters": [
{
"tag_key": "string",
"tag_value": "string"
}
]
}
],
"metrics_query": "string",
"name": "string",
"org_id": "integer",
"start_month": "integer",
"total_amount": "number",
"updated_at": "integer",
"updated_by": "string"
},
"id": "string",
"type": "budget"
}
}Respuesta
OK
The response object for a budget validation request, containing the validation result data.
dataThe data object for a budget validation response, containing the resource type, ID, and validation attributes.
attributesThe attributes of a budget validation response, including any validation errors and the validity status.
errorsA list of validation error messages for the budget.
validWhether the budget configuration is valid.
idThe unique identifier of the budget being validated.
type [required]Budget validation resource type.
budget_validationbudget_validation{
"data": {
"attributes": {
"errors": [],
"valid": true
},
"id": "budget_validation",
"type": "budget_validation"
}
}Too many requests
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Ejemplo de código
# Set your Datadog site and credentials
export DD_SITE="datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/cost/budget/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"created_at": 1738258683590,
"created_by": "00000000-0a0a-0a0a-aaa0-00000000000a",
"end_month": 202502,
"entries": [
{
"amount": 500,
"month": 202501,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
},
{
"amount": 500,
"month": 202502,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
}
],
"metrics_query": "aws.cost.amortized{service:ec2} by {service}",
"name": "my budget",
"org_id": 123,
"start_month": 202501,
"total_amount": 1000,
"updated_at": 1738258683590,
"updated_by": "00000000-0a0a-0a0a-aaa0-00000000000a"
},
"id": "1",
"type": "budget"
}
}
EOF# Set your Datadog site and credentials
export DD_SITE="us3.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/cost/budget/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"created_at": 1738258683590,
"created_by": "00000000-0a0a-0a0a-aaa0-00000000000a",
"end_month": 202502,
"entries": [
{
"amount": 500,
"month": 202501,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
},
{
"amount": 500,
"month": 202502,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
}
],
"metrics_query": "aws.cost.amortized{service:ec2} by {service}",
"name": "my budget",
"org_id": 123,
"start_month": 202501,
"total_amount": 1000,
"updated_at": 1738258683590,
"updated_by": "00000000-0a0a-0a0a-aaa0-00000000000a"
},
"id": "1",
"type": "budget"
}
}
EOF# Set your Datadog site and credentials
export DD_SITE="us5.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/cost/budget/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"created_at": 1738258683590,
"created_by": "00000000-0a0a-0a0a-aaa0-00000000000a",
"end_month": 202502,
"entries": [
{
"amount": 500,
"month": 202501,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
},
{
"amount": 500,
"month": 202502,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
}
],
"metrics_query": "aws.cost.amortized{service:ec2} by {service}",
"name": "my budget",
"org_id": 123,
"start_month": 202501,
"total_amount": 1000,
"updated_at": 1738258683590,
"updated_by": "00000000-0a0a-0a0a-aaa0-00000000000a"
},
"id": "1",
"type": "budget"
}
}
EOF# Set your Datadog site and credentials
export DD_SITE="datadoghq.eu"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/cost/budget/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"created_at": 1738258683590,
"created_by": "00000000-0a0a-0a0a-aaa0-00000000000a",
"end_month": 202502,
"entries": [
{
"amount": 500,
"month": 202501,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
},
{
"amount": 500,
"month": 202502,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
}
],
"metrics_query": "aws.cost.amortized{service:ec2} by {service}",
"name": "my budget",
"org_id": 123,
"start_month": 202501,
"total_amount": 1000,
"updated_at": 1738258683590,
"updated_by": "00000000-0a0a-0a0a-aaa0-00000000000a"
},
"id": "1",
"type": "budget"
}
}
EOF# Set your Datadog site and credentials
export DD_SITE="ap1.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/cost/budget/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"created_at": 1738258683590,
"created_by": "00000000-0a0a-0a0a-aaa0-00000000000a",
"end_month": 202502,
"entries": [
{
"amount": 500,
"month": 202501,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
},
{
"amount": 500,
"month": 202502,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
}
],
"metrics_query": "aws.cost.amortized{service:ec2} by {service}",
"name": "my budget",
"org_id": 123,
"start_month": 202501,
"total_amount": 1000,
"updated_at": 1738258683590,
"updated_by": "00000000-0a0a-0a0a-aaa0-00000000000a"
},
"id": "1",
"type": "budget"
}
}
EOF# Set your Datadog site and credentials
export DD_SITE="ap2.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/cost/budget/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"created_at": 1738258683590,
"created_by": "00000000-0a0a-0a0a-aaa0-00000000000a",
"end_month": 202502,
"entries": [
{
"amount": 500,
"month": 202501,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
},
{
"amount": 500,
"month": 202502,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
}
],
"metrics_query": "aws.cost.amortized{service:ec2} by {service}",
"name": "my budget",
"org_id": 123,
"start_month": 202501,
"total_amount": 1000,
"updated_at": 1738258683590,
"updated_by": "00000000-0a0a-0a0a-aaa0-00000000000a"
},
"id": "1",
"type": "budget"
}
}
EOF# Set your Datadog site and credentials
export DD_SITE="uk1.datadoghq.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/cost/budget/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"created_at": 1738258683590,
"created_by": "00000000-0a0a-0a0a-aaa0-00000000000a",
"end_month": 202502,
"entries": [
{
"amount": 500,
"month": 202501,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
},
{
"amount": 500,
"month": 202502,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
}
],
"metrics_query": "aws.cost.amortized{service:ec2} by {service}",
"name": "my budget",
"org_id": 123,
"start_month": 202501,
"total_amount": 1000,
"updated_at": 1738258683590,
"updated_by": "00000000-0a0a-0a0a-aaa0-00000000000a"
},
"id": "1",
"type": "budget"
}
}
EOF# Set your Datadog site and credentials
export DD_SITE="ddog-gov.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/cost/budget/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"created_at": 1738258683590,
"created_by": "00000000-0a0a-0a0a-aaa0-00000000000a",
"end_month": 202502,
"entries": [
{
"amount": 500,
"month": 202501,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
},
{
"amount": 500,
"month": 202502,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
}
],
"metrics_query": "aws.cost.amortized{service:ec2} by {service}",
"name": "my budget",
"org_id": 123,
"start_month": 202501,
"total_amount": 1000,
"updated_at": 1738258683590,
"updated_by": "00000000-0a0a-0a0a-aaa0-00000000000a"
},
"id": "1",
"type": "budget"
}
}
EOF# Set your Datadog site and credentials
export DD_SITE="us2.ddog-gov.com"
# Use a Personal Access Token or Service Access Token
export DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>"
curl -X POST "https://api.${DD_SITE}/api/v2/cost/budget/validate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"created_at": 1738258683590,
"created_by": "00000000-0a0a-0a0a-aaa0-00000000000a",
"end_month": 202502,
"entries": [
{
"amount": 500,
"month": 202501,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
},
{
"amount": 500,
"month": 202502,
"tag_filters": [
{
"tag_key": "service",
"tag_value": "ec2"
}
]
}
],
"metrics_query": "aws.cost.amortized{service:ec2} by {service}",
"name": "my budget",
"org_id": 123,
"start_month": 202501,
"total_amount": 1000,
"updated_at": 1738258683590,
"updated_by": "00000000-0a0a-0a0a-aaa0-00000000000a"
},
"id": "1",
"type": "budget"
}
}
EOF// Validate budget returns "OK" response
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)
func main() {
body := datadogV2.BudgetValidationRequest{
Data: &datadogV2.BudgetValidationRequestData{
Attributes: &datadogV2.BudgetWithEntriesDataAttributes{
CreatedAt: datadog.PtrInt64(1738258683590),
CreatedBy: datadog.PtrString("00000000-0a0a-0a0a-aaa0-00000000000a"),
EndMonth: datadog.PtrInt64(202502),
Entries: []datadogV2.BudgetWithEntriesDataAttributesEntriesItems{
{
Amount: datadog.PtrFloat64(500),
Month: datadog.PtrInt64(202501),
TagFilters: []datadogV2.BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems{
{
TagKey: datadog.PtrString("service"),
TagValue: datadog.PtrString("ec2"),
},
},
},
{
Amount: datadog.PtrFloat64(500),
Month: datadog.PtrInt64(202502),
TagFilters: []datadogV2.BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems{
{
TagKey: datadog.PtrString("service"),
TagValue: datadog.PtrString("ec2"),
},
},
},
},
MetricsQuery: datadog.PtrString("aws.cost.amortized{service:ec2} by {service}"),
Name: datadog.PtrString("my budget"),
OrgId: datadog.PtrInt64(123),
StartMonth: datadog.PtrInt64(202501),
TotalAmount: datadog.PtrFloat64(1000),
UpdatedAt: datadog.PtrInt64(1738258683590),
UpdatedBy: datadog.PtrString("00000000-0a0a-0a0a-aaa0-00000000000a"),
},
Id: datadog.PtrString("1"),
Type: datadogV2.BUDGETWITHENTRIESDATATYPE_BUDGET,
},
}
ctx := datadog.NewDefaultContext(context.Background())
ctx = context.WithValue(ctx, datadog.ContextAccessToken, os.Getenv("DD_BEARER_TOKEN"))
configuration := datadog.NewConfiguration()
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewCloudCostManagementApi(apiClient)
resp, r, err := api.ValidateBudget(ctx, body)
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `CloudCostManagementApi.ValidateBudget`: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
responseContent, _ := json.MarshalIndent(resp, "", " ")
fmt.Fprintf(os.Stdout, "Response from `CloudCostManagementApi.ValidateBudget`:\n%s\n", responseContent)
}
Instructions
First install the library and its dependencies and then save the example to main.go and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" go run "main.go"// Validate budget returns "OK" response
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.CloudCostManagementApi;
import com.datadog.api.client.v2.model.BudgetValidationRequest;
import com.datadog.api.client.v2.model.BudgetValidationRequestData;
import com.datadog.api.client.v2.model.BudgetValidationResponse;
import com.datadog.api.client.v2.model.BudgetWithEntriesDataAttributes;
import com.datadog.api.client.v2.model.BudgetWithEntriesDataAttributesEntriesItems;
import com.datadog.api.client.v2.model.BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems;
import com.datadog.api.client.v2.model.BudgetWithEntriesDataType;
import java.util.Arrays;
import java.util.Collections;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
CloudCostManagementApi apiInstance = new CloudCostManagementApi(defaultClient);
BudgetValidationRequest body =
new BudgetValidationRequest()
.data(
new BudgetValidationRequestData()
.attributes(
new BudgetWithEntriesDataAttributes()
.createdAt(1738258683590L)
.createdBy("00000000-0a0a-0a0a-aaa0-00000000000a")
.endMonth(202502L)
.entries(
Arrays.asList(
new BudgetWithEntriesDataAttributesEntriesItems()
.amount(500.0)
.month(202501L)
.tagFilters(
Collections.singletonList(
new BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems()
.tagKey("service")
.tagValue("ec2"))),
new BudgetWithEntriesDataAttributesEntriesItems()
.amount(500.0)
.month(202502L)
.tagFilters(
Collections.singletonList(
new BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems()
.tagKey("service")
.tagValue("ec2")))))
.metricsQuery("aws.cost.amortized{service:ec2} by {service}")
.name("my budget")
.orgId(123L)
.startMonth(202501L)
.totalAmount(1000.0)
.updatedAt(1738258683590L)
.updatedBy("00000000-0a0a-0a0a-aaa0-00000000000a"))
.id("1")
.type(BudgetWithEntriesDataType.BUDGET));
try {
BudgetValidationResponse result = apiInstance.validateBudget(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling CloudCostManagementApi#validateBudget");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
Instructions
First install the library and its dependencies and then save the example to Example.java and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" java "Example.java""""
Validate budget returns "OK" response
"""
from os import environ
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.cloud_cost_management_api import CloudCostManagementApi
from datadog_api_client.v2.model.budget_validation_request import BudgetValidationRequest
from datadog_api_client.v2.model.budget_validation_request_data import BudgetValidationRequestData
from datadog_api_client.v2.model.budget_with_entries_data_attributes import BudgetWithEntriesDataAttributes
from datadog_api_client.v2.model.budget_with_entries_data_attributes_entries_items import (
BudgetWithEntriesDataAttributesEntriesItems,
)
from datadog_api_client.v2.model.budget_with_entries_data_attributes_entries_items_tag_filters_items import (
BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems,
)
from datadog_api_client.v2.model.budget_with_entries_data_type import BudgetWithEntriesDataType
body = BudgetValidationRequest(
data=BudgetValidationRequestData(
attributes=BudgetWithEntriesDataAttributes(
created_at=1738258683590,
created_by="00000000-0a0a-0a0a-aaa0-00000000000a",
end_month=202502,
entries=[
BudgetWithEntriesDataAttributesEntriesItems(
amount=500.0,
month=202501,
tag_filters=[
BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems(
tag_key="service",
tag_value="ec2",
),
],
),
BudgetWithEntriesDataAttributesEntriesItems(
amount=500.0,
month=202502,
tag_filters=[
BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems(
tag_key="service",
tag_value="ec2",
),
],
),
],
metrics_query="aws.cost.amortized{service:ec2} by {service}",
name="my budget",
org_id=123,
start_month=202501,
total_amount=1000.0,
updated_at=1738258683590,
updated_by="00000000-0a0a-0a0a-aaa0-00000000000a",
),
id="1",
type=BudgetWithEntriesDataType.BUDGET,
),
)
configuration = Configuration()
configuration.access_token = environ["DD_BEARER_TOKEN"]
with ApiClient(configuration) as api_client:
api_instance = CloudCostManagementApi(api_client)
response = api_instance.validate_budget(body=body)
print(response)
Instructions
First install the library and its dependencies and then save the example to example.py and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" python3 "example.py"# Validate budget returns "OK" response
require "datadog_api_client"
DatadogAPIClient.configure do |config|
config.access_token = ENV["DD_BEARER_TOKEN"]
end
api_instance = DatadogAPIClient::V2::CloudCostManagementAPI.new
body = DatadogAPIClient::V2::BudgetValidationRequest.new({
data: DatadogAPIClient::V2::BudgetValidationRequestData.new({
attributes: DatadogAPIClient::V2::BudgetWithEntriesDataAttributes.new({
created_at: 1738258683590,
created_by: "00000000-0a0a-0a0a-aaa0-00000000000a",
end_month: 202502,
entries: [
DatadogAPIClient::V2::BudgetWithEntriesDataAttributesEntriesItems.new({
amount: 500,
month: 202501,
tag_filters: [
DatadogAPIClient::V2::BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems.new({
tag_key: "service",
tag_value: "ec2",
}),
],
}),
DatadogAPIClient::V2::BudgetWithEntriesDataAttributesEntriesItems.new({
amount: 500,
month: 202502,
tag_filters: [
DatadogAPIClient::V2::BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems.new({
tag_key: "service",
tag_value: "ec2",
}),
],
}),
],
metrics_query: "aws.cost.amortized{service:ec2} by {service}",
name: "my budget",
org_id: 123,
start_month: 202501,
total_amount: 1000,
updated_at: 1738258683590,
updated_by: "00000000-0a0a-0a0a-aaa0-00000000000a",
}),
id: "1",
type: DatadogAPIClient::V2::BudgetWithEntriesDataType::BUDGET,
}),
})
p api_instance.validate_budget(body)
Instructions
First install the library and its dependencies and then save the example to example.rb and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" rb "example.rb"// Validate budget returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_cloud_cost_management::CloudCostManagementAPI;
use datadog_api_client::datadogV2::model::BudgetValidationRequest;
use datadog_api_client::datadogV2::model::BudgetValidationRequestData;
use datadog_api_client::datadogV2::model::BudgetWithEntriesDataAttributes;
use datadog_api_client::datadogV2::model::BudgetWithEntriesDataAttributesEntriesItems;
use datadog_api_client::datadogV2::model::BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems;
use datadog_api_client::datadogV2::model::BudgetWithEntriesDataType;
#[tokio::main]
async fn main() {
let body = BudgetValidationRequest::new().data(
BudgetValidationRequestData::new(BudgetWithEntriesDataType::BUDGET)
.attributes(
BudgetWithEntriesDataAttributes::new()
.created_at(1738258683590)
.created_by("00000000-0a0a-0a0a-aaa0-00000000000a".to_string())
.end_month(202502)
.entries(vec![
BudgetWithEntriesDataAttributesEntriesItems::new()
.amount(500.0 as f64)
.month(202501)
.tag_filters(vec![
BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems::new()
.tag_key("service".to_string())
.tag_value("ec2".to_string()),
]),
BudgetWithEntriesDataAttributesEntriesItems::new()
.amount(500.0 as f64)
.month(202502)
.tag_filters(vec![
BudgetWithEntriesDataAttributesEntriesItemsTagFiltersItems::new()
.tag_key("service".to_string())
.tag_value("ec2".to_string()),
]),
])
.metrics_query("aws.cost.amortized{service:ec2} by {service}".to_string())
.name("my budget".to_string())
.org_id(123)
.start_month(202501)
.total_amount(1000.0 as f64)
.updated_at(1738258683590)
.updated_by("00000000-0a0a-0a0a-aaa0-00000000000a".to_string()),
)
.id("1".to_string()),
);
let configuration = datadog::Configuration::new();
let api = CloudCostManagementAPI::with_config(configuration);
let resp = api.validate_budget(body).await;
if let Ok(value) = resp {
println!("{:#?}", value);
} else {
println!("{:#?}", resp.unwrap_err());
}
}
Instructions
First install the library and its dependencies and then save the example to src/main.rs and run following commands:
DD_SITE="datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us3.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us5.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="datadoghq.eu" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ap1.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ap2.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="uk1.datadoghq.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo runDD_SITE="us2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run/**
* Validate budget returns "OK" response
*/
import { client, v2 } from "@datadog/datadog-api-client";
const configuration = client.createConfiguration({
authMethods: {
AuthZ: {
accessToken: process.env.DD_BEARER_TOKEN as string,
},
},
});
const apiInstance = new v2.CloudCostManagementApi(configuration);
const params: v2.CloudCostManagementApiValidateBudgetRequest = {
body: {
data: {
attributes: {
createdAt: 1738258683590,
createdBy: "00000000-0a0a-0a0a-aaa0-00000000000a",
endMonth: 202502,
entries: [
{
amount: 500,
month: 202501,
tagFilters: [
{
tagKey: "service",
tagValue: "ec2",
},
],
},
{
amount: 500,
month: 202502,
tagFilters: [
{
tagKey: "service",
tagValue: "ec2",
},
],
},
],
metricsQuery: "aws.cost.amortized{service:ec2} by {service}",
name: "my budget",
orgId: 123,
startMonth: 202501,
totalAmount: 1000,
updatedAt: 1738258683590,
updatedBy: "00000000-0a0a-0a0a-aaa0-00000000000a",
},
id: "1",
type: "budget",
},
},
};
apiInstance
.validateBudget(params)
.then((data: v2.BudgetValidationResponse) => {
console.log(
"API called successfully. Returned data: " + JSON.stringify(data)
);
})
.catch((error: any) => console.error(error));
Instructions
First install the library and its dependencies and then save the example to example.ts and run following commands:
DD_SITE="datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="us3.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="us5.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="datadoghq.eu" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="ap1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="ap2.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="uk1.datadoghq.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"DD_SITE="us2.ddog-gov.com" DD_BEARER_TOKEN="<PERSONAL_ACCESS_TOKEN OR SERVICE_ACCESS_TOKEN>" tsc "example.ts"