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


@doc raw"""
    ObjsBotProfile(;
        app_id=nothing,
        deleted=nothing,
        icons=nothing,
        id=nothing,
        name=nothing,
        team_id=nothing,
        updated=nothing,
    )

    - app_id::DefsAppId
    - deleted::Bool
    - icons::ObjsBotProfileIcons
    - id::DefsBotId
    - name::String
    - team_id::DefsTeam
    - updated::Int32
"""
mutable struct ObjsBotProfile <: SwaggerModel
    app_id::Any # spec type: Union{ Nothing, DefsAppId } # spec name: app_id
    deleted::Any # spec type: Union{ Nothing, Bool } # spec name: deleted
    icons::Any # spec type: Union{ Nothing, ObjsBotProfileIcons } # spec name: icons
    id::Any # spec type: Union{ Nothing, DefsBotId } # spec name: id
    name::Any # spec type: Union{ Nothing, String } # spec name: name
    team_id::Any # spec type: Union{ Nothing, DefsTeam } # spec name: team_id
    updated::Any # spec type: Union{ Nothing, Int32 } # spec name: updated

    function ObjsBotProfile(;app_id=nothing, deleted=nothing, icons=nothing, id=nothing, name=nothing, team_id=nothing, updated=nothing)
        o = new()
        validate_property(ObjsBotProfile, Symbol("app_id"), app_id)
        setfield!(o, Symbol("app_id"), app_id)
        validate_property(ObjsBotProfile, Symbol("deleted"), deleted)
        setfield!(o, Symbol("deleted"), deleted)
        validate_property(ObjsBotProfile, Symbol("icons"), icons)
        setfield!(o, Symbol("icons"), icons)
        validate_property(ObjsBotProfile, Symbol("id"), id)
        setfield!(o, Symbol("id"), id)
        validate_property(ObjsBotProfile, Symbol("name"), name)
        setfield!(o, Symbol("name"), name)
        validate_property(ObjsBotProfile, Symbol("team_id"), team_id)
        setfield!(o, Symbol("team_id"), team_id)
        validate_property(ObjsBotProfile, Symbol("updated"), updated)
        setfield!(o, Symbol("updated"), updated)
        o
    end
end # type ObjsBotProfile

const _property_map_ObjsBotProfile = Dict{Symbol,Symbol}(Symbol("app_id")=>Symbol("app_id"), Symbol("deleted")=>Symbol("deleted"), Symbol("icons")=>Symbol("icons"), Symbol("id")=>Symbol("id"), Symbol("name")=>Symbol("name"), Symbol("team_id")=>Symbol("team_id"), Symbol("updated")=>Symbol("updated"))
const _property_types_ObjsBotProfile = Dict{Symbol,String}(Symbol("app_id")=>"DefsAppId", Symbol("deleted")=>"Bool", Symbol("icons")=>"ObjsBotProfileIcons", Symbol("id")=>"DefsBotId", Symbol("name")=>"String", Symbol("team_id")=>"DefsTeam", Symbol("updated")=>"Int32")
Base.propertynames(::Type{ ObjsBotProfile }) = collect(keys(_property_map_ObjsBotProfile))
Swagger.property_type(::Type{ ObjsBotProfile }, name::Symbol) = Union{Nothing,eval(Base.Meta.parse(_property_types_ObjsBotProfile[name]))}
Swagger.field_name(::Type{ ObjsBotProfile }, property_name::Symbol) =  _property_map_ObjsBotProfile[property_name]

function check_required(o::ObjsBotProfile)
    (getproperty(o, Symbol("app_id")) === nothing) && (return false)
    (getproperty(o, Symbol("deleted")) === nothing) && (return false)
    (getproperty(o, Symbol("icons")) === nothing) && (return false)
    (getproperty(o, Symbol("id")) === nothing) && (return false)
    (getproperty(o, Symbol("name")) === nothing) && (return false)
    (getproperty(o, Symbol("team_id")) === nothing) && (return false)
    (getproperty(o, Symbol("updated")) === nothing) && (return false)
    true
end

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