v2_service_definition_CreateOrUpdateServiceDefinitions_1808735248/
v2_service-definition_CreateOrUpdateServiceDefinitions_1808735248.rs1use datadog_api_client::datadog;
3use datadog_api_client::datadogV2::api_service_definition::ServiceDefinitionAPI;
4use datadog_api_client::datadogV2::model::ServiceDefinitionV2;
5use datadog_api_client::datadogV2::model::ServiceDefinitionV2Contact;
6use datadog_api_client::datadogV2::model::ServiceDefinitionV2Doc;
7use datadog_api_client::datadogV2::model::ServiceDefinitionV2Email;
8use datadog_api_client::datadogV2::model::ServiceDefinitionV2EmailType;
9use datadog_api_client::datadogV2::model::ServiceDefinitionV2Integrations;
10use datadog_api_client::datadogV2::model::ServiceDefinitionV2Link;
11use datadog_api_client::datadogV2::model::ServiceDefinitionV2LinkType;
12use datadog_api_client::datadogV2::model::ServiceDefinitionV2Opsgenie;
13use datadog_api_client::datadogV2::model::ServiceDefinitionV2OpsgenieRegion;
14use datadog_api_client::datadogV2::model::ServiceDefinitionV2Repo;
15use datadog_api_client::datadogV2::model::ServiceDefinitionV2Version;
16use datadog_api_client::datadogV2::model::ServiceDefinitionsCreateRequest;
17use serde_json::Value;
18use std::collections::BTreeMap;
19
20#[tokio::main]
21async fn main() {
22 let body = ServiceDefinitionsCreateRequest::ServiceDefinitionV2(Box::new(
23 ServiceDefinitionV2::new(
24 "service-exampleservicedefinition".to_string(),
25 ServiceDefinitionV2Version::V2,
26 )
27 .contacts(vec![ServiceDefinitionV2Contact::ServiceDefinitionV2Email(
28 Box::new(
29 ServiceDefinitionV2Email::new(
30 "contact@datadoghq.com".to_string(),
31 ServiceDefinitionV2EmailType::EMAIL,
32 )
33 .name("Team Email".to_string()),
34 ),
35 )])
36 .dd_team("my-team".to_string())
37 .docs(vec![ServiceDefinitionV2Doc::new(
38 "Architecture".to_string(),
39 "https://gdrive/mydoc".to_string(),
40 )
41 .provider("google drive".to_string())])
42 .extensions(BTreeMap::from([(
43 "myorgextension".to_string(),
44 Value::from("extensionvalue"),
45 )]))
46 .integrations(
47 ServiceDefinitionV2Integrations::new()
48 .opsgenie(
49 ServiceDefinitionV2Opsgenie::new(
50 "https://my-org.opsgenie.com/service/123e4567-e89b-12d3-a456-426614174000"
51 .to_string(),
52 )
53 .region(ServiceDefinitionV2OpsgenieRegion::US),
54 )
55 .pagerduty("https://my-org.pagerduty.com/service-directory/PMyService".to_string()),
56 )
57 .links(vec![ServiceDefinitionV2Link::new(
58 "Runbook".to_string(),
59 ServiceDefinitionV2LinkType::RUNBOOK,
60 "https://my-runbook".to_string(),
61 )])
62 .repos(vec![ServiceDefinitionV2Repo::new(
63 "Source Code".to_string(),
64 "https://github.com/DataDog/schema".to_string(),
65 )
66 .provider("GitHub".to_string())])
67 .tags(vec!["my:tag".to_string(), "service:tag".to_string()])
68 .team("my-team".to_string()),
69 ));
70 let configuration = datadog::Configuration::new();
71 let api = ServiceDefinitionAPI::with_config(configuration);
72 let resp = api.create_or_update_service_definitions(body).await;
73 if let Ok(value) = resp {
74 println!("{:#?}", value);
75 } else {
76 println!("{:#?}", resp.unwrap_err());
77 }
78}