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


mutable struct FlowLogPropertiesFormat <: SwaggerModel
    targetResourceId::Any # spec type: Union{ Nothing, String } # spec name: targetResourceId
    targetResourceGuid::Any # spec type: Union{ Nothing, String } # spec name: targetResourceGuid
    storageId::Any # spec type: Union{ Nothing, String } # spec name: storageId
    enabled::Any # spec type: Union{ Nothing, Bool } # spec name: enabled
    retentionPolicy::Any # spec type: Union{ Nothing, RetentionPolicyParameters } # spec name: retentionPolicy
    format::Any # spec type: Union{ Nothing, FlowLogFormatParameters } # spec name: format
    flowAnalyticsConfiguration::Any # spec type: Union{ Nothing, TrafficAnalyticsProperties } # spec name: flowAnalyticsConfiguration
    provisioningState::Any # spec type: Union{ Nothing, ProvisioningState } # spec name: provisioningState

    function FlowLogPropertiesFormat(;targetResourceId=nothing, targetResourceGuid=nothing, storageId=nothing, enabled=nothing, retentionPolicy=nothing, format=nothing, flowAnalyticsConfiguration=nothing, provisioningState=nothing)
        o = new()
        validate_property(FlowLogPropertiesFormat, Symbol("targetResourceId"), targetResourceId)
        setfield!(o, Symbol("targetResourceId"), targetResourceId)
        validate_property(FlowLogPropertiesFormat, Symbol("targetResourceGuid"), targetResourceGuid)
        setfield!(o, Symbol("targetResourceGuid"), targetResourceGuid)
        validate_property(FlowLogPropertiesFormat, Symbol("storageId"), storageId)
        setfield!(o, Symbol("storageId"), storageId)
        validate_property(FlowLogPropertiesFormat, Symbol("enabled"), enabled)
        setfield!(o, Symbol("enabled"), enabled)
        validate_property(FlowLogPropertiesFormat, Symbol("retentionPolicy"), retentionPolicy)
        setfield!(o, Symbol("retentionPolicy"), retentionPolicy)
        validate_property(FlowLogPropertiesFormat, Symbol("format"), format)
        setfield!(o, Symbol("format"), format)
        validate_property(FlowLogPropertiesFormat, Symbol("flowAnalyticsConfiguration"), flowAnalyticsConfiguration)
        setfield!(o, Symbol("flowAnalyticsConfiguration"), flowAnalyticsConfiguration)
        validate_property(FlowLogPropertiesFormat, Symbol("provisioningState"), provisioningState)
        setfield!(o, Symbol("provisioningState"), provisioningState)
        o
    end
end # type FlowLogPropertiesFormat

const _property_map_FlowLogPropertiesFormat = Dict{Symbol,Symbol}(Symbol("targetResourceId")=>Symbol("targetResourceId"), Symbol("targetResourceGuid")=>Symbol("targetResourceGuid"), Symbol("storageId")=>Symbol("storageId"), Symbol("enabled")=>Symbol("enabled"), Symbol("retentionPolicy")=>Symbol("retentionPolicy"), Symbol("format")=>Symbol("format"), Symbol("flowAnalyticsConfiguration")=>Symbol("flowAnalyticsConfiguration"), Symbol("provisioningState")=>Symbol("provisioningState"))
const _property_types_FlowLogPropertiesFormat = Dict{Symbol,String}(Symbol("targetResourceId")=>"String", Symbol("targetResourceGuid")=>"String", Symbol("storageId")=>"String", Symbol("enabled")=>"Bool", Symbol("retentionPolicy")=>"RetentionPolicyParameters", Symbol("format")=>"FlowLogFormatParameters", Symbol("flowAnalyticsConfiguration")=>"TrafficAnalyticsProperties", Symbol("provisioningState")=>"ProvisioningState")
Base.propertynames(::Type{ FlowLogPropertiesFormat }) = collect(keys(_property_map_FlowLogPropertiesFormat))
Swagger.property_type(::Type{ FlowLogPropertiesFormat }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_FlowLogPropertiesFormat[name]))}
Swagger.field_name(::Type{ FlowLogPropertiesFormat }, property_name::Symbol) =  _property_map_FlowLogPropertiesFormat[property_name]

function check_required(o::FlowLogPropertiesFormat)
    (getproperty(o, Symbol("targetResourceId")) === nothing) && (return false)
    (getproperty(o, Symbol("storageId")) === nothing) && (return false)
    true
end

function validate_property(::Type{ FlowLogPropertiesFormat }, name::Symbol, val)
end
