=begin
PureCloud Platform API

With the PureCloud Platform API, you can control all aspects of your PureCloud environment. With the APIs you can access the system configuration, manage conversations and more.

OpenAPI spec version: v2
Contact: DeveloperEvangelists@genesys.com
Generated by: https://github.com/swagger-api/swagger-codegen.git

License: ININ
http://www.inin.com

Terms of Service: https://developer.mypurecloud.com/tos

=end

require "uri"

module PureCloud
  class ArchitectApi
    attr_accessor :api_client

    def initialize(api_client = ApiClient.default)
      @api_client = api_client
    end

    # Delete an IVR Config.
    # 
    # @param ivr_id IVR id
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_architect_ivr(ivr_id, opts = {})
      delete_architect_ivr_with_http_info(ivr_id, opts)
      return nil
    end

    # Delete an IVR Config.
    # 
    # @param ivr_id IVR id
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_architect_ivr_with_http_info(ivr_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.delete_architect_ivr ..."
      end
      
      
      # verify the required parameter 'ivr_id' is set
      fail ArgumentError, "Missing the required parameter 'ivr_id' when calling ArchitectApi.delete_architect_ivr" if ivr_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/ivrs/{ivrId}".sub('{format}','json').sub('{' + 'ivrId' + '}', ivr_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#delete_architect_ivr\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete specified user prompt
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :all_resources Whether or not to delete all the prompt resources
    # @return [nil]
    def delete_architect_prompt(prompt_id, opts = {})
      delete_architect_prompt_with_http_info(prompt_id, opts)
      return nil
    end

    # Delete specified user prompt
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :all_resources Whether or not to delete all the prompt resources
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_architect_prompt_with_http_info(prompt_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.delete_architect_prompt ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.delete_architect_prompt" if prompt_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts/{promptId}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'allResources'] = opts[:'all_resources'] if opts[:'all_resources']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#delete_architect_prompt\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete specified user prompt resource
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_architect_prompt_resource(prompt_id, language_code, opts = {})
      delete_architect_prompt_resource_with_http_info(prompt_id, language_code, opts)
      return nil
    end

    # Delete specified user prompt resource
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_architect_prompt_resource_with_http_info(prompt_id, language_code, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.delete_architect_prompt_resource ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.delete_architect_prompt_resource" if prompt_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'language_code' is set
      fail ArgumentError, "Missing the required parameter 'language_code' when calling ArchitectApi.delete_architect_prompt_resource" if language_code.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts/{promptId}/resources/{languageCode}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s).sub('{' + 'languageCode' + '}', language_code.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#delete_architect_prompt_resource\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Batch-delete a list of prompts
    # Multiple IDs can be specified, in which case all specified prompts will be deleted.  Asynchronous.  Notification topic: v2.architect.prompts.{promptId}
    # @param id List of Prompt IDs
    # @param [Hash] opts the optional parameters
    # @return [Operation]
    def delete_architect_prompts(id, opts = {})
      data, _status_code, _headers = delete_architect_prompts_with_http_info(id, opts)
      return data
    end

    # Batch-delete a list of prompts
    # Multiple IDs can be specified, in which case all specified prompts will be deleted.  Asynchronous.  Notification topic: v2.architect.prompts.{promptId}
    # @param id List of Prompt IDs
    # @param [Hash] opts the optional parameters
    # @return [Array<(Operation, Fixnum, Hash)>] Operation data, response status code and response headers
    def delete_architect_prompts_with_http_info(id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.delete_architect_prompts ..."
      end
      
      
      # verify the required parameter 'id' is set
      fail ArgumentError, "Missing the required parameter 'id' when calling ArchitectApi.delete_architect_prompts" if id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'id'] = @api_client.build_collection_param(id, :multi)

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Operation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#delete_architect_prompts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete a schedule by id
    # 
    # @param schedule_id Schedule ID
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_architect_schedule(schedule_id, opts = {})
      delete_architect_schedule_with_http_info(schedule_id, opts)
      return nil
    end

    # Delete a schedule by id
    # 
    # @param schedule_id Schedule ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_architect_schedule_with_http_info(schedule_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.delete_architect_schedule ..."
      end
      
      
      # verify the required parameter 'schedule_id' is set
      fail ArgumentError, "Missing the required parameter 'schedule_id' when calling ArchitectApi.delete_architect_schedule" if schedule_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/schedules/{scheduleId}".sub('{format}','json').sub('{' + 'scheduleId' + '}', schedule_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#delete_architect_schedule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deletes a schedule group by ID
    # 
    # @param schedule_group_id Schedule group ID
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_architect_schedulegroup(schedule_group_id, opts = {})
      delete_architect_schedulegroup_with_http_info(schedule_group_id, opts)
      return nil
    end

    # Deletes a schedule group by ID
    # 
    # @param schedule_group_id Schedule group ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_architect_schedulegroup_with_http_info(schedule_group_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.delete_architect_schedulegroup ..."
      end
      
      
      # verify the required parameter 'schedule_group_id' is set
      fail ArgumentError, "Missing the required parameter 'schedule_group_id' when calling ArchitectApi.delete_architect_schedulegroup" if schedule_group_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/schedulegroups/{scheduleGroupId}".sub('{format}','json').sub('{' + 'scheduleGroupId' + '}', schedule_group_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#delete_architect_schedulegroup\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete a system prompt resource override.
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_architect_systemprompt_resource(prompt_id, language_code, opts = {})
      delete_architect_systemprompt_resource_with_http_info(prompt_id, language_code, opts)
      return nil
    end

    # Delete a system prompt resource override.
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_architect_systemprompt_resource_with_http_info(prompt_id, language_code, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.delete_architect_systemprompt_resource ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.delete_architect_systemprompt_resource" if prompt_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'language_code' is set
      fail ArgumentError, "Missing the required parameter 'language_code' when calling ArchitectApi.delete_architect_systemprompt_resource" if language_code.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/systemprompts/{promptId}/resources/{languageCode}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s).sub('{' + 'languageCode' + '}', language_code.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#delete_architect_systemprompt_resource\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete flow
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_flow(flow_id, opts = {})
      delete_flow_with_http_info(flow_id, opts)
      return nil
    end

    # Delete flow
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_flow_with_http_info(flow_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.delete_flow ..."
      end
      
      
      # verify the required parameter 'flow_id' is set
      fail ArgumentError, "Missing the required parameter 'flow_id' when calling ArchitectApi.delete_flow" if flow_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/{flowId}".sub('{format}','json').sub('{' + 'flowId' + '}', flow_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#delete_flow\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Batch-delete a list of flows
    # Multiple IDs can be specified, in which case all specified flows will be deleted.  Asynchronous.  Notification topic: v2.flows.{flowId}
    # @param id List of Flow IDs
    # @param [Hash] opts the optional parameters
    # @return [Operation]
    def delete_flows(id, opts = {})
      data, _status_code, _headers = delete_flows_with_http_info(id, opts)
      return data
    end

    # Batch-delete a list of flows
    # Multiple IDs can be specified, in which case all specified flows will be deleted.  Asynchronous.  Notification topic: v2.flows.{flowId}
    # @param id List of Flow IDs
    # @param [Hash] opts the optional parameters
    # @return [Array<(Operation, Fixnum, Hash)>] Operation data, response status code and response headers
    def delete_flows_with_http_info(id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.delete_flows ..."
      end
      
      
      # verify the required parameter 'id' is set
      fail ArgumentError, "Missing the required parameter 'id' when calling ArchitectApi.delete_flows" if id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'id'] = @api_client.build_collection_param(id, :multi)

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Operation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#delete_flows\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # deletes a specific datatable by id
    # deletes an entire datatable (including schema and data) with a given datatableId)
    # @param datatable_id id of datatable
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_flows_datatable(datatable_id, opts = {})
      delete_flows_datatable_with_http_info(datatable_id, opts)
      return nil
    end

    # deletes a specific datatable by id
    # deletes an entire datatable (including schema and data) with a given datatableId)
    # @param datatable_id id of datatable
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_flows_datatable_with_http_info(datatable_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.delete_flows_datatable ..."
      end
      
      
      # verify the required parameter 'datatable_id' is set
      fail ArgumentError, "Missing the required parameter 'datatable_id' when calling ArchitectApi.delete_flows_datatable" if datatable_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/datatables/{datatableId}".sub('{format}','json').sub('{' + 'datatableId' + '}', datatable_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#delete_flows_datatable\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete a row entry
    # Deletes a row with a given rowId.
    # @param datatable_id id of datatable
    # @param row_id the key for the row
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_flows_datatable_row(datatable_id, row_id, opts = {})
      delete_flows_datatable_row_with_http_info(datatable_id, row_id, opts)
      return nil
    end

    # Delete a row entry
    # Deletes a row with a given rowId.
    # @param datatable_id id of datatable
    # @param row_id the key for the row
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_flows_datatable_row_with_http_info(datatable_id, row_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.delete_flows_datatable_row ..."
      end
      
      
      # verify the required parameter 'datatable_id' is set
      fail ArgumentError, "Missing the required parameter 'datatable_id' when calling ArchitectApi.delete_flows_datatable_row" if datatable_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'row_id' is set
      fail ArgumentError, "Missing the required parameter 'row_id' when calling ArchitectApi.delete_flows_datatable_row" if row_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/datatables/{datatableId}/rows/{rowId}".sub('{format}','json').sub('{' + 'datatableId' + '}', datatable_id.to_s).sub('{' + 'rowId' + '}', row_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#delete_flows_datatable_row\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get Dependency Tracking objects that have a given display name
    # 
    # @param name Object name to search for
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [Array<String>] :object_type Object type(s) to search for
    # @option opts [BOOLEAN] :consumed_resources Include resources each result item consumes
    # @option opts [BOOLEAN] :consuming_resources Include resources that consume each result item
    # @option opts [Array<String>] :consumed_resource_type Types of consumed resources to return, if consumed resources are requested
    # @option opts [Array<String>] :consuming_resource_type Types of consuming resources to return, if consuming resources are requested
    # @return [DependencyObjectEntityListing]
    def get_architect_dependencytracking(name, opts = {})
      data, _status_code, _headers = get_architect_dependencytracking_with_http_info(name, opts)
      return data
    end

    # Get Dependency Tracking objects that have a given display name
    # 
    # @param name Object name to search for
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [Array<String>] :object_type Object type(s) to search for
    # @option opts [BOOLEAN] :consumed_resources Include resources each result item consumes
    # @option opts [BOOLEAN] :consuming_resources Include resources that consume each result item
    # @option opts [Array<String>] :consumed_resource_type Types of consumed resources to return, if consumed resources are requested
    # @option opts [Array<String>] :consuming_resource_type Types of consuming resources to return, if consuming resources are requested
    # @return [Array<(DependencyObjectEntityListing, Fixnum, Hash)>] DependencyObjectEntityListing data, response status code and response headers
    def get_architect_dependencytracking_with_http_info(name, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_dependencytracking ..."
      end
      
      
      # verify the required parameter 'name' is set
      fail ArgumentError, "Missing the required parameter 'name' when calling ArchitectApi.get_architect_dependencytracking" if name.nil?
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/dependencytracking".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'name'] = name
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'objectType'] = @api_client.build_collection_param(opts[:'object_type'], :multi) if opts[:'object_type']
      query_params[:'consumedResources'] = opts[:'consumed_resources'] if opts[:'consumed_resources']
      query_params[:'consumingResources'] = opts[:'consuming_resources'] if opts[:'consuming_resources']
      query_params[:'consumedResourceType'] = @api_client.build_collection_param(opts[:'consumed_resource_type'], :multi) if opts[:'consumed_resource_type']
      query_params[:'consumingResourceType'] = @api_client.build_collection_param(opts[:'consuming_resource_type'], :multi) if opts[:'consuming_resource_type']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'DependencyObjectEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_dependencytracking\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get Dependency Tracking build status for an organization
    # 
    # @param [Hash] opts the optional parameters
    # @return [DependencyStatus]
    def get_architect_dependencytracking_build(opts = {})
      data, _status_code, _headers = get_architect_dependencytracking_build_with_http_info(opts)
      return data
    end

    # Get Dependency Tracking build status for an organization
    # 
    # @param [Hash] opts the optional parameters
    # @return [Array<(DependencyStatus, Fixnum, Hash)>] DependencyStatus data, response status code and response headers
    def get_architect_dependencytracking_build_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_dependencytracking_build ..."
      end
      
      # resource path
      local_var_path = "/api/v2/architect/dependencytracking/build".sub('{format}','json')

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'DependencyStatus')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_dependencytracking_build\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get resources that are consumed by a given Dependency Tracking object
    # 
    # @param id Consuming object ID
    # @param version Consuming object version
    # @param object_type Consuming object type.  Only versioned types are allowed here.
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :resource_type Types of consumed resources to show
    # @return [ConsumedResourcesEntityListing]
    def get_architect_dependencytracking_consumedresources(id, version, object_type, opts = {})
      data, _status_code, _headers = get_architect_dependencytracking_consumedresources_with_http_info(id, version, object_type, opts)
      return data
    end

    # Get resources that are consumed by a given Dependency Tracking object
    # 
    # @param id Consuming object ID
    # @param version Consuming object version
    # @param object_type Consuming object type.  Only versioned types are allowed here.
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :resource_type Types of consumed resources to show
    # @return [Array<(ConsumedResourcesEntityListing, Fixnum, Hash)>] ConsumedResourcesEntityListing data, response status code and response headers
    def get_architect_dependencytracking_consumedresources_with_http_info(id, version, object_type, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_dependencytracking_consumedresources ..."
      end
      
      
      # verify the required parameter 'id' is set
      fail ArgumentError, "Missing the required parameter 'id' when calling ArchitectApi.get_architect_dependencytracking_consumedresources" if id.nil?
      
      
      
      
      
      
      # verify the required parameter 'version' is set
      fail ArgumentError, "Missing the required parameter 'version' when calling ArchitectApi.get_architect_dependencytracking_consumedresources" if version.nil?
      
      
      
      
      
      
      # verify the required parameter 'object_type' is set
      fail ArgumentError, "Missing the required parameter 'object_type' when calling ArchitectApi.get_architect_dependencytracking_consumedresources" if object_type.nil?
      
      # verify enum value
      unless ['ACDLANGUAGE', 'ACDSKILL', 'ACDWRAPUPCODE', 'BRIDGEACTION', 'COMPOSERSCRIPT', 'CONTACTLIST', 'DATAACTION', 'EMAILROUTE', 'EMERGENCYGROUP', 'GROUP', 'INBOUNDCALLFLOW', 'INBOUNDEMAILFLOW', 'INBOUNDSHORTMESSAGEFLOW', 'INQUEUECALLFLOW', 'IVRCONFIGURATION', 'LANGUAGE', 'LEXBOT', 'LEXBOTALIAS', 'OUTBOUNDCALLFLOW', 'QUEUE', 'RESPONSE', 'SCHEDULE', 'SCHEDULEGROUP', 'SECUREACTION', 'SECURECALLFLOW', 'SURVEYINVITEFLOW', 'SYSTEMPROMPT', 'USER', 'USERPROMPT', 'VOICEXML', 'WORKFLOW'].include?(object_type)
        fail ArgumentError, "invalid value for 'object_type', must be one of ACDLANGUAGE, ACDSKILL, ACDWRAPUPCODE, BRIDGEACTION, COMPOSERSCRIPT, CONTACTLIST, DATAACTION, EMAILROUTE, EMERGENCYGROUP, GROUP, INBOUNDCALLFLOW, INBOUNDEMAILFLOW, INBOUNDSHORTMESSAGEFLOW, INQUEUECALLFLOW, IVRCONFIGURATION, LANGUAGE, LEXBOT, LEXBOTALIAS, OUTBOUNDCALLFLOW, QUEUE, RESPONSE, SCHEDULE, SCHEDULEGROUP, SECUREACTION, SECURECALLFLOW, SURVEYINVITEFLOW, SYSTEMPROMPT, USER, USERPROMPT, VOICEXML, WORKFLOW"
      end
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/dependencytracking/consumedresources".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'id'] = id
      query_params[:'version'] = version
      query_params[:'objectType'] = object_type
      query_params[:'resourceType'] = @api_client.build_collection_param(opts[:'resource_type'], :multi) if opts[:'resource_type']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ConsumedResourcesEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_dependencytracking_consumedresources\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get resources that consume a given Dependency Tracking object
    # 
    # @param id Consumed object ID
    # @param object_type Consumed object type
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :resource_type Types of consuming resources to show.  Only versioned types are allowed here.
    # @return [ConsumingResourcesEntityListing]
    def get_architect_dependencytracking_consumingresources(id, object_type, opts = {})
      data, _status_code, _headers = get_architect_dependencytracking_consumingresources_with_http_info(id, object_type, opts)
      return data
    end

    # Get resources that consume a given Dependency Tracking object
    # 
    # @param id Consumed object ID
    # @param object_type Consumed object type
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :resource_type Types of consuming resources to show.  Only versioned types are allowed here.
    # @return [Array<(ConsumingResourcesEntityListing, Fixnum, Hash)>] ConsumingResourcesEntityListing data, response status code and response headers
    def get_architect_dependencytracking_consumingresources_with_http_info(id, object_type, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_dependencytracking_consumingresources ..."
      end
      
      
      # verify the required parameter 'id' is set
      fail ArgumentError, "Missing the required parameter 'id' when calling ArchitectApi.get_architect_dependencytracking_consumingresources" if id.nil?
      
      
      
      
      
      
      # verify the required parameter 'object_type' is set
      fail ArgumentError, "Missing the required parameter 'object_type' when calling ArchitectApi.get_architect_dependencytracking_consumingresources" if object_type.nil?
      
      # verify enum value
      unless ['ACDLANGUAGE', 'ACDSKILL', 'ACDWRAPUPCODE', 'BRIDGEACTION', 'COMPOSERSCRIPT', 'CONTACTLIST', 'DATAACTION', 'EMAILROUTE', 'EMERGENCYGROUP', 'GROUP', 'INBOUNDCALLFLOW', 'INBOUNDEMAILFLOW', 'INBOUNDSHORTMESSAGEFLOW', 'INQUEUECALLFLOW', 'IVRCONFIGURATION', 'LANGUAGE', 'LEXBOT', 'LEXBOTALIAS', 'OUTBOUNDCALLFLOW', 'QUEUE', 'RESPONSE', 'SCHEDULE', 'SCHEDULEGROUP', 'SECUREACTION', 'SECURECALLFLOW', 'SURVEYINVITEFLOW', 'SYSTEMPROMPT', 'USER', 'USERPROMPT', 'VOICEXML', 'WORKFLOW'].include?(object_type)
        fail ArgumentError, "invalid value for 'object_type', must be one of ACDLANGUAGE, ACDSKILL, ACDWRAPUPCODE, BRIDGEACTION, COMPOSERSCRIPT, CONTACTLIST, DATAACTION, EMAILROUTE, EMERGENCYGROUP, GROUP, INBOUNDCALLFLOW, INBOUNDEMAILFLOW, INBOUNDSHORTMESSAGEFLOW, INQUEUECALLFLOW, IVRCONFIGURATION, LANGUAGE, LEXBOT, LEXBOTALIAS, OUTBOUNDCALLFLOW, QUEUE, RESPONSE, SCHEDULE, SCHEDULEGROUP, SECUREACTION, SECURECALLFLOW, SURVEYINVITEFLOW, SYSTEMPROMPT, USER, USERPROMPT, VOICEXML, WORKFLOW"
      end
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/dependencytracking/consumingresources".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'id'] = id
      query_params[:'objectType'] = object_type
      query_params[:'resourceType'] = @api_client.build_collection_param(opts[:'resource_type'], :multi) if opts[:'resource_type']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ConsumingResourcesEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_dependencytracking_consumingresources\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get Dependency Tracking objects that consume deleted resources
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [String] :name Name to search for
    # @option opts [Array<String>] :object_type Object type(s) to search for
    # @option opts [String] :flow_filter Show only checkedIn or published flows
    # @option opts [BOOLEAN] :consumed_resources Return consumed resources? (default to false)
    # @option opts [Array<String>] :consumed_resource_type Resource type(s) to return
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @return [DependencyObjectEntityListing]
    def get_architect_dependencytracking_deletedresourceconsumers(opts = {})
      data, _status_code, _headers = get_architect_dependencytracking_deletedresourceconsumers_with_http_info(opts)
      return data
    end

    # Get Dependency Tracking objects that consume deleted resources
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [String] :name Name to search for
    # @option opts [Array<String>] :object_type Object type(s) to search for
    # @option opts [String] :flow_filter Show only checkedIn or published flows
    # @option opts [BOOLEAN] :consumed_resources Return consumed resources?
    # @option opts [Array<String>] :consumed_resource_type Resource type(s) to return
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @return [Array<(DependencyObjectEntityListing, Fixnum, Hash)>] DependencyObjectEntityListing data, response status code and response headers
    def get_architect_dependencytracking_deletedresourceconsumers_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_dependencytracking_deletedresourceconsumers ..."
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      if opts[:'flow_filter'] && !['checkedIn', 'published'].include?(opts[:'flow_filter'])
        fail ArgumentError, 'invalid value for "flow_filter", must be one of checkedIn, published'
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/dependencytracking/deletedresourceconsumers".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'name'] = opts[:'name'] if opts[:'name']
      query_params[:'objectType'] = @api_client.build_collection_param(opts[:'object_type'], :multi) if opts[:'object_type']
      query_params[:'flowFilter'] = opts[:'flow_filter'] if opts[:'flow_filter']
      query_params[:'consumedResources'] = opts[:'consumed_resources'] if opts[:'consumed_resources']
      query_params[:'consumedResourceType'] = @api_client.build_collection_param(opts[:'consumed_resource_type'], :multi) if opts[:'consumed_resource_type']
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'DependencyObjectEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_dependencytracking_deletedresourceconsumers\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a Dependency Tracking object
    # 
    # @param id Object ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :version Object version
    # @option opts [String] :object_type Object type
    # @option opts [BOOLEAN] :consumed_resources Include resources this item consumes
    # @option opts [BOOLEAN] :consuming_resources Include resources that consume this item
    # @option opts [Array<String>] :consumed_resource_type Types of consumed resources to return, if consumed resources are requested
    # @option opts [Array<String>] :consuming_resource_type Types of consuming resources to return, if consuming resources are requested
    # @return [DependencyObject]
    def get_architect_dependencytracking_object(id, opts = {})
      data, _status_code, _headers = get_architect_dependencytracking_object_with_http_info(id, opts)
      return data
    end

    # Get a Dependency Tracking object
    # 
    # @param id Object ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :version Object version
    # @option opts [String] :object_type Object type
    # @option opts [BOOLEAN] :consumed_resources Include resources this item consumes
    # @option opts [BOOLEAN] :consuming_resources Include resources that consume this item
    # @option opts [Array<String>] :consumed_resource_type Types of consumed resources to return, if consumed resources are requested
    # @option opts [Array<String>] :consuming_resource_type Types of consuming resources to return, if consuming resources are requested
    # @return [Array<(DependencyObject, Fixnum, Hash)>] DependencyObject data, response status code and response headers
    def get_architect_dependencytracking_object_with_http_info(id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_dependencytracking_object ..."
      end
      
      
      # verify the required parameter 'id' is set
      fail ArgumentError, "Missing the required parameter 'id' when calling ArchitectApi.get_architect_dependencytracking_object" if id.nil?
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      if opts[:'object_type'] && !['ACDLANGUAGE', 'ACDSKILL', 'ACDWRAPUPCODE', 'BRIDGEACTION', 'COMPOSERSCRIPT', 'CONTACTLIST', 'DATAACTION', 'EMAILROUTE', 'EMERGENCYGROUP', 'GROUP', 'INBOUNDCALLFLOW', 'INBOUNDEMAILFLOW', 'INBOUNDSHORTMESSAGEFLOW', 'INQUEUECALLFLOW', 'IVRCONFIGURATION', 'LANGUAGE', 'LEXBOT', 'LEXBOTALIAS', 'OUTBOUNDCALLFLOW', 'QUEUE', 'RESPONSE', 'SCHEDULE', 'SCHEDULEGROUP', 'SECUREACTION', 'SECURECALLFLOW', 'SURVEYINVITEFLOW', 'SYSTEMPROMPT', 'USER', 'USERPROMPT', 'VOICEXML', 'WORKFLOW'].include?(opts[:'object_type'])
        fail ArgumentError, 'invalid value for "object_type", must be one of ACDLANGUAGE, ACDSKILL, ACDWRAPUPCODE, BRIDGEACTION, COMPOSERSCRIPT, CONTACTLIST, DATAACTION, EMAILROUTE, EMERGENCYGROUP, GROUP, INBOUNDCALLFLOW, INBOUNDEMAILFLOW, INBOUNDSHORTMESSAGEFLOW, INQUEUECALLFLOW, IVRCONFIGURATION, LANGUAGE, LEXBOT, LEXBOTALIAS, OUTBOUNDCALLFLOW, QUEUE, RESPONSE, SCHEDULE, SCHEDULEGROUP, SECUREACTION, SECURECALLFLOW, SURVEYINVITEFLOW, SYSTEMPROMPT, USER, USERPROMPT, VOICEXML, WORKFLOW'
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/dependencytracking/object".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'id'] = id
      query_params[:'version'] = opts[:'version'] if opts[:'version']
      query_params[:'objectType'] = opts[:'object_type'] if opts[:'object_type']
      query_params[:'consumedResources'] = opts[:'consumed_resources'] if opts[:'consumed_resources']
      query_params[:'consumingResources'] = opts[:'consuming_resources'] if opts[:'consuming_resources']
      query_params[:'consumedResourceType'] = @api_client.build_collection_param(opts[:'consumed_resource_type'], :multi) if opts[:'consumed_resource_type']
      query_params[:'consumingResourceType'] = @api_client.build_collection_param(opts[:'consuming_resource_type'], :multi) if opts[:'consuming_resource_type']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'DependencyObject')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_dependencytracking_object\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a Dependency Tracking type.
    # 
    # @param type_id Type ID
    # @param [Hash] opts the optional parameters
    # @return [DependencyType]
    def get_architect_dependencytracking_type(type_id, opts = {})
      data, _status_code, _headers = get_architect_dependencytracking_type_with_http_info(type_id, opts)
      return data
    end

    # Get a Dependency Tracking type.
    # 
    # @param type_id Type ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(DependencyType, Fixnum, Hash)>] DependencyType data, response status code and response headers
    def get_architect_dependencytracking_type_with_http_info(type_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_dependencytracking_type ..."
      end
      
      
      # verify the required parameter 'type_id' is set
      fail ArgumentError, "Missing the required parameter 'type_id' when calling ArchitectApi.get_architect_dependencytracking_type" if type_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/dependencytracking/types/{typeId}".sub('{format}','json').sub('{' + 'typeId' + '}', type_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'DependencyType')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_dependencytracking_type\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get Dependency Tracking types.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @return [DependencyTypeEntityListing]
    def get_architect_dependencytracking_types(opts = {})
      data, _status_code, _headers = get_architect_dependencytracking_types_with_http_info(opts)
      return data
    end

    # Get Dependency Tracking types.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @return [Array<(DependencyTypeEntityListing, Fixnum, Hash)>] DependencyTypeEntityListing data, response status code and response headers
    def get_architect_dependencytracking_types_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_dependencytracking_types ..."
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/dependencytracking/types".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'DependencyTypeEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_dependencytracking_types\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get Dependency Tracking objects that depend on updated resources
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [String] :name Name to search for
    # @option opts [Array<String>] :object_type Object type(s) to search for
    # @option opts [BOOLEAN] :consumed_resources Return consumed resources? (default to false)
    # @option opts [Array<String>] :consumed_resource_type Resource type(s) to return
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @return [DependencyObjectEntityListing]
    def get_architect_dependencytracking_updatedresourceconsumers(opts = {})
      data, _status_code, _headers = get_architect_dependencytracking_updatedresourceconsumers_with_http_info(opts)
      return data
    end

    # Get Dependency Tracking objects that depend on updated resources
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [String] :name Name to search for
    # @option opts [Array<String>] :object_type Object type(s) to search for
    # @option opts [BOOLEAN] :consumed_resources Return consumed resources?
    # @option opts [Array<String>] :consumed_resource_type Resource type(s) to return
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @return [Array<(DependencyObjectEntityListing, Fixnum, Hash)>] DependencyObjectEntityListing data, response status code and response headers
    def get_architect_dependencytracking_updatedresourceconsumers_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_dependencytracking_updatedresourceconsumers ..."
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/dependencytracking/updatedresourceconsumers".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'name'] = opts[:'name'] if opts[:'name']
      query_params[:'objectType'] = @api_client.build_collection_param(opts[:'object_type'], :multi) if opts[:'object_type']
      query_params[:'consumedResources'] = opts[:'consumed_resources'] if opts[:'consumed_resources']
      query_params[:'consumedResourceType'] = @api_client.build_collection_param(opts[:'consumed_resource_type'], :multi) if opts[:'consumed_resource_type']
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'DependencyObjectEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_dependencytracking_updatedresourceconsumers\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get an IVR config.
    # 
    # @param ivr_id IVR id
    # @param [Hash] opts the optional parameters
    # @return [IVR]
    def get_architect_ivr(ivr_id, opts = {})
      data, _status_code, _headers = get_architect_ivr_with_http_info(ivr_id, opts)
      return data
    end

    # Get an IVR config.
    # 
    # @param ivr_id IVR id
    # @param [Hash] opts the optional parameters
    # @return [Array<(IVR, Fixnum, Hash)>] IVR data, response status code and response headers
    def get_architect_ivr_with_http_info(ivr_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_ivr ..."
      end
      
      
      # verify the required parameter 'ivr_id' is set
      fail ArgumentError, "Missing the required parameter 'ivr_id' when calling ArchitectApi.get_architect_ivr" if ivr_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/ivrs/{ivrId}".sub('{format}','json').sub('{' + 'ivrId' + '}', ivr_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'IVR')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_ivr\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get IVR configs.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [String] :sort_by Sort by (default to name)
    # @option opts [String] :sort_order Sort order (default to ASC)
    # @option opts [String] :name Name of the IVR to filter by.
    # @return [IVREntityListing]
    def get_architect_ivrs(opts = {})
      data, _status_code, _headers = get_architect_ivrs_with_http_info(opts)
      return data
    end

    # Get IVR configs.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [String] :sort_by Sort by
    # @option opts [String] :sort_order Sort order
    # @option opts [String] :name Name of the IVR to filter by.
    # @return [Array<(IVREntityListing, Fixnum, Hash)>] IVREntityListing data, response status code and response headers
    def get_architect_ivrs_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_ivrs ..."
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/ivrs".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'sortBy'] = opts[:'sort_by'] if opts[:'sort_by']
      query_params[:'sortOrder'] = opts[:'sort_order'] if opts[:'sort_order']
      query_params[:'name'] = opts[:'name'] if opts[:'name']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'IVREntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_ivrs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get specified user prompt
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @return [Prompt]
    def get_architect_prompt(prompt_id, opts = {})
      data, _status_code, _headers = get_architect_prompt_with_http_info(prompt_id, opts)
      return data
    end

    # Get specified user prompt
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(Prompt, Fixnum, Hash)>] Prompt data, response status code and response headers
    def get_architect_prompt_with_http_info(prompt_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_prompt ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.get_architect_prompt" if prompt_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts/{promptId}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Prompt')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_prompt\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get generated prompt history
    # 
    # @param prompt_id Prompt ID
    # @param history_id History request ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [String] :sort_order Sort order (default to desc)
    # @option opts [String] :sort_by Sort by (default to timestamp)
    # @option opts [Array<String>] :action Flow actions to include (omit to include all)
    # @return [HistoryListing]
    def get_architect_prompt_history_history_id(prompt_id, history_id, opts = {})
      data, _status_code, _headers = get_architect_prompt_history_history_id_with_http_info(prompt_id, history_id, opts)
      return data
    end

    # Get generated prompt history
    # 
    # @param prompt_id Prompt ID
    # @param history_id History request ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [String] :sort_order Sort order
    # @option opts [String] :sort_by Sort by
    # @option opts [Array<String>] :action Flow actions to include (omit to include all)
    # @return [Array<(HistoryListing, Fixnum, Hash)>] HistoryListing data, response status code and response headers
    def get_architect_prompt_history_history_id_with_http_info(prompt_id, history_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_prompt_history_history_id ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.get_architect_prompt_history_history_id" if prompt_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'history_id' is set
      fail ArgumentError, "Missing the required parameter 'history_id' when calling ArchitectApi.get_architect_prompt_history_history_id" if history_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      if opts[:'sort_by'] && !['action', 'timestamp', 'user'].include?(opts[:'sort_by'])
        fail ArgumentError, 'invalid value for "sort_by", must be one of action, timestamp, user'
      end
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts/{promptId}/history/{historyId}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s).sub('{' + 'historyId' + '}', history_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'sortOrder'] = opts[:'sort_order'] if opts[:'sort_order']
      query_params[:'sortBy'] = opts[:'sort_by'] if opts[:'sort_by']
      query_params[:'action'] = @api_client.build_collection_param(opts[:'action'], :multi) if opts[:'action']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'HistoryListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_prompt_history_history_id\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get specified user prompt resource
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @return [PromptAsset]
    def get_architect_prompt_resource(prompt_id, language_code, opts = {})
      data, _status_code, _headers = get_architect_prompt_resource_with_http_info(prompt_id, language_code, opts)
      return data
    end

    # Get specified user prompt resource
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @return [Array<(PromptAsset, Fixnum, Hash)>] PromptAsset data, response status code and response headers
    def get_architect_prompt_resource_with_http_info(prompt_id, language_code, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_prompt_resource ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.get_architect_prompt_resource" if prompt_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'language_code' is set
      fail ArgumentError, "Missing the required parameter 'language_code' when calling ArchitectApi.get_architect_prompt_resource" if language_code.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts/{promptId}/resources/{languageCode}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s).sub('{' + 'languageCode' + '}', language_code.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PromptAsset')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_prompt_resource\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a pageable list of user prompt resources
    # The returned list is pageable, and query parameters can be used for filtering.
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @return [PromptAssetEntityListing]
    def get_architect_prompt_resources(prompt_id, opts = {})
      data, _status_code, _headers = get_architect_prompt_resources_with_http_info(prompt_id, opts)
      return data
    end

    # Get a pageable list of user prompt resources
    # The returned list is pageable, and query parameters can be used for filtering.
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @return [Array<(PromptAssetEntityListing, Fixnum, Hash)>] PromptAssetEntityListing data, response status code and response headers
    def get_architect_prompt_resources_with_http_info(prompt_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_prompt_resources ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.get_architect_prompt_resources" if prompt_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts/{promptId}/resources".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PromptAssetEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_prompt_resources\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a pageable list of user prompts
    # The returned list is pageable, and query parameters can be used for filtering.  Multiple names can be specified, in which case all matching prompts will be returned, and no other filters will be evaluated.
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [String] :name Name
    # @option opts [String] :description Description
    # @option opts [String] :name_or_description Name or description
    # @option opts [String] :sort_by Sort by (default to id)
    # @option opts [String] :sort_order Sort order (default to asc)
    # @return [PromptEntityListing]
    def get_architect_prompts(opts = {})
      data, _status_code, _headers = get_architect_prompts_with_http_info(opts)
      return data
    end

    # Get a pageable list of user prompts
    # The returned list is pageable, and query parameters can be used for filtering.  Multiple names can be specified, in which case all matching prompts will be returned, and no other filters will be evaluated.
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [String] :name Name
    # @option opts [String] :description Description
    # @option opts [String] :name_or_description Name or description
    # @option opts [String] :sort_by Sort by
    # @option opts [String] :sort_order Sort order
    # @return [Array<(PromptEntityListing, Fixnum, Hash)>] PromptEntityListing data, response status code and response headers
    def get_architect_prompts_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_prompts ..."
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'name'] = opts[:'name'] if opts[:'name']
      query_params[:'description'] = opts[:'description'] if opts[:'description']
      query_params[:'nameOrDescription'] = opts[:'name_or_description'] if opts[:'name_or_description']
      query_params[:'sortBy'] = opts[:'sort_by'] if opts[:'sort_by']
      query_params[:'sortOrder'] = opts[:'sort_order'] if opts[:'sort_order']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PromptEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_prompts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a schedule by ID
    # 
    # @param schedule_id Schedule ID
    # @param [Hash] opts the optional parameters
    # @return [Schedule]
    def get_architect_schedule(schedule_id, opts = {})
      data, _status_code, _headers = get_architect_schedule_with_http_info(schedule_id, opts)
      return data
    end

    # Get a schedule by ID
    # 
    # @param schedule_id Schedule ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(Schedule, Fixnum, Hash)>] Schedule data, response status code and response headers
    def get_architect_schedule_with_http_info(schedule_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_schedule ..."
      end
      
      
      # verify the required parameter 'schedule_id' is set
      fail ArgumentError, "Missing the required parameter 'schedule_id' when calling ArchitectApi.get_architect_schedule" if schedule_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/schedules/{scheduleId}".sub('{format}','json').sub('{' + 'scheduleId' + '}', schedule_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Schedule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_schedule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets a schedule group by ID
    # 
    # @param schedule_group_id Schedule group ID
    # @param [Hash] opts the optional parameters
    # @return [ScheduleGroup]
    def get_architect_schedulegroup(schedule_group_id, opts = {})
      data, _status_code, _headers = get_architect_schedulegroup_with_http_info(schedule_group_id, opts)
      return data
    end

    # Gets a schedule group by ID
    # 
    # @param schedule_group_id Schedule group ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(ScheduleGroup, Fixnum, Hash)>] ScheduleGroup data, response status code and response headers
    def get_architect_schedulegroup_with_http_info(schedule_group_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_schedulegroup ..."
      end
      
      
      # verify the required parameter 'schedule_group_id' is set
      fail ArgumentError, "Missing the required parameter 'schedule_group_id' when calling ArchitectApi.get_architect_schedulegroup" if schedule_group_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/schedulegroups/{scheduleGroupId}".sub('{format}','json').sub('{' + 'scheduleGroupId' + '}', schedule_group_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ScheduleGroup')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_schedulegroup\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a list of schedule groups.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [String] :sort_by Sort by (default to name)
    # @option opts [String] :sort_order Sort order (default to ASC)
    # @option opts [String] :name Name of the Schedule Group to filter by.
    # @return [ScheduleGroupEntityListing]
    def get_architect_schedulegroups(opts = {})
      data, _status_code, _headers = get_architect_schedulegroups_with_http_info(opts)
      return data
    end

    # Get a list of schedule groups.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [String] :sort_by Sort by
    # @option opts [String] :sort_order Sort order
    # @option opts [String] :name Name of the Schedule Group to filter by.
    # @return [Array<(ScheduleGroupEntityListing, Fixnum, Hash)>] ScheduleGroupEntityListing data, response status code and response headers
    def get_architect_schedulegroups_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_schedulegroups ..."
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/schedulegroups".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'sortBy'] = opts[:'sort_by'] if opts[:'sort_by']
      query_params[:'sortOrder'] = opts[:'sort_order'] if opts[:'sort_order']
      query_params[:'name'] = opts[:'name'] if opts[:'name']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ScheduleGroupEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_schedulegroups\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a list of schedules.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [String] :sort_by Sort by (default to name)
    # @option opts [String] :sort_order Sort order (default to ASC)
    # @option opts [String] :name Name of the Schedule to filter by.
    # @return [ScheduleEntityListing]
    def get_architect_schedules(opts = {})
      data, _status_code, _headers = get_architect_schedules_with_http_info(opts)
      return data
    end

    # Get a list of schedules.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [String] :sort_by Sort by
    # @option opts [String] :sort_order Sort order
    # @option opts [String] :name Name of the Schedule to filter by.
    # @return [Array<(ScheduleEntityListing, Fixnum, Hash)>] ScheduleEntityListing data, response status code and response headers
    def get_architect_schedules_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_schedules ..."
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/schedules".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'sortBy'] = opts[:'sort_by'] if opts[:'sort_by']
      query_params[:'sortOrder'] = opts[:'sort_order'] if opts[:'sort_order']
      query_params[:'name'] = opts[:'name'] if opts[:'name']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ScheduleEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_schedules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a system prompt
    # 
    # @param prompt_id promptId
    # @param [Hash] opts the optional parameters
    # @return [SystemPrompt]
    def get_architect_systemprompt(prompt_id, opts = {})
      data, _status_code, _headers = get_architect_systemprompt_with_http_info(prompt_id, opts)
      return data
    end

    # Get a system prompt
    # 
    # @param prompt_id promptId
    # @param [Hash] opts the optional parameters
    # @return [Array<(SystemPrompt, Fixnum, Hash)>] SystemPrompt data, response status code and response headers
    def get_architect_systemprompt_with_http_info(prompt_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_systemprompt ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.get_architect_systemprompt" if prompt_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/systemprompts/{promptId}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'SystemPrompt')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_systemprompt\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get generated prompt history
    # 
    # @param prompt_id promptId
    # @param history_id History request ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [String] :sort_order Sort order (default to desc)
    # @option opts [String] :sort_by Sort by (default to timestamp)
    # @option opts [Array<String>] :action Flow actions to include (omit to include all)
    # @return [HistoryListing]
    def get_architect_systemprompt_history_history_id(prompt_id, history_id, opts = {})
      data, _status_code, _headers = get_architect_systemprompt_history_history_id_with_http_info(prompt_id, history_id, opts)
      return data
    end

    # Get generated prompt history
    # 
    # @param prompt_id promptId
    # @param history_id History request ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [String] :sort_order Sort order
    # @option opts [String] :sort_by Sort by
    # @option opts [Array<String>] :action Flow actions to include (omit to include all)
    # @return [Array<(HistoryListing, Fixnum, Hash)>] HistoryListing data, response status code and response headers
    def get_architect_systemprompt_history_history_id_with_http_info(prompt_id, history_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_systemprompt_history_history_id ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.get_architect_systemprompt_history_history_id" if prompt_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'history_id' is set
      fail ArgumentError, "Missing the required parameter 'history_id' when calling ArchitectApi.get_architect_systemprompt_history_history_id" if history_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      if opts[:'sort_by'] && !['action', 'timestamp', 'user'].include?(opts[:'sort_by'])
        fail ArgumentError, 'invalid value for "sort_by", must be one of action, timestamp, user'
      end
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/systemprompts/{promptId}/history/{historyId}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s).sub('{' + 'historyId' + '}', history_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'sortOrder'] = opts[:'sort_order'] if opts[:'sort_order']
      query_params[:'sortBy'] = opts[:'sort_by'] if opts[:'sort_by']
      query_params[:'action'] = @api_client.build_collection_param(opts[:'action'], :multi) if opts[:'action']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'HistoryListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_systemprompt_history_history_id\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a system prompt resource.
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @return [SystemPromptAsset]
    def get_architect_systemprompt_resource(prompt_id, language_code, opts = {})
      data, _status_code, _headers = get_architect_systemprompt_resource_with_http_info(prompt_id, language_code, opts)
      return data
    end

    # Get a system prompt resource.
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @return [Array<(SystemPromptAsset, Fixnum, Hash)>] SystemPromptAsset data, response status code and response headers
    def get_architect_systemprompt_resource_with_http_info(prompt_id, language_code, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_systemprompt_resource ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.get_architect_systemprompt_resource" if prompt_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'language_code' is set
      fail ArgumentError, "Missing the required parameter 'language_code' when calling ArchitectApi.get_architect_systemprompt_resource" if language_code.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/systemprompts/{promptId}/resources/{languageCode}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s).sub('{' + 'languageCode' + '}', language_code.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'SystemPromptAsset')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_systemprompt_resource\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get system prompt resources.
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [String] :sort_by Sort by (default to id)
    # @option opts [String] :sort_order Sort order (default to asc)
    # @return [SystemPromptAssetEntityListing]
    def get_architect_systemprompt_resources(prompt_id, opts = {})
      data, _status_code, _headers = get_architect_systemprompt_resources_with_http_info(prompt_id, opts)
      return data
    end

    # Get system prompt resources.
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [String] :sort_by Sort by
    # @option opts [String] :sort_order Sort order
    # @return [Array<(SystemPromptAssetEntityListing, Fixnum, Hash)>] SystemPromptAssetEntityListing data, response status code and response headers
    def get_architect_systemprompt_resources_with_http_info(prompt_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_systemprompt_resources ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.get_architect_systemprompt_resources" if prompt_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/systemprompts/{promptId}/resources".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'sortBy'] = opts[:'sort_by'] if opts[:'sort_by']
      query_params[:'sortOrder'] = opts[:'sort_order'] if opts[:'sort_order']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'SystemPromptAssetEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_systemprompt_resources\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get System Prompts
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [String] :sort_by Sort by (default to id)
    # @option opts [String] :sort_order Sort order (default to asc)
    # @option opts [String] :name Name
    # @option opts [String] :description Description
    # @option opts [String] :name_or_description Name or description
    # @return [SystemPromptEntityListing]
    def get_architect_systemprompts(opts = {})
      data, _status_code, _headers = get_architect_systemprompts_with_http_info(opts)
      return data
    end

    # Get System Prompts
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [String] :sort_by Sort by
    # @option opts [String] :sort_order Sort order
    # @option opts [String] :name Name
    # @option opts [String] :description Description
    # @option opts [String] :name_or_description Name or description
    # @return [Array<(SystemPromptEntityListing, Fixnum, Hash)>] SystemPromptEntityListing data, response status code and response headers
    def get_architect_systemprompts_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_architect_systemprompts ..."
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/systemprompts".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'sortBy'] = opts[:'sort_by'] if opts[:'sort_by']
      query_params[:'sortOrder'] = opts[:'sort_order'] if opts[:'sort_order']
      query_params[:'name'] = opts[:'name'] if opts[:'name']
      query_params[:'description'] = opts[:'description'] if opts[:'description']
      query_params[:'nameOrDescription'] = opts[:'name_or_description'] if opts[:'name_or_description']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'SystemPromptEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_architect_systemprompts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get flow
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :deleted Include deleted flows (default to false)
    # @return [Flow]
    def get_flow(flow_id, opts = {})
      data, _status_code, _headers = get_flow_with_http_info(flow_id, opts)
      return data
    end

    # Get flow
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :deleted Include deleted flows
    # @return [Array<(Flow, Fixnum, Hash)>] Flow data, response status code and response headers
    def get_flow_with_http_info(flow_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_flow ..."
      end
      
      
      # verify the required parameter 'flow_id' is set
      fail ArgumentError, "Missing the required parameter 'flow_id' when calling ArchitectApi.get_flow" if flow_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/{flowId}".sub('{format}','json').sub('{' + 'flowId' + '}', flow_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'deleted'] = opts[:'deleted'] if opts[:'deleted']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Flow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_flow\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get generated flow history
    # 
    # @param flow_id Flow ID
    # @param history_id History request ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [String] :sort_order Sort order (default to desc)
    # @option opts [String] :sort_by Sort by (default to timestamp)
    # @option opts [Array<String>] :action Flow actions to include (omit to include all)
    # @return [HistoryListing]
    def get_flow_history_history_id(flow_id, history_id, opts = {})
      data, _status_code, _headers = get_flow_history_history_id_with_http_info(flow_id, history_id, opts)
      return data
    end

    # Get generated flow history
    # 
    # @param flow_id Flow ID
    # @param history_id History request ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [String] :sort_order Sort order
    # @option opts [String] :sort_by Sort by
    # @option opts [Array<String>] :action Flow actions to include (omit to include all)
    # @return [Array<(HistoryListing, Fixnum, Hash)>] HistoryListing data, response status code and response headers
    def get_flow_history_history_id_with_http_info(flow_id, history_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_flow_history_history_id ..."
      end
      
      
      # verify the required parameter 'flow_id' is set
      fail ArgumentError, "Missing the required parameter 'flow_id' when calling ArchitectApi.get_flow_history_history_id" if flow_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'history_id' is set
      fail ArgumentError, "Missing the required parameter 'history_id' when calling ArchitectApi.get_flow_history_history_id" if history_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      if opts[:'sort_by'] && !['action', 'timestamp', 'user'].include?(opts[:'sort_by'])
        fail ArgumentError, 'invalid value for "sort_by", must be one of action, timestamp, user'
      end
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/{flowId}/history/{historyId}".sub('{format}','json').sub('{' + 'flowId' + '}', flow_id.to_s).sub('{' + 'historyId' + '}', history_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'sortOrder'] = opts[:'sort_order'] if opts[:'sort_order']
      query_params[:'sortBy'] = opts[:'sort_by'] if opts[:'sort_by']
      query_params[:'action'] = @api_client.build_collection_param(opts[:'action'], :multi) if opts[:'action']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'HistoryListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_flow_history_history_id\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get the latest configuration for flow
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :deleted Include deleted flows (default to false)
    # @return [Object]
    def get_flow_latestconfiguration(flow_id, opts = {})
      data, _status_code, _headers = get_flow_latestconfiguration_with_http_info(flow_id, opts)
      return data
    end

    # Get the latest configuration for flow
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :deleted Include deleted flows
    # @return [Array<(Object, Fixnum, Hash)>] Object data, response status code and response headers
    def get_flow_latestconfiguration_with_http_info(flow_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_flow_latestconfiguration ..."
      end
      
      
      # verify the required parameter 'flow_id' is set
      fail ArgumentError, "Missing the required parameter 'flow_id' when calling ArchitectApi.get_flow_latestconfiguration" if flow_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/{flowId}/latestconfiguration".sub('{format}','json').sub('{' + 'flowId' + '}', flow_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'deleted'] = opts[:'deleted'] if opts[:'deleted']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Object')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_flow_latestconfiguration\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get flow version
    # 
    # @param flow_id Flow ID
    # @param version_id Version ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :deleted Include deleted flows
    # @return [FlowVersion]
    def get_flow_version(flow_id, version_id, opts = {})
      data, _status_code, _headers = get_flow_version_with_http_info(flow_id, version_id, opts)
      return data
    end

    # Get flow version
    # 
    # @param flow_id Flow ID
    # @param version_id Version ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :deleted Include deleted flows
    # @return [Array<(FlowVersion, Fixnum, Hash)>] FlowVersion data, response status code and response headers
    def get_flow_version_with_http_info(flow_id, version_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_flow_version ..."
      end
      
      
      # verify the required parameter 'flow_id' is set
      fail ArgumentError, "Missing the required parameter 'flow_id' when calling ArchitectApi.get_flow_version" if flow_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'version_id' is set
      fail ArgumentError, "Missing the required parameter 'version_id' when calling ArchitectApi.get_flow_version" if version_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/{flowId}/versions/{versionId}".sub('{format}','json').sub('{' + 'flowId' + '}', flow_id.to_s).sub('{' + 'versionId' + '}', version_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'deleted'] = opts[:'deleted'] if opts[:'deleted']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'FlowVersion')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_flow_version\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create flow version configuration
    # 
    # @param flow_id Flow ID
    # @param version_id Version ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :deleted Include deleted flows
    # @return [Object]
    def get_flow_version_configuration(flow_id, version_id, opts = {})
      data, _status_code, _headers = get_flow_version_configuration_with_http_info(flow_id, version_id, opts)
      return data
    end

    # Create flow version configuration
    # 
    # @param flow_id Flow ID
    # @param version_id Version ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :deleted Include deleted flows
    # @return [Array<(Object, Fixnum, Hash)>] Object data, response status code and response headers
    def get_flow_version_configuration_with_http_info(flow_id, version_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_flow_version_configuration ..."
      end
      
      
      # verify the required parameter 'flow_id' is set
      fail ArgumentError, "Missing the required parameter 'flow_id' when calling ArchitectApi.get_flow_version_configuration" if flow_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'version_id' is set
      fail ArgumentError, "Missing the required parameter 'version_id' when calling ArchitectApi.get_flow_version_configuration" if version_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/{flowId}/versions/{versionId}/configuration".sub('{format}','json').sub('{' + 'flowId' + '}', flow_id.to_s).sub('{' + 'versionId' + '}', version_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'deleted'] = opts[:'deleted'] if opts[:'deleted']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Object')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_flow_version_configuration\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get flow version list
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [BOOLEAN] :deleted Include deleted flows
    # @return [FlowVersionEntityListing]
    def get_flow_versions(flow_id, opts = {})
      data, _status_code, _headers = get_flow_versions_with_http_info(flow_id, opts)
      return data
    end

    # Get flow version list
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [BOOLEAN] :deleted Include deleted flows
    # @return [Array<(FlowVersionEntityListing, Fixnum, Hash)>] FlowVersionEntityListing data, response status code and response headers
    def get_flow_versions_with_http_info(flow_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_flow_versions ..."
      end
      
      
      # verify the required parameter 'flow_id' is set
      fail ArgumentError, "Missing the required parameter 'flow_id' when calling ArchitectApi.get_flow_versions" if flow_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/{flowId}/versions".sub('{format}','json').sub('{' + 'flowId' + '}', flow_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'deleted'] = opts[:'deleted'] if opts[:'deleted']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'FlowVersionEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_flow_versions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a pageable list of flows, filtered by query parameters
    # Multiple IDs can be specified, in which case all matching flows will be returned, and no other parameters will be evaluated.
    # @param type Type
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number (default to 1)
    # @option opts [Integer] :page_size Page size (default to 25)
    # @option opts [String] :sort_by Sort by (default to id)
    # @option opts [String] :sort_order Sort order (default to asc)
    # @option opts [Array<String>] :id ID
    # @option opts [String] :name Name
    # @option opts [String] :description Description
    # @option opts [String] :name_or_description Name or description
    # @option opts [String] :publish_version_id Publish version ID
    # @option opts [String] :editable_by Editable by
    # @option opts [String] :locked_by Locked by
    # @option opts [String] :secure Secure
    # @option opts [BOOLEAN] :deleted Include deleted (default to false)
    # @option opts [BOOLEAN] :include_schemas Include variable schemas (default to false)
    # @option opts [String] :published_after Published after
    # @option opts [String] :published_before Published before
    # @return [FlowEntityListing]
    def get_flows(type, opts = {})
      data, _status_code, _headers = get_flows_with_http_info(type, opts)
      return data
    end

    # Get a pageable list of flows, filtered by query parameters
    # Multiple IDs can be specified, in which case all matching flows will be returned, and no other parameters will be evaluated.
    # @param type Type
    # @param [Hash] opts the optional parameters
    # @option opts [Integer] :page_number Page number
    # @option opts [Integer] :page_size Page size
    # @option opts [String] :sort_by Sort by
    # @option opts [String] :sort_order Sort order
    # @option opts [Array<String>] :id ID
    # @option opts [String] :name Name
    # @option opts [String] :description Description
    # @option opts [String] :name_or_description Name or description
    # @option opts [String] :publish_version_id Publish version ID
    # @option opts [String] :editable_by Editable by
    # @option opts [String] :locked_by Locked by
    # @option opts [String] :secure Secure
    # @option opts [BOOLEAN] :deleted Include deleted
    # @option opts [BOOLEAN] :include_schemas Include variable schemas
    # @option opts [String] :published_after Published after
    # @option opts [String] :published_before Published before
    # @return [Array<(FlowEntityListing, Fixnum, Hash)>] FlowEntityListing data, response status code and response headers
    def get_flows_with_http_info(type, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_flows ..."
      end
      
      
      # verify the required parameter 'type' is set
      fail ArgumentError, "Missing the required parameter 'type' when calling ArchitectApi.get_flows" if type.nil?
      
      # verify enum value
      unless ['inboundcall', 'inboundemail', 'inboundshortmessage', 'outboundcall', 'inqueuecall', 'speech', 'securecall', 'surveyinvite', 'workflow'].include?(type)
        fail ArgumentError, "invalid value for 'type', must be one of inboundcall, inboundemail, inboundshortmessage, outboundcall, inqueuecall, speech, securecall, surveyinvite, workflow"
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      if opts[:'secure'] && !['any', 'checkedin', 'published'].include?(opts[:'secure'])
        fail ArgumentError, 'invalid value for "secure", must be one of any, checkedin, published'
      end
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'type'] = type
      query_params[:'pageNumber'] = opts[:'page_number'] if opts[:'page_number']
      query_params[:'pageSize'] = opts[:'page_size'] if opts[:'page_size']
      query_params[:'sortBy'] = opts[:'sort_by'] if opts[:'sort_by']
      query_params[:'sortOrder'] = opts[:'sort_order'] if opts[:'sort_order']
      query_params[:'id'] = @api_client.build_collection_param(opts[:'id'], :multi) if opts[:'id']
      query_params[:'name'] = opts[:'name'] if opts[:'name']
      query_params[:'description'] = opts[:'description'] if opts[:'description']
      query_params[:'nameOrDescription'] = opts[:'name_or_description'] if opts[:'name_or_description']
      query_params[:'publishVersionId'] = opts[:'publish_version_id'] if opts[:'publish_version_id']
      query_params[:'editableBy'] = opts[:'editable_by'] if opts[:'editable_by']
      query_params[:'lockedBy'] = opts[:'locked_by'] if opts[:'locked_by']
      query_params[:'secure'] = opts[:'secure'] if opts[:'secure']
      query_params[:'deleted'] = opts[:'deleted'] if opts[:'deleted']
      query_params[:'includeSchemas'] = opts[:'include_schemas'] if opts[:'include_schemas']
      query_params[:'publishedAfter'] = opts[:'published_after'] if opts[:'published_after']
      query_params[:'publishedBefore'] = opts[:'published_before'] if opts[:'published_before']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'FlowEntityListing')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_flows\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a specific datatable by datatableId
    # Given a datableid returns the schema associated with it.
    # @param datatable_id id of datatable
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :showbrief If true returns a shortened version of the schema including the name, id and description] (default to true)
    # @return [JsonSchemaDocument]
    def get_flows_datatable(datatable_id, opts = {})
      data, _status_code, _headers = get_flows_datatable_with_http_info(datatable_id, opts)
      return data
    end

    # Returns a specific datatable by datatableId
    # Given a datableid returns the schema associated with it.
    # @param datatable_id id of datatable
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :showbrief If true returns a shortened version of the schema including the name, id and description]
    # @return [Array<(JsonSchemaDocument, Fixnum, Hash)>] JsonSchemaDocument data, response status code and response headers
    def get_flows_datatable_with_http_info(datatable_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_flows_datatable ..."
      end
      
      
      # verify the required parameter 'datatable_id' is set
      fail ArgumentError, "Missing the required parameter 'datatable_id' when calling ArchitectApi.get_flows_datatable" if datatable_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/datatables/{datatableId}".sub('{format}','json').sub('{' + 'datatableId' + '}', datatable_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'showbrief'] = opts[:'showbrief'] if opts[:'showbrief']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'JsonSchemaDocument')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_flows_datatable\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns a specific row for the datatable
    # Given a datatable id and a rowId (key)  will return the full row contents for that rowId.
    # @param datatable_id id of datatable
    # @param row_id The key for the row
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :showbrief if true returns just the key field for the row (default to true)
    # @return [Hash<String, Object>]
    def get_flows_datatable_row(datatable_id, row_id, opts = {})
      data, _status_code, _headers = get_flows_datatable_row_with_http_info(datatable_id, row_id, opts)
      return data
    end

    # Returns a specific row for the datatable
    # Given a datatable id and a rowId (key)  will return the full row contents for that rowId.
    # @param datatable_id id of datatable
    # @param row_id The key for the row
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :showbrief if true returns just the key field for the row
    # @return [Array<(Hash<String, Object>, Fixnum, Hash)>] Hash<String, Object> data, response status code and response headers
    def get_flows_datatable_row_with_http_info(datatable_id, row_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_flows_datatable_row ..."
      end
      
      
      # verify the required parameter 'datatable_id' is set
      fail ArgumentError, "Missing the required parameter 'datatable_id' when calling ArchitectApi.get_flows_datatable_row" if datatable_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'row_id' is set
      fail ArgumentError, "Missing the required parameter 'row_id' when calling ArchitectApi.get_flows_datatable_row" if row_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/datatables/{datatableId}/rows/{rowId}".sub('{format}','json').sub('{' + 'datatableId' + '}', datatable_id.to_s).sub('{' + 'rowId' + '}', row_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'showbrief'] = opts[:'showbrief'] if opts[:'showbrief']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Hash<String, Object>')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_flows_datatable_row\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Returns the rows for the datatable
    # Returns all of the rows for the datatable with the given id.  By default this will just be a shortened list returning the key for each row.  Set expand to all to return all of the row contents.
    # @param datatable_id id of datatable
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :showbrief If true returns just the key value of the row (default to true)
    # @return [Array<Hash<String, Object>>]
    def get_flows_datatable_rows(datatable_id, opts = {})
      data, _status_code, _headers = get_flows_datatable_rows_with_http_info(datatable_id, opts)
      return data
    end

    # Returns the rows for the datatable
    # Returns all of the rows for the datatable with the given id.  By default this will just be a shortened list returning the key for each row.  Set expand to all to return all of the row contents.
    # @param datatable_id id of datatable
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :showbrief If true returns just the key value of the row
    # @return [Array<(Array<Hash<String, Object>>, Fixnum, Hash)>] Array<Hash<String, Object>> data, response status code and response headers
    def get_flows_datatable_rows_with_http_info(datatable_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_flows_datatable_rows ..."
      end
      
      
      # verify the required parameter 'datatable_id' is set
      fail ArgumentError, "Missing the required parameter 'datatable_id' when calling ArchitectApi.get_flows_datatable_rows" if datatable_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/datatables/{datatableId}/rows".sub('{format}','json').sub('{' + 'datatableId' + '}', datatable_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'showbrief'] = opts[:'showbrief'] if opts[:'showbrief']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Array<Hash<String, Object>>')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_flows_datatable_rows\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Retrieve a list of datatables for the org
    # Returns a metadata list of the datatables associated with this org, including ID, name and description.
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :showbrief If true, returns a shortened version of the schema including the name, id and description (default to true)
    # @return [Array<JsonSchemaDocument>]
    def get_flows_datatables(opts = {})
      data, _status_code, _headers = get_flows_datatables_with_http_info(opts)
      return data
    end

    # Retrieve a list of datatables for the org
    # Returns a metadata list of the datatables associated with this org, including ID, name and description.
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :showbrief If true, returns a shortened version of the schema including the name, id and description
    # @return [Array<(Array<JsonSchemaDocument>, Fixnum, Hash)>] Array<JsonSchemaDocument> data, response status code and response headers
    def get_flows_datatables_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.get_flows_datatables ..."
      end
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/datatables".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'showbrief'] = opts[:'showbrief'] if opts[:'showbrief']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:GET, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Array<JsonSchemaDocument>')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#get_flows_datatables\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Rebuild Dependency Tracking data for an organization
    # Asynchronous.  Notification topic: v2.architect.dependencytracking.build
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def post_architect_dependencytracking_build(opts = {})
      post_architect_dependencytracking_build_with_http_info(opts)
      return nil
    end

    # Rebuild Dependency Tracking data for an organization
    # Asynchronous.  Notification topic: v2.architect.dependencytracking.build
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def post_architect_dependencytracking_build_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_architect_dependencytracking_build ..."
      end
      
      # resource path
      local_var_path = "/api/v2/architect/dependencytracking/build".sub('{format}','json')

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_architect_dependencytracking_build\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create IVR config.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [IVR] :body 
    # @return [IVR]
    def post_architect_ivrs(opts = {})
      data, _status_code, _headers = post_architect_ivrs_with_http_info(opts)
      return data
    end

    # Create IVR config.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [IVR] :body 
    # @return [Array<(IVR, Fixnum, Hash)>] IVR data, response status code and response headers
    def post_architect_ivrs_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_architect_ivrs ..."
      end
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/ivrs".sub('{format}','json')

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'IVR')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_architect_ivrs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Generate prompt history
    # Asynchronous.  Notification topic: v2.architect.prompts.{promptId}
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @return [Operation]
    def post_architect_prompt_history(prompt_id, opts = {})
      data, _status_code, _headers = post_architect_prompt_history_with_http_info(prompt_id, opts)
      return data
    end

    # Generate prompt history
    # Asynchronous.  Notification topic: v2.architect.prompts.{promptId}
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(Operation, Fixnum, Hash)>] Operation data, response status code and response headers
    def post_architect_prompt_history_with_http_info(prompt_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_architect_prompt_history ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.post_architect_prompt_history" if prompt_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts/{promptId}/history".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Operation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_architect_prompt_history\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create a new user prompt resource
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [PromptAssetCreate] :body 
    # @return [PromptAsset]
    def post_architect_prompt_resources(prompt_id, opts = {})
      data, _status_code, _headers = post_architect_prompt_resources_with_http_info(prompt_id, opts)
      return data
    end

    # Create a new user prompt resource
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [PromptAssetCreate] :body 
    # @return [Array<(PromptAsset, Fixnum, Hash)>] PromptAsset data, response status code and response headers
    def post_architect_prompt_resources_with_http_info(prompt_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_architect_prompt_resources ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.post_architect_prompt_resources" if prompt_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts/{promptId}/resources".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PromptAsset')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_architect_prompt_resources\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create a new user prompt
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Prompt] :body 
    # @return [Prompt]
    def post_architect_prompts(opts = {})
      data, _status_code, _headers = post_architect_prompts_with_http_info(opts)
      return data
    end

    # Create a new user prompt
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Prompt] :body 
    # @return [Array<(Prompt, Fixnum, Hash)>] Prompt data, response status code and response headers
    def post_architect_prompts_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_architect_prompts ..."
      end
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts".sub('{format}','json')

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Prompt')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_architect_prompts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Creates a new schedule group
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [ScheduleGroup] :body 
    # @return [ScheduleGroup]
    def post_architect_schedulegroups(opts = {})
      data, _status_code, _headers = post_architect_schedulegroups_with_http_info(opts)
      return data
    end

    # Creates a new schedule group
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [ScheduleGroup] :body 
    # @return [Array<(ScheduleGroup, Fixnum, Hash)>] ScheduleGroup data, response status code and response headers
    def post_architect_schedulegroups_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_architect_schedulegroups ..."
      end
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/schedulegroups".sub('{format}','json')

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ScheduleGroup')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_architect_schedulegroups\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create a new schedule.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Schedule] :body 
    # @return [Schedule]
    def post_architect_schedules(opts = {})
      data, _status_code, _headers = post_architect_schedules_with_http_info(opts)
      return data
    end

    # Create a new schedule.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Schedule] :body 
    # @return [Array<(Schedule, Fixnum, Hash)>] Schedule data, response status code and response headers
    def post_architect_schedules_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_architect_schedules ..."
      end
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/schedules".sub('{format}','json')

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Schedule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_architect_schedules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Generate system prompt history
    # Asynchronous.  Notification topic: v2.architect.systemprompts.{systemPromptId}
    # @param prompt_id promptId
    # @param [Hash] opts the optional parameters
    # @return [Operation]
    def post_architect_systemprompt_history(prompt_id, opts = {})
      data, _status_code, _headers = post_architect_systemprompt_history_with_http_info(prompt_id, opts)
      return data
    end

    # Generate system prompt history
    # Asynchronous.  Notification topic: v2.architect.systemprompts.{systemPromptId}
    # @param prompt_id promptId
    # @param [Hash] opts the optional parameters
    # @return [Array<(Operation, Fixnum, Hash)>] Operation data, response status code and response headers
    def post_architect_systemprompt_history_with_http_info(prompt_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_architect_systemprompt_history ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.post_architect_systemprompt_history" if prompt_id.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/systemprompts/{promptId}/history".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Operation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_architect_systemprompt_history\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create system prompt resource override.
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [SystemPromptAsset] :body 
    # @return [SystemPromptAsset]
    def post_architect_systemprompt_resources(prompt_id, opts = {})
      data, _status_code, _headers = post_architect_systemprompt_resources_with_http_info(prompt_id, opts)
      return data
    end

    # Create system prompt resource override.
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [SystemPromptAsset] :body 
    # @return [Array<(SystemPromptAsset, Fixnum, Hash)>] SystemPromptAsset data, response status code and response headers
    def post_architect_systemprompt_resources_with_http_info(prompt_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_architect_systemprompt_resources ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.post_architect_systemprompt_resources" if prompt_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/systemprompts/{promptId}/resources".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'SystemPromptAsset')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_architect_systemprompt_resources\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create flow version
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [Object] :body 
    # @return [FlowVersion]
    def post_flow_versions(flow_id, opts = {})
      data, _status_code, _headers = post_flow_versions_with_http_info(flow_id, opts)
      return data
    end

    # Create flow version
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [Object] :body 
    # @return [Array<(FlowVersion, Fixnum, Hash)>] FlowVersion data, response status code and response headers
    def post_flow_versions_with_http_info(flow_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_flow_versions ..."
      end
      
      
      # verify the required parameter 'flow_id' is set
      fail ArgumentError, "Missing the required parameter 'flow_id' when calling ArchitectApi.post_flow_versions" if flow_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/{flowId}/versions".sub('{format}','json').sub('{' + 'flowId' + '}', flow_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'FlowVersion')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_flow_versions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create flow
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Flow] :body 
    # @return [Flow]
    def post_flows(opts = {})
      data, _status_code, _headers = post_flows_with_http_info(opts)
      return data
    end

    # Create flow
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Flow] :body 
    # @return [Array<(Flow, Fixnum, Hash)>] Flow data, response status code and response headers
    def post_flows_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_flows ..."
      end
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows".sub('{format}','json')

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Flow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_flows\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Check-in flow
    # Asynchronous.  Notification topic: v2.flows.{flowId}
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @return [Flow]
    def post_flows_actions_checkin(flow, opts = {})
      data, _status_code, _headers = post_flows_actions_checkin_with_http_info(flow, opts)
      return data
    end

    # Check-in flow
    # Asynchronous.  Notification topic: v2.flows.{flowId}
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(Flow, Fixnum, Hash)>] Flow data, response status code and response headers
    def post_flows_actions_checkin_with_http_info(flow, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_flows_actions_checkin ..."
      end
      
      
      # verify the required parameter 'flow' is set
      fail ArgumentError, "Missing the required parameter 'flow' when calling ArchitectApi.post_flows_actions_checkin" if flow.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/actions/checkin".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'flow'] = flow

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Flow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_flows_actions_checkin\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Check-out flow
    # 
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @return [Flow]
    def post_flows_actions_checkout(flow, opts = {})
      data, _status_code, _headers = post_flows_actions_checkout_with_http_info(flow, opts)
      return data
    end

    # Check-out flow
    # 
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(Flow, Fixnum, Hash)>] Flow data, response status code and response headers
    def post_flows_actions_checkout_with_http_info(flow, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_flows_actions_checkout ..."
      end
      
      
      # verify the required parameter 'flow' is set
      fail ArgumentError, "Missing the required parameter 'flow' when calling ArchitectApi.post_flows_actions_checkout" if flow.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/actions/checkout".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'flow'] = flow

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Flow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_flows_actions_checkout\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Deactivate flow
    # 
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @return [Flow]
    def post_flows_actions_deactivate(flow, opts = {})
      data, _status_code, _headers = post_flows_actions_deactivate_with_http_info(flow, opts)
      return data
    end

    # Deactivate flow
    # 
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(Flow, Fixnum, Hash)>] Flow data, response status code and response headers
    def post_flows_actions_deactivate_with_http_info(flow, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_flows_actions_deactivate ..."
      end
      
      
      # verify the required parameter 'flow' is set
      fail ArgumentError, "Missing the required parameter 'flow' when calling ArchitectApi.post_flows_actions_deactivate" if flow.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/actions/deactivate".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'flow'] = flow

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Flow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_flows_actions_deactivate\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Publish flow
    # Asynchronous.  Notification topic: v2.flows.{flowId}
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :version version
    # @return [Operation]
    def post_flows_actions_publish(flow, opts = {})
      data, _status_code, _headers = post_flows_actions_publish_with_http_info(flow, opts)
      return data
    end

    # Publish flow
    # Asynchronous.  Notification topic: v2.flows.{flowId}
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :version version
    # @return [Array<(Operation, Fixnum, Hash)>] Operation data, response status code and response headers
    def post_flows_actions_publish_with_http_info(flow, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_flows_actions_publish ..."
      end
      
      
      # verify the required parameter 'flow' is set
      fail ArgumentError, "Missing the required parameter 'flow' when calling ArchitectApi.post_flows_actions_publish" if flow.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/actions/publish".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'flow'] = flow
      query_params[:'version'] = opts[:'version'] if opts[:'version']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Operation')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_flows_actions_publish\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Revert flow
    # 
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @return [Flow]
    def post_flows_actions_revert(flow, opts = {})
      data, _status_code, _headers = post_flows_actions_revert_with_http_info(flow, opts)
      return data
    end

    # Revert flow
    # 
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(Flow, Fixnum, Hash)>] Flow data, response status code and response headers
    def post_flows_actions_revert_with_http_info(flow, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_flows_actions_revert ..."
      end
      
      
      # verify the required parameter 'flow' is set
      fail ArgumentError, "Missing the required parameter 'flow' when calling ArchitectApi.post_flows_actions_revert" if flow.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/actions/revert".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'flow'] = flow

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Flow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_flows_actions_revert\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Unlock flow
    # Allows for unlocking a flow in the case where there is no flow configuration available, and thus a check-in will not unlock the flow. The user must have Architect Admin permissions to perform this action.
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @return [Flow]
    def post_flows_actions_unlock(flow, opts = {})
      data, _status_code, _headers = post_flows_actions_unlock_with_http_info(flow, opts)
      return data
    end

    # Unlock flow
    # Allows for unlocking a flow in the case where there is no flow configuration available, and thus a check-in will not unlock the flow. The user must have Architect Admin permissions to perform this action.
    # @param flow Flow ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(Flow, Fixnum, Hash)>] Flow data, response status code and response headers
    def post_flows_actions_unlock_with_http_info(flow, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_flows_actions_unlock ..."
      end
      
      
      # verify the required parameter 'flow' is set
      fail ArgumentError, "Missing the required parameter 'flow' when calling ArchitectApi.post_flows_actions_unlock" if flow.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/actions/unlock".sub('{format}','json')

      # query parameters
      query_params = {}
      query_params[:'flow'] = flow

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Flow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_flows_actions_unlock\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create a new row entry
    # Will add the passed in row entry to the datatable with the given id after verifying it against the schema.
    # @param datatable_id id of datatable
    # @param data_table_row 
    # @param [Hash] opts the optional parameters
    # @return [Hash<String, Object>]
    def post_flows_datatable_rows(datatable_id, data_table_row, opts = {})
      data, _status_code, _headers = post_flows_datatable_rows_with_http_info(datatable_id, data_table_row, opts)
      return data
    end

    # Create a new row entry
    # Will add the passed in row entry to the datatable with the given id after verifying it against the schema.
    # @param datatable_id id of datatable
    # @param data_table_row 
    # @param [Hash] opts the optional parameters
    # @return [Array<(Hash<String, Object>, Fixnum, Hash)>] Hash<String, Object> data, response status code and response headers
    def post_flows_datatable_rows_with_http_info(datatable_id, data_table_row, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_flows_datatable_rows ..."
      end
      
      
      # verify the required parameter 'datatable_id' is set
      fail ArgumentError, "Missing the required parameter 'datatable_id' when calling ArchitectApi.post_flows_datatable_rows" if datatable_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'data_table_row' is set
      fail ArgumentError, "Missing the required parameter 'data_table_row' when calling ArchitectApi.post_flows_datatable_rows" if data_table_row.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/datatables/{datatableId}/rows".sub('{format}','json').sub('{' + 'datatableId' + '}', datatable_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(data_table_row)
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Hash<String, Object>')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_flows_datatable_rows\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create a new datatable with the specified json-schema definition
    # This will create a new datatable with fields that match the property definitions in the JSON schema.  The name of the table from the title field of the json-schema.  See also http://json-schema.org/
    # @param body datatable json-schema
    # @param [Hash] opts the optional parameters
    # @return [JsonSchemaDocument]
    def post_flows_datatables(body, opts = {})
      data, _status_code, _headers = post_flows_datatables_with_http_info(body, opts)
      return data
    end

    # Create a new datatable with the specified json-schema definition
    # This will create a new datatable with fields that match the property definitions in the JSON schema.  The name of the table from the title field of the json-schema.  See also http://json-schema.org/
    # @param body datatable json-schema
    # @param [Hash] opts the optional parameters
    # @return [Array<(JsonSchemaDocument, Fixnum, Hash)>] JsonSchemaDocument data, response status code and response headers
    def post_flows_datatables_with_http_info(body, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.post_flows_datatables ..."
      end
      
      
      # verify the required parameter 'body' is set
      fail ArgumentError, "Missing the required parameter 'body' when calling ArchitectApi.post_flows_datatables" if body.nil?
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/datatables".sub('{format}','json')

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(body)
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:POST, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'JsonSchemaDocument')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#post_flows_datatables\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update an IVR Config.
    # 
    # @param ivr_id IVR id
    # @param [Hash] opts the optional parameters
    # @option opts [IVR] :body 
    # @return [IVR]
    def put_architect_ivr(ivr_id, opts = {})
      data, _status_code, _headers = put_architect_ivr_with_http_info(ivr_id, opts)
      return data
    end

    # Update an IVR Config.
    # 
    # @param ivr_id IVR id
    # @param [Hash] opts the optional parameters
    # @option opts [IVR] :body 
    # @return [Array<(IVR, Fixnum, Hash)>] IVR data, response status code and response headers
    def put_architect_ivr_with_http_info(ivr_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.put_architect_ivr ..."
      end
      
      
      # verify the required parameter 'ivr_id' is set
      fail ArgumentError, "Missing the required parameter 'ivr_id' when calling ArchitectApi.put_architect_ivr" if ivr_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/ivrs/{ivrId}".sub('{format}','json').sub('{' + 'ivrId' + '}', ivr_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'IVR')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#put_architect_ivr\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update specified user prompt
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [Prompt] :body 
    # @return [Prompt]
    def put_architect_prompt(prompt_id, opts = {})
      data, _status_code, _headers = put_architect_prompt_with_http_info(prompt_id, opts)
      return data
    end

    # Update specified user prompt
    # 
    # @param prompt_id Prompt ID
    # @param [Hash] opts the optional parameters
    # @option opts [Prompt] :body 
    # @return [Array<(Prompt, Fixnum, Hash)>] Prompt data, response status code and response headers
    def put_architect_prompt_with_http_info(prompt_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.put_architect_prompt ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.put_architect_prompt" if prompt_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts/{promptId}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Prompt')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#put_architect_prompt\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update specified user prompt resource
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @option opts [PromptAsset] :body 
    # @return [PromptAsset]
    def put_architect_prompt_resource(prompt_id, language_code, opts = {})
      data, _status_code, _headers = put_architect_prompt_resource_with_http_info(prompt_id, language_code, opts)
      return data
    end

    # Update specified user prompt resource
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @option opts [PromptAsset] :body 
    # @return [Array<(PromptAsset, Fixnum, Hash)>] PromptAsset data, response status code and response headers
    def put_architect_prompt_resource_with_http_info(prompt_id, language_code, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.put_architect_prompt_resource ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.put_architect_prompt_resource" if prompt_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'language_code' is set
      fail ArgumentError, "Missing the required parameter 'language_code' when calling ArchitectApi.put_architect_prompt_resource" if language_code.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/prompts/{promptId}/resources/{languageCode}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s).sub('{' + 'languageCode' + '}', language_code.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'PromptAsset')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#put_architect_prompt_resource\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update schedule by ID
    # 
    # @param schedule_id Schedule ID
    # @param [Hash] opts the optional parameters
    # @option opts [Schedule] :body 
    # @return [Schedule]
    def put_architect_schedule(schedule_id, opts = {})
      data, _status_code, _headers = put_architect_schedule_with_http_info(schedule_id, opts)
      return data
    end

    # Update schedule by ID
    # 
    # @param schedule_id Schedule ID
    # @param [Hash] opts the optional parameters
    # @option opts [Schedule] :body 
    # @return [Array<(Schedule, Fixnum, Hash)>] Schedule data, response status code and response headers
    def put_architect_schedule_with_http_info(schedule_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.put_architect_schedule ..."
      end
      
      
      # verify the required parameter 'schedule_id' is set
      fail ArgumentError, "Missing the required parameter 'schedule_id' when calling ArchitectApi.put_architect_schedule" if schedule_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/schedules/{scheduleId}".sub('{format}','json').sub('{' + 'scheduleId' + '}', schedule_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Schedule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#put_architect_schedule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates a schedule group by ID
    # 
    # @param schedule_group_id Schedule group ID
    # @param [Hash] opts the optional parameters
    # @option opts [ScheduleGroup] :body 
    # @return [ScheduleGroup]
    def put_architect_schedulegroup(schedule_group_id, opts = {})
      data, _status_code, _headers = put_architect_schedulegroup_with_http_info(schedule_group_id, opts)
      return data
    end

    # Updates a schedule group by ID
    # 
    # @param schedule_group_id Schedule group ID
    # @param [Hash] opts the optional parameters
    # @option opts [ScheduleGroup] :body 
    # @return [Array<(ScheduleGroup, Fixnum, Hash)>] ScheduleGroup data, response status code and response headers
    def put_architect_schedulegroup_with_http_info(schedule_group_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.put_architect_schedulegroup ..."
      end
      
      
      # verify the required parameter 'schedule_group_id' is set
      fail ArgumentError, "Missing the required parameter 'schedule_group_id' when calling ArchitectApi.put_architect_schedulegroup" if schedule_group_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/schedulegroups/{scheduleGroupId}".sub('{format}','json').sub('{' + 'scheduleGroupId' + '}', schedule_group_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'ScheduleGroup')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#put_architect_schedulegroup\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates a system prompt resource override.
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @option opts [SystemPromptAsset] :body 
    # @return [SystemPromptAsset]
    def put_architect_systemprompt_resource(prompt_id, language_code, opts = {})
      data, _status_code, _headers = put_architect_systemprompt_resource_with_http_info(prompt_id, language_code, opts)
      return data
    end

    # Updates a system prompt resource override.
    # 
    # @param prompt_id Prompt ID
    # @param language_code Language
    # @param [Hash] opts the optional parameters
    # @option opts [SystemPromptAsset] :body 
    # @return [Array<(SystemPromptAsset, Fixnum, Hash)>] SystemPromptAsset data, response status code and response headers
    def put_architect_systemprompt_resource_with_http_info(prompt_id, language_code, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.put_architect_systemprompt_resource ..."
      end
      
      
      # verify the required parameter 'prompt_id' is set
      fail ArgumentError, "Missing the required parameter 'prompt_id' when calling ArchitectApi.put_architect_systemprompt_resource" if prompt_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'language_code' is set
      fail ArgumentError, "Missing the required parameter 'language_code' when calling ArchitectApi.put_architect_systemprompt_resource" if language_code.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/architect/systemprompts/{promptId}/resources/{languageCode}".sub('{format}','json').sub('{' + 'promptId' + '}', prompt_id.to_s).sub('{' + 'languageCode' + '}', language_code.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'SystemPromptAsset')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#put_architect_systemprompt_resource\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update flow
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [Flow] :body 
    # @return [Flow]
    def put_flow(flow_id, opts = {})
      data, _status_code, _headers = put_flow_with_http_info(flow_id, opts)
      return data
    end

    # Update flow
    # 
    # @param flow_id Flow ID
    # @param [Hash] opts the optional parameters
    # @option opts [Flow] :body 
    # @return [Array<(Flow, Fixnum, Hash)>] Flow data, response status code and response headers
    def put_flow_with_http_info(flow_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.put_flow ..."
      end
      
      
      # verify the required parameter 'flow_id' is set
      fail ArgumentError, "Missing the required parameter 'flow_id' when calling ArchitectApi.put_flow" if flow_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/{flowId}".sub('{format}','json').sub('{' + 'flowId' + '}', flow_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Flow')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#put_flow\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Updates a specific datatable by datatableId
    # Updates a schema for a datatable with the given datatableId - updates are additive only, no changes or removals of existing fields.
    # @param datatable_id id of datatable
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :showbrief If true returns a shortened version of the schema including the name, id and description (default to true)
    # @option opts [JsonSchemaDocument] :body datatable json-schema
    # @return [JsonSchemaDocument]
    def put_flows_datatable(datatable_id, opts = {})
      data, _status_code, _headers = put_flows_datatable_with_http_info(datatable_id, opts)
      return data
    end

    # Updates a specific datatable by datatableId
    # Updates a schema for a datatable with the given datatableId - updates are additive only, no changes or removals of existing fields.
    # @param datatable_id id of datatable
    # @param [Hash] opts the optional parameters
    # @option opts [BOOLEAN] :showbrief If true returns a shortened version of the schema including the name, id and description
    # @option opts [JsonSchemaDocument] :body datatable json-schema
    # @return [Array<(JsonSchemaDocument, Fixnum, Hash)>] JsonSchemaDocument data, response status code and response headers
    def put_flows_datatable_with_http_info(datatable_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.put_flows_datatable ..."
      end
      
      
      # verify the required parameter 'datatable_id' is set
      fail ArgumentError, "Missing the required parameter 'datatable_id' when calling ArchitectApi.put_flows_datatable" if datatable_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/datatables/{datatableId}".sub('{format}','json').sub('{' + 'datatableId' + '}', datatable_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'showbrief'] = opts[:'showbrief'] if opts[:'showbrief']

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'JsonSchemaDocument')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#put_flows_datatable\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update a row entry
    # Updates a row with the given to the new values.
    # @param datatable_id id of datatable
    # @param row_id the key for the row
    # @param [Hash] opts the optional parameters
    # @option opts [Object] :body datatable row
    # @return [Hash<String, Object>]
    def put_flows_datatable_row(datatable_id, row_id, opts = {})
      data, _status_code, _headers = put_flows_datatable_row_with_http_info(datatable_id, row_id, opts)
      return data
    end

    # Update a row entry
    # Updates a row with the given to the new values.
    # @param datatable_id id of datatable
    # @param row_id the key for the row
    # @param [Hash] opts the optional parameters
    # @option opts [Object] :body datatable row
    # @return [Array<(Hash<String, Object>, Fixnum, Hash)>] Hash<String, Object> data, response status code and response headers
    def put_flows_datatable_row_with_http_info(datatable_id, row_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: ArchitectApi.put_flows_datatable_row ..."
      end
      
      
      # verify the required parameter 'datatable_id' is set
      fail ArgumentError, "Missing the required parameter 'datatable_id' when calling ArchitectApi.put_flows_datatable_row" if datatable_id.nil?
      
      
      
      
      
      
      # verify the required parameter 'row_id' is set
      fail ArgumentError, "Missing the required parameter 'row_id' when calling ArchitectApi.put_flows_datatable_row" if row_id.nil?
      
      
      
      
      
      
      
      
      
      
      
      # resource path
      local_var_path = "/api/v2/flows/datatables/{datatableId}/rows/{rowId}".sub('{format}','json').sub('{' + 'datatableId' + '}', datatable_id.to_s).sub('{' + 'rowId' + '}', row_id.to_s)

      # query parameters
      query_params = {}

      # header parameters
      header_params = {}

      # HTTP header 'Accept' (if needed)
      local_header_accept = ['application/json']
      local_header_accept_result = @api_client.select_header_accept(local_header_accept) and header_params['Accept'] = local_header_accept_result

      # HTTP header 'Content-Type'
      local_header_content_type = ['application/json']
      header_params['Content-Type'] = @api_client.select_header_content_type(local_header_content_type)

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(opts[:'body'])
      
      auth_names = ['PureCloud Auth']
      data, status_code, headers = @api_client.call_api(:PUT, local_var_path,
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => 'Hash<String, Object>')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ArchitectApi#put_flows_datatable_row\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end