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


mutable struct VpnClientConfiguration <: SwaggerModel
    vpnClientAddressPool::Any # spec type: Union{ Nothing, AddressSpace } # spec name: vpnClientAddressPool
    vpnClientRootCertificates::Any # spec type: Union{ Nothing, Vector{VpnClientRootCertificate} } # spec name: vpnClientRootCertificates
    vpnClientRevokedCertificates::Any # spec type: Union{ Nothing, Vector{VpnClientRevokedCertificate} } # spec name: vpnClientRevokedCertificates
    vpnClientProtocols::Any # spec type: Union{ Nothing, Vector{String} } # spec name: vpnClientProtocols
    vpnClientIpsecPolicies::Any # spec type: Union{ Nothing, Vector{IpsecPolicy} } # spec name: vpnClientIpsecPolicies
    radiusServerAddress::Any # spec type: Union{ Nothing, String } # spec name: radiusServerAddress
    radiusServerSecret::Any # spec type: Union{ Nothing, String } # spec name: radiusServerSecret
    radiusServers::Any # spec type: Union{ Nothing, Vector{RadiusServer} } # spec name: radiusServers
    aadTenant::Any # spec type: Union{ Nothing, String } # spec name: aadTenant
    aadAudience::Any # spec type: Union{ Nothing, String } # spec name: aadAudience
    aadIssuer::Any # spec type: Union{ Nothing, String } # spec name: aadIssuer

    function VpnClientConfiguration(;vpnClientAddressPool=nothing, vpnClientRootCertificates=nothing, vpnClientRevokedCertificates=nothing, vpnClientProtocols=nothing, vpnClientIpsecPolicies=nothing, radiusServerAddress=nothing, radiusServerSecret=nothing, radiusServers=nothing, aadTenant=nothing, aadAudience=nothing, aadIssuer=nothing)
        o = new()
        validate_property(VpnClientConfiguration, Symbol("vpnClientAddressPool"), vpnClientAddressPool)
        setfield!(o, Symbol("vpnClientAddressPool"), vpnClientAddressPool)
        validate_property(VpnClientConfiguration, Symbol("vpnClientRootCertificates"), vpnClientRootCertificates)
        setfield!(o, Symbol("vpnClientRootCertificates"), vpnClientRootCertificates)
        validate_property(VpnClientConfiguration, Symbol("vpnClientRevokedCertificates"), vpnClientRevokedCertificates)
        setfield!(o, Symbol("vpnClientRevokedCertificates"), vpnClientRevokedCertificates)
        validate_property(VpnClientConfiguration, Symbol("vpnClientProtocols"), vpnClientProtocols)
        setfield!(o, Symbol("vpnClientProtocols"), vpnClientProtocols)
        validate_property(VpnClientConfiguration, Symbol("vpnClientIpsecPolicies"), vpnClientIpsecPolicies)
        setfield!(o, Symbol("vpnClientIpsecPolicies"), vpnClientIpsecPolicies)
        validate_property(VpnClientConfiguration, Symbol("radiusServerAddress"), radiusServerAddress)
        setfield!(o, Symbol("radiusServerAddress"), radiusServerAddress)
        validate_property(VpnClientConfiguration, Symbol("radiusServerSecret"), radiusServerSecret)
        setfield!(o, Symbol("radiusServerSecret"), radiusServerSecret)
        validate_property(VpnClientConfiguration, Symbol("radiusServers"), radiusServers)
        setfield!(o, Symbol("radiusServers"), radiusServers)
        validate_property(VpnClientConfiguration, Symbol("aadTenant"), aadTenant)
        setfield!(o, Symbol("aadTenant"), aadTenant)
        validate_property(VpnClientConfiguration, Symbol("aadAudience"), aadAudience)
        setfield!(o, Symbol("aadAudience"), aadAudience)
        validate_property(VpnClientConfiguration, Symbol("aadIssuer"), aadIssuer)
        setfield!(o, Symbol("aadIssuer"), aadIssuer)
        o
    end
end # type VpnClientConfiguration

const _property_map_VpnClientConfiguration = Dict{Symbol,Symbol}(Symbol("vpnClientAddressPool")=>Symbol("vpnClientAddressPool"), Symbol("vpnClientRootCertificates")=>Symbol("vpnClientRootCertificates"), Symbol("vpnClientRevokedCertificates")=>Symbol("vpnClientRevokedCertificates"), Symbol("vpnClientProtocols")=>Symbol("vpnClientProtocols"), Symbol("vpnClientIpsecPolicies")=>Symbol("vpnClientIpsecPolicies"), Symbol("radiusServerAddress")=>Symbol("radiusServerAddress"), Symbol("radiusServerSecret")=>Symbol("radiusServerSecret"), Symbol("radiusServers")=>Symbol("radiusServers"), Symbol("aadTenant")=>Symbol("aadTenant"), Symbol("aadAudience")=>Symbol("aadAudience"), Symbol("aadIssuer")=>Symbol("aadIssuer"))
const _property_types_VpnClientConfiguration = Dict{Symbol,String}(Symbol("vpnClientAddressPool")=>"AddressSpace", Symbol("vpnClientRootCertificates")=>"Vector{VpnClientRootCertificate}", Symbol("vpnClientRevokedCertificates")=>"Vector{VpnClientRevokedCertificate}", Symbol("vpnClientProtocols")=>"Vector{String}", Symbol("vpnClientIpsecPolicies")=>"Vector{IpsecPolicy}", Symbol("radiusServerAddress")=>"String", Symbol("radiusServerSecret")=>"String", Symbol("radiusServers")=>"Vector{RadiusServer}", Symbol("aadTenant")=>"String", Symbol("aadAudience")=>"String", Symbol("aadIssuer")=>"String")
Base.propertynames(::Type{ VpnClientConfiguration }) = collect(keys(_property_map_VpnClientConfiguration))
Swagger.property_type(::Type{ VpnClientConfiguration }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_VpnClientConfiguration[name]))}
Swagger.field_name(::Type{ VpnClientConfiguration }, property_name::Symbol) =  _property_map_VpnClientConfiguration[property_name]

const _allowed_VpnClientConfiguration_vpnClientProtocols = ["IkeV2", "SSTP", "OpenVPN"]

function check_required(o::VpnClientConfiguration)
    true
end

function validate_property(::Type{ VpnClientConfiguration }, name::Symbol, val)
    if name === Symbol("vpnClientProtocols")
        Swagger.validate_param(name, "VpnClientConfiguration", :enum, val, _allowed_VpnClientConfiguration_vpnClientProtocols)
    end
end
