=begin
#Lob

#The Lob API is organized around REST. Our API is designed to have predictable, resource-oriented URLs and uses HTTP response codes to indicate any API errors. <p> Looking for our [previous documentation](https://lob.github.io/legacy-docs/)? 

The version of the OpenAPI document: 1.3.0
Contact: lob-openapi@lob.com
Generated by: https://openapi-generator.tech
OpenAPI Generator version: 5.2.1

=end

require 'cgi'

module Lob
  class UsAutocompletionsApi
    attr_accessor :api_client

    def initialize(api_client = ApiClient.default)
      @api_client = api_client
    end
    # autocomplete
    # Given an address prefix consisting of a partial primary line, as well as optional input of city, state, and zip code, this functionality returns up to 10 full US address suggestions. Not all of them will turn out to be valid addresses; they'll need to be [verified](#operation/verification_us).
    # @param us_autocompletions_writable [UsAutocompletionsWritable] 
    # @param [Hash] opts the optional parameters
    # @return [UsAutocompletions]
    def autocomplete(us_autocompletions_writable, opts = {})
      data, _status_code, _headers = us_autocompletion_with_http_info(us_autocompletions_writable, opts)
      data
    end

    # autocomplete
    # Given an address prefix consisting of a partial primary line, as well as optional input of city, state, and zip code, this functionality returns up to 10 full US address suggestions. Not all of them will turn out to be valid addresses; they&#39;ll need to be [verified](#operation/verification_us).
    # @param us_autocompletions_writable [UsAutocompletionsWritable] 
    # @param [Hash] opts the optional parameters
    # @return [Array<(UsAutocompletions, Integer, Hash)>] UsAutocompletions data, response status code and response headers
    def us_autocompletion_with_http_info(us_autocompletions_writable, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: UsAutocompletionsApi.us_autocompletion ...'
      end
      # verify the required parameter 'us_autocompletions_writable' is set
      if @api_client.config.client_side_validation && us_autocompletions_writable.nil?
        fail ArgumentError, "Missing the required parameter 'us_autocompletions_writable' when calling UsAutocompletionsApi.us_autocompletion"
      end
      # resource path
      local_var_path = '/us_autocompletions'

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      content_type = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])
      if !content_type.nil?
          header_params['Content-Type'] = content_type
      end

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:debug_body] || @api_client.object_to_http_body(us_autocompletions_writable)

      # return_type
      return_type = opts[:debug_return_type] || 'UsAutocompletions'

      # auth_names
      auth_names = opts[:debug_auth_names] || ['basicAuth']

      new_options = opts.merge(
        :operation => :"UsAutocompletionsApi.us_autocompletion",
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: UsAutocompletionsApi#us_autocompletion\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end
