Skip to main content

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}