##
#    This code was generated by
#    ___ _ _ _ _ _    _ ____    ____ ____ _    ____ ____ _  _ ____ ____ ____ ___ __   __
#     |  | | | | |    | |  | __ |  | |__| | __ | __ |___ |\ | |___ |__/ |__|  | |  | |__/
#     |  |_|_| | |___ | |__|    |__| |  | |    |__] |___ | \| |___ |  \ |  |  | |__| |  \
#
#    Twilio - Assistants
#    This is the public Twilio REST API.
#
#    NOTE: This class is auto generated by OpenAPI Generator.
#    https://openapi-generator.tech
#    Do not edit the class manually.
#

module Twilio
    module REST
        class Assistants
            class V1 < Version
                ##
                # Initialize the V1 version of Assistants
                def initialize(domain)
                    super
                    @version = 'v1'
                    @assistants = nil
                    @knowledge = nil
                    @policies = nil
                    @sessions = nil
                    @tools = nil
                end

                ##
                # @param [String] id 
                # @return [Twilio::REST::Assistants::V1::AssistantContext] if id was passed.
                # @return [Twilio::REST::Assistants::V1::AssistantList]
                def assistants(id=:unset)
                    if id.nil?
                        raise ArgumentError, 'id cannot be nil'
                    end
                    if id == :unset
                        @assistants ||= AssistantList.new self
                    else
                        AssistantContext.new(self, id)
                    end
                end
                ##
                # @param [String] id 
                # @return [Twilio::REST::Assistants::V1::KnowledgeContext] if id was passed.
                # @return [Twilio::REST::Assistants::V1::KnowledgeList]
                def knowledge(id=:unset)
                    if id.nil?
                        raise ArgumentError, 'id cannot be nil'
                    end
                    if id == :unset
                        @knowledge ||= KnowledgeList.new self
                    else
                        KnowledgeContext.new(self, id)
                    end
                end
                ##
                # @return [Twilio::REST::Assistants::V1::PolicyList]
                def policies
                    @policies ||= PolicyList.new self
                end
                ##
                # @param [String] id 
                # @return [Twilio::REST::Assistants::V1::SessionContext] if id was passed.
                # @return [Twilio::REST::Assistants::V1::SessionList]
                def sessions(id=:unset)
                    if id.nil?
                        raise ArgumentError, 'id cannot be nil'
                    end
                    if id == :unset
                        @sessions ||= SessionList.new self
                    else
                        SessionContext.new(self, id)
                    end
                end
                ##
                # @param [String] id 
                # @return [Twilio::REST::Assistants::V1::ToolContext] if id was passed.
                # @return [Twilio::REST::Assistants::V1::ToolList]
                def tools(id=:unset)
                    if id.nil?
                        raise ArgumentError, 'id cannot be nil'
                    end
                    if id == :unset
                        @tools ||= ToolList.new self
                    else
                        ToolContext.new(self, id)
                    end
                end
                ##
                # Provide a user friendly representation
                def to_s
                    '<Twilio::REST::Assistants::V1>';
                end
            end
        end
    end
end
