dnspod_lib/response.rs
1//! 返回结果 <https://cloud.tencent.com/document/api/1427/56191>
2//! 参数类型 <https://cloud.tencent.com/document/api/1427/78480>
3//!
4//! 目前腾讯云 API 3.0 输入参数和输出参数支持如下几种数据格式:
5//!
6//! String: 字符串。
7//! Integer:整型,上限为无符号64位整数。SDK 3.0 不同编程语言支持的类型有所差异,建议以所使用编程语言的最大整型定义,例如 Golang 的 uint64。
8//! Boolean:布尔型。
9//! Float:浮点型。
10//! Double:双精度浮点型。
11//! Date:字符串,日期格式。例如:2022-01-01。
12//! Timestamp:字符串,时间格式。例如:2022-01-01 00:00:00。
13//! Timestamp ISO8601:ISO 8601 是由国际标准化组织(International Organization for Standardization,ISO)发布的关于日期和时间格式的国际标准,对应国标 《GB/T 7408-2005数据元和交换格式信息交换日期和时间表示法》。建议以所使用编程语言的标准库进行格式解析。例如:2022-01-01T00:00:00+08:00。
14//! Binary:二进制内容,需要以特定协议请求和解析。
15#![allow(dead_code)]
16#![allow(non_snake_case)]
17
18use crate::data_types::*;
19use crate::error_code::ErrorCode;
20
21crate::custom_meta_struct! {
22 (
23 // 公共 meta attribute, 赋给每个 struct
24 #[derive(Debug, Clone, crate::serde::Serialize, crate::serde::Deserialize)]
25 ),
26
27 /// 返回结果
28 /// <https://cloud.tencent.com/document/api/1427/56191>
29 pub struct Response {
30 pub Response: InnerResponse,
31 }
32
33 pub struct InnerResponse {
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub Error: Option<Error>,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub TotalCount: Option<Integer>,
38 /// 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId
39 pub RequestId: String,
40 /// 记录ID
41 /// 示例值:162
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub RecordId: Option<Integer>,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub RecordCountInfo: Option<RecordCountInfo>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub RecordList: Option<Vec<RecordListItem>>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub RecordInfo: Option<RecordInfo>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub DomainCountInfo: Option<DomainCountInfo>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub DomainList: Option<Vec<DomainListItem>>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub LineList: Option<Vec<LineInfo>>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub LineGroupList: Option<Vec<LineGroupInfo>>,
58 /// 域名信息
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub DomainInfo: Option<DomainCreateInfo>,
61 }
62
63 pub struct Error {
64 #[serde(flatten)]
65 pub code: ErrorCode,
66 pub Message: String,
67 }
68
69 pub struct RecordCountInfo {
70 pub SubdomainCount: Integer,
71 pub TotalCount: Integer,
72 pub ListCount: Integer,
73 }
74
75 pub struct RecordListItem {
76 /// 记录Id
77 /// 示例值:1
78 pub RecordId: Integer,
79 /// String 记录值
80 /// 示例值:1.1.1.1
81 pub Value: String,
82 /// Status String 记录状态,启用:ENABLE,暂停:DISABLE
83 /// 示例值:ENABLE
84 pub Status: String,
85 /// UpdatedOn Timestamp 更新时间
86 /// 示例值:2021-03-28 11:27:09
87 pub UpdatedOn: Timestamp,
88 /// Name String 主机名
89 /// 示例值:www
90 pub Name: String,
91 /// Line String 记录线路
92 /// 示例值:默认
93 pub Line: String,
94 /// LineId String 线路Id
95 /// 示例值:0
96 pub LineId: String,
97 /// Type String 记录类型
98 /// 示例值:A
99 pub Type: String,
100 /// Weight Integer 记录权重,用于负载均衡记录
101 /// 注意:此字段可能返回 null,表示取不到有效值。
102 /// 示例值:20
103 pub Weight: Option<Integer>,
104 /// MonitorStatus String 记录监控状态,正常:OK,告警:WARN,宕机:DOWN,未设置监控或监控暂停则为空
105 /// 示例值:OK
106 pub MonitorStatus: String,
107 /// Remark String 记录备注说明
108 /// 示例值:用于api
109 pub Remark: String,
110 /// TTL Integer 记录缓存时间
111 /// 示例值:600
112 pub TTL: Integer,
113 /// MX Integer MX值,只有MX记录有
114 /// 注意:此字段可能返回 null,表示取不到有效值。
115 /// 示例值:10
116 pub MX: Option<Integer>,
117 /// DefaultNS Boolean 是否是默认的ns记录
118 /// 示例值:true
119 pub DefaultNS: Option<Boolean>,
120 }
121
122 pub struct RecordInfo {
123 /// Id Integer 记录 ID 。
124 /// 示例值:158
125 pub Id: Integer,
126
127 /// SubDomain String 子域名(主机记录)。
128 /// 示例值:www
129 pub SubDomain: String,
130
131 /// RecordType String 记录类型, 详见 [DescribeRecordType](super::action::DescribeRecordType) 接口。
132 /// 示例值:A
133 pub RecordType: String,
134
135 /// RecordLine String 解析记录的线路,详见 [DescribeRecordLineList](super::action::DescribeRecordLineList) 接口。
136 /// 示例值:百度
137 pub RecordLine: String,
138
139 /// RecordLineId String 解析记录的线路 ID ,详见 [DescribeRecordLineList](super::action::DescribeRecordLineList) 接口。
140 /// 示例值:90=0
141 pub RecordLineId: String,
142
143 /// Value String 记录值。
144 /// 示例值:129.23.32.32
145 pub Value: String,
146
147 /// Weight Integer 记录权重值。
148 /// 注意:此字段可能返回 null,表示取不到有效值。
149 /// 示例值:10
150 pub Weight: Option<Integer>,
151
152 /// MX Integer 记录的 MX 记录值,非 MX 记录类型,默认为 0。
153 /// 示例值:20
154 pub MX: Integer,
155
156 /// TTL Integer 记录的 TTL 值。
157 /// 示例值:600
158 pub TTL: Integer,
159
160 /// Enabled Integer 记录状态。0表示禁用,1表示启用。
161 /// 示例值:1
162 pub Enabled: Integer,
163
164 /// MonitorStatus String 该记录的 D 监控状态。
165 /// "Ok" : 服务器正常。
166 /// "Warn" : 该记录有报警, 服务器返回 4XX。
167 /// "Down" : 服务器宕机。
168 /// "" : 该记录未开启 D 监控。
169 /// 示例值:Ok
170 pub MonitorStatus: String,
171
172 /// Remark String 记录的备注。
173 /// 注意:此字段可能返回 null,表示取不到有效值。
174 /// 示例值:这是解析记录的备注
175 pub Remark: Option<String>,
176
177 /// UpdatedOn Timestamp 记录最后更新时间。
178 /// 示例值:2021-03-31 11:38:02
179 pub UpdatedOn: Timestamp,
180
181 /// DomainId Integer 域名 ID 。
182 /// 示例值:62
183 pub DomainId: Integer,
184 }
185
186 pub struct DomainCountInfo {
187 /// DomainTotal Integer 符合条件的域名数量
188 /// 示例值:1
189 pub DomainTotal: Integer,
190 /// AllTotal Integer 用户可以查看的所有域名数量
191 /// 示例值:1
192 pub AllTotal: Integer,
193 /// MineTotal Integer 用户账号添加的域名数量
194 /// 示例值:1
195 pub MineTotal: Integer,
196 /// ShareTotal Integer 共享给用户的域名数量
197 /// 示例值:1
198 pub ShareTotal: Integer,
199 /// VipTotal Integer 付费域名数量
200 /// 示例值:1
201 pub VipTotal: Integer,
202 /// PauseTotal Integer 暂停的域名数量
203 /// 示例值:1
204 pub PauseTotal: Integer,
205 /// ErrorTotal Integer dns设置错误的域名数量
206 /// 示例值:1
207 pub ErrorTotal: Integer,
208 /// LockTotal Integer 锁定的域名数量
209 /// 示例值:1
210 pub LockTotal: Integer,
211 /// SpamTotal Integer 封禁的域名数量
212 /// 示例值:1
213 pub SpamTotal: Integer,
214 /// VipExpire Integer 30天内即将到期的域名数量
215 /// 示例值:1
216 pub VipExpire: Integer,
217 /// ShareOutTotal Integer 分享给其它人的域名数量
218 /// 示例值:1
219 pub ShareOutTotal: Integer,
220 /// GroupTotal Integer 指定分组内的域名数量
221 /// 示例值:1
222 pub GroupTotal: Integer,
223 }
224
225 pub struct DomainListItem {
226 /// DomainId Integer 系统分配给域名的唯一标识
227 /// 示例值:12
228 pub DomainId: Integer,
229 /// Name String 域名的原始格式
230 /// 示例值:qq.com
231 pub Name: String,
232 /// Status String 域名的状态,正常:ENABLE,暂停:PAUSE,封禁:SPAM
233 /// 示例值:ENABLE
234 pub Status: String,
235 /// TTL Integer 域名默认的解析记录默认TTL值
236 /// 示例值:600
237 pub TTL: Integer,
238 /// CNAMESpeedup String 是否开启CNAME加速,开启:ENABLE,未开启:DISABLE
239 /// 示例值:DISABLE
240 pub CNAMESpeedup: String,
241 /// DNSStatus String DNS 设置状态,错误:DNSERROR,正常:空字符串
242 /// 示例值:DNSERROR
243 pub DNSStatus: String,
244 /// Grade String 域名的套餐等级代码
245 /// 示例值:DP_FREE
246 pub Grade: String,
247 /// GroupId Integer 域名所属的分组Id
248 /// 示例值:1
249 pub GroupId: Integer,
250 /// SearchEnginePush String 是否开启搜索引擎推送优化,是:YES,否:NO
251 /// 示例值:NO
252 pub SearchEnginePush: String,
253 /// Remark String 域名备注说明
254 /// 示例值:重要域名
255 pub Remark: String,
256 /// Punycode String 经过punycode编码后的域名格式
257 /// 示例值:xn--a9.com
258 pub Punycode: String,
259 /// EffectiveDNS Array of String 系统为域名分配的有效DNS
260 /// 示例值:["f1g1ns1.dnspod.net","f1g1ns2.dnspod.net"]
261 pub EffectiveDNS: Vec<String>,
262 /// GradeLevel Integer 域名套餐等级对应的序号
263 /// 示例值:5
264 pub GradeLevel: Integer,
265 /// GradeTitle String 套餐名称
266 /// 示例值:免费版
267 pub GradeTitle: String,
268 /// IsVip String 是否是付费套餐
269 /// 示例值:YES
270 pub IsVip: String,
271 /// VipStartAt Timestamp 付费套餐开通时间
272 /// 示例值:2021-04-07 13:34:20
273 pub VipStartAt: Timestamp,
274 /// VipEndAt Timestamp 付费套餐到期时间
275 /// 示例值:2022-04-07 13:34:20
276 pub VipEndAt: Timestamp,
277 /// VipAutoRenew String 域名是否开通VIP自动续费,是:YES,否:NO,默认:DEFAULT
278 /// 示例值:YES
279 pub VipAutoRenew: String,
280 /// RecordCount Integer 域名下的记录数量
281 /// 示例值:20
282 pub RecordCount: Integer,
283 /// CreatedOn Timestamp 域名添加时间
284 /// 示例值:2020-05-21 16:08:29
285 pub CreatedOn: Timestamp,
286 /// UpdatedOn Timestamp 域名更新时间
287 /// 示例值:2021-04-01 18:09:58
288 pub UpdatedOn: Timestamp,
289 /// Owner String 域名所属账号
290 /// 示例值:abc@tencent.com
291 pub Owner: String,
292 /// TagList Array of TagItem 域名关联的标签列表
293 /// 注意:此字段可能返回 null,表示取不到有效值。
294 pub TagList: Option<Vec<TagItem>>,
295 }
296
297 pub struct TagItem {
298 /// 标签键
299 /// 示例值:key1
300 pub TagKey: String,
301 /// 标签值
302 /// 注意:此字段可能返回 null,表示取不到有效值。
303 /// 示例值:value1
304 pub TagValue: Option<String>,
305 }
306
307 /// 解析线路信息
308 ///被如下接口引用:[DescribeRecordLineList](super::action::DescribeRecordLineList)
309 pub struct LineInfo {
310 /// 线路名称 示例值:电信
311 Name: String,
312 /// 线路ID 示例值:10=0
313 LineId: String,
314 }
315
316 /// 线路分组信息
317 /// 被如下接口引用:[DescribeRecordLineList](super::action::DescribeRecordLineList)
318 pub struct LineGroupInfo {
319 /// 线路分组ID 示例值:15=0
320 LineId: String,
321 /// 线路分组名称 示例值:华北
322 Name: String,
323 /// 分组类型 示例值:system
324 Type: String,
325 /// 线路分组包含的线路列表
326 LineList: Vec<String>,
327 }
328
329 /// 域名信息(创建域名时返回) 被如下接口引用:[CreateDomain](super::action::CreateDomain)
330 pub struct DomainCreateInfo {
331 /// 域名ID
332 Id: Integer,
333 /// 域名
334 Domain: String,
335 /// 域名的punycode 示例值:dnspod.cn
336 Punycode: String,
337 /// 域名的NS列表 示例值:["source.dnspod.net","low.dnspod.net"]
338 GradeNsList: Vec<String>,
339 }
340}
341