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


mutable struct VirtualMachineSoftwarePatchProperties <: SwaggerModel
    patchId::Any # spec type: Union{ Nothing, String } # spec name: patchId
    name::Any # spec type: Union{ Nothing, String } # spec name: name
    version::Any # spec type: Union{ Nothing, String } # spec name: version
    kbid::Any # spec type: Union{ Nothing, String } # spec name: kbid
    classifications::Any # spec type: Union{ Nothing, Vector{String} } # spec name: classifications
    rebootBehavior::Any # spec type: Union{ Nothing, String } # spec name: rebootBehavior
    activityId::Any # spec type: Union{ Nothing, String } # spec name: activityId
    publishedDate::Any # spec type: Union{ Nothing, DateTime } # spec name: publishedDate
    lastModifiedDateTime::Any # spec type: Union{ Nothing, DateTime } # spec name: lastModifiedDateTime
    assessmentState::Any # spec type: Union{ Nothing, String } # spec name: assessmentState

    function VirtualMachineSoftwarePatchProperties(;patchId=nothing, name=nothing, version=nothing, kbid=nothing, classifications=nothing, rebootBehavior=nothing, activityId=nothing, publishedDate=nothing, lastModifiedDateTime=nothing, assessmentState=nothing)
        o = new()
        validate_property(VirtualMachineSoftwarePatchProperties, Symbol("patchId"), patchId)
        setfield!(o, Symbol("patchId"), patchId)
        validate_property(VirtualMachineSoftwarePatchProperties, Symbol("name"), name)
        setfield!(o, Symbol("name"), name)
        validate_property(VirtualMachineSoftwarePatchProperties, Symbol("version"), version)
        setfield!(o, Symbol("version"), version)
        validate_property(VirtualMachineSoftwarePatchProperties, Symbol("kbid"), kbid)
        setfield!(o, Symbol("kbid"), kbid)
        validate_property(VirtualMachineSoftwarePatchProperties, Symbol("classifications"), classifications)
        setfield!(o, Symbol("classifications"), classifications)
        validate_property(VirtualMachineSoftwarePatchProperties, Symbol("rebootBehavior"), rebootBehavior)
        setfield!(o, Symbol("rebootBehavior"), rebootBehavior)
        validate_property(VirtualMachineSoftwarePatchProperties, Symbol("activityId"), activityId)
        setfield!(o, Symbol("activityId"), activityId)
        validate_property(VirtualMachineSoftwarePatchProperties, Symbol("publishedDate"), publishedDate)
        setfield!(o, Symbol("publishedDate"), publishedDate)
        validate_property(VirtualMachineSoftwarePatchProperties, Symbol("lastModifiedDateTime"), lastModifiedDateTime)
        setfield!(o, Symbol("lastModifiedDateTime"), lastModifiedDateTime)
        validate_property(VirtualMachineSoftwarePatchProperties, Symbol("assessmentState"), assessmentState)
        setfield!(o, Symbol("assessmentState"), assessmentState)
        o
    end
end # type VirtualMachineSoftwarePatchProperties

const _property_map_VirtualMachineSoftwarePatchProperties = Dict{Symbol,Symbol}(Symbol("patchId")=>Symbol("patchId"), Symbol("name")=>Symbol("name"), Symbol("version")=>Symbol("version"), Symbol("kbid")=>Symbol("kbid"), Symbol("classifications")=>Symbol("classifications"), Symbol("rebootBehavior")=>Symbol("rebootBehavior"), Symbol("activityId")=>Symbol("activityId"), Symbol("publishedDate")=>Symbol("publishedDate"), Symbol("lastModifiedDateTime")=>Symbol("lastModifiedDateTime"), Symbol("assessmentState")=>Symbol("assessmentState"))
const _property_types_VirtualMachineSoftwarePatchProperties = Dict{Symbol,String}(Symbol("patchId")=>"String", Symbol("name")=>"String", Symbol("version")=>"String", Symbol("kbid")=>"String", Symbol("classifications")=>"Vector{String}", Symbol("rebootBehavior")=>"String", Symbol("activityId")=>"String", Symbol("publishedDate")=>"DateTime", Symbol("lastModifiedDateTime")=>"DateTime", Symbol("assessmentState")=>"String")
Base.propertynames(::Type{ VirtualMachineSoftwarePatchProperties }) = collect(keys(_property_map_VirtualMachineSoftwarePatchProperties))
Swagger.property_type(::Type{ VirtualMachineSoftwarePatchProperties }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_VirtualMachineSoftwarePatchProperties[name]))}
Swagger.field_name(::Type{ VirtualMachineSoftwarePatchProperties }, property_name::Symbol) =  _property_map_VirtualMachineSoftwarePatchProperties[property_name]

const _allowed_VirtualMachineSoftwarePatchProperties_rebootBehavior = ["NeverReboots", "AlwaysRequiresReboot", "CanRequestReboot"]

const _allowed_VirtualMachineSoftwarePatchProperties_assessmentState = ["Installed", "Failed", "Excluded", "NotSelected", "Pending", "Available"]

function check_required(o::VirtualMachineSoftwarePatchProperties)
    true
end

function validate_property(::Type{ VirtualMachineSoftwarePatchProperties }, name::Symbol, val)
    if name === Symbol("rebootBehavior")
        Swagger.validate_param(name, "VirtualMachineSoftwarePatchProperties", :enum, val, _allowed_VirtualMachineSoftwarePatchProperties_rebootBehavior)
    end
    if name === Symbol("assessmentState")
        Swagger.validate_param(name, "VirtualMachineSoftwarePatchProperties", :enum, val, _allowed_VirtualMachineSoftwarePatchProperties_assessmentState)
    end
end
