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


mutable struct DeploymentOperationProperties <: SwaggerModel
    provisioningOperation::Any # spec type: Union{ Nothing, String } # spec name: provisioningOperation
    provisioningState::Any # spec type: Union{ Nothing, String } # spec name: provisioningState
    timestamp::Any # spec type: Union{ Nothing, DateTime } # spec name: timestamp
    duration::Any # spec type: Union{ Nothing, String } # spec name: duration
    serviceRequestId::Any # spec type: Union{ Nothing, String } # spec name: serviceRequestId
    statusCode::Any # spec type: Union{ Nothing, String } # spec name: statusCode
    statusMessage::Any # spec type: Union{ Nothing, StatusMessage } # spec name: statusMessage
    targetResource::Any # spec type: Union{ Nothing, TargetResource } # spec name: targetResource
    request::Any # spec type: Union{ Nothing, HttpMessage } # spec name: request
    response::Any # spec type: Union{ Nothing, HttpMessage } # spec name: response

    function DeploymentOperationProperties(;provisioningOperation=nothing, provisioningState=nothing, timestamp=nothing, duration=nothing, serviceRequestId=nothing, statusCode=nothing, statusMessage=nothing, targetResource=nothing, request=nothing, response=nothing)
        o = new()
        validate_property(DeploymentOperationProperties, Symbol("provisioningOperation"), provisioningOperation)
        setfield!(o, Symbol("provisioningOperation"), provisioningOperation)
        validate_property(DeploymentOperationProperties, Symbol("provisioningState"), provisioningState)
        setfield!(o, Symbol("provisioningState"), provisioningState)
        validate_property(DeploymentOperationProperties, Symbol("timestamp"), timestamp)
        setfield!(o, Symbol("timestamp"), timestamp)
        validate_property(DeploymentOperationProperties, Symbol("duration"), duration)
        setfield!(o, Symbol("duration"), duration)
        validate_property(DeploymentOperationProperties, Symbol("serviceRequestId"), serviceRequestId)
        setfield!(o, Symbol("serviceRequestId"), serviceRequestId)
        validate_property(DeploymentOperationProperties, Symbol("statusCode"), statusCode)
        setfield!(o, Symbol("statusCode"), statusCode)
        validate_property(DeploymentOperationProperties, Symbol("statusMessage"), statusMessage)
        setfield!(o, Symbol("statusMessage"), statusMessage)
        validate_property(DeploymentOperationProperties, Symbol("targetResource"), targetResource)
        setfield!(o, Symbol("targetResource"), targetResource)
        validate_property(DeploymentOperationProperties, Symbol("request"), request)
        setfield!(o, Symbol("request"), request)
        validate_property(DeploymentOperationProperties, Symbol("response"), response)
        setfield!(o, Symbol("response"), response)
        o
    end
end # type DeploymentOperationProperties

const _property_map_DeploymentOperationProperties = Dict{Symbol,Symbol}(Symbol("provisioningOperation")=>Symbol("provisioningOperation"), Symbol("provisioningState")=>Symbol("provisioningState"), Symbol("timestamp")=>Symbol("timestamp"), Symbol("duration")=>Symbol("duration"), Symbol("serviceRequestId")=>Symbol("serviceRequestId"), Symbol("statusCode")=>Symbol("statusCode"), Symbol("statusMessage")=>Symbol("statusMessage"), Symbol("targetResource")=>Symbol("targetResource"), Symbol("request")=>Symbol("request"), Symbol("response")=>Symbol("response"))
const _property_types_DeploymentOperationProperties = Dict{Symbol,String}(Symbol("provisioningOperation")=>"String", Symbol("provisioningState")=>"String", Symbol("timestamp")=>"DateTime", Symbol("duration")=>"String", Symbol("serviceRequestId")=>"String", Symbol("statusCode")=>"String", Symbol("statusMessage")=>"StatusMessage", Symbol("targetResource")=>"TargetResource", Symbol("request")=>"HttpMessage", Symbol("response")=>"HttpMessage")
Base.propertynames(::Type{ DeploymentOperationProperties }) = collect(keys(_property_map_DeploymentOperationProperties))
Swagger.property_type(::Type{ DeploymentOperationProperties }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_DeploymentOperationProperties[name]))}
Swagger.field_name(::Type{ DeploymentOperationProperties }, property_name::Symbol) =  _property_map_DeploymentOperationProperties[property_name]

const _allowed_DeploymentOperationProperties_provisioningOperation = ["NotSpecified", "Create", "Delete", "Waiting", "AzureAsyncOperationWaiting", "ResourceCacheWaiting", "Action", "Read", "EvaluateDeploymentOutput", "DeploymentCleanup"]

function check_required(o::DeploymentOperationProperties)
    true
end

function validate_property(::Type{ DeploymentOperationProperties }, name::Symbol, val)
    if name === Symbol("provisioningOperation")
        Swagger.validate_param(name, "DeploymentOperationProperties", :enum, val, _allowed_DeploymentOperationProperties_provisioningOperation)
    end
end
