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


mutable struct FileStatusProperties <: SwaggerModel
    accessTime::Any # spec type: Union{ Nothing, Int64 } # spec name: accessTime
    blockSize::Any # spec type: Union{ Nothing, Int64 } # spec name: blockSize
    msExpirationTime::Any # spec type: Union{ Nothing, Int64 } # spec name: msExpirationTime
    group::Any # spec type: Union{ Nothing, String } # spec name: group
    length::Any # spec type: Union{ Nothing, Int64 } # spec name: length
    modificationTime::Any # spec type: Union{ Nothing, Int64 } # spec name: modificationTime
    owner::Any # spec type: Union{ Nothing, String } # spec name: owner
    pathSuffix::Any # spec type: Union{ Nothing, String } # spec name: pathSuffix
    permission::Any # spec type: Union{ Nothing, String } # spec name: permission
    type::Any # spec type: Union{ Nothing, String } # spec name: type
    aclBit::Any # spec type: Union{ Nothing, Bool } # spec name: aclBit

    function FileStatusProperties(;accessTime=nothing, blockSize=nothing, msExpirationTime=nothing, group=nothing, length=nothing, modificationTime=nothing, owner=nothing, pathSuffix=nothing, permission=nothing, type=nothing, aclBit=nothing)
        o = new()
        validate_property(FileStatusProperties, Symbol("accessTime"), accessTime)
        setfield!(o, Symbol("accessTime"), accessTime)
        validate_property(FileStatusProperties, Symbol("blockSize"), blockSize)
        setfield!(o, Symbol("blockSize"), blockSize)
        validate_property(FileStatusProperties, Symbol("msExpirationTime"), msExpirationTime)
        setfield!(o, Symbol("msExpirationTime"), msExpirationTime)
        validate_property(FileStatusProperties, Symbol("group"), group)
        setfield!(o, Symbol("group"), group)
        validate_property(FileStatusProperties, Symbol("length"), length)
        setfield!(o, Symbol("length"), length)
        validate_property(FileStatusProperties, Symbol("modificationTime"), modificationTime)
        setfield!(o, Symbol("modificationTime"), modificationTime)
        validate_property(FileStatusProperties, Symbol("owner"), owner)
        setfield!(o, Symbol("owner"), owner)
        validate_property(FileStatusProperties, Symbol("pathSuffix"), pathSuffix)
        setfield!(o, Symbol("pathSuffix"), pathSuffix)
        validate_property(FileStatusProperties, Symbol("permission"), permission)
        setfield!(o, Symbol("permission"), permission)
        validate_property(FileStatusProperties, Symbol("type"), type)
        setfield!(o, Symbol("type"), type)
        validate_property(FileStatusProperties, Symbol("aclBit"), aclBit)
        setfield!(o, Symbol("aclBit"), aclBit)
        o
    end
end # type FileStatusProperties

const _property_map_FileStatusProperties = Dict{Symbol,Symbol}(Symbol("accessTime")=>Symbol("accessTime"), Symbol("blockSize")=>Symbol("blockSize"), Symbol("msExpirationTime")=>Symbol("msExpirationTime"), Symbol("group")=>Symbol("group"), Symbol("length")=>Symbol("length"), Symbol("modificationTime")=>Symbol("modificationTime"), Symbol("owner")=>Symbol("owner"), Symbol("pathSuffix")=>Symbol("pathSuffix"), Symbol("permission")=>Symbol("permission"), Symbol("type")=>Symbol("type"), Symbol("aclBit")=>Symbol("aclBit"))
const _property_types_FileStatusProperties = Dict{Symbol,String}(Symbol("accessTime")=>"Int64", Symbol("blockSize")=>"Int64", Symbol("msExpirationTime")=>"Int64", Symbol("group")=>"String", Symbol("length")=>"Int64", Symbol("modificationTime")=>"Int64", Symbol("owner")=>"String", Symbol("pathSuffix")=>"String", Symbol("permission")=>"String", Symbol("type")=>"String", Symbol("aclBit")=>"Bool")
Base.propertynames(::Type{ FileStatusProperties }) = collect(keys(_property_map_FileStatusProperties))
Swagger.property_type(::Type{ FileStatusProperties }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_FileStatusProperties[name]))}
Swagger.field_name(::Type{ FileStatusProperties }, property_name::Symbol) =  _property_map_FileStatusProperties[property_name]

const _allowed_FileStatusProperties_type = ["FILE", "DIRECTORY"]

function check_required(o::FileStatusProperties)
    true
end

function validate_property(::Type{ FileStatusProperties }, name::Symbol, val)
    if name === Symbol("type")
        Swagger.validate_param(name, "FileStatusProperties", :enum, val, _allowed_FileStatusProperties_type)
    end
end
