Note: This endpoint is in Preview. If you have any feedback, contact Datadog support.
POST https://api.ap1.datadoghq.com/api/v2/security_monitoring/terraform/{resource_type}/bulkhttps://api.ap2.datadoghq.com/api/v2/security_monitoring/terraform/{resource_type}/bulkhttps://api.datadoghq.eu/api/v2/security_monitoring/terraform/{resource_type}/bulkhttps://api.ddog-gov.com/api/v2/security_monitoring/terraform/{resource_type}/bulkhttps://api.us2.ddog-gov.com/api/v2/security_monitoring/terraform/{resource_type}/bulkhttps://api.datadoghq.com/api/v2/security_monitoring/terraform/{resource_type}/bulkhttps://api.us3.datadoghq.com/api/v2/security_monitoring/terraform/{resource_type}/bulkhttps://api.us5.datadoghq.com/api/v2/security_monitoring/terraform/{resource_type}/bulk
Overview
Export multiple security monitoring resources to Terraform, packaged as a zip archive.
The resource_type path parameter specifies the type of resources to export
and must be one of suppressions or critical_assets.
A maximum of 1000 resources can be exported in a single request.
This endpoint requires
any
of the following permissions:
security_monitoring_suppressions_readsecurity_monitoring_rules_readOAuth apps require the security_monitoring_rules_read authorization scope to access this endpoint.
Arguments
Path Parameters
The type of security monitoring resource to export.
Request
Body Data (required)
The resource IDs to export.
Response
Code Example
// Export security monitoring resources to Terraform returns "OK" response
package main
import (
"context"
"fmt"
"io/ioutil"
"os"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)
func main() {
// there is a valid "suppression" in the system
SuppressionDataID := os.Getenv("SUPPRESSION_DATA_ID")
body := datadogV2.SecurityMonitoringTerraformBulkExportRequest{
Data: datadogV2.SecurityMonitoringTerraformBulkExportData{
Attributes: datadogV2.SecurityMonitoringTerraformBulkExportAttributes{
ResourceIds: []string{
SuppressionDataID,
},
},
Type: "bulk_export_resources",
},
}
ctx := datadog.NewDefaultContext(context.Background())
configuration := datadog.NewConfiguration()
configuration.SetUnstableOperationEnabled("v2.BulkExportSecurityMonitoringTerraformResources", true)
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewSecurityMonitoringApi(apiClient)
resp, r, err := api.BulkExportSecurityMonitoringTerraformResources(ctx, datadogV2.SECURITYMONITORINGTERRAFORMRESOURCETYPE_SUPPRESSIONS, body)
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `SecurityMonitoringApi.BulkExportSecurityMonitoringTerraformResources`: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
responseContent, _ := ioutil.ReadAll(resp)
fmt.Fprintf(os.Stdout, "Response from `SecurityMonitoringApi.BulkExportSecurityMonitoringTerraformResources`:\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.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" go run "main.go"
// Export security monitoring resources to Terraform returns "OK" response
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.SecurityMonitoringApi;
import com.datadog.api.client.v2.model.SecurityMonitoringTerraformBulkExportAttributes;
import com.datadog.api.client.v2.model.SecurityMonitoringTerraformBulkExportData;
import com.datadog.api.client.v2.model.SecurityMonitoringTerraformBulkExportRequest;
import com.datadog.api.client.v2.model.SecurityMonitoringTerraformResourceType;
import java.io.File;
import java.util.Collections;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
defaultClient.setUnstableOperationEnabled(
"v2.bulkExportSecurityMonitoringTerraformResources", true);
SecurityMonitoringApi apiInstance = new SecurityMonitoringApi(defaultClient);
// there is a valid "suppression" in the system
String SUPPRESSION_DATA_ID = System.getenv("SUPPRESSION_DATA_ID");
SecurityMonitoringTerraformBulkExportRequest body =
new SecurityMonitoringTerraformBulkExportRequest()
.data(
new SecurityMonitoringTerraformBulkExportData()
.attributes(
new SecurityMonitoringTerraformBulkExportAttributes()
.resourceIds(Collections.singletonList(SUPPRESSION_DATA_ID)))
.type("bulk_export_resources"));
try {
File result =
apiInstance.bulkExportSecurityMonitoringTerraformResources(
SecurityMonitoringTerraformResourceType.SUPPRESSIONS, body);
System.out.println(result);
} catch (ApiException e) {
System.err.println(
"Exception when calling"
+ " SecurityMonitoringApi#bulkExportSecurityMonitoringTerraformResources");
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.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" java "Example.java"
"""
Export security monitoring resources to Terraform returns "OK" response
"""
from os import environ
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
from datadog_api_client.v2.model.security_monitoring_terraform_bulk_export_attributes import (
SecurityMonitoringTerraformBulkExportAttributes,
)
from datadog_api_client.v2.model.security_monitoring_terraform_bulk_export_data import (
SecurityMonitoringTerraformBulkExportData,
)
from datadog_api_client.v2.model.security_monitoring_terraform_bulk_export_request import (
SecurityMonitoringTerraformBulkExportRequest,
)
from datadog_api_client.v2.model.security_monitoring_terraform_resource_type import (
SecurityMonitoringTerraformResourceType,
)
# there is a valid "suppression" in the system
SUPPRESSION_DATA_ID = environ["SUPPRESSION_DATA_ID"]
body = SecurityMonitoringTerraformBulkExportRequest(
data=SecurityMonitoringTerraformBulkExportData(
attributes=SecurityMonitoringTerraformBulkExportAttributes(
resource_ids=[
SUPPRESSION_DATA_ID,
],
),
type="bulk_export_resources",
),
)
configuration = Configuration()
configuration.unstable_operations["bulk_export_security_monitoring_terraform_resources"] = True
with ApiClient(configuration) as api_client:
api_instance = SecurityMonitoringApi(api_client)
response = api_instance.bulk_export_security_monitoring_terraform_resources(
resource_type=SecurityMonitoringTerraformResourceType.SUPPRESSIONS, body=body
)
print(response.read())
Instructions
First install the library and its dependencies and then save the example to example.py and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" python3 "example.py"
# Export security monitoring resources to Terraform returns "OK" response
require "datadog_api_client"
DatadogAPIClient.configure do |config|
config.unstable_operations["v2.bulk_export_security_monitoring_terraform_resources".to_sym] = true
end
api_instance = DatadogAPIClient::V2::SecurityMonitoringAPI.new
# there is a valid "suppression" in the system
SUPPRESSION_DATA_ID = ENV["SUPPRESSION_DATA_ID"]
body = DatadogAPIClient::V2::SecurityMonitoringTerraformBulkExportRequest.new({
data: DatadogAPIClient::V2::SecurityMonitoringTerraformBulkExportData.new({
attributes: DatadogAPIClient::V2::SecurityMonitoringTerraformBulkExportAttributes.new({
resource_ids: [
SUPPRESSION_DATA_ID,
],
}),
type: "bulk_export_resources",
}),
})
p api_instance.bulk_export_security_monitoring_terraform_resources(SecurityMonitoringTerraformResourceType::SUPPRESSIONS, body)
Instructions
First install the library and its dependencies and then save the example to example.rb and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"
// Export security monitoring resources to Terraform returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_security_monitoring::SecurityMonitoringAPI;
use datadog_api_client::datadogV2::model::SecurityMonitoringTerraformBulkExportAttributes;
use datadog_api_client::datadogV2::model::SecurityMonitoringTerraformBulkExportData;
use datadog_api_client::datadogV2::model::SecurityMonitoringTerraformBulkExportRequest;
use datadog_api_client::datadogV2::model::SecurityMonitoringTerraformResourceType;
#[tokio::main]
async fn main() {
// there is a valid "suppression" in the system
let suppression_data_id = std::env::var("SUPPRESSION_DATA_ID").unwrap();
let body = SecurityMonitoringTerraformBulkExportRequest::new(
SecurityMonitoringTerraformBulkExportData::new(
SecurityMonitoringTerraformBulkExportAttributes::new(vec![suppression_data_id.clone()]),
"bulk_export_resources".to_string(),
),
);
let mut configuration = datadog::Configuration::new();
configuration
.set_unstable_operation_enabled("v2.BulkExportSecurityMonitoringTerraformResources", true);
let api = SecurityMonitoringAPI::with_config(configuration);
let resp = api
.bulk_export_security_monitoring_terraform_resources(
SecurityMonitoringTerraformResourceType::SUPPRESSIONS,
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.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
/**
* Export security monitoring resources to Terraform returns "OK" response
*/
import { client, v2 } from "@datadog/datadog-api-client";
const configuration = client.createConfiguration();
configuration.unstableOperations[
"v2.bulkExportSecurityMonitoringTerraformResources"
] = true;
const apiInstance = new v2.SecurityMonitoringApi(configuration);
// there is a valid "suppression" in the system
const SUPPRESSION_DATA_ID = process.env.SUPPRESSION_DATA_ID as string;
const params: v2.SecurityMonitoringApiBulkExportSecurityMonitoringTerraformResourcesRequest =
{
body: {
data: {
attributes: {
resourceIds: [SUPPRESSION_DATA_ID],
},
type: "bulk_export_resources",
},
},
resourceType: "suppressions",
};
apiInstance
.bulkExportSecurityMonitoringTerraformResources(params)
.then((data: client.HttpFile) => {
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.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" tsc "example.ts"