use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct PaginationInfo {
pub count: Option<u64>,
pub page: Option<u64>,
pub per_page: Option<u64>,
pub total_count: Option<u64>,
pub total_pages: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareEnvelope<T> {
pub success: bool,
#[serde(default)]
pub errors: Vec<CloudflareEnvelopeMessage>,
#[serde(default)]
pub messages: Vec<CloudflareEnvelopeMessage>,
pub result: T,
#[serde(default)]
pub result_info: Option<PaginationInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareEnvelopeMessage {
pub code: Option<i64>,
pub message: Option<String>,
#[serde(default)]
pub documentation_url: Option<String>,
#[serde(default)]
pub source: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProviderErrorResponse {
pub provider: String,
pub message: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SecretsStore {
pub id: String,
pub created: String,
pub modified: String,
pub name: String,
#[serde(default)]
pub account_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum SecretStatus {
Pending,
Active,
Deleted,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SecretRecord {
pub id: String,
pub created: String,
pub modified: String,
pub name: String,
pub status: SecretStatus,
pub store_id: String,
#[serde(default)]
pub comment: Option<String>,
#[serde(default)]
pub scopes: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SecretsQuotaUsage {
pub quota: u64,
pub usage: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SecretsQuota {
pub secrets: SecretsQuotaUsage,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareAccountRef {
#[serde(default)]
pub id: Option<String>,
#[serde(default)]
pub name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareOwnerRef {
#[serde(default)]
pub id: Option<String>,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub r#type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareTenantRef {
#[serde(default)]
pub id: Option<String>,
#[serde(default)]
pub name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareTenantUnitRef {
#[serde(default)]
pub id: Option<String>,
#[serde(default)]
pub r#type: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareZonePlan {
#[serde(default)]
pub id: Option<String>,
#[serde(default)]
pub can_subscribe: Option<bool>,
#[serde(default)]
pub currency: Option<String>,
#[serde(default)]
pub externally_managed: Option<bool>,
#[serde(default)]
pub frequency: Option<String>,
#[serde(default)]
pub is_subscribed: Option<bool>,
#[serde(default)]
pub legacy_discount: Option<bool>,
#[serde(default)]
pub legacy_id: Option<String>,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub price: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CloudflareZoneMeta {
#[serde(default)]
pub cdn_only: Option<bool>,
#[serde(default)]
pub dns_only: Option<bool>,
#[serde(default)]
pub foundation_dns: Option<bool>,
#[serde(default)]
pub custom_certificate_quota: Option<i64>,
#[serde(default)]
pub page_rule_quota: Option<i64>,
#[serde(default)]
pub phishing_detected: Option<bool>,
#[serde(default)]
pub step: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareZone {
pub id: String,
pub name: String,
#[serde(default)]
pub status: Option<String>,
#[serde(default)]
pub r#type: Option<String>,
#[serde(default)]
pub paused: Option<bool>,
#[serde(default)]
pub account: Option<CloudflareAccountRef>,
#[serde(default)]
pub owner: Option<CloudflareOwnerRef>,
#[serde(default)]
pub tenant: Option<CloudflareTenantRef>,
#[serde(default)]
pub tenant_unit: Option<CloudflareTenantUnitRef>,
#[serde(default)]
pub plan: Option<CloudflareZonePlan>,
#[serde(default)]
pub name_servers: Vec<String>,
#[serde(default)]
pub vanity_name_servers: Option<Vec<String>>,
#[serde(default)]
pub original_dnshost: Option<String>,
#[serde(default)]
pub original_name_servers: Option<Vec<String>>,
#[serde(default)]
pub original_registrar: Option<String>,
#[serde(default)]
pub activated_on: Option<String>,
pub created_on: String,
pub modified_on: String,
#[serde(default)]
pub development_mode: Option<f64>,
#[serde(default)]
pub cname_suffix: Option<String>,
#[serde(default)]
pub verification_key: Option<String>,
#[serde(default)]
pub permissions: Option<Vec<String>>,
#[serde(default)]
pub meta: CloudflareZoneMeta,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CloudflareZoneFilters {
#[serde(rename = "account.id", default)]
pub account_id: Option<String>,
#[serde(rename = "account.name", default)]
pub account_name: Option<String>,
#[serde(rename = "account.name[operator]", default)]
pub account_name_op: Option<String>,
#[serde(default)]
pub name: Option<String>,
#[serde(rename = "name[operator]", default)]
pub name_op: Option<String>,
#[serde(default)]
pub status: Option<String>,
#[serde(default)]
pub r#type: Vec<String>,
#[serde(default)]
pub r#match: Option<String>,
#[serde(default)]
pub order: Option<String>,
#[serde(default)]
pub direction: Option<String>,
#[serde(default)]
pub page: Option<u64>,
#[serde(default)]
pub per_page: Option<u64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareDnsRecord {
pub id: String,
pub zone_id: String,
#[serde(default)]
pub zone_name: Option<String>,
pub name: String,
#[serde(rename = "type")]
pub record_type: String,
#[serde(default)]
pub content: Option<String>,
#[serde(default)]
pub ttl: Option<u32>,
#[serde(default)]
pub proxied: Option<bool>,
#[serde(default)]
pub priority: Option<u32>,
#[serde(default)]
pub comment: Option<String>,
#[serde(default)]
pub tags: Option<Vec<Value>>,
#[serde(default)]
pub data: Option<Value>,
#[serde(default)]
pub settings: Option<Value>,
#[serde(default)]
pub meta: Option<Value>,
#[serde(default)]
pub proxiable: Option<bool>,
#[serde(default)]
pub created_on: Option<String>,
#[serde(default)]
pub modified_on: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareDnsRecordWrite {
#[serde(rename = "type")]
pub record_type: Option<String>,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub content: Option<String>,
#[serde(default)]
pub ttl: Option<u32>,
#[serde(default)]
pub proxied: Option<bool>,
#[serde(default)]
pub priority: Option<u32>,
#[serde(default)]
pub comment: Option<String>,
#[serde(default)]
pub tags: Option<Vec<String>>,
#[serde(default)]
pub data: Option<Value>,
#[serde(default)]
pub settings: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CloudflareDnsRecordBatch {
#[serde(default)]
pub deletes: Vec<HashMap<String, String>>,
#[serde(default)]
pub patches: Vec<Value>,
#[serde(default)]
pub posts: Vec<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareDnssec {
#[serde(default)]
pub status: Option<String>,
#[serde(default)]
pub flags: Option<u32>,
#[serde(default)]
pub algorithm: Option<String>,
#[serde(default)]
pub key_tag: Option<u32>,
#[serde(default)]
pub digest_type: Option<String>,
#[serde(default)]
pub digest_algorithm: Option<String>,
#[serde(default)]
pub digest: Option<String>,
#[serde(default)]
pub ds: Option<String>,
#[serde(default)]
pub public_key: Option<String>,
#[serde(default)]
pub modified_on: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CloudflareDnssecEdit {
#[serde(default)]
pub status: Option<String>,
#[serde(default)]
pub dnssec_multi_signer: Option<bool>,
#[serde(default)]
pub dnssec_presigned: Option<bool>,
#[serde(default)]
pub dnssec_use_nsec3: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareDnsSettingsNameservers {
#[serde(default)]
pub r#type: Option<String>,
#[serde(default)]
pub ns_set: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareDnsSettingsInternalDns {
#[serde(default)]
pub reference_zone_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloudflareDnsSettingsSoa {
#[serde(default)]
pub expire: Option<u32>,
#[serde(default)]
pub min_ttl: Option<u32>,
#[serde(default)]
pub mname: Option<String>,
#[serde(default)]
pub refresh: Option<u32>,
#[serde(default)]
pub retry: Option<u32>,
#[serde(default)]
pub rname: Option<String>,
#[serde(default)]
pub ttl: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct CloudflareDnsSettings {
#[serde(default)]
pub flatten_all_cnames: Option<bool>,
#[serde(default)]
pub foundation_dns: Option<bool>,
#[serde(default)]
pub multi_provider: Option<bool>,
#[serde(default)]
pub nameservers: Option<CloudflareDnsSettingsNameservers>,
#[serde(default)]
pub ns_ttl: Option<u32>,
#[serde(default)]
pub secondary_overrides: Option<bool>,
#[serde(default)]
pub soa: Option<CloudflareDnsSettingsSoa>,
#[serde(default)]
pub zone_mode: Option<String>,
#[serde(default)]
pub internal_dns: Option<CloudflareDnsSettingsInternalDns>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DomainPricing {
#[serde(default)]
pub currency: Option<String>,
#[serde(default)]
pub registration_cost: Option<String>,
#[serde(default)]
pub renewal_cost: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DomainAvailability {
pub name: String,
pub registrable: bool,
#[serde(default)]
pub pricing: Option<DomainPricing>,
#[serde(default)]
pub reason: Option<String>,
#[serde(default)]
pub tier: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DomainRegistration {
#[serde(default)]
pub id: Option<String>,
#[serde(default)]
pub status: Option<String>,
#[serde(default)]
pub created_at: Option<String>,
#[serde(default)]
pub updated_at: Option<String>,
#[serde(flatten, default)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct DomainWorkflowStatus {
#[serde(default)]
pub id: Option<String>,
#[serde(default)]
pub status: Option<String>,
#[serde(flatten, default)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub struct RegisteredDomain {
pub name: String,
#[serde(default)]
pub account_id: Option<String>,
#[serde(default)]
pub auto_renew: Option<bool>,
#[serde(default)]
pub expires_at: Option<String>,
#[serde(default)]
pub registered_at: Option<String>,
#[serde(default)]
pub registration: Option<DomainRegistration>,
#[serde(default)]
pub workflow: Option<DomainWorkflowStatus>,
#[serde(flatten, default)]
pub extra: HashMap<String, Value>,
}