use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum RdapStatus {
Validated,
#[serde(rename = "renew prohibited")]
RenewProhibited,
#[serde(rename = "update prohibited")]
UpdateProhibited,
#[serde(rename = "transfer prohibited")]
TransferProhibited,
#[serde(rename = "delete prohibited")]
DeleteProhibited,
Proxy,
Private,
Removed,
Obscured,
Associated,
Active,
Inactive,
Locked,
#[serde(rename = "pending create")]
PendingCreate,
#[serde(rename = "pending renew")]
PendingRenew,
#[serde(rename = "pending transfer")]
PendingTransfer,
#[serde(rename = "pending update")]
PendingUpdate,
#[serde(rename = "pending delete")]
PendingDelete,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum RdapRole {
Registrant,
Technical,
Administrative,
Abuse,
Billing,
Registrar,
Reseller,
Sponsor,
Proxy,
Notifications,
Noc,
#[serde(untagged)]
Other(String),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RdapEvent {
pub event_action: String,
pub event_date: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub event_actor: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RdapLink {
pub href: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub rel: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub media_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RdapRemark {
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub remark_type: Option<String>,
pub description: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub links: Vec<RdapLink>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RdapEntity {
#[serde(skip_serializing_if = "Option::is_none")]
pub handle: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub vcard_array: Option<serde_json::Value>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub roles: Vec<RdapRole>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub events: Vec<RdapEvent>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub links: Vec<RdapLink>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub remarks: Vec<RdapRemark>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub entities: Vec<RdapEntity>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResponseMeta {
pub source: String,
pub queried_at: String,
pub cached: bool,
}