=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@inin.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 AlertingApi
    attr_accessor :api_client

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

    # Delete a heart beat alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_alerting_heartbeat_alert(alert_id, opts = {})
      delete_alerting_heartbeat_alert_with_http_info(alert_id, opts)
      return nil
    end

    # Delete a heart beat alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_alerting_heartbeat_alert_with_http_info(alert_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.delete_alerting_heartbeat_alert ..."
      end
      # verify the required parameter 'alert_id' is set
      fail ArgumentError, "Missing the required parameter 'alert_id' when calling AlertingApi.delete_alerting_heartbeat_alert" if alert_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/heartbeat/alerts/{alertId}".sub('{format}','json').sub('{' + 'alertId' + '}', alert_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: AlertingApi#delete_alerting_heartbeat_alert\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete a heart beat rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_alerting_heartbeat_rule(rule_id, opts = {})
      delete_alerting_heartbeat_rule_with_http_info(rule_id, opts)
      return nil
    end

    # Delete a heart beat rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_alerting_heartbeat_rule_with_http_info(rule_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.delete_alerting_heartbeat_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.delete_alerting_heartbeat_rule" if rule_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/heartbeat/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_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: AlertingApi#delete_alerting_heartbeat_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete an interaction stats alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_alerting_interactionstats_alert(alert_id, opts = {})
      delete_alerting_interactionstats_alert_with_http_info(alert_id, opts)
      return nil
    end

    # Delete an interaction stats alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_alerting_interactionstats_alert_with_http_info(alert_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.delete_alerting_interactionstats_alert ..."
      end
      # verify the required parameter 'alert_id' is set
      fail ArgumentError, "Missing the required parameter 'alert_id' when calling AlertingApi.delete_alerting_interactionstats_alert" if alert_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/interactionstats/alerts/{alertId}".sub('{format}','json').sub('{' + 'alertId' + '}', alert_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: AlertingApi#delete_alerting_interactionstats_alert\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete an interaction stats rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_alerting_interactionstats_rule(rule_id, opts = {})
      delete_alerting_interactionstats_rule_with_http_info(rule_id, opts)
      return nil
    end

    # Delete an interaction stats rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_alerting_interactionstats_rule_with_http_info(rule_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.delete_alerting_interactionstats_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.delete_alerting_interactionstats_rule" if rule_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/interactionstats/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_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: AlertingApi#delete_alerting_interactionstats_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete a routing status alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_alerting_routingstatus_alert(alert_id, opts = {})
      delete_alerting_routingstatus_alert_with_http_info(alert_id, opts)
      return nil
    end

    # Delete a routing status alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_alerting_routingstatus_alert_with_http_info(alert_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.delete_alerting_routingstatus_alert ..."
      end
      # verify the required parameter 'alert_id' is set
      fail ArgumentError, "Missing the required parameter 'alert_id' when calling AlertingApi.delete_alerting_routingstatus_alert" if alert_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/routingstatus/alerts/{alertId}".sub('{format}','json').sub('{' + 'alertId' + '}', alert_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: AlertingApi#delete_alerting_routingstatus_alert\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete a routing status rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_alerting_routingstatus_rule(rule_id, opts = {})
      delete_alerting_routingstatus_rule_with_http_info(rule_id, opts)
      return nil
    end

    # Delete a routing status rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_alerting_routingstatus_rule_with_http_info(rule_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.delete_alerting_routingstatus_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.delete_alerting_routingstatus_rule" if rule_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/routingstatus/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_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: AlertingApi#delete_alerting_routingstatus_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete a user presence alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_alerting_userpresence_alert(alert_id, opts = {})
      delete_alerting_userpresence_alert_with_http_info(alert_id, opts)
      return nil
    end

    # Delete a user presence alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_alerting_userpresence_alert_with_http_info(alert_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.delete_alerting_userpresence_alert ..."
      end
      # verify the required parameter 'alert_id' is set
      fail ArgumentError, "Missing the required parameter 'alert_id' when calling AlertingApi.delete_alerting_userpresence_alert" if alert_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/userpresence/alerts/{alertId}".sub('{format}','json').sub('{' + 'alertId' + '}', alert_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: AlertingApi#delete_alerting_userpresence_alert\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete a user presence rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete_alerting_userpresence_rule(rule_id, opts = {})
      delete_alerting_userpresence_rule_with_http_info(rule_id, opts)
      return nil
    end

    # Delete a user presence rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_alerting_userpresence_rule_with_http_info(rule_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.delete_alerting_userpresence_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.delete_alerting_userpresence_rule" if rule_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/userpresence/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_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: AlertingApi#delete_alerting_userpresence_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a heart beat alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [HeartBeatAlert]
    def get_alerting_heartbeat_alert(alert_id, opts = {})
      data, _status_code, _headers = get_alerting_heartbeat_alert_with_http_info(alert_id, opts)
      return data
    end

    # Get a heart beat alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(HeartBeatAlert, Fixnum, Hash)>] HeartBeatAlert data, response status code and response headers
    def get_alerting_heartbeat_alert_with_http_info(alert_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_heartbeat_alert ..."
      end
      # verify the required parameter 'alert_id' is set
      fail ArgumentError, "Missing the required parameter 'alert_id' when calling AlertingApi.get_alerting_heartbeat_alert" if alert_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/heartbeat/alerts/{alertId}".sub('{format}','json').sub('{' + 'alertId' + '}', alert_id.to_s)

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

      # 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 => 'HeartBeatAlert')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_heartbeat_alert\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get heart beat alert list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [HeartBeatAlertContainer]
    def get_alerting_heartbeat_alerts(opts = {})
      data, _status_code, _headers = get_alerting_heartbeat_alerts_with_http_info(opts)
      return data
    end

    # Get heart beat alert list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(HeartBeatAlertContainer, Fixnum, Hash)>] HeartBeatAlertContainer data, response status code and response headers
    def get_alerting_heartbeat_alerts_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_heartbeat_alerts ..."
      end
      # resource path
      local_var_path = "/api/v2/alerting/heartbeat/alerts".sub('{format}','json')

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

      # 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 => 'HeartBeatAlertContainer')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_heartbeat_alerts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a heart beat rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [HeartBeatRule]
    def get_alerting_heartbeat_rule(rule_id, opts = {})
      data, _status_code, _headers = get_alerting_heartbeat_rule_with_http_info(rule_id, opts)
      return data
    end

    # Get a heart beat rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(HeartBeatRule, Fixnum, Hash)>] HeartBeatRule data, response status code and response headers
    def get_alerting_heartbeat_rule_with_http_info(rule_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_heartbeat_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.get_alerting_heartbeat_rule" if rule_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/heartbeat/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_id.to_s)

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

      # 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 => 'HeartBeatRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_heartbeat_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a heart beat rule list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [HeartBeatRuleContainer]
    def get_alerting_heartbeat_rules(opts = {})
      data, _status_code, _headers = get_alerting_heartbeat_rules_with_http_info(opts)
      return data
    end

    # Get a heart beat rule list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(HeartBeatRuleContainer, Fixnum, Hash)>] HeartBeatRuleContainer data, response status code and response headers
    def get_alerting_heartbeat_rules_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_heartbeat_rules ..."
      end
      # resource path
      local_var_path = "/api/v2/alerting/heartbeat/rules".sub('{format}','json')

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

      # 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 => 'HeartBeatRuleContainer')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_heartbeat_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get an interaction stats alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [InteractionStatsAlert]
    def get_alerting_interactionstats_alert(alert_id, opts = {})
      data, _status_code, _headers = get_alerting_interactionstats_alert_with_http_info(alert_id, opts)
      return data
    end

    # Get an interaction stats alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(InteractionStatsAlert, Fixnum, Hash)>] InteractionStatsAlert data, response status code and response headers
    def get_alerting_interactionstats_alert_with_http_info(alert_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_interactionstats_alert ..."
      end
      # verify the required parameter 'alert_id' is set
      fail ArgumentError, "Missing the required parameter 'alert_id' when calling AlertingApi.get_alerting_interactionstats_alert" if alert_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/interactionstats/alerts/{alertId}".sub('{format}','json').sub('{' + 'alertId' + '}', alert_id.to_s)

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

      # 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 => 'InteractionStatsAlert')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_interactionstats_alert\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get interaction stats alert list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [InteractionStatsAlertContainer]
    def get_alerting_interactionstats_alerts(opts = {})
      data, _status_code, _headers = get_alerting_interactionstats_alerts_with_http_info(opts)
      return data
    end

    # Get interaction stats alert list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(InteractionStatsAlertContainer, Fixnum, Hash)>] InteractionStatsAlertContainer data, response status code and response headers
    def get_alerting_interactionstats_alerts_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_interactionstats_alerts ..."
      end
      # resource path
      local_var_path = "/api/v2/alerting/interactionstats/alerts".sub('{format}','json')

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

      # 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 => 'InteractionStatsAlertContainer')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_interactionstats_alerts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Gets user unread count of interaction stats alerts.
    # 
    # @param [Hash] opts the optional parameters
    # @return [UnreadMetric]
    def get_alerting_interactionstats_alerts_unread(opts = {})
      data, _status_code, _headers = get_alerting_interactionstats_alerts_unread_with_http_info(opts)
      return data
    end

    # Gets user unread count of interaction stats alerts.
    # 
    # @param [Hash] opts the optional parameters
    # @return [Array<(UnreadMetric, Fixnum, Hash)>] UnreadMetric data, response status code and response headers
    def get_alerting_interactionstats_alerts_unread_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_interactionstats_alerts_unread ..."
      end
      # resource path
      local_var_path = "/api/v2/alerting/interactionstats/alerts/unread".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 => 'UnreadMetric')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_interactionstats_alerts_unread\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get an interaction stats rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [InteractionStatsRule]
    def get_alerting_interactionstats_rule(rule_id, opts = {})
      data, _status_code, _headers = get_alerting_interactionstats_rule_with_http_info(rule_id, opts)
      return data
    end

    # Get an interaction stats rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(InteractionStatsRule, Fixnum, Hash)>] InteractionStatsRule data, response status code and response headers
    def get_alerting_interactionstats_rule_with_http_info(rule_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_interactionstats_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.get_alerting_interactionstats_rule" if rule_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/interactionstats/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_id.to_s)

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

      # 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 => 'InteractionStatsRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_interactionstats_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get an interaction stats rule list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [InteractionStatsRuleContainer]
    def get_alerting_interactionstats_rules(opts = {})
      data, _status_code, _headers = get_alerting_interactionstats_rules_with_http_info(opts)
      return data
    end

    # Get an interaction stats rule list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(InteractionStatsRuleContainer, Fixnum, Hash)>] InteractionStatsRuleContainer data, response status code and response headers
    def get_alerting_interactionstats_rules_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_interactionstats_rules ..."
      end
      # resource path
      local_var_path = "/api/v2/alerting/interactionstats/rules".sub('{format}','json')

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

      # 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 => 'InteractionStatsRuleContainer')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_interactionstats_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a routing status alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [RoutingStatusAlert]
    def get_alerting_routingstatus_alert(alert_id, opts = {})
      data, _status_code, _headers = get_alerting_routingstatus_alert_with_http_info(alert_id, opts)
      return data
    end

    # Get a routing status alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(RoutingStatusAlert, Fixnum, Hash)>] RoutingStatusAlert data, response status code and response headers
    def get_alerting_routingstatus_alert_with_http_info(alert_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_routingstatus_alert ..."
      end
      # verify the required parameter 'alert_id' is set
      fail ArgumentError, "Missing the required parameter 'alert_id' when calling AlertingApi.get_alerting_routingstatus_alert" if alert_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/routingstatus/alerts/{alertId}".sub('{format}','json').sub('{' + 'alertId' + '}', alert_id.to_s)

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

      # 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 => 'RoutingStatusAlert')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_routingstatus_alert\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get routing status alert list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [RoutingStatusAlertContainer]
    def get_alerting_routingstatus_alerts(opts = {})
      data, _status_code, _headers = get_alerting_routingstatus_alerts_with_http_info(opts)
      return data
    end

    # Get routing status alert list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(RoutingStatusAlertContainer, Fixnum, Hash)>] RoutingStatusAlertContainer data, response status code and response headers
    def get_alerting_routingstatus_alerts_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_routingstatus_alerts ..."
      end
      # resource path
      local_var_path = "/api/v2/alerting/routingstatus/alerts".sub('{format}','json')

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

      # 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 => 'RoutingStatusAlertContainer')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_routingstatus_alerts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a routing status rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [RoutingStatusRule]
    def get_alerting_routingstatus_rule(rule_id, opts = {})
      data, _status_code, _headers = get_alerting_routingstatus_rule_with_http_info(rule_id, opts)
      return data
    end

    # Get a routing status rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(RoutingStatusRule, Fixnum, Hash)>] RoutingStatusRule data, response status code and response headers
    def get_alerting_routingstatus_rule_with_http_info(rule_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_routingstatus_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.get_alerting_routingstatus_rule" if rule_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/routingstatus/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_id.to_s)

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

      # 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 => 'RoutingStatusRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_routingstatus_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a routing status rule list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [RoutingStatusRuleContainer]
    def get_alerting_routingstatus_rules(opts = {})
      data, _status_code, _headers = get_alerting_routingstatus_rules_with_http_info(opts)
      return data
    end

    # Get a routing status rule list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(RoutingStatusRuleContainer, Fixnum, Hash)>] RoutingStatusRuleContainer data, response status code and response headers
    def get_alerting_routingstatus_rules_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_routingstatus_rules ..."
      end
      # resource path
      local_var_path = "/api/v2/alerting/routingstatus/rules".sub('{format}','json')

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

      # 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 => 'RoutingStatusRuleContainer')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_routingstatus_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a user presence alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [UserPresenceAlert]
    def get_alerting_userpresence_alert(alert_id, opts = {})
      data, _status_code, _headers = get_alerting_userpresence_alert_with_http_info(alert_id, opts)
      return data
    end

    # Get a user presence alert
    # 
    # @param alert_id Alert ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(UserPresenceAlert, Fixnum, Hash)>] UserPresenceAlert data, response status code and response headers
    def get_alerting_userpresence_alert_with_http_info(alert_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_userpresence_alert ..."
      end
      # verify the required parameter 'alert_id' is set
      fail ArgumentError, "Missing the required parameter 'alert_id' when calling AlertingApi.get_alerting_userpresence_alert" if alert_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/userpresence/alerts/{alertId}".sub('{format}','json').sub('{' + 'alertId' + '}', alert_id.to_s)

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

      # 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 => 'UserPresenceAlert')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_userpresence_alert\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get user presence alert list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [UserPresenceAlertContainer]
    def get_alerting_userpresence_alerts(opts = {})
      data, _status_code, _headers = get_alerting_userpresence_alerts_with_http_info(opts)
      return data
    end

    # Get user presence alert list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(UserPresenceAlertContainer, Fixnum, Hash)>] UserPresenceAlertContainer data, response status code and response headers
    def get_alerting_userpresence_alerts_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_userpresence_alerts ..."
      end
      # resource path
      local_var_path = "/api/v2/alerting/userpresence/alerts".sub('{format}','json')

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

      # 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 => 'UserPresenceAlertContainer')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_userpresence_alerts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a user presence rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [UserPresenceRule]
    def get_alerting_userpresence_rule(rule_id, opts = {})
      data, _status_code, _headers = get_alerting_userpresence_rule_with_http_info(rule_id, opts)
      return data
    end

    # Get a user presence rule.
    # 
    # @param rule_id Rule ID
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(UserPresenceRule, Fixnum, Hash)>] UserPresenceRule data, response status code and response headers
    def get_alerting_userpresence_rule_with_http_info(rule_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_userpresence_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.get_alerting_userpresence_rule" if rule_id.nil?
      # resource path
      local_var_path = "/api/v2/alerting/userpresence/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_id.to_s)

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

      # 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 => 'UserPresenceRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_userpresence_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Get a user presence rule list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [UserPresenceRuleContainer]
    def get_alerting_userpresence_rules(opts = {})
      data, _status_code, _headers = get_alerting_userpresence_rules_with_http_info(opts)
      return data
    end

    # Get a user presence rule list.
    # 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(UserPresenceRuleContainer, Fixnum, Hash)>] UserPresenceRuleContainer data, response status code and response headers
    def get_alerting_userpresence_rules_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.get_alerting_userpresence_rules ..."
      end
      # resource path
      local_var_path = "/api/v2/alerting/userpresence/rules".sub('{format}','json')

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

      # 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 => 'UserPresenceRuleContainer')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#get_alerting_userpresence_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create a heart beat rule.
    # 
    # @param body HeartBeatRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [HeartBeatRule]
    def post_alerting_heartbeat_rules(body, opts = {})
      data, _status_code, _headers = post_alerting_heartbeat_rules_with_http_info(body, opts)
      return data
    end

    # Create a heart beat rule.
    # 
    # @param body HeartBeatRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(HeartBeatRule, Fixnum, Hash)>] HeartBeatRule data, response status code and response headers
    def post_alerting_heartbeat_rules_with_http_info(body, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.post_alerting_heartbeat_rules ..."
      end
      # verify the required parameter 'body' is set
      fail ArgumentError, "Missing the required parameter 'body' when calling AlertingApi.post_alerting_heartbeat_rules" if body.nil?
      # resource path
      local_var_path = "/api/v2/alerting/heartbeat/rules".sub('{format}','json')

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

      # 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 => 'HeartBeatRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#post_alerting_heartbeat_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create an interaction stats rule.
    # 
    # @param body AlertingRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [InteractionStatsRule]
    def post_alerting_interactionstats_rules(body, opts = {})
      data, _status_code, _headers = post_alerting_interactionstats_rules_with_http_info(body, opts)
      return data
    end

    # Create an interaction stats rule.
    # 
    # @param body AlertingRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(InteractionStatsRule, Fixnum, Hash)>] InteractionStatsRule data, response status code and response headers
    def post_alerting_interactionstats_rules_with_http_info(body, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.post_alerting_interactionstats_rules ..."
      end
      # verify the required parameter 'body' is set
      fail ArgumentError, "Missing the required parameter 'body' when calling AlertingApi.post_alerting_interactionstats_rules" if body.nil?
      # resource path
      local_var_path = "/api/v2/alerting/interactionstats/rules".sub('{format}','json')

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

      # 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 => 'InteractionStatsRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#post_alerting_interactionstats_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create a routing status rule.
    # 
    # @param body RoutingStatusRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [RoutingStatusRule]
    def post_alerting_routingstatus_rules(body, opts = {})
      data, _status_code, _headers = post_alerting_routingstatus_rules_with_http_info(body, opts)
      return data
    end

    # Create a routing status rule.
    # 
    # @param body RoutingStatusRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(RoutingStatusRule, Fixnum, Hash)>] RoutingStatusRule data, response status code and response headers
    def post_alerting_routingstatus_rules_with_http_info(body, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.post_alerting_routingstatus_rules ..."
      end
      # verify the required parameter 'body' is set
      fail ArgumentError, "Missing the required parameter 'body' when calling AlertingApi.post_alerting_routingstatus_rules" if body.nil?
      # resource path
      local_var_path = "/api/v2/alerting/routingstatus/rules".sub('{format}','json')

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

      # 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 => 'RoutingStatusRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#post_alerting_routingstatus_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Create a user presence rule.
    # 
    # @param body UserPresenceRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [UserPresenceRule]
    def post_alerting_userpresence_rules(body, opts = {})
      data, _status_code, _headers = post_alerting_userpresence_rules_with_http_info(body, opts)
      return data
    end

    # Create a user presence rule.
    # 
    # @param body UserPresenceRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(UserPresenceRule, Fixnum, Hash)>] UserPresenceRule data, response status code and response headers
    def post_alerting_userpresence_rules_with_http_info(body, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.post_alerting_userpresence_rules ..."
      end
      # verify the required parameter 'body' is set
      fail ArgumentError, "Missing the required parameter 'body' when calling AlertingApi.post_alerting_userpresence_rules" if body.nil?
      # resource path
      local_var_path = "/api/v2/alerting/userpresence/rules".sub('{format}','json')

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

      # 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 => 'UserPresenceRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#post_alerting_userpresence_rules\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update a heart beat rule
    # 
    # @param rule_id Rule ID
    # @param body HeartBeatRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [HeartBeatRule]
    def put_alerting_heartbeat_rule(rule_id, body, opts = {})
      data, _status_code, _headers = put_alerting_heartbeat_rule_with_http_info(rule_id, body, opts)
      return data
    end

    # Update a heart beat rule
    # 
    # @param rule_id Rule ID
    # @param body HeartBeatRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(HeartBeatRule, Fixnum, Hash)>] HeartBeatRule data, response status code and response headers
    def put_alerting_heartbeat_rule_with_http_info(rule_id, body, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.put_alerting_heartbeat_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.put_alerting_heartbeat_rule" if rule_id.nil?
      # verify the required parameter 'body' is set
      fail ArgumentError, "Missing the required parameter 'body' when calling AlertingApi.put_alerting_heartbeat_rule" if body.nil?
      # resource path
      local_var_path = "/api/v2/alerting/heartbeat/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_id.to_s)

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

      # 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(: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 => 'HeartBeatRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#put_alerting_heartbeat_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update an interaction stats alert read status
    # 
    # @param alert_id Alert ID
    # @param body InteractionStatsAlert
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [UnreadStatus]
    def put_alerting_interactionstats_alert(alert_id, body, opts = {})
      data, _status_code, _headers = put_alerting_interactionstats_alert_with_http_info(alert_id, body, opts)
      return data
    end

    # Update an interaction stats alert read status
    # 
    # @param alert_id Alert ID
    # @param body InteractionStatsAlert
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(UnreadStatus, Fixnum, Hash)>] UnreadStatus data, response status code and response headers
    def put_alerting_interactionstats_alert_with_http_info(alert_id, body, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.put_alerting_interactionstats_alert ..."
      end
      # verify the required parameter 'alert_id' is set
      fail ArgumentError, "Missing the required parameter 'alert_id' when calling AlertingApi.put_alerting_interactionstats_alert" if alert_id.nil?
      # verify the required parameter 'body' is set
      fail ArgumentError, "Missing the required parameter 'body' when calling AlertingApi.put_alerting_interactionstats_alert" if body.nil?
      # resource path
      local_var_path = "/api/v2/alerting/interactionstats/alerts/{alertId}".sub('{format}','json').sub('{' + 'alertId' + '}', alert_id.to_s)

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

      # 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(: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 => 'UnreadStatus')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#put_alerting_interactionstats_alert\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update an interaction stats rule
    # 
    # @param rule_id Rule ID
    # @param body AlertingRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [InteractionStatsRule]
    def put_alerting_interactionstats_rule(rule_id, body, opts = {})
      data, _status_code, _headers = put_alerting_interactionstats_rule_with_http_info(rule_id, body, opts)
      return data
    end

    # Update an interaction stats rule
    # 
    # @param rule_id Rule ID
    # @param body AlertingRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(InteractionStatsRule, Fixnum, Hash)>] InteractionStatsRule data, response status code and response headers
    def put_alerting_interactionstats_rule_with_http_info(rule_id, body, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.put_alerting_interactionstats_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.put_alerting_interactionstats_rule" if rule_id.nil?
      # verify the required parameter 'body' is set
      fail ArgumentError, "Missing the required parameter 'body' when calling AlertingApi.put_alerting_interactionstats_rule" if body.nil?
      # resource path
      local_var_path = "/api/v2/alerting/interactionstats/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_id.to_s)

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

      # 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(: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 => 'InteractionStatsRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#put_alerting_interactionstats_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update a routing status rule
    # 
    # @param rule_id Rule ID
    # @param body RoutingStatusRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [RoutingStatusRule]
    def put_alerting_routingstatus_rule(rule_id, body, opts = {})
      data, _status_code, _headers = put_alerting_routingstatus_rule_with_http_info(rule_id, body, opts)
      return data
    end

    # Update a routing status rule
    # 
    # @param rule_id Rule ID
    # @param body RoutingStatusRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(RoutingStatusRule, Fixnum, Hash)>] RoutingStatusRule data, response status code and response headers
    def put_alerting_routingstatus_rule_with_http_info(rule_id, body, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.put_alerting_routingstatus_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.put_alerting_routingstatus_rule" if rule_id.nil?
      # verify the required parameter 'body' is set
      fail ArgumentError, "Missing the required parameter 'body' when calling AlertingApi.put_alerting_routingstatus_rule" if body.nil?
      # resource path
      local_var_path = "/api/v2/alerting/routingstatus/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_id.to_s)

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

      # 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(: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 => 'RoutingStatusRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#put_alerting_routingstatus_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Update a user presence rule
    # 
    # @param rule_id Rule ID
    # @param body UserPresenceRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [UserPresenceRule]
    def put_alerting_userpresence_rule(rule_id, body, opts = {})
      data, _status_code, _headers = put_alerting_userpresence_rule_with_http_info(rule_id, body, opts)
      return data
    end

    # Update a user presence rule
    # 
    # @param rule_id Rule ID
    # @param body UserPresenceRule
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :expand Which fields, if any, to expand
    # @return [Array<(UserPresenceRule, Fixnum, Hash)>] UserPresenceRule data, response status code and response headers
    def put_alerting_userpresence_rule_with_http_info(rule_id, body, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug "Calling API: AlertingApi.put_alerting_userpresence_rule ..."
      end
      # verify the required parameter 'rule_id' is set
      fail ArgumentError, "Missing the required parameter 'rule_id' when calling AlertingApi.put_alerting_userpresence_rule" if rule_id.nil?
      # verify the required parameter 'body' is set
      fail ArgumentError, "Missing the required parameter 'body' when calling AlertingApi.put_alerting_userpresence_rule" if body.nil?
      # resource path
      local_var_path = "/api/v2/alerting/userpresence/rules/{ruleId}".sub('{format}','json').sub('{' + 'ruleId' + '}', rule_id.to_s)

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

      # 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(: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 => 'UserPresenceRule')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: AlertingApi#put_alerting_userpresence_rule\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end