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



mutable struct DeploymentPropertiesExtended <: SwaggerModel
    provisioningState::Any # spec type: Union{ Nothing, String } # spec name: provisioningState
    correlationId::Any # spec type: Union{ Nothing, String } # spec name: correlationId
    timestamp::Any # spec type: Union{ Nothing, String } # spec name: timestamp
    outputs::Any # spec type: Union{ Nothing, Any } # spec name: outputs
    providers::Any # spec type: Union{ Nothing, Vector{Provider} } # spec name: providers
    dependencies::Any # spec type: Union{ Nothing, Vector{Dependency} } # spec name: dependencies
    template::Any # spec type: Union{ Nothing, Any } # spec name: template
    templateLink::Any # spec type: Union{ Nothing, TemplateLink } # spec name: templateLink
    parameters::Any # spec type: Union{ Nothing, Any } # spec name: parameters
    parametersLink::Any # spec type: Union{ Nothing, ParametersLink } # spec name: parametersLink
    mode::Any # spec type: Union{ Nothing, String } # spec name: mode
    debugSetting::Any # spec type: Union{ Nothing, DebugSetting } # spec name: debugSetting

    function DeploymentPropertiesExtended(;provisioningState=nothing, correlationId=nothing, timestamp=nothing, outputs=nothing, providers=nothing, dependencies=nothing, template=nothing, templateLink=nothing, parameters=nothing, parametersLink=nothing, mode=nothing, debugSetting=nothing)
        o = new()
        validate_property(DeploymentPropertiesExtended, Symbol("provisioningState"), provisioningState)
        setfield!(o, Symbol("provisioningState"), provisioningState)
        validate_property(DeploymentPropertiesExtended, Symbol("correlationId"), correlationId)
        setfield!(o, Symbol("correlationId"), correlationId)
        validate_property(DeploymentPropertiesExtended, Symbol("timestamp"), timestamp)
        setfield!(o, Symbol("timestamp"), timestamp)
        validate_property(DeploymentPropertiesExtended, Symbol("outputs"), outputs)
        setfield!(o, Symbol("outputs"), outputs)
        validate_property(DeploymentPropertiesExtended, Symbol("providers"), providers)
        setfield!(o, Symbol("providers"), providers)
        validate_property(DeploymentPropertiesExtended, Symbol("dependencies"), dependencies)
        setfield!(o, Symbol("dependencies"), dependencies)
        validate_property(DeploymentPropertiesExtended, Symbol("template"), template)
        setfield!(o, Symbol("template"), template)
        validate_property(DeploymentPropertiesExtended, Symbol("templateLink"), templateLink)
        setfield!(o, Symbol("templateLink"), templateLink)
        validate_property(DeploymentPropertiesExtended, Symbol("parameters"), parameters)
        setfield!(o, Symbol("parameters"), parameters)
        validate_property(DeploymentPropertiesExtended, Symbol("parametersLink"), parametersLink)
        setfield!(o, Symbol("parametersLink"), parametersLink)
        validate_property(DeploymentPropertiesExtended, Symbol("mode"), mode)
        setfield!(o, Symbol("mode"), mode)
        validate_property(DeploymentPropertiesExtended, Symbol("debugSetting"), debugSetting)
        setfield!(o, Symbol("debugSetting"), debugSetting)
        o
    end
end # type DeploymentPropertiesExtended

const _property_map_DeploymentPropertiesExtended = Dict{Symbol,Symbol}(Symbol("provisioningState")=>Symbol("provisioningState"), Symbol("correlationId")=>Symbol("correlationId"), Symbol("timestamp")=>Symbol("timestamp"), Symbol("outputs")=>Symbol("outputs"), Symbol("providers")=>Symbol("providers"), Symbol("dependencies")=>Symbol("dependencies"), Symbol("template")=>Symbol("template"), Symbol("templateLink")=>Symbol("templateLink"), Symbol("parameters")=>Symbol("parameters"), Symbol("parametersLink")=>Symbol("parametersLink"), Symbol("mode")=>Symbol("mode"), Symbol("debugSetting")=>Symbol("debugSetting"))
const _property_types_DeploymentPropertiesExtended = Dict{Symbol,String}(Symbol("provisioningState")=>"String", Symbol("correlationId")=>"String", Symbol("timestamp")=>"String", Symbol("outputs")=>"Any", Symbol("providers")=>"Vector{Provider}", Symbol("dependencies")=>"Vector{Dependency}", Symbol("template")=>"Any", Symbol("templateLink")=>"TemplateLink", Symbol("parameters")=>"Any", Symbol("parametersLink")=>"ParametersLink", Symbol("mode")=>"String", Symbol("debugSetting")=>"DebugSetting")
Base.propertynames(::Type{ DeploymentPropertiesExtended }) = collect(keys(_property_map_DeploymentPropertiesExtended))
Swagger.property_type(::Type{ DeploymentPropertiesExtended }, name::Symbol) = Union{Nothing,eval(Meta.parse(_property_types_DeploymentPropertiesExtended[name]))}
Swagger.field_name(::Type{ DeploymentPropertiesExtended }, property_name::Symbol) =  _property_map_DeploymentPropertiesExtended[property_name]

const _allowed_DeploymentPropertiesExtended_mode = ["Incremental", "Complete"]

function check_required(o::DeploymentPropertiesExtended)
    true
end

function validate_property(::Type{ DeploymentPropertiesExtended }, name::Symbol, val)
    if name === Symbol("mode")
        Swagger.validate_param(name, "DeploymentPropertiesExtended", :enum, val, _allowed_DeploymentPropertiesExtended_mode)
    end
end
