1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use std::collections::HashMap;
4
5#[derive(Debug, Clone, Serialize, Deserialize, Default)]
6pub struct PaginationInfo {
7 pub count: Option<u64>,
8 pub page: Option<u64>,
9 pub per_page: Option<u64>,
10 pub total_count: Option<u64>,
11 pub total_pages: Option<u64>,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct CloudflareEnvelope<T> {
16 pub success: bool,
17 #[serde(default)]
18 pub errors: Vec<CloudflareEnvelopeMessage>,
19 #[serde(default)]
20 pub messages: Vec<CloudflareEnvelopeMessage>,
21 pub result: T,
22 #[serde(default)]
23 pub result_info: Option<PaginationInfo>,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct CloudflareEnvelopeMessage {
28 pub code: Option<i64>,
29 pub message: Option<String>,
30 #[serde(default)]
31 pub documentation_url: Option<String>,
32 #[serde(default)]
33 pub source: Option<Value>,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct ProviderErrorResponse {
38 pub provider: String,
39 pub message: String,
40}
41
42#[derive(Debug, Clone, Serialize, Deserialize)]
43pub struct SecretsStore {
44 pub id: String,
45 pub created: String,
46 pub modified: String,
47 pub name: String,
48 #[serde(default)]
49 pub account_id: Option<String>,
50}
51
52#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(rename_all = "snake_case")]
54pub enum SecretStatus {
55 Pending,
56 Active,
57 Deleted,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct SecretRecord {
62 pub id: String,
63 pub created: String,
64 pub modified: String,
65 pub name: String,
66 pub status: SecretStatus,
67 pub store_id: String,
68 #[serde(default)]
69 pub comment: Option<String>,
70 #[serde(default)]
71 pub scopes: Option<Vec<String>>,
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize)]
75pub struct SecretsQuotaUsage {
76 pub quota: u64,
77 pub usage: u64,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize)]
81pub struct SecretsQuota {
82 pub secrets: SecretsQuotaUsage,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
86pub struct CloudflareAccountRef {
87 #[serde(default)]
88 pub id: Option<String>,
89 #[serde(default)]
90 pub name: Option<String>,
91}
92
93#[derive(Debug, Clone, Serialize, Deserialize)]
94pub struct CloudflareOwnerRef {
95 #[serde(default)]
96 pub id: Option<String>,
97 #[serde(default)]
98 pub name: Option<String>,
99 #[serde(default)]
100 pub r#type: Option<String>,
101}
102
103#[derive(Debug, Clone, Serialize, Deserialize)]
104pub struct CloudflareTenantRef {
105 #[serde(default)]
106 pub id: Option<String>,
107 #[serde(default)]
108 pub name: Option<String>,
109}
110
111#[derive(Debug, Clone, Serialize, Deserialize)]
112pub struct CloudflareTenantUnitRef {
113 #[serde(default)]
114 pub id: Option<String>,
115 #[serde(default)]
116 pub r#type: Option<String>,
117}
118
119#[derive(Debug, Clone, Serialize, Deserialize)]
120pub struct CloudflareZonePlan {
121 #[serde(default)]
122 pub id: Option<String>,
123 #[serde(default)]
124 pub can_subscribe: Option<bool>,
125 #[serde(default)]
126 pub currency: Option<String>,
127 #[serde(default)]
128 pub externally_managed: Option<bool>,
129 #[serde(default)]
130 pub frequency: Option<String>,
131 #[serde(default)]
132 pub is_subscribed: Option<bool>,
133 #[serde(default)]
134 pub legacy_discount: Option<bool>,
135 #[serde(default)]
136 pub legacy_id: Option<String>,
137 #[serde(default)]
138 pub name: Option<String>,
139 #[serde(default)]
140 pub price: Option<f64>,
141}
142
143#[derive(Debug, Clone, Serialize, Deserialize, Default)]
144pub struct CloudflareZoneMeta {
145 #[serde(default)]
146 pub cdn_only: Option<bool>,
147 #[serde(default)]
148 pub dns_only: Option<bool>,
149 #[serde(default)]
150 pub foundation_dns: Option<bool>,
151 #[serde(default)]
152 pub custom_certificate_quota: Option<i64>,
153 #[serde(default)]
154 pub page_rule_quota: Option<i64>,
155 #[serde(default)]
156 pub phishing_detected: Option<bool>,
157 #[serde(default)]
158 pub step: Option<i64>,
159}
160
161#[derive(Debug, Clone, Serialize, Deserialize)]
162pub struct CloudflareZone {
163 pub id: String,
164 pub name: String,
165 #[serde(default)]
166 pub status: Option<String>,
167 #[serde(default)]
168 pub r#type: Option<String>,
169 #[serde(default)]
170 pub paused: Option<bool>,
171 #[serde(default)]
172 pub account: Option<CloudflareAccountRef>,
173 #[serde(default)]
174 pub owner: Option<CloudflareOwnerRef>,
175 #[serde(default)]
176 pub tenant: Option<CloudflareTenantRef>,
177 #[serde(default)]
178 pub tenant_unit: Option<CloudflareTenantUnitRef>,
179 #[serde(default)]
180 pub plan: Option<CloudflareZonePlan>,
181 #[serde(default)]
182 pub name_servers: Vec<String>,
183 #[serde(default)]
184 pub vanity_name_servers: Option<Vec<String>>,
185 #[serde(default)]
186 pub original_dnshost: Option<String>,
187 #[serde(default)]
188 pub original_name_servers: Option<Vec<String>>,
189 #[serde(default)]
190 pub original_registrar: Option<String>,
191 #[serde(default)]
192 pub activated_on: Option<String>,
193 pub created_on: String,
194 pub modified_on: String,
195 #[serde(default)]
196 pub development_mode: Option<f64>,
197 #[serde(default)]
198 pub cname_suffix: Option<String>,
199 #[serde(default)]
200 pub verification_key: Option<String>,
201 #[serde(default)]
202 pub permissions: Option<Vec<String>>,
203 #[serde(default)]
204 pub meta: CloudflareZoneMeta,
205}
206
207#[derive(Debug, Clone, Serialize, Deserialize, Default)]
208pub struct CloudflareZoneFilters {
209 #[serde(rename = "account.id", default)]
210 pub account_id: Option<String>,
211 #[serde(rename = "account.name", default)]
212 pub account_name: Option<String>,
213 #[serde(rename = "account.name[operator]", default)]
214 pub account_name_op: Option<String>,
215 #[serde(default)]
216 pub name: Option<String>,
217 #[serde(rename = "name[operator]", default)]
218 pub name_op: Option<String>,
219 #[serde(default)]
220 pub status: Option<String>,
221 #[serde(default)]
222 pub r#type: Vec<String>,
223 #[serde(default)]
224 pub r#match: Option<String>,
225 #[serde(default)]
226 pub order: Option<String>,
227 #[serde(default)]
228 pub direction: Option<String>,
229 #[serde(default)]
230 pub page: Option<u64>,
231 #[serde(default)]
232 pub per_page: Option<u64>,
233}
234
235#[derive(Debug, Clone, Serialize, Deserialize)]
236pub struct CloudflareDnsRecord {
237 pub id: String,
238 pub zone_id: String,
239 #[serde(default)]
240 pub zone_name: Option<String>,
241 pub name: String,
242 #[serde(rename = "type")]
243 pub record_type: String,
244 #[serde(default)]
245 pub content: Option<String>,
246 #[serde(default)]
247 pub ttl: Option<u32>,
248 #[serde(default)]
249 pub proxied: Option<bool>,
250 #[serde(default)]
251 pub priority: Option<u32>,
252 #[serde(default)]
253 pub comment: Option<String>,
254 #[serde(default)]
255 pub tags: Option<Vec<Value>>,
256 #[serde(default)]
257 pub data: Option<Value>,
258 #[serde(default)]
259 pub settings: Option<Value>,
260 #[serde(default)]
261 pub meta: Option<Value>,
262 #[serde(default)]
263 pub proxiable: Option<bool>,
264 #[serde(default)]
265 pub created_on: Option<String>,
266 #[serde(default)]
267 pub modified_on: Option<String>,
268}
269
270#[derive(Debug, Clone, Serialize, Deserialize)]
271pub struct CloudflareDnsRecordWrite {
272 #[serde(rename = "type")]
273 pub record_type: Option<String>,
274 #[serde(default)]
275 pub name: Option<String>,
276 #[serde(default)]
277 pub content: Option<String>,
278 #[serde(default)]
279 pub ttl: Option<u32>,
280 #[serde(default)]
281 pub proxied: Option<bool>,
282 #[serde(default)]
283 pub priority: Option<u32>,
284 #[serde(default)]
285 pub comment: Option<String>,
286 #[serde(default)]
287 pub tags: Option<Vec<String>>,
288 #[serde(default)]
289 pub data: Option<Value>,
290 #[serde(default)]
291 pub settings: Option<Value>,
292}
293
294#[derive(Debug, Clone, Serialize, Deserialize, Default)]
295pub struct CloudflareDnsRecordBatch {
296 #[serde(default)]
297 pub deletes: Vec<HashMap<String, String>>,
298 #[serde(default)]
299 pub patches: Vec<Value>,
300 #[serde(default)]
301 pub posts: Vec<Value>,
302}
303
304#[derive(Debug, Clone, Serialize, Deserialize)]
305pub struct CloudflareDnssec {
306 #[serde(default)]
307 pub status: Option<String>,
308 #[serde(default)]
309 pub flags: Option<u32>,
310 #[serde(default)]
311 pub algorithm: Option<String>,
312 #[serde(default)]
313 pub key_tag: Option<u32>,
314 #[serde(default)]
315 pub digest_type: Option<String>,
316 #[serde(default)]
317 pub digest_algorithm: Option<String>,
318 #[serde(default)]
319 pub digest: Option<String>,
320 #[serde(default)]
321 pub ds: Option<String>,
322 #[serde(default)]
323 pub public_key: Option<String>,
324 #[serde(default)]
325 pub modified_on: Option<String>,
326}
327
328#[derive(Debug, Clone, Serialize, Deserialize, Default)]
329pub struct CloudflareDnssecEdit {
330 #[serde(default)]
331 pub status: Option<String>,
332 #[serde(default)]
333 pub dnssec_multi_signer: Option<bool>,
334 #[serde(default)]
335 pub dnssec_presigned: Option<bool>,
336 #[serde(default)]
337 pub dnssec_use_nsec3: Option<bool>,
338}
339
340#[derive(Debug, Clone, Serialize, Deserialize)]
341pub struct CloudflareDnsSettingsNameservers {
342 #[serde(default)]
343 pub r#type: Option<String>,
344 #[serde(default)]
345 pub ns_set: Option<u32>,
346}
347
348#[derive(Debug, Clone, Serialize, Deserialize)]
349pub struct CloudflareDnsSettingsInternalDns {
350 #[serde(default)]
351 pub reference_zone_id: Option<String>,
352}
353
354#[derive(Debug, Clone, Serialize, Deserialize)]
355pub struct CloudflareDnsSettingsSoa {
356 #[serde(default)]
357 pub expire: Option<u32>,
358 #[serde(default)]
359 pub min_ttl: Option<u32>,
360 #[serde(default)]
361 pub mname: Option<String>,
362 #[serde(default)]
363 pub refresh: Option<u32>,
364 #[serde(default)]
365 pub retry: Option<u32>,
366 #[serde(default)]
367 pub rname: Option<String>,
368 #[serde(default)]
369 pub ttl: Option<u32>,
370}
371
372#[derive(Debug, Clone, Serialize, Deserialize, Default)]
373pub struct CloudflareDnsSettings {
374 #[serde(default)]
375 pub flatten_all_cnames: Option<bool>,
376 #[serde(default)]
377 pub foundation_dns: Option<bool>,
378 #[serde(default)]
379 pub multi_provider: Option<bool>,
380 #[serde(default)]
381 pub nameservers: Option<CloudflareDnsSettingsNameservers>,
382 #[serde(default)]
383 pub ns_ttl: Option<u32>,
384 #[serde(default)]
385 pub secondary_overrides: Option<bool>,
386 #[serde(default)]
387 pub soa: Option<CloudflareDnsSettingsSoa>,
388 #[serde(default)]
389 pub zone_mode: Option<String>,
390 #[serde(default)]
391 pub internal_dns: Option<CloudflareDnsSettingsInternalDns>,
392}
393
394#[derive(Debug, Clone, Serialize, Deserialize)]
395pub struct DomainPricing {
396 #[serde(default)]
397 pub currency: Option<String>,
398 #[serde(default)]
399 pub registration_cost: Option<String>,
400 #[serde(default)]
401 pub renewal_cost: Option<String>,
402}
403
404#[derive(Debug, Clone, Serialize, Deserialize)]
405pub struct DomainAvailability {
406 pub name: String,
407 pub registrable: bool,
408 #[serde(default)]
409 pub pricing: Option<DomainPricing>,
410 #[serde(default)]
411 pub reason: Option<String>,
412 #[serde(default)]
413 pub tier: Option<String>,
414}
415
416#[derive(Debug, Clone, Serialize, Deserialize, Default)]
417pub struct DomainRegistration {
418 #[serde(default)]
419 pub id: Option<String>,
420 #[serde(default)]
421 pub status: Option<String>,
422 #[serde(default)]
423 pub created_at: Option<String>,
424 #[serde(default)]
425 pub updated_at: Option<String>,
426 #[serde(flatten, default)]
427 pub extra: HashMap<String, Value>,
428}
429
430#[derive(Debug, Clone, Serialize, Deserialize, Default)]
431pub struct DomainWorkflowStatus {
432 #[serde(default)]
433 pub id: Option<String>,
434 #[serde(default)]
435 pub status: Option<String>,
436 #[serde(flatten, default)]
437 pub extra: HashMap<String, Value>,
438}
439
440#[derive(Debug, Clone, Serialize, Deserialize, Default)]
441pub struct RegisteredDomain {
442 pub name: String,
443 #[serde(default)]
444 pub account_id: Option<String>,
445 #[serde(default)]
446 pub auto_renew: Option<bool>,
447 #[serde(default)]
448 pub expires_at: Option<String>,
449 #[serde(default)]
450 pub registered_at: Option<String>,
451 #[serde(default)]
452 pub registration: Option<DomainRegistration>,
453 #[serde(default)]
454 pub workflow: Option<DomainWorkflowStatus>,
455 #[serde(flatten, default)]
456 pub extra: HashMap<String, Value>,
457}