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


mutable struct ApplicationGatewayHttpListenerPropertiesFormat <: SwaggerModel
    frontendIPConfiguration::Any # spec type: Union{ Nothing, SubResource } # spec name: frontendIPConfiguration
    frontendPort::Any # spec type: Union{ Nothing, SubResource } # spec name: frontendPort
    protocol::Any # spec type: Union{ Nothing, ApplicationGatewayProtocol } # spec name: protocol
    hostName::Any # spec type: Union{ Nothing, String } # spec name: hostName
    sslCertificate::Any # spec type: Union{ Nothing, SubResource } # spec name: sslCertificate
    requireServerNameIndication::Any # spec type: Union{ Nothing, Bool } # spec name: requireServerNameIndication
    provisioningState::Any # spec type: Union{ Nothing, ProvisioningState } # spec name: provisioningState
    customErrorConfigurations::Any # spec type: Union{ Nothing, Vector{ApplicationGatewayCustomError} } # spec name: customErrorConfigurations
    firewallPolicy::Any # spec type: Union{ Nothing, SubResource } # spec name: firewallPolicy
    hostNames::Any # spec type: Union{ Nothing, Vector{String} } # spec name: hostNames

    function ApplicationGatewayHttpListenerPropertiesFormat(;frontendIPConfiguration=nothing, frontendPort=nothing, protocol=nothing, hostName=nothing, sslCertificate=nothing, requireServerNameIndication=nothing, provisioningState=nothing, customErrorConfigurations=nothing, firewallPolicy=nothing, hostNames=nothing)
        o = new()
        validate_property(ApplicationGatewayHttpListenerPropertiesFormat, Symbol("frontendIPConfiguration"), frontendIPConfiguration)
        setfield!(o, Symbol("frontendIPConfiguration"), frontendIPConfiguration)
        validate_property(ApplicationGatewayHttpListenerPropertiesFormat, Symbol("frontendPort"), frontendPort)
        setfield!(o, Symbol("frontendPort"), frontendPort)
        validate_property(ApplicationGatewayHttpListenerPropertiesFormat, Symbol("protocol"), protocol)
        setfield!(o, Symbol("protocol"), protocol)
        validate_property(ApplicationGatewayHttpListenerPropertiesFormat, Symbol("hostName"), hostName)
        setfield!(o, Symbol("hostName"), hostName)
        validate_property(ApplicationGatewayHttpListenerPropertiesFormat, Symbol("sslCertificate"), sslCertificate)
        setfield!(o, Symbol("sslCertificate"), sslCertificate)
        validate_property(ApplicationGatewayHttpListenerPropertiesFormat, Symbol("requireServerNameIndication"), requireServerNameIndication)
        setfield!(o, Symbol("requireServerNameIndication"), requireServerNameIndication)
        validate_property(ApplicationGatewayHttpListenerPropertiesFormat, Symbol("provisioningState"), provisioningState)
        setfield!(o, Symbol("provisioningState"), provisioningState)
        validate_property(ApplicationGatewayHttpListenerPropertiesFormat, Symbol("customErrorConfigurations"), customErrorConfigurations)
        setfield!(o, Symbol("customErrorConfigurations"), customErrorConfigurations)
        validate_property(ApplicationGatewayHttpListenerPropertiesFormat, Symbol("firewallPolicy"), firewallPolicy)
        setfield!(o, Symbol("firewallPolicy"), firewallPolicy)
        validate_property(ApplicationGatewayHttpListenerPropertiesFormat, Symbol("hostNames"), hostNames)
        setfield!(o, Symbol("hostNames"), hostNames)
        o
    end
end # type ApplicationGatewayHttpListenerPropertiesFormat

const _property_map_ApplicationGatewayHttpListenerPropertiesFormat = Dict{Symbol,Symbol}(Symbol("frontendIPConfiguration")=>Symbol("frontendIPConfiguration"), Symbol("frontendPort")=>Symbol("frontendPort"), Symbol("protocol")=>Symbol("protocol"), Symbol("hostName")=>Symbol("hostName"), Symbol("sslCertificate")=>Symbol("sslCertificate"), Symbol("requireServerNameIndication")=>Symbol("requireServerNameIndication"), Symbol("provisioningState")=>Symbol("provisioningState"), Symbol("customErrorConfigurations")=>Symbol("customErrorConfigurations"), Symbol("firewallPolicy")=>Symbol("firewallPolicy"), Symbol("hostNames")=>Symbol("hostNames"))
const _property_types_ApplicationGatewayHttpListenerPropertiesFormat = Dict{Symbol,String}(Symbol("frontendIPConfiguration")=>"SubResource", Symbol("frontendPort")=>"SubResource", Symbol("protocol")=>"ApplicationGatewayProtocol", Symbol("hostName")=>"String", Symbol("sslCertificate")=>"SubResource", Symbol("requireServerNameIndication")=>"Bool", Symbol("provisioningState")=>"ProvisioningState", Symbol("customErrorConfigurations")=>"Vector{ApplicationGatewayCustomError}", Symbol("firewallPolicy")=>"SubResource", Symbol("hostNames")=>"Vector{String}")
Base.propertynames(::Type{ ApplicationGatewayHttpListenerPropertiesFormat }) = collect(keys(_property_map_ApplicationGatewayHttpListenerPropertiesFormat))
Swagger.property_type(::Type{ ApplicationGatewayHttpListenerPropertiesFormat }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ApplicationGatewayHttpListenerPropertiesFormat[name]))}
Swagger.field_name(::Type{ ApplicationGatewayHttpListenerPropertiesFormat }, property_name::Symbol) =  _property_map_ApplicationGatewayHttpListenerPropertiesFormat[property_name]

function check_required(o::ApplicationGatewayHttpListenerPropertiesFormat)
    true
end

function validate_property(::Type{ ApplicationGatewayHttpListenerPropertiesFormat }, name::Symbol, val)
end
