Get SPA recommendations v2
https://api.datadoghq.com/api/v2/spa/recommendations-v2/{service}https://api.us3.datadoghq.com/api/v2/spa/recommendations-v2/{service}https://api.us5.datadoghq.com/api/v2/spa/recommendations-v2/{service}https://api.datadoghq.eu/api/v2/spa/recommendations-v2/{service}https://api.ap1.datadoghq.com/api/v2/spa/recommendations-v2/{service}https://api.ap2.datadoghq.com/api/v2/spa/recommendations-v2/{service}https://api.uk1.datadoghq.com/api/v2/spa/recommendations-v2/{service}https://api.ddog-gov.com/api/v2/spa/recommendations-v2/{service}https://api.us2.ddog-gov.com/api/v2/spa/recommendations-v2/{service}Overview
This endpoint is experimental and restricted to Datadog internal use only. Retrieve resource recommendations for a Spark job. The caller (Spark Gateway) provides a service name and the job's raw arguments. SPA determines which arguments are relevant for the service and returns structured recommendations for driver and executor resources.
Arguments
Path Parameters
service [required]The service name for a Spark job
Request
Body Data (required)
data [required]JSON:API resource object for the SPA v2 recommendation request.
attributes [required]Attributes for requesting SPA recommendations by forwarding a Spark job's raw arguments instead of a pre-computed shard.
arguments [required]Raw, unfiltered Spark job arguments as submitted (for example, --org_id=2).
SPA determines which arguments are relevant for the given service.
type [required]JSON:API resource type for the SPA v2 recommendation request.
recommendation_v2_requestrecommendation_v2_request{
"data": {
"attributes": {
"arguments": [
""
]
},
"type": "recommendation_v2_request"
}
}Response
OK
JSON:API document containing a single Recommendation resource. Returned by SPA when the Spark Gateway requests recommendations.
data [required]JSON:API resource object for SPA Recommendation. Includes type, optional ID, and resource attributes with structured recommendations.
attributes [required]Attributes of the SPA Recommendation resource. Contains recommendations for both driver and executor components.
confidence_levelThe confidence level of the recommendation, expressed as a value between 0.0 (low confidence) and 1.0 (high confidence).
driver [required]Resource recommendation for a single Spark component (driver or executor). Contains estimation data used to patch Spark job specs.
estimation [required]Recommended resource values for a Spark driver or executor, derived from recent real usage metrics. Used by SPA to propose more efficient pod sizing.
cpuCPU usage statistics derived from historical Spark job metrics. Provides multiple estimates so users can choose between conservative and cost-saving risk profiles.
maxMaximum CPU usage observed for the job, expressed in millicores. This represents the upper bound of usage.
p7575th percentile of CPU usage (millicores). Represents a cost-saving configuration while covering most workloads.
p9595th percentile of CPU usage (millicores). Balances performance and cost, providing a safer margin than p75.
ephemeral_storageRecommended ephemeral storage allocation (in MiB). Derived from job temporary storage patterns.
heapRecommended JVM heap size (in MiB).
memoryRecommended total memory allocation (in MiB). Includes both heap and overhead.
overheadRecommended JVM overhead (in MiB). Computed as total memory - heap.
executor [required]Resource recommendation for a single Spark component (driver or executor). Contains estimation data used to patch Spark job specs.
estimation [required]Recommended resource values for a Spark driver or executor, derived from recent real usage metrics. Used by SPA to propose more efficient pod sizing.
cpuCPU usage statistics derived from historical Spark job metrics. Provides multiple estimates so users can choose between conservative and cost-saving risk profiles.
maxMaximum CPU usage observed for the job, expressed in millicores. This represents the upper bound of usage.
p7575th percentile of CPU usage (millicores). Represents a cost-saving configuration while covering most workloads.
p9595th percentile of CPU usage (millicores). Balances performance and cost, providing a safer margin than p75.
ephemeral_storageRecommended ephemeral storage allocation (in MiB). Derived from job temporary storage patterns.
heapRecommended JVM heap size (in MiB).
memoryRecommended total memory allocation (in MiB). Includes both heap and overhead.
overheadRecommended JVM overhead (in MiB). Computed as total memory - heap.
matched_paramsOnly returned by the v2 endpoint. The job parameters whose values the recommendation was matched on, as parameter=value pairs joined by |.
An empty string means the service-wide (coarse) recommendation was used.
idResource identifier for the recommendation. Optional in responses.
type [required]JSON:API resource type for Spark Pod Autosizing recommendations. Identifies the Recommendation resource returned by SPA.
recommendationrecommendation{
"data": {
"attributes": {
"confidence_level": "number",
"driver": {
"estimation": {
"cpu": {
"max": "integer",
"p75": "integer",
"p95": "integer"
},
"ephemeral_storage": "integer",
"heap": "integer",
"memory": "integer",
"overhead": "integer"
}
},
"executor": {
"estimation": {
"cpu": {
"max": "integer",
"p75": "integer",
"p95": "integer"
},
"ephemeral_storage": "integer",
"heap": "integer",
"memory": "integer",
"overhead": "integer"
}
},
"matched_params": "detailed_metrics=false|Region=US1"
},
"id": "string",
"type": "recommendation"
}
}Bad Request
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Not Authorized
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Not Found
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Too many requests
API error response.
errors [required]A list of errors.
{
"errors": [
"Bad Request"
]
}Code Example
# Path parameters
export service="CHANGE_ME"
# 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/spa/recommendations-v2/${service}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"arguments": [
""
]
},
"type": "recommendation_v2_request"
}
}
EOF# Path parameters
export service="CHANGE_ME"
# 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/spa/recommendations-v2/${service}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"arguments": [
""
]
},
"type": "recommendation_v2_request"
}
}
EOF# Path parameters
export service="CHANGE_ME"
# 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/spa/recommendations-v2/${service}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"arguments": [
""
]
},
"type": "recommendation_v2_request"
}
}
EOF# Path parameters
export service="CHANGE_ME"
# 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/spa/recommendations-v2/${service}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"arguments": [
""
]
},
"type": "recommendation_v2_request"
}
}
EOF# Path parameters
export service="CHANGE_ME"
# 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/spa/recommendations-v2/${service}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"arguments": [
""
]
},
"type": "recommendation_v2_request"
}
}
EOF# Path parameters
export service="CHANGE_ME"
# 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/spa/recommendations-v2/${service}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"arguments": [
""
]
},
"type": "recommendation_v2_request"
}
}
EOF# Path parameters
export service="CHANGE_ME"
# 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/spa/recommendations-v2/${service}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"arguments": [
""
]
},
"type": "recommendation_v2_request"
}
}
EOF# Path parameters
export service="CHANGE_ME"
# 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/spa/recommendations-v2/${service}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"arguments": [
""
]
},
"type": "recommendation_v2_request"
}
}
EOF# Path parameters
export service="CHANGE_ME"
# 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/spa/recommendations-v2/${service}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${DD_BEARER_TOKEN}" \
-d @- << EOF
{
"data": {
"attributes": {
"arguments": [
""
]
},
"type": "recommendation_v2_request"
}
}
EOF// Get SPA recommendations v2 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.RecommendationV2RequestBody{
Data: datadogV2.RecommendationV2RequestData{
Attributes: datadogV2.RecommendationV2RequestAttributes{
Arguments: []string{
"",
},
},
Type: datadogV2.RECOMMENDATIONV2REQUESTTYPE_RECOMMENDATION_V2_REQUEST,
},
}
ctx := datadog.NewDefaultContext(context.Background())
ctx = context.WithValue(ctx, datadog.ContextAccessToken, os.Getenv("DD_BEARER_TOKEN"))
configuration := datadog.NewConfiguration()
configuration.SetUnstableOperationEnabled("v2.GetSPARecommendationsV2", true)
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewSpaApi(apiClient)
resp, r, err := api.GetSPARecommendationsV2(ctx, "service", body)
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `SpaApi.GetSPARecommendationsV2`: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
responseContent, _ := json.MarshalIndent(resp, "", " ")
fmt.Fprintf(os.Stdout, "Response from `SpaApi.GetSPARecommendationsV2`:\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"// Get SPA recommendations v2 returns "OK" response
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.SpaApi;
import com.datadog.api.client.v2.model.RecommendationDocument;
import com.datadog.api.client.v2.model.RecommendationV2RequestAttributes;
import com.datadog.api.client.v2.model.RecommendationV2RequestBody;
import com.datadog.api.client.v2.model.RecommendationV2RequestData;
import com.datadog.api.client.v2.model.RecommendationV2RequestType;
import java.util.Collections;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN"));
defaultClient.setUnstableOperationEnabled("v2.getSPARecommendationsV2", true);
SpaApi apiInstance = new SpaApi(defaultClient);
RecommendationV2RequestBody body =
new RecommendationV2RequestBody()
.data(
new RecommendationV2RequestData()
.attributes(
new RecommendationV2RequestAttributes()
.arguments(Collections.singletonList("")))
.type(RecommendationV2RequestType.RECOMMENDATION_V2_REQUEST));
try {
RecommendationDocument result = apiInstance.getSPARecommendationsV2("service", body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling SpaApi#getSPARecommendationsV2");
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""""
Get SPA recommendations v2 returns "OK" response
"""
from os import environ
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.spa_api import SpaApi
from datadog_api_client.v2.model.recommendation_v2_request_attributes import RecommendationV2RequestAttributes
from datadog_api_client.v2.model.recommendation_v2_request_body import RecommendationV2RequestBody
from datadog_api_client.v2.model.recommendation_v2_request_data import RecommendationV2RequestData
from datadog_api_client.v2.model.recommendation_v2_request_type import RecommendationV2RequestType
body = RecommendationV2RequestBody(
data=RecommendationV2RequestData(
attributes=RecommendationV2RequestAttributes(
arguments=[
"",
],
),
type=RecommendationV2RequestType.RECOMMENDATION_V2_REQUEST,
),
)
configuration = Configuration()
configuration.access_token = environ["DD_BEARER_TOKEN"]
configuration.unstable_operations["get_spa_recommendations_v2"] = True
with ApiClient(configuration) as api_client:
api_instance = SpaApi(api_client)
response = api_instance.get_spa_recommendations_v2(service="service", 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"# Get SPA recommendations v2 returns "OK" response
require "datadog_api_client"
DatadogAPIClient.configure do |config|
config.access_token = ENV["DD_BEARER_TOKEN"]
config.unstable_operations["v2.get_spa_recommendations_v2".to_sym] = true
end
api_instance = DatadogAPIClient::V2::SpaAPI.new
body = DatadogAPIClient::V2::RecommendationV2RequestBody.new({
data: DatadogAPIClient::V2::RecommendationV2RequestData.new({
attributes: DatadogAPIClient::V2::RecommendationV2RequestAttributes.new({
arguments: [
"",
],
}),
type: DatadogAPIClient::V2::RecommendationV2RequestType::RECOMMENDATION_V2_REQUEST,
}),
})
p api_instance.get_spa_recommendations_v2("service", 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"// Get SPA recommendations v2 returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_spa::SpaAPI;
use datadog_api_client::datadogV2::model::RecommendationV2RequestAttributes;
use datadog_api_client::datadogV2::model::RecommendationV2RequestBody;
use datadog_api_client::datadogV2::model::RecommendationV2RequestData;
use datadog_api_client::datadogV2::model::RecommendationV2RequestType;
#[tokio::main]
async fn main() {
let body = RecommendationV2RequestBody::new(RecommendationV2RequestData::new(
RecommendationV2RequestAttributes::new(vec!["".to_string()]),
RecommendationV2RequestType::RECOMMENDATION_V2_REQUEST,
));
let mut configuration = datadog::Configuration::new();
configuration.set_unstable_operation_enabled("v2.get_spa_recommendations_v2", true);
let api = SpaAPI::with_config(configuration);
let resp = api
.get_spa_recommendations_v2("service".to_string(), 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" cargo runDD_SITE="us3.datadoghq.com" cargo runDD_SITE="us5.datadoghq.com" cargo runDD_SITE="datadoghq.eu" cargo runDD_SITE="ap1.datadoghq.com" cargo runDD_SITE="ap2.datadoghq.com" cargo runDD_SITE="uk1.datadoghq.com" cargo runDD_SITE="ddog-gov.com" cargo runDD_SITE="us2.ddog-gov.com" cargo run