Skip to content

Commit 2bad7e1

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
and
ci.datadog-api-spec
authored
Add user status to schema and fix escalation policy included (#629)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent 2e84962 commit 2bad7e1

9 files changed

+506
-43
lines changed

.apigentools-info

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"spec_versions": {
55
"v1": {
66
"apigentools_version": "1.6.6",
7-
"regenerated": "2025-05-01 18:50:08.747675",
8-
"spec_repo_commit": "7eb88f6a"
7+
"regenerated": "2025-05-02 04:31:12.514459",
8+
"spec_repo_commit": "272cce39"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.6",
12-
"regenerated": "2025-05-01 18:50:08.763839",
13-
"spec_repo_commit": "7eb88f6a"
12+
"regenerated": "2025-05-02 04:31:12.530271",
13+
"spec_repo_commit": "272cce39"
1414
}
1515
}
1616
}

.generator/schemas/v2/openapi.yaml

Lines changed: 53 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13547,9 +13547,8 @@ components:
1354713547
oneOf:
1354813548
- $ref: '#/components/schemas/TeamReference'
1354913549
- $ref: '#/components/schemas/EscalationPolicyStep'
13550-
- $ref: '#/components/schemas/UserTarget'
13551-
- $ref: '#/components/schemas/ScheduleTarget'
13552-
- $ref: '#/components/schemas/TeamTarget'
13550+
- $ref: '#/components/schemas/EscalationPolicyUser'
13551+
- $ref: '#/components/schemas/ScheduleData'
1355313552
EscalationPolicyStep:
1355413553
description: Represents a single step in an escalation policy, including its
1355513554
attributes, relationships, and resource type.
@@ -13795,6 +13794,44 @@ components:
1379513794
type: string
1379613795
x-enum-varnames:
1379713796
- POLICIES
13797+
EscalationPolicyUser:
13798+
description: Represents a user object in the context of an escalation policy,
13799+
including their `id`, type, and basic attributes.
13800+
properties:
13801+
attributes:
13802+
$ref: '#/components/schemas/EscalationPolicyUserAttributes'
13803+
id:
13804+
description: The unique user identifier.
13805+
type: string
13806+
type:
13807+
$ref: '#/components/schemas/EscalationPolicyUserType'
13808+
required:
13809+
- type
13810+
type: object
13811+
EscalationPolicyUserAttributes:
13812+
description: Provides basic user information for an escalation policy, including
13813+
a name and email address.
13814+
properties:
13815+
email:
13816+
description: The user's email address.
13817+
13818+
type: string
13819+
name:
13820+
description: The user's name.
13821+
example: Jane Doe
13822+
type: string
13823+
status:
13824+
$ref: '#/components/schemas/UserAttributesStatus'
13825+
type: object
13826+
EscalationPolicyUserType:
13827+
default: users
13828+
description: Users resource type.
13829+
enum:
13830+
- users
13831+
example: users
13832+
type: string
13833+
x-enum-varnames:
13834+
- USERS
1379813835
EscalationTarget:
1379913836
description: Represents an escalation target, which can be a team, user, or
1380013837
schedule.
@@ -31730,6 +31767,8 @@ components:
3173031767
description: The user's name.
3173131768
example: Jane Doe
3173231769
type: string
31770+
status:
31771+
$ref: '#/components/schemas/UserAttributesStatus'
3173331772
type: object
3173431773
ScheduleUserType:
3173531774
default: users
@@ -38564,6 +38603,17 @@ components:
3856438603
description: Whether the user is verified.
3856538604
type: boolean
3856638605
type: object
38606+
UserAttributesStatus:
38607+
description: The user's status.
38608+
enum:
38609+
- active
38610+
- deactivated
38611+
- pending
38612+
type: string
38613+
x-enum-varnames:
38614+
- ACTIVE
38615+
- DEACTIVATED
38616+
- PENDING
3856738617
UserCreateAttributes:
3856838618
description: Attributes of the created user.
3856938619
properties:

src/datadogV2/model/mod.rs

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2628,6 +2628,34 @@ pub mod model_escalation_target;
26282628
pub use self::model_escalation_target::EscalationTarget;
26292629
pub mod model_escalation_policy_step_type;
26302630
pub use self::model_escalation_policy_step_type::EscalationPolicyStepType;
2631+
pub mod model_escalation_policy_user;
2632+
pub use self::model_escalation_policy_user::EscalationPolicyUser;
2633+
pub mod model_escalation_policy_user_attributes;
2634+
pub use self::model_escalation_policy_user_attributes::EscalationPolicyUserAttributes;
2635+
pub mod model_user_attributes_status;
2636+
pub use self::model_user_attributes_status::UserAttributesStatus;
2637+
pub mod model_escalation_policy_user_type;
2638+
pub use self::model_escalation_policy_user_type::EscalationPolicyUserType;
2639+
pub mod model_schedule_data;
2640+
pub use self::model_schedule_data::ScheduleData;
2641+
pub mod model_schedule_data_attributes;
2642+
pub use self::model_schedule_data_attributes::ScheduleDataAttributes;
2643+
pub mod model_schedule_data_relationships;
2644+
pub use self::model_schedule_data_relationships::ScheduleDataRelationships;
2645+
pub mod model_schedule_data_relationships_layers;
2646+
pub use self::model_schedule_data_relationships_layers::ScheduleDataRelationshipsLayers;
2647+
pub mod model_schedule_data_relationships_layers_data_items;
2648+
pub use self::model_schedule_data_relationships_layers_data_items::ScheduleDataRelationshipsLayersDataItems;
2649+
pub mod model_schedule_data_relationships_layers_data_items_type;
2650+
pub use self::model_schedule_data_relationships_layers_data_items_type::ScheduleDataRelationshipsLayersDataItemsType;
2651+
pub mod model_schedule_data_relationships_teams;
2652+
pub use self::model_schedule_data_relationships_teams::ScheduleDataRelationshipsTeams;
2653+
pub mod model_schedule_data_relationships_teams_data_items;
2654+
pub use self::model_schedule_data_relationships_teams_data_items::ScheduleDataRelationshipsTeamsDataItems;
2655+
pub mod model_schedule_data_relationships_teams_data_items_type;
2656+
pub use self::model_schedule_data_relationships_teams_data_items_type::ScheduleDataRelationshipsTeamsDataItemsType;
2657+
pub mod model_schedule_data_type;
2658+
pub use self::model_schedule_data_type::ScheduleDataType;
26312659
pub mod model_escalation_policy_included;
26322660
pub use self::model_escalation_policy_included::EscalationPolicyIncluded;
26332661
pub mod model_escalation_policy_update_request;
@@ -2686,26 +2714,6 @@ pub mod model_schedule_create_request_data_type;
26862714
pub use self::model_schedule_create_request_data_type::ScheduleCreateRequestDataType;
26872715
pub mod model_schedule;
26882716
pub use self::model_schedule::Schedule;
2689-
pub mod model_schedule_data;
2690-
pub use self::model_schedule_data::ScheduleData;
2691-
pub mod model_schedule_data_attributes;
2692-
pub use self::model_schedule_data_attributes::ScheduleDataAttributes;
2693-
pub mod model_schedule_data_relationships;
2694-
pub use self::model_schedule_data_relationships::ScheduleDataRelationships;
2695-
pub mod model_schedule_data_relationships_layers;
2696-
pub use self::model_schedule_data_relationships_layers::ScheduleDataRelationshipsLayers;
2697-
pub mod model_schedule_data_relationships_layers_data_items;
2698-
pub use self::model_schedule_data_relationships_layers_data_items::ScheduleDataRelationshipsLayersDataItems;
2699-
pub mod model_schedule_data_relationships_layers_data_items_type;
2700-
pub use self::model_schedule_data_relationships_layers_data_items_type::ScheduleDataRelationshipsLayersDataItemsType;
2701-
pub mod model_schedule_data_relationships_teams;
2702-
pub use self::model_schedule_data_relationships_teams::ScheduleDataRelationshipsTeams;
2703-
pub mod model_schedule_data_relationships_teams_data_items;
2704-
pub use self::model_schedule_data_relationships_teams_data_items::ScheduleDataRelationshipsTeamsDataItems;
2705-
pub mod model_schedule_data_relationships_teams_data_items_type;
2706-
pub use self::model_schedule_data_relationships_teams_data_items_type::ScheduleDataRelationshipsTeamsDataItemsType;
2707-
pub mod model_schedule_data_type;
2708-
pub use self::model_schedule_data_type::ScheduleDataType;
27092717
pub mod model_layer;
27102718
pub use self::model_layer::Layer;
27112719
pub mod model_layer_attributes;

src/datadogV2/model/model_escalation_policy_included.rs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,8 @@ use serde::{Deserialize, Deserializer, Serialize};
1010
pub enum EscalationPolicyIncluded {
1111
TeamReference(Box<crate::datadogV2::model::TeamReference>),
1212
EscalationPolicyStep(Box<crate::datadogV2::model::EscalationPolicyStep>),
13-
UserTarget(Box<crate::datadogV2::model::UserTarget>),
14-
ScheduleTarget(Box<crate::datadogV2::model::ScheduleTarget>),
15-
TeamTarget(Box<crate::datadogV2::model::TeamTarget>),
13+
EscalationPolicyUser(Box<crate::datadogV2::model::EscalationPolicyUser>),
14+
ScheduleData(Box<crate::datadogV2::model::ScheduleData>),
1615
UnparsedObject(crate::datadog::UnparsedObject),
1716
}
1817

@@ -36,25 +35,18 @@ impl<'de> Deserialize<'de> for EscalationPolicyIncluded {
3635
return Ok(EscalationPolicyIncluded::EscalationPolicyStep(_v));
3736
}
3837
}
39-
if let Ok(_v) =
40-
serde_json::from_value::<Box<crate::datadogV2::model::UserTarget>>(value.clone())
41-
{
42-
if !_v._unparsed {
43-
return Ok(EscalationPolicyIncluded::UserTarget(_v));
44-
}
45-
}
46-
if let Ok(_v) =
47-
serde_json::from_value::<Box<crate::datadogV2::model::ScheduleTarget>>(value.clone())
48-
{
38+
if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV2::model::EscalationPolicyUser>>(
39+
value.clone(),
40+
) {
4941
if !_v._unparsed {
50-
return Ok(EscalationPolicyIncluded::ScheduleTarget(_v));
42+
return Ok(EscalationPolicyIncluded::EscalationPolicyUser(_v));
5143
}
5244
}
5345
if let Ok(_v) =
54-
serde_json::from_value::<Box<crate::datadogV2::model::TeamTarget>>(value.clone())
46+
serde_json::from_value::<Box<crate::datadogV2::model::ScheduleData>>(value.clone())
5547
{
5648
if !_v._unparsed {
57-
return Ok(EscalationPolicyIncluded::TeamTarget(_v));
49+
return Ok(EscalationPolicyIncluded::ScheduleData(_v));
5850
}
5951
}
6052

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
// Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
2+
// This product includes software developed at Datadog (https://www.datadoghq.com/).
3+
// Copyright 2019-Present Datadog, Inc.
4+
use serde::de::{Error, MapAccess, Visitor};
5+
use serde::{Deserialize, Deserializer, Serialize};
6+
use serde_with::skip_serializing_none;
7+
use std::fmt::{self, Formatter};
8+
9+
/// Represents a user object in the context of an escalation policy, including their `id`, type, and basic attributes.
10+
#[non_exhaustive]
11+
#[skip_serializing_none]
12+
#[derive(Clone, Debug, PartialEq, Serialize)]
13+
pub struct EscalationPolicyUser {
14+
/// Provides basic user information for an escalation policy, including a name and email address.
15+
#[serde(rename = "attributes")]
16+
pub attributes: Option<crate::datadogV2::model::EscalationPolicyUserAttributes>,
17+
/// The unique user identifier.
18+
#[serde(rename = "id")]
19+
pub id: Option<String>,
20+
/// Users resource type.
21+
#[serde(rename = "type")]
22+
pub type_: crate::datadogV2::model::EscalationPolicyUserType,
23+
#[serde(flatten)]
24+
pub additional_properties: std::collections::BTreeMap<String, serde_json::Value>,
25+
#[serde(skip)]
26+
#[serde(default)]
27+
pub(crate) _unparsed: bool,
28+
}
29+
30+
impl EscalationPolicyUser {
31+
pub fn new(type_: crate::datadogV2::model::EscalationPolicyUserType) -> EscalationPolicyUser {
32+
EscalationPolicyUser {
33+
attributes: None,
34+
id: None,
35+
type_,
36+
additional_properties: std::collections::BTreeMap::new(),
37+
_unparsed: false,
38+
}
39+
}
40+
41+
pub fn attributes(
42+
mut self,
43+
value: crate::datadogV2::model::EscalationPolicyUserAttributes,
44+
) -> Self {
45+
self.attributes = Some(value);
46+
self
47+
}
48+
49+
pub fn id(mut self, value: String) -> Self {
50+
self.id = Some(value);
51+
self
52+
}
53+
54+
pub fn additional_properties(
55+
mut self,
56+
value: std::collections::BTreeMap<String, serde_json::Value>,
57+
) -> Self {
58+
self.additional_properties = value;
59+
self
60+
}
61+
}
62+
63+
impl<'de> Deserialize<'de> for EscalationPolicyUser {
64+
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
65+
where
66+
D: Deserializer<'de>,
67+
{
68+
struct EscalationPolicyUserVisitor;
69+
impl<'a> Visitor<'a> for EscalationPolicyUserVisitor {
70+
type Value = EscalationPolicyUser;
71+
72+
fn expecting(&self, f: &mut Formatter<'_>) -> fmt::Result {
73+
f.write_str("a mapping")
74+
}
75+
76+
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
77+
where
78+
M: MapAccess<'a>,
79+
{
80+
let mut attributes: Option<
81+
crate::datadogV2::model::EscalationPolicyUserAttributes,
82+
> = None;
83+
let mut id: Option<String> = None;
84+
let mut type_: Option<crate::datadogV2::model::EscalationPolicyUserType> = None;
85+
let mut additional_properties: std::collections::BTreeMap<
86+
String,
87+
serde_json::Value,
88+
> = std::collections::BTreeMap::new();
89+
let mut _unparsed = false;
90+
91+
while let Some((k, v)) = map.next_entry::<String, serde_json::Value>()? {
92+
match k.as_str() {
93+
"attributes" => {
94+
if v.is_null() {
95+
continue;
96+
}
97+
attributes = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
98+
}
99+
"id" => {
100+
if v.is_null() {
101+
continue;
102+
}
103+
id = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
104+
}
105+
"type" => {
106+
type_ = Some(serde_json::from_value(v).map_err(M::Error::custom)?);
107+
if let Some(ref _type_) = type_ {
108+
match _type_ {
109+
crate::datadogV2::model::EscalationPolicyUserType::UnparsedObject(_type_) => {
110+
_unparsed = true;
111+
},
112+
_ => {}
113+
}
114+
}
115+
}
116+
&_ => {
117+
if let Ok(value) = serde_json::from_value(v.clone()) {
118+
additional_properties.insert(k, value);
119+
}
120+
}
121+
}
122+
}
123+
let type_ = type_.ok_or_else(|| M::Error::missing_field("type_"))?;
124+
125+
let content = EscalationPolicyUser {
126+
attributes,
127+
id,
128+
type_,
129+
additional_properties,
130+
_unparsed,
131+
};
132+
133+
Ok(content)
134+
}
135+
}
136+
137+
deserializer.deserialize_any(EscalationPolicyUserVisitor)
138+
}
139+
}

0 commit comments

Comments
 (0)