# This file was generated by the Julia Swagger Code Generator
# Do not modify this file directly. Modify the swagger specification instead.


mutable struct ApplicationGatewayPropertiesFormat <: SwaggerModel
    sku::Any # spec type: Union{ Nothing, ApplicationGatewaySku } # spec name: sku
    sslPolicy::Any # spec type: Union{ Nothing, ApplicationGatewaySslPolicy } # spec name: sslPolicy
    operationalState::Any # spec type: Union{ Nothing, String } # spec name: operationalState
    gatewayIPConfigurations::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayIPConfiguration} } # spec name: gatewayIPConfigurations
    authenticationCertificates::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayAuthenticationCertificate} } # spec name: authenticationCertificates
    trustedRootCertificates::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayTrustedRootCertificate} } # spec name: trustedRootCertificates
    sslCertificates::Any # spec type: Union{ Nothing, Vector{ApplicationGatewaySslCertificate} } # spec name: sslCertificates
    frontendIPConfigurations::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayFrontendIPConfiguration} } # spec name: frontendIPConfigurations
    frontendPorts::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayFrontendPort} } # spec name: frontendPorts
    probes::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayProbe} } # spec name: probes
    backendAddressPools::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayBackendAddressPool} } # spec name: backendAddressPools
    backendHttpSettingsCollection::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayBackendHttpSettings} } # spec name: backendHttpSettingsCollection
    httpListeners::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayHttpListener} } # spec name: httpListeners
    urlPathMaps::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayUrlPathMap} } # spec name: urlPathMaps
    requestRoutingRules::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayRequestRoutingRule} } # spec name: requestRoutingRules
    rewriteRuleSets::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayRewriteRuleSet} } # spec name: rewriteRuleSets
    redirectConfigurations::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayRedirectConfiguration} } # spec name: redirectConfigurations
    webApplicationFirewallConfiguration::Any # spec type: Union{ Nothing, ApplicationGatewayWebApplicationFirewallConfiguration } # spec name: webApplicationFirewallConfiguration
    firewallPolicy::Any # spec type: Union{ Nothing, SubResource } # spec name: firewallPolicy
    enableHttp2::Any # spec type: Union{ Nothing, Bool } # spec name: enableHttp2
    enableFips::Any # spec type: Union{ Nothing, Bool } # spec name: enableFips
    autoscaleConfiguration::Any # spec type: Union{ Nothing, ApplicationGatewayAutoscaleConfiguration } # spec name: autoscaleConfiguration
    privateLinkConfigurations::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayPrivateLinkConfiguration} } # spec name: privateLinkConfigurations
    privateEndpointConnections::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayPrivateEndpointConnection} } # spec name: privateEndpointConnections
    resourceGuid::Any # spec type: Union{ Nothing, String } # spec name: resourceGuid
    provisioningState::Any # spec type: Union{ Nothing, ProvisioningState } # spec name: provisioningState
    customErrorConfigurations::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayCustomError} } # spec name: customErrorConfigurations
    forceFirewallPolicyAssociation::Any # spec type: Union{ Nothing, Bool } # spec name: forceFirewallPolicyAssociation

    function ApplicationGatewayPropertiesFormat(;sku=nothing, sslPolicy=nothing, operationalState=nothing, gatewayIPConfigurations=nothing, authenticationCertificates=nothing, trustedRootCertificates=nothing, sslCertificates=nothing, frontendIPConfigurations=nothing, frontendPorts=nothing, probes=nothing, backendAddressPools=nothing, backendHttpSettingsCollection=nothing, httpListeners=nothing, urlPathMaps=nothing, requestRoutingRules=nothing, rewriteRuleSets=nothing, redirectConfigurations=nothing, webApplicationFirewallConfiguration=nothing, firewallPolicy=nothing, enableHttp2=nothing, enableFips=nothing, autoscaleConfiguration=nothing, privateLinkConfigurations=nothing, privateEndpointConnections=nothing, resourceGuid=nothing, provisioningState=nothing, customErrorConfigurations=nothing, forceFirewallPolicyAssociation=nothing)
        o = new()
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("sku"), sku)
        setfield!(o, Symbol("sku"), sku)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("sslPolicy"), sslPolicy)
        setfield!(o, Symbol("sslPolicy"), sslPolicy)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("operationalState"), operationalState)
        setfield!(o, Symbol("operationalState"), operationalState)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("gatewayIPConfigurations"), gatewayIPConfigurations)
        setfield!(o, Symbol("gatewayIPConfigurations"), gatewayIPConfigurations)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("authenticationCertificates"), authenticationCertificates)
        setfield!(o, Symbol("authenticationCertificates"), authenticationCertificates)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("trustedRootCertificates"), trustedRootCertificates)
        setfield!(o, Symbol("trustedRootCertificates"), trustedRootCertificates)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("sslCertificates"), sslCertificates)
        setfield!(o, Symbol("sslCertificates"), sslCertificates)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("frontendIPConfigurations"), frontendIPConfigurations)
        setfield!(o, Symbol("frontendIPConfigurations"), frontendIPConfigurations)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("frontendPorts"), frontendPorts)
        setfield!(o, Symbol("frontendPorts"), frontendPorts)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("probes"), probes)
        setfield!(o, Symbol("probes"), probes)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("backendAddressPools"), backendAddressPools)
        setfield!(o, Symbol("backendAddressPools"), backendAddressPools)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("backendHttpSettingsCollection"), backendHttpSettingsCollection)
        setfield!(o, Symbol("backendHttpSettingsCollection"), backendHttpSettingsCollection)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("httpListeners"), httpListeners)
        setfield!(o, Symbol("httpListeners"), httpListeners)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("urlPathMaps"), urlPathMaps)
        setfield!(o, Symbol("urlPathMaps"), urlPathMaps)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("requestRoutingRules"), requestRoutingRules)
        setfield!(o, Symbol("requestRoutingRules"), requestRoutingRules)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("rewriteRuleSets"), rewriteRuleSets)
        setfield!(o, Symbol("rewriteRuleSets"), rewriteRuleSets)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("redirectConfigurations"), redirectConfigurations)
        setfield!(o, Symbol("redirectConfigurations"), redirectConfigurations)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("webApplicationFirewallConfiguration"), webApplicationFirewallConfiguration)
        setfield!(o, Symbol("webApplicationFirewallConfiguration"), webApplicationFirewallConfiguration)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("firewallPolicy"), firewallPolicy)
        setfield!(o, Symbol("firewallPolicy"), firewallPolicy)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("enableHttp2"), enableHttp2)
        setfield!(o, Symbol("enableHttp2"), enableHttp2)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("enableFips"), enableFips)
        setfield!(o, Symbol("enableFips"), enableFips)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("autoscaleConfiguration"), autoscaleConfiguration)
        setfield!(o, Symbol("autoscaleConfiguration"), autoscaleConfiguration)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("privateLinkConfigurations"), privateLinkConfigurations)
        setfield!(o, Symbol("privateLinkConfigurations"), privateLinkConfigurations)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("privateEndpointConnections"), privateEndpointConnections)
        setfield!(o, Symbol("privateEndpointConnections"), privateEndpointConnections)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("resourceGuid"), resourceGuid)
        setfield!(o, Symbol("resourceGuid"), resourceGuid)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("provisioningState"), provisioningState)
        setfield!(o, Symbol("provisioningState"), provisioningState)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("customErrorConfigurations"), customErrorConfigurations)
        setfield!(o, Symbol("customErrorConfigurations"), customErrorConfigurations)
        validate_property(ApplicationGatewayPropertiesFormat, Symbol("forceFirewallPolicyAssociation"), forceFirewallPolicyAssociation)
        setfield!(o, Symbol("forceFirewallPolicyAssociation"), forceFirewallPolicyAssociation)
        o
    end
end # type ApplicationGatewayPropertiesFormat

const _property_map_ApplicationGatewayPropertiesFormat = Dict{Symbol,Symbol}(Symbol("sku")=>Symbol("sku"), Symbol("sslPolicy")=>Symbol("sslPolicy"), Symbol("operationalState")=>Symbol("operationalState"), Symbol("gatewayIPConfigurations")=>Symbol("gatewayIPConfigurations"), Symbol("authenticationCertificates")=>Symbol("authenticationCertificates"), Symbol("trustedRootCertificates")=>Symbol("trustedRootCertificates"), Symbol("sslCertificates")=>Symbol("sslCertificates"), Symbol("frontendIPConfigurations")=>Symbol("frontendIPConfigurations"), Symbol("frontendPorts")=>Symbol("frontendPorts"), Symbol("probes")=>Symbol("probes"), Symbol("backendAddressPools")=>Symbol("backendAddressPools"), Symbol("backendHttpSettingsCollection")=>Symbol("backendHttpSettingsCollection"), Symbol("httpListeners")=>Symbol("httpListeners"), Symbol("urlPathMaps")=>Symbol("urlPathMaps"), Symbol("requestRoutingRules")=>Symbol("requestRoutingRules"), Symbol("rewriteRuleSets")=>Symbol("rewriteRuleSets"), Symbol("redirectConfigurations")=>Symbol("redirectConfigurations"), Symbol("webApplicationFirewallConfiguration")=>Symbol("webApplicationFirewallConfiguration"), Symbol("firewallPolicy")=>Symbol("firewallPolicy"), Symbol("enableHttp2")=>Symbol("enableHttp2"), Symbol("enableFips")=>Symbol("enableFips"), Symbol("autoscaleConfiguration")=>Symbol("autoscaleConfiguration"), Symbol("privateLinkConfigurations")=>Symbol("privateLinkConfigurations"), Symbol("privateEndpointConnections")=>Symbol("privateEndpointConnections"), Symbol("resourceGuid")=>Symbol("resourceGuid"), Symbol("provisioningState")=>Symbol("provisioningState"), Symbol("customErrorConfigurations")=>Symbol("customErrorConfigurations"), Symbol("forceFirewallPolicyAssociation")=>Symbol("forceFirewallPolicyAssociation"))
const _property_types_ApplicationGatewayPropertiesFormat = Dict{Symbol,String}(Symbol("sku")=>"ApplicationGatewaySku", Symbol("sslPolicy")=>"ApplicationGatewaySslPolicy", Symbol("operationalState")=>"String", Symbol("gatewayIPConfigurations")=>"Vector{ApplicationGatewayIPConfiguration}", Symbol("authenticationCertificates")=>"Vector{ApplicationGatewayAuthenticationCertificate}", Symbol("trustedRootCertificates")=>"Vector{ApplicationGatewayTrustedRootCertificate}", Symbol("sslCertificates")=>"Vector{ApplicationGatewaySslCertificate}", Symbol("frontendIPConfigurations")=>"Vector{ApplicationGatewayFrontendIPConfiguration}", Symbol("frontendPorts")=>"Vector{ApplicationGatewayFrontendPort}", Symbol("probes")=>"Vector{ApplicationGatewayProbe}", Symbol("backendAddressPools")=>"Vector{ApplicationGatewayBackendAddressPool}", Symbol("backendHttpSettingsCollection")=>"Vector{ApplicationGatewayBackendHttpSettings}", Symbol("httpListeners")=>"Vector{ApplicationGatewayHttpListener}", Symbol("urlPathMaps")=>"Vector{ApplicationGatewayUrlPathMap}", Symbol("requestRoutingRules")=>"Vector{ApplicationGatewayRequestRoutingRule}", Symbol("rewriteRuleSets")=>"Vector{ApplicationGatewayRewriteRuleSet}", Symbol("redirectConfigurations")=>"Vector{ApplicationGatewayRedirectConfiguration}", Symbol("webApplicationFirewallConfiguration")=>"ApplicationGatewayWebApplicationFirewallConfiguration", Symbol("firewallPolicy")=>"SubResource", Symbol("enableHttp2")=>"Bool", Symbol("enableFips")=>"Bool", Symbol("autoscaleConfiguration")=>"ApplicationGatewayAutoscaleConfiguration", Symbol("privateLinkConfigurations")=>"Vector{ApplicationGatewayPrivateLinkConfiguration}", Symbol("privateEndpointConnections")=>"Vector{ApplicationGatewayPrivateEndpointConnection}", Symbol("resourceGuid")=>"String", Symbol("provisioningState")=>"ProvisioningState", Symbol("customErrorConfigurations")=>"Vector{ApplicationGatewayCustomError}", Symbol("forceFirewallPolicyAssociation")=>"Bool")
Base.propertynames(::Type{ ApplicationGatewayPropertiesFormat }) = collect(keys(_property_map_ApplicationGatewayPropertiesFormat))
Swagger.property_type(::Type{ ApplicationGatewayPropertiesFormat }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ApplicationGatewayPropertiesFormat[name]))}
Swagger.field_name(::Type{ ApplicationGatewayPropertiesFormat }, property_name::Symbol) =  _property_map_ApplicationGatewayPropertiesFormat[property_name]

const _allowed_ApplicationGatewayPropertiesFormat_operationalState = ["Stopped", "Starting", "Running", "Stopping"]

function check_required(o::ApplicationGatewayPropertiesFormat)
    true
end

function validate_property(::Type{ ApplicationGatewayPropertiesFormat }, name::Symbol, val)
    if name === Symbol("operationalState")
        Swagger.validate_param(name, "ApplicationGatewayPropertiesFormat", :enum, val, _allowed_ApplicationGatewayPropertiesFormat_operationalState)
    end
end
