Note : This endpoint is in preview and is subject to change.
If you have any feedback, contact Datadog support .
POST https://api.ap1.datadoghq.com/api/v2/cost/recommendations https://api.ap2.datadoghq.com/api/v2/cost/recommendations https://api.datadoghq.eu/api/v2/cost/recommendations https://api.ddog-gov.com/api/v2/cost/recommendations https://api.us2.ddog-gov.com/api/v2/cost/recommendations https://api.uk1.datadoghq.com/api/v2/cost/recommendations https://api.datadoghq.com/api/v2/cost/recommendations https://api.us3.datadoghq.com/api/v2/cost/recommendations https://api.us5.datadoghq.com/api/v2/cost/recommendations
Información general List cost recommendations matching a filter, with pagination and sorting.
OAuth apps require the cloud_cost_management_read authorization scope to access this endpoint.
Argumentos Cadenas de consulta Number of results per page (1–10000).
Pagination token from a previous response.
Solicitud Body Data (required)
Expand All
Filter expression applied to the recommendations.
Ordered list of sort clauses applied to the result set.
Field to sort by (for example, potential_daily_savings.amount).
Sort direction, either ASC or DESC.
Active view name (for example, active, dismissed, open, in-progress, or completed).
{
"filter" : "string" ,
"sort" : [
{
"expression" : "string" ,
"order" : "string"
}
],
"view" : "string"
} Respuesta OK
A page of cost recommendations with pagination metadata.
Expand All
The list of cost recommendations on this page.
Attributes describing a single cost recommendation.
Datadog resource key identifying the recommended resource.
Estimated daily savings if the recommendation is applied.
Numeric amount of the potential daily savings.
ISO 4217 currency code for the savings amount.
The kind of recommendation (for example, terminate or rightsize).
Cloud provider identifier of the resource.
Resource type (for example, aws_ec2_instance).
Tags attached to the recommended resource.
Unique identifier for the recommendation.
Recommendation resource type.
Allowed enum values: recommendation
default: recommendation
Top-level JSON:API meta object for paginated cost recommendation responses.
Pagination metadata for a page of cost recommendations.
The filter expression that was applied to produce this page.
Opaque token used to fetch the next page; absent on the last page.
Number of items returned in this page (1–10000).
Pagination token echoed back from the request.
{
"data" : [
{
"attributes" : {
"dd_resource_key" : "string" ,
"potential_daily_savings" : {
"amount" : "number" ,
"currency" : "string"
},
"recommendation_type" : "string" ,
"resource_id" : "string" ,
"resource_type" : "string" ,
"tags" : []
},
"id" : "string" ,
"type" : "recommendation"
}
],
"meta" : {
"page" : {
"filter" : "string" ,
"next_page_token" : "string" ,
"page_size" : "integer" ,
"page_token" : "string"
}
}
} Too many requests
{
"errors" : [
"Bad Request"
]
} Ejemplo de código Copia
## default
#
# Curl command curl -X POST "https://api.ap1.datadoghq.com "https://api.ap2.datadoghq.com "https://api.datadoghq.eu "https://api.ddog-gov.com "https://api.us2.ddog-gov.com "https://api.uk1.datadoghq.com "https://api.datadoghq.com "https://api.us3.datadoghq.com "https://api.us5.datadoghq.com /api/v2/cost/recommendations " \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_API_KEY} " \
-H "DD-APPLICATION-KEY: ${DD_APP_KEY} " \
-d @- << EOF
{
"filter": "@resource_table:aws_ec2_instance",
"sort": [
{
"expression": "potential_daily_savings.amount",
"order": "DESC"
}
]
}
EOF
"""
Search cost recommendations returns "OK" response
"""
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.recommendations_filter_request import RecommendationsFilterRequest
from datadog_api_client.v2.model.recommendations_filter_request_sort_items import RecommendationsFilterRequestSortItems
body = RecommendationsFilterRequest (
filter = "@resource_table:aws_ec2_instance" ,
sort = [
RecommendationsFilterRequestSortItems (
expression = "potential_daily_savings.amount" ,
order = "DESC" ,
),
],
)
configuration = Configuration ()
configuration . unstable_operations [ "search_cost_recommendations" ] = True
with ApiClient ( configuration ) as api_client :
api_instance = CloudCostManagementApi ( api_client )
response = api_instance . search_cost_recommendations ( 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 us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com uk1.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" python3 "example.py"
# Search cost recommendations returns "OK" response
require "datadog_api_client"
DatadogAPIClient . configure do | config |
config . unstable_operations [ "v2.search_cost_recommendations" . to_sym ] = true
end
api_instance = DatadogAPIClient :: V2 :: CloudCostManagementAPI . new
body = DatadogAPIClient :: V2 :: RecommendationsFilterRequest . new ({
filter : "@resource_table:aws_ec2_instance" ,
sort : [
DatadogAPIClient :: V2 :: RecommendationsFilterRequestSortItems . new ({
expression : "potential_daily_savings.amount" ,
order : "DESC" ,
}),
] ,
})
p api_instance . search_cost_recommendations ( 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 us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com uk1.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" rb "example.rb"
// Search cost recommendations 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 . RecommendationsFilterRequest {
Filter : datadog . PtrString ( "@resource_table:aws_ec2_instance" ),
Sort : [] datadogV2 . RecommendationsFilterRequestSortItems {
{
Expression : datadog . PtrString ( "potential_daily_savings.amount" ),
Order : datadog . PtrString ( "DESC" ),
},
},
}
ctx := datadog . NewDefaultContext ( context . Background ())
configuration := datadog . NewConfiguration ()
configuration . SetUnstableOperationEnabled ( "v2.SearchCostRecommendations" , true )
apiClient := datadog . NewAPIClient ( configuration )
api := datadogV2 . NewCloudCostManagementApi ( apiClient )
resp , r , err := api . SearchCostRecommendations ( ctx , body , * datadogV2 . NewSearchCostRecommendationsOptionalParameters ())
if err != nil {
fmt . Fprintf ( os . Stderr , "Error when calling `CloudCostManagementApi.SearchCostRecommendations`: %v\n" , err )
fmt . Fprintf ( os . Stderr , "Full HTTP response: %v\n" , r )
}
responseContent , _ := json . MarshalIndent ( resp , "" , " " )
fmt . Fprintf ( os . Stdout , "Response from `CloudCostManagementApi.SearchCostRecommendations`:\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 us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com uk1.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" go run "main.go"
// Search cost recommendations 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.CostRecommendationArray ;
import com.datadog.api.client.v2.model.RecommendationsFilterRequest ;
import com.datadog.api.client.v2.model.RecommendationsFilterRequestSortItems ;
import java.util.Collections ;
public class Example {
public static void main ( String [] args ) {
ApiClient defaultClient = ApiClient . getDefaultApiClient ();
defaultClient . setUnstableOperationEnabled ( "v2.searchCostRecommendations" , true );
CloudCostManagementApi apiInstance = new CloudCostManagementApi ( defaultClient );
RecommendationsFilterRequest body =
new RecommendationsFilterRequest ()
. filter ( "@resource_table:aws_ec2_instance" )
. sort (
Collections . singletonList (
new RecommendationsFilterRequestSortItems ()
. expression ( "potential_daily_savings.amount" )
. order ( "DESC" )));
try {
CostRecommendationArray result = apiInstance . searchCostRecommendations ( body );
System . out . println ( result );
} catch ( ApiException e ) {
System . err . println ( "Exception when calling CloudCostManagementApi#searchCostRecommendations" );
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 us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com uk1.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" java "Example.java"
// Search cost recommendations returns "OK" response
use datadog_api_client ::datadog ;
use datadog_api_client ::datadogV2 ::api_cloud_cost_management ::CloudCostManagementAPI ;
use datadog_api_client ::datadogV2 ::api_cloud_cost_management ::SearchCostRecommendationsOptionalParams ;
use datadog_api_client ::datadogV2 ::model ::RecommendationsFilterRequest ;
use datadog_api_client ::datadogV2 ::model ::RecommendationsFilterRequestSortItems ;
#[tokio::main]
async fn main () {
let body = RecommendationsFilterRequest ::new ()
. filter ( "@resource_table:aws_ec2_instance" . to_string ())
. sort ( vec! [ RecommendationsFilterRequestSortItems ::new ()
. expression ( "potential_daily_savings.amount" . to_string ())
. order ( "DESC" . to_string ())]);
let mut configuration = datadog ::Configuration ::new ();
configuration . set_unstable_operation_enabled ( "v2.SearchCostRecommendations" , true );
let api = CloudCostManagementAPI ::with_config ( configuration );
let resp = api
. search_cost_recommendations ( body , SearchCostRecommendationsOptionalParams ::default ())
. 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 us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com uk1.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" cargo run
/**
* Search cost recommendations returns "OK" response
*/
import { client , v2 } from "@datadog/datadog-api-client" ;
const configuration = client . createConfiguration ();
configuration . unstableOperations [ "v2.searchCostRecommendations" ] = true ;
const apiInstance = new v2 . CloudCostManagementApi ( configuration );
const params : v2.CloudCostManagementApiSearchCostRecommendationsRequest = {
body : {
filter : "@resource_table:aws_ec2_instance" ,
sort : [
{
expression : "potential_daily_savings.amount" ,
order : "DESC" ,
},
],
},
};
apiInstance
. searchCostRecommendations ( params )
. then (( data : v2.CostRecommendationArray ) => {
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 us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com uk1.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<DD_API_KEY>" DD_APP_KEY = "<DD_APP_KEY>" tsc "example.ts"