twc_rs/cli/domains.rs
1// SPDX-FileCopyrightText: 2026 RAprogramm <andrey.rozanov.vl@gmail.com>
2// SPDX-License-Identifier: MIT
3
4//! Domain and DNS subcommands.
5
6use clap::Subcommand;
7
8/// Domain management subcommands.
9#[derive(Subcommand, Debug)]
10pub enum DomainCommands {
11 /// List all domains on the account.
12 List {
13 /// Maximum number of domains to return.
14 #[arg(long)]
15 limit: Option<i32>,
16
17 /// Number of domains to skip.
18 #[arg(long)]
19 offset: Option<i32>
20 },
21 /// Show detailed info for a domain.
22 Info {
23 /// Domain FQDN (e.g., example.com).
24 #[arg(long)]
25 id: String
26 },
27 /// Check if a domain is available for registration.
28 Check {
29 /// Domain name to check (e.g., example.com).
30 #[arg(long)]
31 domain: String
32 },
33 /// Add a domain to the account.
34 Add {
35 /// Domain FQDN to add (e.g., example.com).
36 #[arg(long)]
37 domain: String
38 },
39 /// Delete a domain from the account.
40 Delete {
41 /// Domain FQDN to delete (e.g., example.com).
42 #[arg(long)]
43 id: String
44 },
45 /// List DNS records for a domain.
46 DnsList {
47 /// Domain FQDN (e.g., example.com).
48 #[arg(long)]
49 id: String
50 },
51 /// Add a DNS record to a domain.
52 DnsAdd {
53 /// Domain FQDN (e.g., example.com).
54 #[arg(long)]
55 id: String,
56
57 /// DNS record type (A, AAAA, CNAME, MX, TXT, SRV).
58 #[arg(long)]
59 record_type: String,
60
61 /// DNS record value (e.g., IP address for A record).
62 #[arg(long)]
63 value: String
64 },
65 /// Delete a DNS record from a domain.
66 DnsDelete {
67 /// Domain FQDN (e.g., example.com).
68 #[arg(long)]
69 id: String,
70
71 /// DNS record ID to delete.
72 #[arg(long)]
73 record_id: i32
74 },
75 /// Update a DNS record on a domain.
76 DnsUpdate {
77 /// Domain FQDN (e.g., example.com).
78 #[arg(long)]
79 id: String,
80
81 /// DNS record ID to update.
82 #[arg(long)]
83 record_id: i32,
84
85 /// New DNS record type (A, AAAA, CNAME, MX, TXT, SRV).
86 #[arg(long)]
87 record_type: String,
88
89 /// New DNS record value.
90 #[arg(long)]
91 value: String
92 },
93 /// List name servers for a domain.
94 NsList {
95 /// Domain FQDN (e.g., example.com).
96 #[arg(long)]
97 id: String
98 },
99 /// Update name servers for a domain.
100 NsUpdate {
101 /// Domain FQDN (e.g., example.com).
102 #[arg(long)]
103 id: String,
104
105 /// First name server (e.g., ns1.example.com).
106 #[arg(short = '1', long)]
107 ns1: String,
108
109 /// Second name server (e.g., ns2.example.com).
110 #[arg(short = '2', long)]
111 ns2: String
112 },
113 /// List subdomains for a domain.
114 SubdomainList {
115 /// Domain FQDN (e.g., example.com).
116 #[arg(long)]
117 id: String
118 },
119 /// Add a subdomain to a domain.
120 SubdomainAdd {
121 /// Domain FQDN (e.g., example.com).
122 #[arg(long)]
123 id: String,
124
125 /// Subdomain name (e.g., www).
126 #[arg(long)]
127 name: String
128 },
129 /// Delete a subdomain from a domain.
130 SubdomainDelete {
131 /// Domain FQDN (e.g., example.com).
132 #[arg(long)]
133 id: String,
134
135 /// Subdomain name to delete (e.g., www).
136 #[arg(long)]
137 name: String
138 },
139 /// List domain registration/transfer/prolongation requests.
140 RequestList,
141 /// List available TLDs (top-level domains).
142 TldList,
143 /// Toggle auto-prolongation for a domain.
144 AutoProlong {
145 /// Domain FQDN (e.g., example.com).
146 #[arg(long)]
147 id: String,
148
149 /// Enable (true) or disable (false) auto-prolongation.
150 #[arg(long)]
151 enabled: bool
152 }
153}