1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
11#[serde(rename_all = "camelCase")]
12pub enum RdapStatus {
13 Validated,
14 #[serde(rename = "renew prohibited")]
15 RenewProhibited,
16 #[serde(rename = "update prohibited")]
17 UpdateProhibited,
18 #[serde(rename = "transfer prohibited")]
19 TransferProhibited,
20 #[serde(rename = "delete prohibited")]
21 DeleteProhibited,
22 Proxy,
23 Private,
24 Removed,
25 Obscured,
26 Associated,
27 Active,
28 Inactive,
29 Locked,
30 #[serde(rename = "pending create")]
31 PendingCreate,
32 #[serde(rename = "pending renew")]
33 PendingRenew,
34 #[serde(rename = "pending transfer")]
35 PendingTransfer,
36 #[serde(rename = "pending update")]
37 PendingUpdate,
38 #[serde(rename = "pending delete")]
39 PendingDelete,
40 #[serde(untagged)]
42 Other(String),
43}
44
45#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
49#[serde(rename_all = "camelCase")]
50pub enum RdapRole {
51 Registrant,
52 Technical,
53 Administrative,
54 Abuse,
55 Billing,
56 Registrar,
57 Reseller,
58 Sponsor,
59 Proxy,
60 Notifications,
61 Noc,
62 #[serde(untagged)]
64 Other(String),
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize)]
71#[serde(rename_all = "camelCase")]
72pub struct RdapEvent {
73 pub event_action: String,
75 pub event_date: String,
77 #[serde(skip_serializing_if = "Option::is_none")]
78 pub event_actor: Option<String>,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize)]
85pub struct RdapLink {
86 pub href: String,
87 #[serde(skip_serializing_if = "Option::is_none")]
88 pub rel: Option<String>,
89 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
90 pub media_type: Option<String>,
91 #[serde(skip_serializing_if = "Option::is_none")]
92 pub title: Option<String>,
93}
94
95#[derive(Debug, Clone, Serialize, Deserialize)]
99pub struct RdapRemark {
100 #[serde(skip_serializing_if = "Option::is_none")]
101 pub title: Option<String>,
102 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
103 pub remark_type: Option<String>,
104 pub description: Vec<String>,
105 #[serde(default, skip_serializing_if = "Vec::is_empty")]
106 pub links: Vec<RdapLink>,
107}
108
109#[derive(Debug, Clone, Serialize, Deserialize)]
113#[serde(rename_all = "camelCase")]
114pub struct RdapEntity {
115 #[serde(skip_serializing_if = "Option::is_none")]
116 pub handle: Option<String>,
117 #[serde(skip_serializing_if = "Option::is_none")]
119 pub vcard_array: Option<serde_json::Value>,
120 #[serde(default, skip_serializing_if = "Vec::is_empty")]
121 pub roles: Vec<RdapRole>,
122 #[serde(default, skip_serializing_if = "Vec::is_empty")]
123 pub events: Vec<RdapEvent>,
124 #[serde(default, skip_serializing_if = "Vec::is_empty")]
125 pub links: Vec<RdapLink>,
126 #[serde(default, skip_serializing_if = "Vec::is_empty")]
127 pub remarks: Vec<RdapRemark>,
128 #[serde(default, skip_serializing_if = "Vec::is_empty")]
130 pub entities: Vec<RdapEntity>,
131}
132
133#[derive(Debug, Clone, Serialize, Deserialize)]
137pub struct ResponseMeta {
138 pub source: String,
140 pub queried_at: String,
142 pub cached: bool,
144}