=begin
#EVE Swagger Interface

#An OpenAPI for EVE Online

OpenAPI spec version: 0.7.6

Generated by: https://github.com/swagger-api/swagger-codegen.git
Swagger Codegen version: 2.4.0-SNAPSHOT

=end

require 'uri'

module ESIClient
  class ContactsApi
    attr_accessor :api_client

    def initialize(api_client = ApiClient.default)
      @api_client = api_client
    end
    # Delete contacts
    # Bulk delete contacts  --- 
    # @param character_id An EVE character ID
    # @param contact_ids A list of contacts to delete
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from (default to tranquility)
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [nil]
    def delete_characters_character_id_contacts(character_id, contact_ids, opts = {})
      delete_characters_character_id_contacts_with_http_info(character_id, contact_ids, opts)
      nil
    end

    # Delete contacts
    # Bulk delete contacts  --- 
    # @param character_id An EVE character ID
    # @param contact_ids A list of contacts to delete
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def delete_characters_character_id_contacts_with_http_info(character_id, contact_ids, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ContactsApi.delete_characters_character_id_contacts ...'
      end
      # verify the required parameter 'character_id' is set
      if @api_client.config.client_side_validation && character_id.nil?
        fail ArgumentError, "Missing the required parameter 'character_id' when calling ContactsApi.delete_characters_character_id_contacts"
      end
      if @api_client.config.client_side_validation && character_id < 1
        fail ArgumentError, 'invalid value for "character_id" when calling ContactsApi.delete_characters_character_id_contacts, must be greater than or equal to 1.'
      end

      # verify the required parameter 'contact_ids' is set
      if @api_client.config.client_side_validation && contact_ids.nil?
        fail ArgumentError, "Missing the required parameter 'contact_ids' when calling ContactsApi.delete_characters_character_id_contacts"
      end
      if @api_client.config.client_side_validation && contact_ids.length > 20
        fail ArgumentError, 'invalid value for "contact_ids" when calling ContactsApi.delete_characters_character_id_contacts, number of items must be less than or equal to 20.'
      end

      if @api_client.config.client_side_validation && contact_ids.length < 1
        fail ArgumentError, 'invalid value for "contact_ids" when calling ContactsApi.delete_characters_character_id_contacts, number of items must be greater than or equal to 1.'
      end

      if @api_client.config.client_side_validation && opts[:'datasource'] && !['tranquility', 'singularity'].include?(opts[:'datasource'])
        fail ArgumentError, 'invalid value for "datasource", must be one of tranquility, singularity'
      end
      # resource path
      local_var_path = '/v2/characters/{character_id}/contacts/'.sub('{' + 'character_id' + '}', character_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'contact_ids'] = @api_client.build_collection_param(contact_ids, :csv)
      query_params[:'datasource'] = opts[:'datasource'] if !opts[:'datasource'].nil?
      query_params[:'token'] = opts[:'token'] if !opts[:'token'].nil?
      query_params[:'user_agent'] = opts[:'user_agent'] if !opts[:'user_agent'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      header_params[:'X-User-Agent'] = opts[:'x_user_agent'] if !opts[:'x_user_agent'].nil?

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['evesso']
      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: ContactsApi#delete_characters_character_id_contacts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Get alliance contacts
    # Return contacts of an alliance  ---  This route is cached for up to 300 seconds
    # @param alliance_id An EVE alliance ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from (default to tranquility)
    # @option opts [Integer] :page Which page of results to return (default to 1)
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<GetAlliancesAllianceIdContacts200Ok>]
    def get_alliances_alliance_id_contacts(alliance_id, opts = {})
      data, _status_code, _headers = get_alliances_alliance_id_contacts_with_http_info(alliance_id, opts)
      data
    end

    # Get alliance contacts
    # Return contacts of an alliance  ---  This route is cached for up to 300 seconds
    # @param alliance_id An EVE alliance ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from
    # @option opts [Integer] :page Which page of results to return
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<(Array<GetAlliancesAllianceIdContacts200Ok>, Fixnum, Hash)>] Array<GetAlliancesAllianceIdContacts200Ok> data, response status code and response headers
    def get_alliances_alliance_id_contacts_with_http_info(alliance_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ContactsApi.get_alliances_alliance_id_contacts ...'
      end
      # verify the required parameter 'alliance_id' is set
      if @api_client.config.client_side_validation && alliance_id.nil?
        fail ArgumentError, "Missing the required parameter 'alliance_id' when calling ContactsApi.get_alliances_alliance_id_contacts"
      end
      if @api_client.config.client_side_validation && alliance_id < 1
        fail ArgumentError, 'invalid value for "alliance_id" when calling ContactsApi.get_alliances_alliance_id_contacts, must be greater than or equal to 1.'
      end

      if @api_client.config.client_side_validation && opts[:'datasource'] && !['tranquility', 'singularity'].include?(opts[:'datasource'])
        fail ArgumentError, 'invalid value for "datasource", must be one of tranquility, singularity'
      end
      # resource path
      local_var_path = '/v1/alliances/{alliance_id}/contacts/'.sub('{' + 'alliance_id' + '}', alliance_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'datasource'] = opts[:'datasource'] if !opts[:'datasource'].nil?
      query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
      query_params[:'token'] = opts[:'token'] if !opts[:'token'].nil?
      query_params[:'user_agent'] = opts[:'user_agent'] if !opts[:'user_agent'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      header_params[:'X-User-Agent'] = opts[:'x_user_agent'] if !opts[:'x_user_agent'].nil?

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['evesso']
      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<GetAlliancesAllianceIdContacts200Ok>')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ContactsApi#get_alliances_alliance_id_contacts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Get contacts
    # Return contacts of a character  ---  This route is cached for up to 300 seconds
    # @param character_id An EVE character ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from (default to tranquility)
    # @option opts [Integer] :page Which page of results to return (default to 1)
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<GetCharactersCharacterIdContacts200Ok>]
    def get_characters_character_id_contacts(character_id, opts = {})
      data, _status_code, _headers = get_characters_character_id_contacts_with_http_info(character_id, opts)
      data
    end

    # Get contacts
    # Return contacts of a character  ---  This route is cached for up to 300 seconds
    # @param character_id An EVE character ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from
    # @option opts [Integer] :page Which page of results to return
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<(Array<GetCharactersCharacterIdContacts200Ok>, Fixnum, Hash)>] Array<GetCharactersCharacterIdContacts200Ok> data, response status code and response headers
    def get_characters_character_id_contacts_with_http_info(character_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ContactsApi.get_characters_character_id_contacts ...'
      end
      # verify the required parameter 'character_id' is set
      if @api_client.config.client_side_validation && character_id.nil?
        fail ArgumentError, "Missing the required parameter 'character_id' when calling ContactsApi.get_characters_character_id_contacts"
      end
      if @api_client.config.client_side_validation && character_id < 1
        fail ArgumentError, 'invalid value for "character_id" when calling ContactsApi.get_characters_character_id_contacts, must be greater than or equal to 1.'
      end

      if @api_client.config.client_side_validation && opts[:'datasource'] && !['tranquility', 'singularity'].include?(opts[:'datasource'])
        fail ArgumentError, 'invalid value for "datasource", must be one of tranquility, singularity'
      end
      # resource path
      local_var_path = '/v1/characters/{character_id}/contacts/'.sub('{' + 'character_id' + '}', character_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'datasource'] = opts[:'datasource'] if !opts[:'datasource'].nil?
      query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
      query_params[:'token'] = opts[:'token'] if !opts[:'token'].nil?
      query_params[:'user_agent'] = opts[:'user_agent'] if !opts[:'user_agent'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      header_params[:'X-User-Agent'] = opts[:'x_user_agent'] if !opts[:'x_user_agent'].nil?

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['evesso']
      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<GetCharactersCharacterIdContacts200Ok>')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ContactsApi#get_characters_character_id_contacts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Get contact labels
    # Return custom labels for contacts the character defined  ---  This route is cached for up to 300 seconds
    # @param character_id An EVE character ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from (default to tranquility)
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<GetCharactersCharacterIdContactsLabels200Ok>]
    def get_characters_character_id_contacts_labels(character_id, opts = {})
      data, _status_code, _headers = get_characters_character_id_contacts_labels_with_http_info(character_id, opts)
      data
    end

    # Get contact labels
    # Return custom labels for contacts the character defined  ---  This route is cached for up to 300 seconds
    # @param character_id An EVE character ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<(Array<GetCharactersCharacterIdContactsLabels200Ok>, Fixnum, Hash)>] Array<GetCharactersCharacterIdContactsLabels200Ok> data, response status code and response headers
    def get_characters_character_id_contacts_labels_with_http_info(character_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ContactsApi.get_characters_character_id_contacts_labels ...'
      end
      # verify the required parameter 'character_id' is set
      if @api_client.config.client_side_validation && character_id.nil?
        fail ArgumentError, "Missing the required parameter 'character_id' when calling ContactsApi.get_characters_character_id_contacts_labels"
      end
      if @api_client.config.client_side_validation && character_id < 1
        fail ArgumentError, 'invalid value for "character_id" when calling ContactsApi.get_characters_character_id_contacts_labels, must be greater than or equal to 1.'
      end

      if @api_client.config.client_side_validation && opts[:'datasource'] && !['tranquility', 'singularity'].include?(opts[:'datasource'])
        fail ArgumentError, 'invalid value for "datasource", must be one of tranquility, singularity'
      end
      # resource path
      local_var_path = '/v1/characters/{character_id}/contacts/labels/'.sub('{' + 'character_id' + '}', character_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'datasource'] = opts[:'datasource'] if !opts[:'datasource'].nil?
      query_params[:'token'] = opts[:'token'] if !opts[:'token'].nil?
      query_params[:'user_agent'] = opts[:'user_agent'] if !opts[:'user_agent'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      header_params[:'X-User-Agent'] = opts[:'x_user_agent'] if !opts[:'x_user_agent'].nil?

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['evesso']
      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<GetCharactersCharacterIdContactsLabels200Ok>')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ContactsApi#get_characters_character_id_contacts_labels\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Get corporation contacts
    # Return contacts of a corporation  ---  This route is cached for up to 300 seconds
    # @param corporation_id An EVE corporation ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from (default to tranquility)
    # @option opts [Integer] :page Which page of results to return (default to 1)
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<GetCorporationsCorporationIdContacts200Ok>]
    def get_corporations_corporation_id_contacts(corporation_id, opts = {})
      data, _status_code, _headers = get_corporations_corporation_id_contacts_with_http_info(corporation_id, opts)
      data
    end

    # Get corporation contacts
    # Return contacts of a corporation  ---  This route is cached for up to 300 seconds
    # @param corporation_id An EVE corporation ID
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from
    # @option opts [Integer] :page Which page of results to return
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<(Array<GetCorporationsCorporationIdContacts200Ok>, Fixnum, Hash)>] Array<GetCorporationsCorporationIdContacts200Ok> data, response status code and response headers
    def get_corporations_corporation_id_contacts_with_http_info(corporation_id, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ContactsApi.get_corporations_corporation_id_contacts ...'
      end
      # verify the required parameter 'corporation_id' is set
      if @api_client.config.client_side_validation && corporation_id.nil?
        fail ArgumentError, "Missing the required parameter 'corporation_id' when calling ContactsApi.get_corporations_corporation_id_contacts"
      end
      if @api_client.config.client_side_validation && corporation_id < 1
        fail ArgumentError, 'invalid value for "corporation_id" when calling ContactsApi.get_corporations_corporation_id_contacts, must be greater than or equal to 1.'
      end

      if @api_client.config.client_side_validation && opts[:'datasource'] && !['tranquility', 'singularity'].include?(opts[:'datasource'])
        fail ArgumentError, 'invalid value for "datasource", must be one of tranquility, singularity'
      end
      # resource path
      local_var_path = '/v1/corporations/{corporation_id}/contacts/'.sub('{' + 'corporation_id' + '}', corporation_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'datasource'] = opts[:'datasource'] if !opts[:'datasource'].nil?
      query_params[:'page'] = opts[:'page'] if !opts[:'page'].nil?
      query_params[:'token'] = opts[:'token'] if !opts[:'token'].nil?
      query_params[:'user_agent'] = opts[:'user_agent'] if !opts[:'user_agent'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      header_params[:'X-User-Agent'] = opts[:'x_user_agent'] if !opts[:'x_user_agent'].nil?

      # form parameters
      form_params = {}

      # http body (model)
      post_body = nil
      auth_names = ['evesso']
      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<GetCorporationsCorporationIdContacts200Ok>')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ContactsApi#get_corporations_corporation_id_contacts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Add contacts
    # Bulk add contacts with same settings  --- 
    # @param character_id An EVE character ID
    # @param contact_ids A list of contacts to add
    # @param standing Standing for the new contact
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from (default to tranquility)
    # @option opts [Integer] :label_id Add a custom label to the new contact (default to 0)
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [BOOLEAN] :watched Whether the new contact should be watched, note this is only effective on characters (default to false)
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<Integer>]
    def post_characters_character_id_contacts(character_id, contact_ids, standing, opts = {})
      data, _status_code, _headers = post_characters_character_id_contacts_with_http_info(character_id, contact_ids, standing, opts)
      data
    end

    # Add contacts
    # Bulk add contacts with same settings  --- 
    # @param character_id An EVE character ID
    # @param contact_ids A list of contacts to add
    # @param standing Standing for the new contact
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from
    # @option opts [Integer] :label_id Add a custom label to the new contact
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [BOOLEAN] :watched Whether the new contact should be watched, note this is only effective on characters
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<(Array<Integer>, Fixnum, Hash)>] Array<Integer> data, response status code and response headers
    def post_characters_character_id_contacts_with_http_info(character_id, contact_ids, standing, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ContactsApi.post_characters_character_id_contacts ...'
      end
      # verify the required parameter 'character_id' is set
      if @api_client.config.client_side_validation && character_id.nil?
        fail ArgumentError, "Missing the required parameter 'character_id' when calling ContactsApi.post_characters_character_id_contacts"
      end
      if @api_client.config.client_side_validation && character_id < 1
        fail ArgumentError, 'invalid value for "character_id" when calling ContactsApi.post_characters_character_id_contacts, must be greater than or equal to 1.'
      end

      # verify the required parameter 'contact_ids' is set
      if @api_client.config.client_side_validation && contact_ids.nil?
        fail ArgumentError, "Missing the required parameter 'contact_ids' when calling ContactsApi.post_characters_character_id_contacts"
      end
      # verify the required parameter 'standing' is set
      if @api_client.config.client_side_validation && standing.nil?
        fail ArgumentError, "Missing the required parameter 'standing' when calling ContactsApi.post_characters_character_id_contacts"
      end
      if @api_client.config.client_side_validation && standing > 10
        fail ArgumentError, 'invalid value for "standing" when calling ContactsApi.post_characters_character_id_contacts, must be smaller than or equal to 10.'
      end

      if @api_client.config.client_side_validation && standing < -10
        fail ArgumentError, 'invalid value for "standing" when calling ContactsApi.post_characters_character_id_contacts, must be greater than or equal to -10.'
      end

      if @api_client.config.client_side_validation && opts[:'datasource'] && !['tranquility', 'singularity'].include?(opts[:'datasource'])
        fail ArgumentError, 'invalid value for "datasource", must be one of tranquility, singularity'
      end
      # resource path
      local_var_path = '/v1/characters/{character_id}/contacts/'.sub('{' + 'character_id' + '}', character_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'standing'] = standing
      query_params[:'datasource'] = opts[:'datasource'] if !opts[:'datasource'].nil?
      query_params[:'label_id'] = opts[:'label_id'] if !opts[:'label_id'].nil?
      query_params[:'token'] = opts[:'token'] if !opts[:'token'].nil?
      query_params[:'user_agent'] = opts[:'user_agent'] if !opts[:'user_agent'].nil?
      query_params[:'watched'] = opts[:'watched'] if !opts[:'watched'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      header_params[:'X-User-Agent'] = opts[:'x_user_agent'] if !opts[:'x_user_agent'].nil?

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(contact_ids)
      auth_names = ['evesso']
      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 => 'Array<Integer>')
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ContactsApi#post_characters_character_id_contacts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
    # Edit contacts
    # Bulk edit contacts with same settings  --- 
    # @param character_id An EVE character ID
    # @param contact_ids A list of contacts to edit
    # @param standing Standing for the contact
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from (default to tranquility)
    # @option opts [Integer] :label_id Add a custom label to the contact, use 0 for clearing label (default to 0)
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [BOOLEAN] :watched Whether the contact should be watched, note this is only effective on characters (default to false)
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [nil]
    def put_characters_character_id_contacts(character_id, contact_ids, standing, opts = {})
      put_characters_character_id_contacts_with_http_info(character_id, contact_ids, standing, opts)
      nil
    end

    # Edit contacts
    # Bulk edit contacts with same settings  --- 
    # @param character_id An EVE character ID
    # @param contact_ids A list of contacts to edit
    # @param standing Standing for the contact
    # @param [Hash] opts the optional parameters
    # @option opts [String] :datasource The server name you would like data from
    # @option opts [Integer] :label_id Add a custom label to the contact, use 0 for clearing label
    # @option opts [String] :token Access token to use if unable to set a header
    # @option opts [String] :user_agent Client identifier, takes precedence over headers
    # @option opts [BOOLEAN] :watched Whether the contact should be watched, note this is only effective on characters
    # @option opts [String] :x_user_agent Client identifier, takes precedence over User-Agent
    # @return [Array<(nil, Fixnum, Hash)>] nil, response status code and response headers
    def put_characters_character_id_contacts_with_http_info(character_id, contact_ids, standing, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ContactsApi.put_characters_character_id_contacts ...'
      end
      # verify the required parameter 'character_id' is set
      if @api_client.config.client_side_validation && character_id.nil?
        fail ArgumentError, "Missing the required parameter 'character_id' when calling ContactsApi.put_characters_character_id_contacts"
      end
      if @api_client.config.client_side_validation && character_id < 1
        fail ArgumentError, 'invalid value for "character_id" when calling ContactsApi.put_characters_character_id_contacts, must be greater than or equal to 1.'
      end

      # verify the required parameter 'contact_ids' is set
      if @api_client.config.client_side_validation && contact_ids.nil?
        fail ArgumentError, "Missing the required parameter 'contact_ids' when calling ContactsApi.put_characters_character_id_contacts"
      end
      # verify the required parameter 'standing' is set
      if @api_client.config.client_side_validation && standing.nil?
        fail ArgumentError, "Missing the required parameter 'standing' when calling ContactsApi.put_characters_character_id_contacts"
      end
      if @api_client.config.client_side_validation && standing > 10
        fail ArgumentError, 'invalid value for "standing" when calling ContactsApi.put_characters_character_id_contacts, must be smaller than or equal to 10.'
      end

      if @api_client.config.client_side_validation && standing < -10
        fail ArgumentError, 'invalid value for "standing" when calling ContactsApi.put_characters_character_id_contacts, must be greater than or equal to -10.'
      end

      if @api_client.config.client_side_validation && opts[:'datasource'] && !['tranquility', 'singularity'].include?(opts[:'datasource'])
        fail ArgumentError, 'invalid value for "datasource", must be one of tranquility, singularity'
      end
      # resource path
      local_var_path = '/v1/characters/{character_id}/contacts/'.sub('{' + 'character_id' + '}', character_id.to_s)

      # query parameters
      query_params = {}
      query_params[:'standing'] = standing
      query_params[:'datasource'] = opts[:'datasource'] if !opts[:'datasource'].nil?
      query_params[:'label_id'] = opts[:'label_id'] if !opts[:'label_id'].nil?
      query_params[:'token'] = opts[:'token'] if !opts[:'token'].nil?
      query_params[:'user_agent'] = opts[:'user_agent'] if !opts[:'user_agent'].nil?
      query_params[:'watched'] = opts[:'watched'] if !opts[:'watched'].nil?

      # header parameters
      header_params = {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      header_params[:'X-User-Agent'] = opts[:'x_user_agent'] if !opts[:'x_user_agent'].nil?

      # form parameters
      form_params = {}

      # http body (model)
      post_body = @api_client.object_to_http_body(contact_ids)
      auth_names = ['evesso']
      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)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: ContactsApi#put_characters_character_id_contacts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end
