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


mutable struct ThrottledRequestsInput <: SwaggerModel
    blobContainerSasUri::Any # spec type: Union{ Nothing, String } # spec name: blobContainerSasUri
    fromTime::Any # spec type: Union{ Nothing, DateTime } # spec name: fromTime
    toTime::Any # spec type: Union{ Nothing, DateTime } # spec name: toTime
    groupByThrottlePolicy::Any # spec type: Union{ Nothing, Bool } # spec name: groupByThrottlePolicy
    groupByOperationName::Any # spec type: Union{ Nothing, Bool } # spec name: groupByOperationName
    groupByResourceName::Any # spec type: Union{ Nothing, Bool } # spec name: groupByResourceName

    function ThrottledRequestsInput(;blobContainerSasUri=nothing, fromTime=nothing, toTime=nothing, groupByThrottlePolicy=nothing, groupByOperationName=nothing, groupByResourceName=nothing)
        o = new()
        validate_property(ThrottledRequestsInput, Symbol("blobContainerSasUri"), blobContainerSasUri)
        setfield!(o, Symbol("blobContainerSasUri"), blobContainerSasUri)
        validate_property(ThrottledRequestsInput, Symbol("fromTime"), fromTime)
        setfield!(o, Symbol("fromTime"), fromTime)
        validate_property(ThrottledRequestsInput, Symbol("toTime"), toTime)
        setfield!(o, Symbol("toTime"), toTime)
        validate_property(ThrottledRequestsInput, Symbol("groupByThrottlePolicy"), groupByThrottlePolicy)
        setfield!(o, Symbol("groupByThrottlePolicy"), groupByThrottlePolicy)
        validate_property(ThrottledRequestsInput, Symbol("groupByOperationName"), groupByOperationName)
        setfield!(o, Symbol("groupByOperationName"), groupByOperationName)
        validate_property(ThrottledRequestsInput, Symbol("groupByResourceName"), groupByResourceName)
        setfield!(o, Symbol("groupByResourceName"), groupByResourceName)
        o
    end
end # type ThrottledRequestsInput

const _property_map_ThrottledRequestsInput = Dict{Symbol,Symbol}(Symbol("blobContainerSasUri")=>Symbol("blobContainerSasUri"), Symbol("fromTime")=>Symbol("fromTime"), Symbol("toTime")=>Symbol("toTime"), Symbol("groupByThrottlePolicy")=>Symbol("groupByThrottlePolicy"), Symbol("groupByOperationName")=>Symbol("groupByOperationName"), Symbol("groupByResourceName")=>Symbol("groupByResourceName"))
const _property_types_ThrottledRequestsInput = Dict{Symbol,String}(Symbol("blobContainerSasUri")=>"String", Symbol("fromTime")=>"DateTime", Symbol("toTime")=>"DateTime", Symbol("groupByThrottlePolicy")=>"Bool", Symbol("groupByOperationName")=>"Bool", Symbol("groupByResourceName")=>"Bool")
Base.propertynames(::Type{ ThrottledRequestsInput }) = collect(keys(_property_map_ThrottledRequestsInput))
Swagger.property_type(::Type{ ThrottledRequestsInput }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ThrottledRequestsInput[name]))}
Swagger.field_name(::Type{ ThrottledRequestsInput }, property_name::Symbol) =  _property_map_ThrottledRequestsInput[property_name]

function check_required(o::ThrottledRequestsInput)
    (getproperty(o, Symbol("blobContainerSasUri")) === nothing) && (return false)
    (getproperty(o, Symbol("fromTime")) === nothing) && (return false)
    (getproperty(o, Symbol("toTime")) === nothing) && (return false)
    true
end

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