1use serde::{Deserialize, Serialize};
7
8use super::HasId;
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct SocialMediaEntry {
13 pub service: String,
14 pub identifier: String,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct Network {
26 #[serde(default)]
27 pub id: u32,
28 pub asn: Option<u32>,
29 pub name: Option<String>,
30 pub name_long: Option<String>,
31 pub aka: Option<String>,
32 pub org_id: Option<u32>,
33 pub irr_as_set: Option<String>,
34 pub website: Option<String>,
35
36 pub info_traffic: Option<String>,
38 pub info_scope: Option<String>,
39 pub info_type: Option<String>,
40 pub info_types: Option<Vec<String>>,
41 pub info_ratio: Option<String>,
42 pub info_prefixes4: Option<u32>,
43 pub info_prefixes6: Option<u32>,
44 pub info_ipv6: Option<bool>,
45 pub info_unicast: Option<bool>,
46 pub info_multicast: Option<bool>,
47 pub info_never_via_route_servers: Option<bool>,
48
49 pub policy_general: Option<String>,
51 pub policy_url: Option<String>,
52 pub policy_contracts: Option<String>,
53 pub policy_locations: Option<String>,
54 pub policy_ratio: Option<bool>,
55
56 pub route_server: Option<String>,
58 pub looking_glass: Option<String>,
59 pub ix_count: Option<u32>,
60 pub fac_count: Option<u32>,
61
62 pub status: Option<String>,
64 pub allow_ixp_update: Option<bool>,
65 pub social_media: Option<Vec<SocialMediaEntry>>,
66 pub notes: Option<String>,
67 pub rir_status: Option<String>,
68 pub rir_status_updated: Option<String>,
69 pub status_dashboard: Option<String>,
70 pub poc_updated: Option<String>,
71 pub netixlan_updated: Option<String>,
72 pub netfac_updated: Option<String>,
73 pub created: Option<String>,
74 pub updated: Option<String>,
75}
76
77impl HasId for Network {
78 fn id(&self) -> u32 {
79 self.id
80 }
81}
82
83#[derive(Debug, Clone, Serialize, Deserialize)]
89pub struct InternetExchange {
90 pub id: u32,
91 pub name: String,
92 pub name_long: Option<String>,
93 pub aka: Option<String>,
94 pub org_id: Option<u32>,
95
96 pub city: Option<String>,
98 pub country: Option<String>,
99 pub region_continent: Option<String>,
100
101 pub proto_unicast: Option<bool>,
103 pub proto_ipv6: Option<bool>,
104 pub proto_multicast: Option<bool>,
105
106 pub net_count: Option<u32>,
108 pub fac_count: Option<u32>,
109 pub ixf_net_count: Option<u32>,
110
111 pub media: Option<String>,
113 pub service_level: Option<String>,
114 pub terms: Option<String>,
115
116 pub website: Option<String>,
118 pub url_stats: Option<String>,
119 pub tech_email: Option<String>,
120 pub tech_phone: Option<String>,
121 pub policy_email: Option<String>,
122 pub policy_phone: Option<String>,
123 pub sales_email: Option<String>,
124 pub sales_phone: Option<String>,
125
126 pub ixf_import_request: Option<String>,
128 pub ixf_import_request_status: Option<String>,
129 pub ixf_last_import: Option<String>,
130
131 pub status: Option<String>,
133 pub status_dashboard: Option<String>,
134 pub notes: Option<String>,
135 pub social_media: Option<Vec<SocialMediaEntry>>,
136 pub created: Option<String>,
137 pub updated: Option<String>,
138}
139
140impl HasId for InternetExchange {
141 fn id(&self) -> u32 {
142 self.id
143 }
144}
145
146#[derive(Debug, Clone, Serialize, Deserialize)]
152pub struct IxLan {
153 pub id: u32,
154 pub ix_id: u32,
155 pub name: Option<String>,
156 pub descr: Option<String>,
157 pub mtu: Option<u32>,
158 pub rs_asn: Option<u32>,
159 pub dot1q_support: Option<bool>,
160 pub arp_sponge: Option<String>,
161 pub ixf_ixp_import_enabled: Option<bool>,
162 pub ixf_ixp_member_list_url_visible: Option<String>,
163 pub status: Option<String>,
164 pub created: Option<String>,
165 pub updated: Option<String>,
166}
167
168impl HasId for IxLan {
169 fn id(&self) -> u32 {
170 self.id
171 }
172}
173
174#[derive(Debug, Clone, Serialize, Deserialize)]
180pub struct IxPrefix {
181 pub id: u32,
182 pub prefix: String,
183 pub protocol: String,
184 pub ixlan_id: u32,
185 pub in_dfz: bool,
186 pub status: Option<String>,
187 pub created: Option<String>,
188 pub updated: Option<String>,
189}
190
191impl HasId for IxPrefix {
192 fn id(&self) -> u32 {
193 self.id
194 }
195}
196
197#[derive(Debug, Clone, Serialize, Deserialize)]
204pub struct NetworkIxLan {
205 pub id: u32,
206 pub asn: u32,
207 pub net_id: u32,
208 pub ix_id: u32,
209 pub ixlan_id: u32,
210 pub name: Option<String>,
211 pub speed: u64,
212 pub is_rs_peer: bool,
213 pub operational: bool,
214 pub bfd_support: Option<bool>,
215 pub ipaddr4: Option<String>,
216 pub ipaddr6: Option<String>,
217 pub notes: Option<String>,
218 pub ix_side_id: Option<u32>,
219 pub net_side_id: Option<u32>,
220 pub status: Option<String>,
221 pub created: Option<String>,
222 pub updated: Option<String>,
223}
224
225impl HasId for NetworkIxLan {
226 fn id(&self) -> u32 {
227 self.id
228 }
229}
230
231#[derive(Debug, Clone, Serialize, Deserialize)]
237pub struct Facility {
238 pub id: u32,
239 pub name: String,
240 pub name_long: Option<String>,
241 pub aka: Option<String>,
242 pub org_id: Option<u32>,
243 pub org_name: Option<String>,
244 pub campus_id: Option<u32>,
245
246 pub address1: Option<String>,
248 pub address2: Option<String>,
249 pub city: Option<String>,
250 pub state: Option<String>,
251 pub country: Option<String>,
252 pub zipcode: Option<String>,
253 pub region_continent: Option<String>,
254 pub latitude: Option<f64>,
255 pub longitude: Option<f64>,
256 pub clli: Option<String>,
257 pub npanxx: Option<String>,
258 pub floor: Option<String>,
259 pub suite: Option<String>,
260 pub property: Option<String>,
261 pub rencode: Option<String>,
262 pub diverse_serving_substations: Option<bool>,
263
264 pub net_count: Option<u32>,
266 pub ix_count: Option<u32>,
267 pub carrier_count: Option<u32>,
268
269 pub available_voltage_services: Option<Vec<String>>,
271
272 pub website: Option<String>,
274 pub tech_email: Option<String>,
275 pub tech_phone: Option<String>,
276 pub sales_email: Option<String>,
277 pub sales_phone: Option<String>,
278
279 pub status: Option<String>,
281 pub status_dashboard: Option<String>,
282 pub notes: Option<String>,
283 pub social_media: Option<Vec<SocialMediaEntry>>,
284 pub created: Option<String>,
285 pub updated: Option<String>,
286}
287
288impl HasId for Facility {
289 fn id(&self) -> u32 {
290 self.id
291 }
292}
293
294#[derive(Debug, Clone, Serialize, Deserialize)]
300pub struct NetworkFacility {
301 pub id: u32,
302 pub net_id: u32,
303 pub fac_id: u32,
304 pub local_asn: u32,
305 pub name: Option<String>,
306 pub city: Option<String>,
307 pub country: Option<String>,
308 pub status: Option<String>,
309 pub created: Option<String>,
310 pub updated: Option<String>,
311}
312
313impl HasId for NetworkFacility {
314 fn id(&self) -> u32 {
315 self.id
316 }
317}
318
319#[derive(Debug, Clone, Serialize, Deserialize)]
325pub struct IxFacility {
326 pub id: u32,
327 pub ix_id: u32,
328 pub fac_id: u32,
329 pub name: Option<String>,
330 pub city: Option<String>,
331 pub country: Option<String>,
332 pub status: Option<String>,
333 pub created: Option<String>,
334 pub updated: Option<String>,
335}
336
337impl HasId for IxFacility {
338 fn id(&self) -> u32 {
339 self.id
340 }
341}
342
343#[derive(Debug, Clone, Serialize, Deserialize)]
349pub struct Organization {
350 pub id: u32,
351 pub name: String,
352 pub name_long: Option<String>,
353 pub aka: Option<String>,
354
355 pub address1: Option<String>,
357 pub address2: Option<String>,
358 pub city: Option<String>,
359 pub state: Option<String>,
360 pub country: Option<String>,
361 pub zipcode: Option<String>,
362 pub latitude: Option<f64>,
363 pub longitude: Option<f64>,
364 pub floor: Option<String>,
365 pub suite: Option<String>,
366
367 pub website: Option<String>,
369
370 pub status: Option<String>,
372 pub notes: Option<String>,
373 pub social_media: Option<Vec<SocialMediaEntry>>,
374 pub created: Option<String>,
375 pub updated: Option<String>,
376}
377
378impl HasId for Organization {
379 fn id(&self) -> u32 {
380 self.id
381 }
382}
383
384#[derive(Debug, Clone, Serialize, Deserialize)]
390pub struct Campus {
391 pub id: u32,
392 pub name: String,
393 pub name_long: Option<String>,
394 pub aka: Option<String>,
395 pub org_id: Option<u32>,
396 pub org_name: Option<String>,
397
398 pub city: Option<String>,
400 pub state: Option<String>,
401 pub country: Option<String>,
402 pub zipcode: Option<String>,
403
404 pub website: Option<String>,
406
407 pub status: Option<String>,
409 pub notes: Option<String>,
410 pub social_media: Option<Vec<SocialMediaEntry>>,
411 pub created: Option<String>,
412 pub updated: Option<String>,
413}
414
415impl HasId for Campus {
416 fn id(&self) -> u32 {
417 self.id
418 }
419}
420
421#[derive(Debug, Clone, Serialize, Deserialize)]
427pub struct Carrier {
428 pub id: u32,
429 pub name: String,
430 pub name_long: Option<String>,
431 pub aka: Option<String>,
432 pub org_id: Option<u32>,
433 pub org_name: Option<String>,
434
435 pub fac_count: Option<u32>,
437
438 pub website: Option<String>,
440
441 pub status: Option<String>,
443 pub notes: Option<String>,
444 pub social_media: Option<Vec<SocialMediaEntry>>,
445 pub created: Option<String>,
446 pub updated: Option<String>,
447}
448
449impl HasId for Carrier {
450 fn id(&self) -> u32 {
451 self.id
452 }
453}
454
455#[derive(Debug, Clone, Serialize, Deserialize)]
461pub struct CarrierFacility {
462 pub id: u32,
463 pub carrier_id: u32,
464 pub fac_id: u32,
465 pub name: Option<String>,
466 pub status: Option<String>,
467 pub created: Option<String>,
468 pub updated: Option<String>,
469}
470
471impl HasId for CarrierFacility {
472 fn id(&self) -> u32 {
473 self.id
474 }
475}