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


mutable struct LocationMetadata <: SwaggerModel
    regionType::Any # spec type: Union{ Nothing, String } # spec name: regionType
    regionCategory::Any # spec type: Union{ Nothing, String } # spec name: regionCategory
    geographyGroup::Any # spec type: Union{ Nothing, String } # spec name: geographyGroup
    longitude::Any # spec type: Union{ Nothing, String } # spec name: longitude
    latitude::Any # spec type: Union{ Nothing, String } # spec name: latitude
    physicalLocation::Any # spec type: Union{ Nothing, String } # spec name: physicalLocation
    pairedRegion::Any # spec type: Union{ Nothing, Vector{PairedRegion} } # spec name: pairedRegion

    function LocationMetadata(;regionType=nothing, regionCategory=nothing, geographyGroup=nothing, longitude=nothing, latitude=nothing, physicalLocation=nothing, pairedRegion=nothing)
        o = new()
        validate_property(LocationMetadata, Symbol("regionType"), regionType)
        setfield!(o, Symbol("regionType"), regionType)
        validate_property(LocationMetadata, Symbol("regionCategory"), regionCategory)
        setfield!(o, Symbol("regionCategory"), regionCategory)
        validate_property(LocationMetadata, Symbol("geographyGroup"), geographyGroup)
        setfield!(o, Symbol("geographyGroup"), geographyGroup)
        validate_property(LocationMetadata, Symbol("longitude"), longitude)
        setfield!(o, Symbol("longitude"), longitude)
        validate_property(LocationMetadata, Symbol("latitude"), latitude)
        setfield!(o, Symbol("latitude"), latitude)
        validate_property(LocationMetadata, Symbol("physicalLocation"), physicalLocation)
        setfield!(o, Symbol("physicalLocation"), physicalLocation)
        validate_property(LocationMetadata, Symbol("pairedRegion"), pairedRegion)
        setfield!(o, Symbol("pairedRegion"), pairedRegion)
        o
    end
end # type LocationMetadata

const _property_map_LocationMetadata = Dict{Symbol,Symbol}(Symbol("regionType")=>Symbol("regionType"), Symbol("regionCategory")=>Symbol("regionCategory"), Symbol("geographyGroup")=>Symbol("geographyGroup"), Symbol("longitude")=>Symbol("longitude"), Symbol("latitude")=>Symbol("latitude"), Symbol("physicalLocation")=>Symbol("physicalLocation"), Symbol("pairedRegion")=>Symbol("pairedRegion"))
const _property_types_LocationMetadata = Dict{Symbol,String}(Symbol("regionType")=>"String", Symbol("regionCategory")=>"String", Symbol("geographyGroup")=>"String", Symbol("longitude")=>"String", Symbol("latitude")=>"String", Symbol("physicalLocation")=>"String", Symbol("pairedRegion")=>"Vector{PairedRegion}")
Base.propertynames(::Type{ LocationMetadata }) = collect(keys(_property_map_LocationMetadata))
Swagger.property_type(::Type{ LocationMetadata }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_LocationMetadata[name]))}
Swagger.field_name(::Type{ LocationMetadata }, property_name::Symbol) =  _property_map_LocationMetadata[property_name]

const _allowed_LocationMetadata_regionType = ["Physical", "Logical"]

const _allowed_LocationMetadata_regionCategory = ["Recommended", "Other"]

function check_required(o::LocationMetadata)
    true
end

function validate_property(::Type{ LocationMetadata }, name::Symbol, val)
    if name === Symbol("regionType")
        Swagger.validate_param(name, "LocationMetadata", :enum, val, _allowed_LocationMetadata_regionType)
    end
    if name === Symbol("regionCategory")
        Swagger.validate_param(name, "LocationMetadata", :enum, val, _allowed_LocationMetadata_regionCategory)
    end
end
