v2_reference_tables_CreateReferenceTable/
v2_reference-tables_CreateReferenceTable.rs

1// Create reference table returns "Created" response
2use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_reference_tables::ReferenceTablesAPI;
4use datadog_api_client::datadogV2::model::CreateTableRequest;
5use datadog_api_client::datadogV2::model::CreateTableRequestData;
6use datadog_api_client::datadogV2::model::CreateTableRequestDataAttributes;
7use datadog_api_client::datadogV2::model::CreateTableRequestDataAttributesFileMetadata;
8use datadog_api_client::datadogV2::model::CreateTableRequestDataAttributesFileMetadataCloudStorage;
9use datadog_api_client::datadogV2::model::CreateTableRequestDataAttributesFileMetadataOneOfAccessDetails;
10use datadog_api_client::datadogV2::model::CreateTableRequestDataAttributesFileMetadataOneOfAccessDetailsAwsDetail;
11use datadog_api_client::datadogV2::model::CreateTableRequestDataAttributesSchema;
12use datadog_api_client::datadogV2::model::CreateTableRequestDataAttributesSchemaFieldsItems;
13use datadog_api_client::datadogV2::model::CreateTableRequestDataType;
14use datadog_api_client::datadogV2::model::ReferenceTableCreateSourceType;
15use datadog_api_client::datadogV2::model::ReferenceTableSchemaFieldType;
16
17#[tokio::main]
18async fn main() {
19    let body =
20        CreateTableRequest
21        ::new().data(
22            CreateTableRequestData::new(
23                CreateTableRequestDataType::REFERENCE_TABLE,
24            ).attributes(
25                CreateTableRequestDataAttributes::new(
26                    CreateTableRequestDataAttributesSchema::new(
27                        vec![
28                            CreateTableRequestDataAttributesSchemaFieldsItems::new(
29                                "name".to_string(),
30                                ReferenceTableSchemaFieldType::STRING,
31                            ),
32                            CreateTableRequestDataAttributesSchemaFieldsItems::new(
33                                "account_id".to_string(),
34                                ReferenceTableSchemaFieldType::STRING,
35                            )
36                        ],
37                        vec!["account_id".to_string()],
38                    ),
39                    ReferenceTableCreateSourceType::S3,
40                    "test_reference_table".to_string(),
41                )
42                    .description("this is a cloud table generated via a cloud bucket sync".to_string())
43                    .file_metadata(
44                        CreateTableRequestDataAttributesFileMetadata
45                        ::CreateTableRequestDataAttributesFileMetadataCloudStorage(
46                            Box::new(
47                                CreateTableRequestDataAttributesFileMetadataCloudStorage::new(
48                                    CreateTableRequestDataAttributesFileMetadataOneOfAccessDetails
49                                    ::new().aws_detail(
50                                        CreateTableRequestDataAttributesFileMetadataOneOfAccessDetailsAwsDetail::new(
51                                            "test-account-id".to_string(),
52                                            "test-bucket".to_string(),
53                                            "test_rt.csv".to_string(),
54                                        ),
55                                    ),
56                                    true,
57                                ),
58                            ),
59                        ),
60                    )
61                    .tags(vec!["test_tag".to_string()]),
62            ),
63        );
64    let configuration = datadog::Configuration::new();
65    let api = ReferenceTablesAPI::with_config(configuration);
66    let resp = api.create_reference_table(body).await;
67    if let Ok(value) = resp {
68        println!("{:#?}", value);
69    } else {
70        println!("{:#?}", resp.unwrap_err());
71    }
72}