usesend_api/types/
domain.rs1use serde::{Deserialize, Serialize};
2
3use super::DomainId;
4
5#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
8#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
9pub enum DomainStatus {
10 NotStarted,
11 Pending,
12 Success,
13 Failed,
14 TemporaryFailure,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
18pub enum DnsRecordType {
19 MX,
20 TXT,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub struct DnsRecord {
28 pub r#type: DnsRecordType,
29 pub name: String,
30 pub value: String,
31 pub ttl: String,
32 pub status: DomainStatus,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub priority: Option<String>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub recommended: Option<bool>,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
40#[serde(rename_all = "camelCase")]
41pub struct Domain {
42 pub id: DomainId,
43 pub name: String,
44 pub team_id: i64,
45 pub status: DomainStatus,
46 pub public_key: String,
47 pub created_at: String,
48 pub updated_at: String,
49 pub dns_records: Vec<DnsRecord>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub region: Option<String>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub click_tracking: Option<bool>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub open_tracking: Option<bool>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub dkim_status: Option<String>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub spf_details: Option<String>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub dmarc_added: Option<bool>,
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub is_verifying: Option<bool>,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub error_message: Option<String>,
66 #[serde(skip_serializing_if = "Option::is_none")]
67 pub subdomain: Option<String>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub verification_error: Option<String>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub last_checked_time: Option<String>,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
77pub struct CreateDomainRequest {
78 pub name: String,
79 pub region: String,
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize)]
85pub struct VerifyDomainResponse {
86 pub message: String,
87}