use serde::{Deserialize, Serialize}; /*
                                      * Cloud DNS API
                                      *
                                      * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
                                      *
                                      * The version of the OpenAPI document: v1
                                      *
                                      * Generated by: https://openapi-generator.tech
                                      */

/// Quota : Limits associated with a Project.

#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct Quota {
    /// Maximum allowed number of DnsKeys per ManagedZone.
    #[serde(
        rename = "dnsKeysPerManagedZone",
        skip_serializing_if = "Option::is_none"
    )]
    pub dns_keys_per_managed_zone: Option<i32>,
    /// Maximum allowed number of GKE clusters to which a privately scoped zone can be attached.
    #[serde(
        rename = "gkeClustersPerManagedZone",
        skip_serializing_if = "Option::is_none"
    )]
    pub gke_clusters_per_managed_zone: Option<i32>,
    /// Maximum allowed number of GKE clusters per policy.
    #[serde(
        rename = "gkeClustersPerPolicy",
        skip_serializing_if = "Option::is_none"
    )]
    pub gke_clusters_per_policy: Option<i32>,
    /// Maximum allowed number of GKE clusters per response policy.
    #[serde(
        rename = "gkeClustersPerResponsePolicy",
        skip_serializing_if = "Option::is_none"
    )]
    pub gke_clusters_per_response_policy: Option<i32>,
    /// Maximum allowed number of items per routing policy.
    #[serde(
        rename = "itemsPerRoutingPolicy",
        skip_serializing_if = "Option::is_none"
    )]
    pub items_per_routing_policy: Option<i32>,
    #[serde(rename = "kind", skip_serializing_if = "Option::is_none")]
    pub kind: Option<String>,
    /// Maximum allowed number of managed zones in the project.
    #[serde(rename = "managedZones", skip_serializing_if = "Option::is_none")]
    pub managed_zones: Option<i32>,
    /// Maximum allowed number of managed zones which can be attached to a GKE cluster.
    #[serde(
        rename = "managedZonesPerGkeCluster",
        skip_serializing_if = "Option::is_none"
    )]
    pub managed_zones_per_gke_cluster: Option<i32>,
    /// Maximum allowed number of managed zones which can be attached to a network.
    #[serde(
        rename = "managedZonesPerNetwork",
        skip_serializing_if = "Option::is_none"
    )]
    pub managed_zones_per_network: Option<i32>,
    /// Maximum allowed number of networks to which a privately scoped zone can be attached.
    #[serde(
        rename = "networksPerManagedZone",
        skip_serializing_if = "Option::is_none"
    )]
    pub networks_per_managed_zone: Option<i32>,
    /// Maximum allowed number of networks per policy.
    #[serde(rename = "networksPerPolicy", skip_serializing_if = "Option::is_none")]
    pub networks_per_policy: Option<i32>,
    /// Maximum allowed number of networks per response policy.
    #[serde(
        rename = "networksPerResponsePolicy",
        skip_serializing_if = "Option::is_none"
    )]
    pub networks_per_response_policy: Option<i32>,
    /// Maximum allowed number of consumer peering zones per target network owned by this producer project
    #[serde(
        rename = "peeringZonesPerTargetNetwork",
        skip_serializing_if = "Option::is_none"
    )]
    pub peering_zones_per_target_network: Option<i32>,
    /// Maximum allowed number of policies per project.
    #[serde(rename = "policies", skip_serializing_if = "Option::is_none")]
    pub policies: Option<i32>,
    /// Maximum allowed number of ResourceRecords per ResourceRecordSet.
    #[serde(
        rename = "resourceRecordsPerRrset",
        skip_serializing_if = "Option::is_none"
    )]
    pub resource_records_per_rrset: Option<i32>,
    /// Maximum allowed number of response policies per project.
    #[serde(rename = "responsePolicies", skip_serializing_if = "Option::is_none")]
    pub response_policies: Option<i32>,
    /// Maximum allowed number of rules per response policy.
    #[serde(
        rename = "responsePolicyRulesPerResponsePolicy",
        skip_serializing_if = "Option::is_none"
    )]
    pub response_policy_rules_per_response_policy: Option<i32>,
    /// Maximum allowed number of ResourceRecordSets to add per ChangesCreateRequest.
    #[serde(
        rename = "rrsetAdditionsPerChange",
        skip_serializing_if = "Option::is_none"
    )]
    pub rrset_additions_per_change: Option<i32>,
    /// Maximum allowed number of ResourceRecordSets to delete per ChangesCreateRequest.
    #[serde(
        rename = "rrsetDeletionsPerChange",
        skip_serializing_if = "Option::is_none"
    )]
    pub rrset_deletions_per_change: Option<i32>,
    /// Maximum allowed number of ResourceRecordSets per zone in the project.
    #[serde(
        rename = "rrsetsPerManagedZone",
        skip_serializing_if = "Option::is_none"
    )]
    pub rrsets_per_managed_zone: Option<i32>,
    /// Maximum allowed number of target name servers per managed forwarding zone.
    #[serde(
        rename = "targetNameServersPerManagedZone",
        skip_serializing_if = "Option::is_none"
    )]
    pub target_name_servers_per_managed_zone: Option<i32>,
    /// Maximum allowed number of alternative target name servers per policy.
    #[serde(
        rename = "targetNameServersPerPolicy",
        skip_serializing_if = "Option::is_none"
    )]
    pub target_name_servers_per_policy: Option<i32>,
    /// Maximum allowed size for total rrdata in one ChangesCreateRequest in bytes.
    #[serde(
        rename = "totalRrdataSizePerChange",
        skip_serializing_if = "Option::is_none"
    )]
    pub total_rrdata_size_per_change: Option<i32>,
    /// DNSSEC algorithm and key length types that can be used for DnsKeys.
    #[serde(
        rename = "whitelistedKeySpecs",
        skip_serializing_if = "Option::is_none"
    )]
    pub whitelisted_key_specs: Option<Vec<crate::google_rest_apis::dns_v1::models::DnsKeySpec>>,
}

impl Quota {
    /// Limits associated with a Project.
    pub fn new() -> Quota {
        Quota {
            dns_keys_per_managed_zone: None,
            gke_clusters_per_managed_zone: None,
            gke_clusters_per_policy: None,
            gke_clusters_per_response_policy: None,
            items_per_routing_policy: None,
            kind: None,
            managed_zones: None,
            managed_zones_per_gke_cluster: None,
            managed_zones_per_network: None,
            networks_per_managed_zone: None,
            networks_per_policy: None,
            networks_per_response_policy: None,
            peering_zones_per_target_network: None,
            policies: None,
            resource_records_per_rrset: None,
            response_policies: None,
            response_policy_rules_per_response_policy: None,
            rrset_additions_per_change: None,
            rrset_deletions_per_change: None,
            rrsets_per_managed_zone: None,
            target_name_servers_per_managed_zone: None,
            target_name_servers_per_policy: None,
            total_rrdata_size_per_change: None,
            whitelisted_key_specs: None,
        }
    }
}
