1#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
12pub struct DcimSitesCreateRequest {
13 #[serde(rename = "name")]
15 pub name: String,
16 #[serde(rename = "slug")]
17 pub slug: String,
18 #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
20 pub status: Option<Status>,
21 #[serde(
22 rename = "region",
23 default,
24 with = "::serde_with::rust::double_option",
25 skip_serializing_if = "Option::is_none"
26 )]
27 pub region: Option<Option<Box<crate::models::PatchedWritableSiteRequestRegion>>>,
28 #[serde(
29 rename = "group",
30 default,
31 with = "::serde_with::rust::double_option",
32 skip_serializing_if = "Option::is_none"
33 )]
34 pub group: Option<Option<Box<crate::models::PatchedWritableSiteRequestGroup>>>,
35 #[serde(
36 rename = "tenant",
37 default,
38 with = "::serde_with::rust::double_option",
39 skip_serializing_if = "Option::is_none"
40 )]
41 pub tenant: Option<Option<Box<crate::models::AsnRangeRequestTenant>>>,
42 #[serde(rename = "facility", skip_serializing_if = "Option::is_none")]
44 pub facility: Option<String>,
45 #[serde(
46 rename = "time_zone",
47 default,
48 with = "::serde_with::rust::double_option",
49 skip_serializing_if = "Option::is_none"
50 )]
51 pub time_zone: Option<Option<String>>,
52 #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
53 pub description: Option<String>,
54 #[serde(rename = "physical_address", skip_serializing_if = "Option::is_none")]
56 pub physical_address: Option<String>,
57 #[serde(rename = "shipping_address", skip_serializing_if = "Option::is_none")]
59 pub shipping_address: Option<String>,
60 #[serde(
62 rename = "latitude",
63 default,
64 with = "::serde_with::rust::double_option",
65 skip_serializing_if = "Option::is_none"
66 )]
67 pub latitude: Option<Option<f64>>,
68 #[serde(
70 rename = "longitude",
71 default,
72 with = "::serde_with::rust::double_option",
73 skip_serializing_if = "Option::is_none"
74 )]
75 pub longitude: Option<Option<f64>>,
76 #[serde(
77 rename = "owner",
78 default,
79 with = "::serde_with::rust::double_option",
80 skip_serializing_if = "Option::is_none"
81 )]
82 pub owner: Option<Option<Box<crate::models::AsnRangeRequestOwner>>>,
83 #[serde(rename = "comments", skip_serializing_if = "Option::is_none")]
84 pub comments: Option<String>,
85 #[serde(rename = "asns", skip_serializing_if = "Option::is_none")]
86 pub asns: Option<Vec<i32>>,
87 #[serde(rename = "tags", skip_serializing_if = "Option::is_none")]
88 pub tags: Option<Vec<crate::models::NestedTagRequest>>,
89 #[serde(rename = "custom_fields", skip_serializing_if = "Option::is_none")]
90 pub custom_fields: Option<::std::collections::HashMap<String, serde_json::Value>>,
91}
92
93impl DcimSitesCreateRequest {
94 pub fn new(name: String, slug: String) -> DcimSitesCreateRequest {
95 DcimSitesCreateRequest {
96 name,
97 slug,
98 status: None,
99 region: None,
100 group: None,
101 tenant: None,
102 facility: None,
103 time_zone: None,
104 description: None,
105 physical_address: None,
106 shipping_address: None,
107 latitude: None,
108 longitude: None,
109 owner: None,
110 comments: None,
111 asns: None,
112 tags: None,
113 custom_fields: None,
114 }
115 }
116}
117
118#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
120pub enum Status {
121 #[serde(rename = "planned")]
122 Planned,
123 #[serde(rename = "staging")]
124 Staging,
125 #[serde(rename = "active")]
126 Active,
127 #[serde(rename = "decommissioning")]
128 Decommissioning,
129 #[serde(rename = "retired")]
130 Retired,
131}
132
133impl Default for Status {
134 fn default() -> Status {
135 Self::Planned
136 }
137}