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



mutable struct AdditionalUnattendContent <: SwaggerModel
    passName::Any # spec type: Union{ Nothing, String } # spec name: passName
    componentName::Any # spec type: Union{ Nothing, String } # spec name: componentName
    settingName::Any # spec type: Union{ Nothing, String } # spec name: settingName
    content::Any # spec type: Union{ Nothing, String } # spec name: content

    function AdditionalUnattendContent(;passName=nothing, componentName=nothing, settingName=nothing, content=nothing)
        o = new()
        validate_property(AdditionalUnattendContent, Symbol("passName"), passName)
        setfield!(o, Symbol("passName"), passName)
        validate_property(AdditionalUnattendContent, Symbol("componentName"), componentName)
        setfield!(o, Symbol("componentName"), componentName)
        validate_property(AdditionalUnattendContent, Symbol("settingName"), settingName)
        setfield!(o, Symbol("settingName"), settingName)
        validate_property(AdditionalUnattendContent, Symbol("content"), content)
        setfield!(o, Symbol("content"), content)
        o
    end
end # type AdditionalUnattendContent

const _property_map_AdditionalUnattendContent = Dict{Symbol,Symbol}(Symbol("passName")=>Symbol("passName"), Symbol("componentName")=>Symbol("componentName"), Symbol("settingName")=>Symbol("settingName"), Symbol("content")=>Symbol("content"))
const _property_types_AdditionalUnattendContent = Dict{Symbol,String}(Symbol("passName")=>"String", Symbol("componentName")=>"String", Symbol("settingName")=>"String", Symbol("content")=>"String")
Base.propertynames(::Type{ AdditionalUnattendContent }) = collect(keys(_property_map_AdditionalUnattendContent))
Swagger.property_type(::Type{ AdditionalUnattendContent }, name::Symbol) = Union{Nothing,eval(Meta.parse(_property_types_AdditionalUnattendContent[name]))}
Swagger.field_name(::Type{ AdditionalUnattendContent }, property_name::Symbol) =  _property_map_AdditionalUnattendContent[property_name]

const _allowed_AdditionalUnattendContent_passName = ["OobeSystem"]

const _allowed_AdditionalUnattendContent_componentName = ["Microsoft-Windows-Shell-Setup"]

const _allowed_AdditionalUnattendContent_settingName = ["AutoLogon", "FirstLogonCommands"]

function check_required(o::AdditionalUnattendContent)
    true
end

function validate_property(::Type{ AdditionalUnattendContent }, name::Symbol, val)
    if name === Symbol("passName")
        Swagger.validate_param(name, "AdditionalUnattendContent", :enum, val, _allowed_AdditionalUnattendContent_passName)
    end
    if name === Symbol("componentName")
        Swagger.validate_param(name, "AdditionalUnattendContent", :enum, val, _allowed_AdditionalUnattendContent_componentName)
    end
    if name === Symbol("settingName")
        Swagger.validate_param(name, "AdditionalUnattendContent", :enum, val, _allowed_AdditionalUnattendContent_settingName)
    end
end
