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