1use serde::{Deserialize, Serialize};
6
7use super::common::{RdapEntity, RdapEvent, RdapLink, RdapRemark, RdapStatus, ResponseMeta};
8
9#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
11pub enum IpVersion {
12 #[serde(rename = "v4")]
13 V4,
14 #[serde(rename = "v6")]
15 V6,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
30#[serde(rename_all = "camelCase")]
31pub struct IpResponse {
32 pub query: String,
34
35 #[serde(skip_serializing_if = "Option::is_none")]
37 pub handle: Option<String>,
38
39 #[serde(skip_serializing_if = "Option::is_none")]
41 pub start_address: Option<String>,
42
43 #[serde(skip_serializing_if = "Option::is_none")]
45 pub end_address: Option<String>,
46
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub ip_version: Option<IpVersion>,
50
51 #[serde(skip_serializing_if = "Option::is_none")]
53 pub name: Option<String>,
54
55 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
57 pub allocation_type: Option<String>,
58
59 #[serde(skip_serializing_if = "Option::is_none")]
61 pub country: Option<String>,
62
63 #[serde(skip_serializing_if = "Option::is_none")]
65 pub parent_handle: Option<String>,
66
67 #[serde(default, skip_serializing_if = "Vec::is_empty")]
68 pub status: Vec<RdapStatus>,
69
70 #[serde(default, skip_serializing_if = "Vec::is_empty")]
71 pub entities: Vec<RdapEntity>,
72
73 #[serde(default, skip_serializing_if = "Vec::is_empty")]
74 pub events: Vec<RdapEvent>,
75
76 #[serde(default, skip_serializing_if = "Vec::is_empty")]
77 pub links: Vec<RdapLink>,
78
79 #[serde(default, skip_serializing_if = "Vec::is_empty")]
80 pub remarks: Vec<RdapRemark>,
81
82 pub meta: ResponseMeta,
83}