text: # coding: utf-8
  
  """
      spoonacular API
  
      The spoonacular Nutrition, Recipe, and Food API allows you to access over 380,000 recipes, thousands of ingredients, 80,000 food products, and 100,000 menu items. Our food ontology and semantic recipe search engine makes it possible to search for recipes using natural language queries, such as \"gluten free brownies without sugar\" or \"low fat vegan cupcakes.\" You can automatically calculate the nutritional information for any recipe, analyze recipe costs, visualize ingredient lists, find recipes for what's in your fridge, find recipes based on special diets, nutritional requirements, or favorite ingredients, classify recipes into types and cuisines, convert ingredient amounts, or even compute an entire meal plan. With our powerful API, you can create many kinds of food and especially nutrition apps.  Special diets/dietary requirements currently available include: vegan, vegetarian, pescetarian, gluten free, grain free, dairy free, high protein, whole 30, low sodium, low carb, Paleo, ketogenic, FODMAP, and Primal.  # noqa: E501
  
      The version of the OpenAPI document: 1.0
      Contact: david@spoonacular.com
      Generated by: https://openapi-generator.tech
  """
  
  
  from __future__ import absolute_import
  
  import re  # noqa: F401
  
  # python 2 and python 3 compatibility library
  import six
  
  from spoonacular.api_client import ApiClient
  from spoonacular.exceptions import (
      ApiTypeError,
      ApiValueError
  )
  
  
  class DefaultApi(object):
      """NOTE: This class is auto generated by OpenAPI Generator
      Ref: https://openapi-generator.tech
  
      Do not edit the class manually.
      """
  
      def __init__(self, api_client=None):
          if api_client is None:
              api_client = ApiClient()
          self.api_client = api_client
  
      def add_to_meal_plan(self, username, hash, inline_object11, **kwargs):  # noqa: E501
          """Add to Meal Plan  # noqa: E501
  
          Add an item to the user's meal plan.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.add_to_meal_plan(username, hash, inline_object11, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject11 inline_object11: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.add_to_meal_plan_with_http_info(username, hash, inline_object11, **kwargs)  # noqa: E501
          else:
              (data) = self.add_to_meal_plan_with_http_info(username, hash, inline_object11, **kwargs)  # noqa: E501
              return data
  
      def add_to_meal_plan_with_http_info(self, username, hash, inline_object11, **kwargs):  # noqa: E501
          """Add to Meal Plan  # noqa: E501
  
          Add an item to the user's meal plan.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.add_to_meal_plan_with_http_info(username, hash, inline_object11, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject11 inline_object11: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['username', 'hash', 'inline_object11']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method add_to_meal_plan" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'username' is set
          if ('username' not in local_var_params or
                  local_var_params['username'] is None):
              raise ApiValueError("Missing the required parameter `username` when calling `add_to_meal_plan`")  # noqa: E501
          # verify the required parameter 'hash' is set
          if ('hash' not in local_var_params or
                  local_var_params['hash'] is None):
              raise ApiValueError("Missing the required parameter `hash` when calling `add_to_meal_plan`")  # noqa: E501
          # verify the required parameter 'inline_object11' is set
          if ('inline_object11' not in local_var_params or
                  local_var_params['inline_object11'] is None):
              raise ApiValueError("Missing the required parameter `inline_object11` when calling `add_to_meal_plan`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'username' in local_var_params:
              path_params['username'] = local_var_params['username']  # noqa: E501
  
          query_params = []
          if 'hash' in local_var_params:
              query_params.append(('hash', local_var_params['hash']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'inline_object11' in local_var_params:
              body_params = local_var_params['inline_object11']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              [''])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/mealplanner/{username}/items', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def add_to_shopping_list(self, username, hash, inline_object14, **kwargs):  # noqa: E501
          """Add to Shopping List  # noqa: E501
  
          Add an item to the current shopping list of a user.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.add_to_shopping_list(username, hash, inline_object14, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject14 inline_object14: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.add_to_shopping_list_with_http_info(username, hash, inline_object14, **kwargs)  # noqa: E501
          else:
              (data) = self.add_to_shopping_list_with_http_info(username, hash, inline_object14, **kwargs)  # noqa: E501
              return data
  
      def add_to_shopping_list_with_http_info(self, username, hash, inline_object14, **kwargs):  # noqa: E501
          """Add to Shopping List  # noqa: E501
  
          Add an item to the current shopping list of a user.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.add_to_shopping_list_with_http_info(username, hash, inline_object14, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject14 inline_object14: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['username', 'hash', 'inline_object14']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method add_to_shopping_list" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'username' is set
          if ('username' not in local_var_params or
                  local_var_params['username'] is None):
              raise ApiValueError("Missing the required parameter `username` when calling `add_to_shopping_list`")  # noqa: E501
          # verify the required parameter 'hash' is set
          if ('hash' not in local_var_params or
                  local_var_params['hash'] is None):
              raise ApiValueError("Missing the required parameter `hash` when calling `add_to_shopping_list`")  # noqa: E501
          # verify the required parameter 'inline_object14' is set
          if ('inline_object14' not in local_var_params or
                  local_var_params['inline_object14'] is None):
              raise ApiValueError("Missing the required parameter `inline_object14` when calling `add_to_shopping_list`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'username' in local_var_params:
              path_params['username'] = local_var_params['username']  # noqa: E501
  
          query_params = []
          if 'hash' in local_var_params:
              query_params.append(('hash', local_var_params['hash']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'inline_object14' in local_var_params:
              body_params = local_var_params['inline_object14']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              [''])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/mealplanner/{username}/shopping-list/items', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def analyze_a_recipe_search_query(self, q, **kwargs):  # noqa: E501
          """Analyze a Recipe Search Query  # noqa: E501
  
          Parse a recipe search query to find out its intention.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.analyze_a_recipe_search_query(q, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str q: The recipe search query. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.analyze_a_recipe_search_query_with_http_info(q, **kwargs)  # noqa: E501
          else:
              (data) = self.analyze_a_recipe_search_query_with_http_info(q, **kwargs)  # noqa: E501
              return data
  
      def analyze_a_recipe_search_query_with_http_info(self, q, **kwargs):  # noqa: E501
          """Analyze a Recipe Search Query  # noqa: E501
  
          Parse a recipe search query to find out its intention.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.analyze_a_recipe_search_query_with_http_info(q, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str q: The recipe search query. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['q']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method analyze_a_recipe_search_query" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'q' is set
          if ('q' not in local_var_params or
                  local_var_params['q'] is None):
              raise ApiValueError("Missing the required parameter `q` when calling `analyze_a_recipe_search_query`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'q' in local_var_params:
              query_params.append(('q', local_var_params['q']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/queries/analyze', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def analyze_recipe_instructions(self, instructions, **kwargs):  # noqa: E501
          """Analyze Recipe Instructions  # noqa: E501
  
          This endpoint allows you to break down instructions into atomic steps. Furthermore, each step will contain the ingredients and equipment required. Additionally, all ingredients and equipment from the recipe's instructions will be extracted independently of the step they're used in.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.analyze_recipe_instructions(instructions, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str instructions: The instructions to be analyzed. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.analyze_recipe_instructions_with_http_info(instructions, **kwargs)  # noqa: E501
          else:
              (data) = self.analyze_recipe_instructions_with_http_info(instructions, **kwargs)  # noqa: E501
              return data
  
      def analyze_recipe_instructions_with_http_info(self, instructions, **kwargs):  # noqa: E501
          """Analyze Recipe Instructions  # noqa: E501
  
          This endpoint allows you to break down instructions into atomic steps. Furthermore, each step will contain the ingredients and equipment required. Additionally, all ingredients and equipment from the recipe's instructions will be extracted independently of the step they're used in.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.analyze_recipe_instructions_with_http_info(instructions, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str instructions: The instructions to be analyzed. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['instructions']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method analyze_recipe_instructions" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'instructions' is set
          if ('instructions' not in local_var_params or
                  local_var_params['instructions'] is None):
              raise ApiValueError("Missing the required parameter `instructions` when calling `analyze_recipe_instructions`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
          if 'instructions' in local_var_params:
              form_params.append(('instructions', local_var_params['instructions']))  # noqa: E501
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/x-www-form-urlencoded'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/analyzeInstructions', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def autocomplete_ingredient_search(self, query, **kwargs):  # noqa: E501
          """Autocomplete Ingredient Search  # noqa: E501
  
          Autocomplete the entry of an ingredient.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.autocomplete_ingredient_search(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The partial or full ingredient name. (required)
          :param float number: The number of results to return (between 1 and 100).
          :param bool meta_information: Whether to return more meta information about the ingredients.
          :param str intolerances: A comma-separated list of intolerances. All recipes returned must not contain ingredients that are not suitable for people with the intolerances entered. See a full list of supported intolerances.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.autocomplete_ingredient_search_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.autocomplete_ingredient_search_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def autocomplete_ingredient_search_with_http_info(self, query, **kwargs):  # noqa: E501
          """Autocomplete Ingredient Search  # noqa: E501
  
          Autocomplete the entry of an ingredient.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.autocomplete_ingredient_search_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The partial or full ingredient name. (required)
          :param float number: The number of results to return (between 1 and 100).
          :param bool meta_information: Whether to return more meta information about the ingredients.
          :param str intolerances: A comma-separated list of intolerances. All recipes returned must not contain ingredients that are not suitable for people with the intolerances entered. See a full list of supported intolerances.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'number', 'meta_information', 'intolerances']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method autocomplete_ingredient_search" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `autocomplete_ingredient_search`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
          if 'meta_information' in local_var_params:
              query_params.append(('metaInformation', local_var_params['meta_information']))  # noqa: E501
          if 'intolerances' in local_var_params:
              query_params.append(('intolerances', local_var_params['intolerances']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/ingredients/autocomplete', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def autocomplete_menu_item_search(self, query, **kwargs):  # noqa: E501
          """Autocomplete Menu Item Search  # noqa: E501
  
          Generate suggestions for menu items based on a (partial) query. The matches will be found by looking in the title only.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.autocomplete_menu_item_search(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The (partial) search query. (required)
          :param float number: The number of results to return (between 1 and 25).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.autocomplete_menu_item_search_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.autocomplete_menu_item_search_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def autocomplete_menu_item_search_with_http_info(self, query, **kwargs):  # noqa: E501
          """Autocomplete Menu Item Search  # noqa: E501
  
          Generate suggestions for menu items based on a (partial) query. The matches will be found by looking in the title only.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.autocomplete_menu_item_search_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The (partial) search query. (required)
          :param float number: The number of results to return (between 1 and 25).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method autocomplete_menu_item_search" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `autocomplete_menu_item_search`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/menuItems/suggest', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def autocomplete_product_search(self, query, **kwargs):  # noqa: E501
          """Autocomplete Product Search  # noqa: E501
  
          Generate suggestions for grocery products based on a (partial) query. The matches will be found by looking in the title only.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.autocomplete_product_search(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The (partial) search query. (required)
          :param float number: The number of results to return (between 1 and 25).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.autocomplete_product_search_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.autocomplete_product_search_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def autocomplete_product_search_with_http_info(self, query, **kwargs):  # noqa: E501
          """Autocomplete Product Search  # noqa: E501
  
          Generate suggestions for grocery products based on a (partial) query. The matches will be found by looking in the title only.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.autocomplete_product_search_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The (partial) search query. (required)
          :param float number: The number of results to return (between 1 and 25).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method autocomplete_product_search" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `autocomplete_product_search`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/products/suggest', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def autocomplete_recipe_search(self, query, **kwargs):  # noqa: E501
          """Autocomplete Recipe Search  # noqa: E501
  
          Autocomplete a partial input to suggest possible recipe names.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.autocomplete_recipe_search(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The query to be autocompleted. (required)
          :param float number: The number of results to return (between 1 and 25).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.autocomplete_recipe_search_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.autocomplete_recipe_search_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def autocomplete_recipe_search_with_http_info(self, query, **kwargs):  # noqa: E501
          """Autocomplete Recipe Search  # noqa: E501
  
          Autocomplete a partial input to suggest possible recipe names.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.autocomplete_recipe_search_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The query to be autocompleted. (required)
          :param float number: The number of results to return (between 1 and 25).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method autocomplete_recipe_search" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `autocomplete_recipe_search`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/autocomplete', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def classify_cuisine(self, title, ingredient_list, **kwargs):  # noqa: E501
          """Classify Cuisine  # noqa: E501
  
          Classify the recipe's cuisine.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.classify_cuisine(title, ingredient_list, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str title: The title of the recipe. (required)
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line (separate lines with \\\\n). (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.classify_cuisine_with_http_info(title, ingredient_list, **kwargs)  # noqa: E501
          else:
              (data) = self.classify_cuisine_with_http_info(title, ingredient_list, **kwargs)  # noqa: E501
              return data
  
      def classify_cuisine_with_http_info(self, title, ingredient_list, **kwargs):  # noqa: E501
          """Classify Cuisine  # noqa: E501
  
          Classify the recipe's cuisine.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.classify_cuisine_with_http_info(title, ingredient_list, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str title: The title of the recipe. (required)
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line (separate lines with \\\\n). (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['title', 'ingredient_list']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method classify_cuisine" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'title' is set
          if ('title' not in local_var_params or
                  local_var_params['title'] is None):
              raise ApiValueError("Missing the required parameter `title` when calling `classify_cuisine`")  # noqa: E501
          # verify the required parameter 'ingredient_list' is set
          if ('ingredient_list' not in local_var_params or
                  local_var_params['ingredient_list'] is None):
              raise ApiValueError("Missing the required parameter `ingredient_list` when calling `classify_cuisine`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
          if 'title' in local_var_params:
              form_params.append(('title', local_var_params['title']))  # noqa: E501
          if 'ingredient_list' in local_var_params:
              form_params.append(('ingredientList', local_var_params['ingredient_list']))  # noqa: E501
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/x-www-form-urlencoded'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/cuisine', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def classify_grocery_product(self, inline_object9, **kwargs):  # noqa: E501
          """Classify Grocery Product  # noqa: E501
  
          This endpoint allows you to match a packaged food to a basic category, e.g. a specific brand of milk to the category milk.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.classify_grocery_product(inline_object9, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param InlineObject9 inline_object9: (required)
          :param str locale: The display name of the returned category, supported is en_US (for American English) and en_GB (for British English).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.classify_grocery_product_with_http_info(inline_object9, **kwargs)  # noqa: E501
          else:
              (data) = self.classify_grocery_product_with_http_info(inline_object9, **kwargs)  # noqa: E501
              return data
  
      def classify_grocery_product_with_http_info(self, inline_object9, **kwargs):  # noqa: E501
          """Classify Grocery Product  # noqa: E501
  
          This endpoint allows you to match a packaged food to a basic category, e.g. a specific brand of milk to the category milk.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.classify_grocery_product_with_http_info(inline_object9, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param InlineObject9 inline_object9: (required)
          :param str locale: The display name of the returned category, supported is en_US (for American English) and en_GB (for British English).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['inline_object9', 'locale']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method classify_grocery_product" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'inline_object9' is set
          if ('inline_object9' not in local_var_params or
                  local_var_params['inline_object9'] is None):
              raise ApiValueError("Missing the required parameter `inline_object9` when calling `classify_grocery_product`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'locale' in local_var_params:
              query_params.append(('locale', local_var_params['locale']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'inline_object9' in local_var_params:
              body_params = local_var_params['inline_object9']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/products/classify', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def classify_grocery_product_bulk(self, request_body, **kwargs):  # noqa: E501
          """Classify Grocery Product Bulk  # noqa: E501
  
          Provide a set of product jsons, get back classified products.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.classify_grocery_product_bulk(request_body, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param list[object] request_body: (required)
          :param str locale: The display name of the returned category, supported is en_US (for American English) and en_GB (for British English).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.classify_grocery_product_bulk_with_http_info(request_body, **kwargs)  # noqa: E501
          else:
              (data) = self.classify_grocery_product_bulk_with_http_info(request_body, **kwargs)  # noqa: E501
              return data
  
      def classify_grocery_product_bulk_with_http_info(self, request_body, **kwargs):  # noqa: E501
          """Classify Grocery Product Bulk  # noqa: E501
  
          Provide a set of product jsons, get back classified products.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.classify_grocery_product_bulk_with_http_info(request_body, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param list[object] request_body: (required)
          :param str locale: The display name of the returned category, supported is en_US (for American English) and en_GB (for British English).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['request_body', 'locale']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method classify_grocery_product_bulk" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'request_body' is set
          if ('request_body' not in local_var_params or
                  local_var_params['request_body'] is None):
              raise ApiValueError("Missing the required parameter `request_body` when calling `classify_grocery_product_bulk`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'locale' in local_var_params:
              query_params.append(('locale', local_var_params['locale']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'request_body' in local_var_params:
              body_params = local_var_params['request_body']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/products/classifyBatch', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def clear_meal_plan_day(self, username, date, hash, inline_object10, **kwargs):  # noqa: E501
          """Clear Meal Plan Day  # noqa: E501
  
          Delete all planned items from the user's meal plan for a specific day.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.clear_meal_plan_day(username, date, hash, inline_object10, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str date: The date in the format yyyy-mm-dd. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject10 inline_object10: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.clear_meal_plan_day_with_http_info(username, date, hash, inline_object10, **kwargs)  # noqa: E501
          else:
              (data) = self.clear_meal_plan_day_with_http_info(username, date, hash, inline_object10, **kwargs)  # noqa: E501
              return data
  
      def clear_meal_plan_day_with_http_info(self, username, date, hash, inline_object10, **kwargs):  # noqa: E501
          """Clear Meal Plan Day  # noqa: E501
  
          Delete all planned items from the user's meal plan for a specific day.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.clear_meal_plan_day_with_http_info(username, date, hash, inline_object10, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str date: The date in the format yyyy-mm-dd. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject10 inline_object10: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['username', 'date', 'hash', 'inline_object10']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method clear_meal_plan_day" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'username' is set
          if ('username' not in local_var_params or
                  local_var_params['username'] is None):
              raise ApiValueError("Missing the required parameter `username` when calling `clear_meal_plan_day`")  # noqa: E501
          # verify the required parameter 'date' is set
          if ('date' not in local_var_params or
                  local_var_params['date'] is None):
              raise ApiValueError("Missing the required parameter `date` when calling `clear_meal_plan_day`")  # noqa: E501
          # verify the required parameter 'hash' is set
          if ('hash' not in local_var_params or
                  local_var_params['hash'] is None):
              raise ApiValueError("Missing the required parameter `hash` when calling `clear_meal_plan_day`")  # noqa: E501
          # verify the required parameter 'inline_object10' is set
          if ('inline_object10' not in local_var_params or
                  local_var_params['inline_object10'] is None):
              raise ApiValueError("Missing the required parameter `inline_object10` when calling `clear_meal_plan_day`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'username' in local_var_params:
              path_params['username'] = local_var_params['username']  # noqa: E501
          if 'date' in local_var_params:
              path_params['date'] = local_var_params['date']  # noqa: E501
  
          query_params = []
          if 'hash' in local_var_params:
              query_params.append(('hash', local_var_params['hash']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'inline_object10' in local_var_params:
              body_params = local_var_params['inline_object10']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              [''])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/mealplanner/{username}/day/{date}', 'DELETE',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def compute_glycemic_load(self, body, **kwargs):  # noqa: E501
          """Compute Glycemic Load  # noqa: E501
  
          Retrieve the glycemic index for a list of ingredients and compute the individual and total glycemic load.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.compute_glycemic_load(body, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param object body: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.compute_glycemic_load_with_http_info(body, **kwargs)  # noqa: E501
          else:
              (data) = self.compute_glycemic_load_with_http_info(body, **kwargs)  # noqa: E501
              return data
  
      def compute_glycemic_load_with_http_info(self, body, **kwargs):  # noqa: E501
          """Compute Glycemic Load  # noqa: E501
  
          Retrieve the glycemic index for a list of ingredients and compute the individual and total glycemic load.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.compute_glycemic_load_with_http_info(body, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param object body: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['body']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method compute_glycemic_load" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'body' is set
          if ('body' not in local_var_params or
                  local_var_params['body'] is None):
              raise ApiValueError("Missing the required parameter `body` when calling `compute_glycemic_load`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'body' in local_var_params:
              body_params = local_var_params['body']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/ingredients/glycemicLoad', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def connect_user(self, body, **kwargs):  # noqa: E501
          """Connect User  # noqa: E501
  
          In order to call user-specific endpoints, you need to connect your app's users to spoonacular users.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.connect_user(body, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param object body: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.connect_user_with_http_info(body, **kwargs)  # noqa: E501
          else:
              (data) = self.connect_user_with_http_info(body, **kwargs)  # noqa: E501
              return data
  
      def connect_user_with_http_info(self, body, **kwargs):  # noqa: E501
          """Connect User  # noqa: E501
  
          In order to call user-specific endpoints, you need to connect your app's users to spoonacular users.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.connect_user_with_http_info(body, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param object body: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['body']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method connect_user" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'body' is set
          if ('body' not in local_var_params or
                  local_var_params['body'] is None):
              raise ApiValueError("Missing the required parameter `body` when calling `connect_user`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'body' in local_var_params:
              body_params = local_var_params['body']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              [''])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/users/connect', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def convert_amounts(self, ingredient_name, source_amount, source_unit, target_unit, **kwargs):  # noqa: E501
          """Convert Amounts  # noqa: E501
  
          Convert amounts like \"2 cups of flour to grams\".  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.convert_amounts(ingredient_name, source_amount, source_unit, target_unit, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_name: The ingredient which you want to convert. (required)
          :param float source_amount: The amount from which you want to convert, e.g. the 2.5 in \"2.5 cups of flour to grams\". (required)
          :param str source_unit: The unit from which you want to convert, e.g. the grams in \"2.5 cups of flour to grams\". You can also use \"piece\", e.g. \"3.4 oz tomatoes to piece\" (required)
          :param str target_unit: The unit to which you want to convert, e.g. the grams in \"2.5 cups of flour to grams\". You can also use \"piece\", e.g. \"3.4 oz tomatoes to piece\" (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.convert_amounts_with_http_info(ingredient_name, source_amount, source_unit, target_unit, **kwargs)  # noqa: E501
          else:
              (data) = self.convert_amounts_with_http_info(ingredient_name, source_amount, source_unit, target_unit, **kwargs)  # noqa: E501
              return data
  
      def convert_amounts_with_http_info(self, ingredient_name, source_amount, source_unit, target_unit, **kwargs):  # noqa: E501
          """Convert Amounts  # noqa: E501
  
          Convert amounts like \"2 cups of flour to grams\".  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.convert_amounts_with_http_info(ingredient_name, source_amount, source_unit, target_unit, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_name: The ingredient which you want to convert. (required)
          :param float source_amount: The amount from which you want to convert, e.g. the 2.5 in \"2.5 cups of flour to grams\". (required)
          :param str source_unit: The unit from which you want to convert, e.g. the grams in \"2.5 cups of flour to grams\". You can also use \"piece\", e.g. \"3.4 oz tomatoes to piece\" (required)
          :param str target_unit: The unit to which you want to convert, e.g. the grams in \"2.5 cups of flour to grams\". You can also use \"piece\", e.g. \"3.4 oz tomatoes to piece\" (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['ingredient_name', 'source_amount', 'source_unit', 'target_unit']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method convert_amounts" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'ingredient_name' is set
          if ('ingredient_name' not in local_var_params or
                  local_var_params['ingredient_name'] is None):
              raise ApiValueError("Missing the required parameter `ingredient_name` when calling `convert_amounts`")  # noqa: E501
          # verify the required parameter 'source_amount' is set
          if ('source_amount' not in local_var_params or
                  local_var_params['source_amount'] is None):
              raise ApiValueError("Missing the required parameter `source_amount` when calling `convert_amounts`")  # noqa: E501
          # verify the required parameter 'source_unit' is set
          if ('source_unit' not in local_var_params or
                  local_var_params['source_unit'] is None):
              raise ApiValueError("Missing the required parameter `source_unit` when calling `convert_amounts`")  # noqa: E501
          # verify the required parameter 'target_unit' is set
          if ('target_unit' not in local_var_params or
                  local_var_params['target_unit'] is None):
              raise ApiValueError("Missing the required parameter `target_unit` when calling `convert_amounts`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'ingredient_name' in local_var_params:
              query_params.append(('ingredientName', local_var_params['ingredient_name']))  # noqa: E501
          if 'source_amount' in local_var_params:
              query_params.append(('sourceAmount', local_var_params['source_amount']))  # noqa: E501
          if 'source_unit' in local_var_params:
              query_params.append(('sourceUnit', local_var_params['source_unit']))  # noqa: E501
          if 'target_unit' in local_var_params:
              query_params.append(('targetUnit', local_var_params['target_unit']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/convert', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def create_recipe_card(self, title, image, ingredients, instructions, ready_in_minutes, servings, mask, background_image, **kwargs):  # noqa: E501
          """Create Recipe Card  # noqa: E501
  
          Generate a recipe card for a recipe.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.create_recipe_card(title, image, ingredients, instructions, ready_in_minutes, servings, mask, background_image, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str title: The title of the recipe. (required)
          :param file image: The binary image of the recipe as jpg. (required)
          :param str ingredients: The ingredient list of the recipe, one ingredient per line (separate lines with \\\\n). (required)
          :param str instructions: The instructions to make the recipe. One step per line (separate lines with \\\\n). (required)
          :param float ready_in_minutes: The number of minutes it takes to get the recipe on the table. (required)
          :param float servings: The number of servings the recipe makes. (required)
          :param str mask: The mask to put over the recipe image (\\\"ellipseMask\\\", \\\"diamondMask\\\", \\\"starMask\\\", \\\"heartMask\\\", \\\"potMask\\\", \\\"fishMask\\\"). (required)
          :param str background_image: The background image (\\\"none\\\",\\\"background1\\\", or \\\"background2\\\"). (required)
          :param str author: The author of the recipe.
          :param str background_color: The background color for the recipe card as a hex-string.
          :param str font_color: The font color for the recipe card as a hex-string.
          :param str source: The source of the recipe.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.create_recipe_card_with_http_info(title, image, ingredients, instructions, ready_in_minutes, servings, mask, background_image, **kwargs)  # noqa: E501
          else:
              (data) = self.create_recipe_card_with_http_info(title, image, ingredients, instructions, ready_in_minutes, servings, mask, background_image, **kwargs)  # noqa: E501
              return data
  
      def create_recipe_card_with_http_info(self, title, image, ingredients, instructions, ready_in_minutes, servings, mask, background_image, **kwargs):  # noqa: E501
          """Create Recipe Card  # noqa: E501
  
          Generate a recipe card for a recipe.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.create_recipe_card_with_http_info(title, image, ingredients, instructions, ready_in_minutes, servings, mask, background_image, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str title: The title of the recipe. (required)
          :param file image: The binary image of the recipe as jpg. (required)
          :param str ingredients: The ingredient list of the recipe, one ingredient per line (separate lines with \\\\n). (required)
          :param str instructions: The instructions to make the recipe. One step per line (separate lines with \\\\n). (required)
          :param float ready_in_minutes: The number of minutes it takes to get the recipe on the table. (required)
          :param float servings: The number of servings the recipe makes. (required)
          :param str mask: The mask to put over the recipe image (\\\"ellipseMask\\\", \\\"diamondMask\\\", \\\"starMask\\\", \\\"heartMask\\\", \\\"potMask\\\", \\\"fishMask\\\"). (required)
          :param str background_image: The background image (\\\"none\\\",\\\"background1\\\", or \\\"background2\\\"). (required)
          :param str author: The author of the recipe.
          :param str background_color: The background color for the recipe card as a hex-string.
          :param str font_color: The font color for the recipe card as a hex-string.
          :param str source: The source of the recipe.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['title', 'image', 'ingredients', 'instructions', 'ready_in_minutes', 'servings', 'mask', 'background_image', 'author', 'background_color', 'font_color', 'source']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method create_recipe_card" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'title' is set
          if ('title' not in local_var_params or
                  local_var_params['title'] is None):
              raise ApiValueError("Missing the required parameter `title` when calling `create_recipe_card`")  # noqa: E501
          # verify the required parameter 'image' is set
          if ('image' not in local_var_params or
                  local_var_params['image'] is None):
              raise ApiValueError("Missing the required parameter `image` when calling `create_recipe_card`")  # noqa: E501
          # verify the required parameter 'ingredients' is set
          if ('ingredients' not in local_var_params or
                  local_var_params['ingredients'] is None):
              raise ApiValueError("Missing the required parameter `ingredients` when calling `create_recipe_card`")  # noqa: E501
          # verify the required parameter 'instructions' is set
          if ('instructions' not in local_var_params or
                  local_var_params['instructions'] is None):
              raise ApiValueError("Missing the required parameter `instructions` when calling `create_recipe_card`")  # noqa: E501
          # verify the required parameter 'ready_in_minutes' is set
          if ('ready_in_minutes' not in local_var_params or
                  local_var_params['ready_in_minutes'] is None):
              raise ApiValueError("Missing the required parameter `ready_in_minutes` when calling `create_recipe_card`")  # noqa: E501
          # verify the required parameter 'servings' is set
          if ('servings' not in local_var_params or
                  local_var_params['servings'] is None):
              raise ApiValueError("Missing the required parameter `servings` when calling `create_recipe_card`")  # noqa: E501
          # verify the required parameter 'mask' is set
          if ('mask' not in local_var_params or
                  local_var_params['mask'] is None):
              raise ApiValueError("Missing the required parameter `mask` when calling `create_recipe_card`")  # noqa: E501
          # verify the required parameter 'background_image' is set
          if ('background_image' not in local_var_params or
                  local_var_params['background_image'] is None):
              raise ApiValueError("Missing the required parameter `background_image` when calling `create_recipe_card`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
          if 'title' in local_var_params:
              form_params.append(('title', local_var_params['title']))  # noqa: E501
          if 'image' in local_var_params:
              local_var_files['image'] = local_var_params['image']  # noqa: E501
          if 'ingredients' in local_var_params:
              form_params.append(('ingredients', local_var_params['ingredients']))  # noqa: E501
          if 'instructions' in local_var_params:
              form_params.append(('instructions', local_var_params['instructions']))  # noqa: E501
          if 'ready_in_minutes' in local_var_params:
              form_params.append(('readyInMinutes', local_var_params['ready_in_minutes']))  # noqa: E501
          if 'servings' in local_var_params:
              form_params.append(('servings', local_var_params['servings']))  # noqa: E501
          if 'mask' in local_var_params:
              form_params.append(('mask', local_var_params['mask']))  # noqa: E501
          if 'background_image' in local_var_params:
              form_params.append(('backgroundImage', local_var_params['background_image']))  # noqa: E501
          if 'author' in local_var_params:
              form_params.append(('author', local_var_params['author']))  # noqa: E501
          if 'background_color' in local_var_params:
              form_params.append(('backgroundColor', local_var_params['background_color']))  # noqa: E501
          if 'font_color' in local_var_params:
              form_params.append(('fontColor', local_var_params['font_color']))  # noqa: E501
          if 'source' in local_var_params:
              form_params.append(('source', local_var_params['source']))  # noqa: E501
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['multipart/form-data'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/visualizeRecipe', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def delete_from_meal_plan(self, username, id, hash, inline_object12, **kwargs):  # noqa: E501
          """Delete from Meal Plan  # noqa: E501
  
          Delete an item from the user's meal plan.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.delete_from_meal_plan(username, id, hash, inline_object12, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param float id: The shopping list item id. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject12 inline_object12: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.delete_from_meal_plan_with_http_info(username, id, hash, inline_object12, **kwargs)  # noqa: E501
          else:
              (data) = self.delete_from_meal_plan_with_http_info(username, id, hash, inline_object12, **kwargs)  # noqa: E501
              return data
  
      def delete_from_meal_plan_with_http_info(self, username, id, hash, inline_object12, **kwargs):  # noqa: E501
          """Delete from Meal Plan  # noqa: E501
  
          Delete an item from the user's meal plan.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.delete_from_meal_plan_with_http_info(username, id, hash, inline_object12, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param float id: The shopping list item id. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject12 inline_object12: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['username', 'id', 'hash', 'inline_object12']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method delete_from_meal_plan" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'username' is set
          if ('username' not in local_var_params or
                  local_var_params['username'] is None):
              raise ApiValueError("Missing the required parameter `username` when calling `delete_from_meal_plan`")  # noqa: E501
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `delete_from_meal_plan`")  # noqa: E501
          # verify the required parameter 'hash' is set
          if ('hash' not in local_var_params or
                  local_var_params['hash'] is None):
              raise ApiValueError("Missing the required parameter `hash` when calling `delete_from_meal_plan`")  # noqa: E501
          # verify the required parameter 'inline_object12' is set
          if ('inline_object12' not in local_var_params or
                  local_var_params['inline_object12'] is None):
              raise ApiValueError("Missing the required parameter `inline_object12` when calling `delete_from_meal_plan`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'username' in local_var_params:
              path_params['username'] = local_var_params['username']  # noqa: E501
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'hash' in local_var_params:
              query_params.append(('hash', local_var_params['hash']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'inline_object12' in local_var_params:
              body_params = local_var_params['inline_object12']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              [''])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/mealplanner/{username}/items/{id}', 'DELETE',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def delete_from_shopping_list(self, username, id, hash, inline_object15, **kwargs):  # noqa: E501
          """Delete from Shopping List  # noqa: E501
  
          Delete an item from the current shopping list of the user.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.delete_from_shopping_list(username, id, hash, inline_object15, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param float id: The shopping list item id. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject15 inline_object15: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.delete_from_shopping_list_with_http_info(username, id, hash, inline_object15, **kwargs)  # noqa: E501
          else:
              (data) = self.delete_from_shopping_list_with_http_info(username, id, hash, inline_object15, **kwargs)  # noqa: E501
              return data
  
      def delete_from_shopping_list_with_http_info(self, username, id, hash, inline_object15, **kwargs):  # noqa: E501
          """Delete from Shopping List  # noqa: E501
  
          Delete an item from the current shopping list of the user.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.delete_from_shopping_list_with_http_info(username, id, hash, inline_object15, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param float id: The shopping list item id. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject15 inline_object15: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['username', 'id', 'hash', 'inline_object15']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method delete_from_shopping_list" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'username' is set
          if ('username' not in local_var_params or
                  local_var_params['username'] is None):
              raise ApiValueError("Missing the required parameter `username` when calling `delete_from_shopping_list`")  # noqa: E501
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `delete_from_shopping_list`")  # noqa: E501
          # verify the required parameter 'hash' is set
          if ('hash' not in local_var_params or
                  local_var_params['hash'] is None):
              raise ApiValueError("Missing the required parameter `hash` when calling `delete_from_shopping_list`")  # noqa: E501
          # verify the required parameter 'inline_object15' is set
          if ('inline_object15' not in local_var_params or
                  local_var_params['inline_object15'] is None):
              raise ApiValueError("Missing the required parameter `inline_object15` when calling `delete_from_shopping_list`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'username' in local_var_params:
              path_params['username'] = local_var_params['username']  # noqa: E501
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'hash' in local_var_params:
              query_params.append(('hash', local_var_params['hash']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'inline_object15' in local_var_params:
              body_params = local_var_params['inline_object15']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              [''])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/mealplanner/{username}/shopping-list/items/{id}', 'DELETE',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def detect_food_in_text(self, text, **kwargs):  # noqa: E501
          """Detect Food in Text  # noqa: E501
  
          Take any text and find all mentions of food contained within it. This task is also called Named Entity Recognition (NER). In this case, the entities are foods. Either dishes, such as pizza or cheeseburger, or ingredients, such as cucumber or almonds.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.detect_food_in_text(text, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str text: The text in which food items, such as dish names and ingredients, should be detected in. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.detect_food_in_text_with_http_info(text, **kwargs)  # noqa: E501
          else:
              (data) = self.detect_food_in_text_with_http_info(text, **kwargs)  # noqa: E501
              return data
  
      def detect_food_in_text_with_http_info(self, text, **kwargs):  # noqa: E501
          """Detect Food in Text  # noqa: E501
  
          Take any text and find all mentions of food contained within it. This task is also called Named Entity Recognition (NER). In this case, the entities are foods. Either dishes, such as pizza or cheeseburger, or ingredients, such as cucumber or almonds.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.detect_food_in_text_with_http_info(text, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str text: The text in which food items, such as dish names and ingredients, should be detected in. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['text']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method detect_food_in_text" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'text' is set
          if ('text' not in local_var_params or
                  local_var_params['text'] is None):
              raise ApiValueError("Missing the required parameter `text` when calling `detect_food_in_text`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
          if 'text' in local_var_params:
              form_params.append(('text', local_var_params['text']))  # noqa: E501
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/x-www-form-urlencoded'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/detect', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def extract_recipe_from_website(self, url, **kwargs):  # noqa: E501
          """Extract Recipe from Website  # noqa: E501
  
          This endpoint lets you extract recipe data such as title, ingredients, and instructions from any properly formatted Website.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.extract_recipe_from_website(url, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str url: The URL of the recipe page. (required)
          :param bool force_extraction: If true, the extraction will be triggered whether we already know the recipe or not. Use this only if information is missing as this operation is slower.
          :param bool analyze: If true, the recipe will be analyzed and classified resolving in more data such as cuisines, dish types, and more.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.extract_recipe_from_website_with_http_info(url, **kwargs)  # noqa: E501
          else:
              (data) = self.extract_recipe_from_website_with_http_info(url, **kwargs)  # noqa: E501
              return data
  
      def extract_recipe_from_website_with_http_info(self, url, **kwargs):  # noqa: E501
          """Extract Recipe from Website  # noqa: E501
  
          This endpoint lets you extract recipe data such as title, ingredients, and instructions from any properly formatted Website.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.extract_recipe_from_website_with_http_info(url, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str url: The URL of the recipe page. (required)
          :param bool force_extraction: If true, the extraction will be triggered whether we already know the recipe or not. Use this only if information is missing as this operation is slower.
          :param bool analyze: If true, the recipe will be analyzed and classified resolving in more data such as cuisines, dish types, and more.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['url', 'force_extraction', 'analyze']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method extract_recipe_from_website" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'url' is set
          if ('url' not in local_var_params or
                  local_var_params['url'] is None):
              raise ApiValueError("Missing the required parameter `url` when calling `extract_recipe_from_website`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'url' in local_var_params:
              query_params.append(('url', local_var_params['url']))  # noqa: E501
          if 'force_extraction' in local_var_params:
              query_params.append(('forceExtraction', local_var_params['force_extraction']))  # noqa: E501
          if 'analyze' in local_var_params:
              query_params.append(('analyze', local_var_params['analyze']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/extract', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def generate_meal_plan(self, **kwargs):  # noqa: E501
          """Generate Meal Plan  # noqa: E501
  
          Generate a meal plan with three meals per day (breakfast, lunch, and dinner).  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.generate_meal_plan(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str time_frame: Either for one \"day\" or an entire \"week\".
          :param float target_calories: What is the caloric target for one day? The meal plan generator will try to get as close as possible to that goal.
          :param str diet: Enter a diet that the meal plan has to adhere to. See a full list of supported diets.
          :param str exclude: A comma-separated list of allergens or ingredients that must be excluded.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.generate_meal_plan_with_http_info(**kwargs)  # noqa: E501
          else:
              (data) = self.generate_meal_plan_with_http_info(**kwargs)  # noqa: E501
              return data
  
      def generate_meal_plan_with_http_info(self, **kwargs):  # noqa: E501
          """Generate Meal Plan  # noqa: E501
  
          Generate a meal plan with three meals per day (breakfast, lunch, and dinner).  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.generate_meal_plan_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str time_frame: Either for one \"day\" or an entire \"week\".
          :param float target_calories: What is the caloric target for one day? The meal plan generator will try to get as close as possible to that goal.
          :param str diet: Enter a diet that the meal plan has to adhere to. See a full list of supported diets.
          :param str exclude: A comma-separated list of allergens or ingredients that must be excluded.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['time_frame', 'target_calories', 'diet', 'exclude']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method generate_meal_plan" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'time_frame' in local_var_params:
              query_params.append(('timeFrame', local_var_params['time_frame']))  # noqa: E501
          if 'target_calories' in local_var_params:
              query_params.append(('targetCalories', local_var_params['target_calories']))  # noqa: E501
          if 'diet' in local_var_params:
              query_params.append(('diet', local_var_params['diet']))  # noqa: E501
          if 'exclude' in local_var_params:
              query_params.append(('exclude', local_var_params['exclude']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/mealplanner/generate', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def generate_shopping_list(self, username, start_date, end_date, hash, inline_object13, **kwargs):  # noqa: E501
          """Generate Shopping List  # noqa: E501
  
          Generate the shopping list for a user from the meal planner in a given time frame.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.generate_shopping_list(username, start_date, end_date, hash, inline_object13, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str start_date: The start date in the format yyyy-mm-dd. (required)
          :param str end_date: The end date in the format yyyy-mm-dd. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject13 inline_object13: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.generate_shopping_list_with_http_info(username, start_date, end_date, hash, inline_object13, **kwargs)  # noqa: E501
          else:
              (data) = self.generate_shopping_list_with_http_info(username, start_date, end_date, hash, inline_object13, **kwargs)  # noqa: E501
              return data
  
      def generate_shopping_list_with_http_info(self, username, start_date, end_date, hash, inline_object13, **kwargs):  # noqa: E501
          """Generate Shopping List  # noqa: E501
  
          Generate the shopping list for a user from the meal planner in a given time frame.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.generate_shopping_list_with_http_info(username, start_date, end_date, hash, inline_object13, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str start_date: The start date in the format yyyy-mm-dd. (required)
          :param str end_date: The end date in the format yyyy-mm-dd. (required)
          :param str hash: The private hash for the username. (required)
          :param InlineObject13 inline_object13: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['username', 'start_date', 'end_date', 'hash', 'inline_object13']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method generate_shopping_list" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'username' is set
          if ('username' not in local_var_params or
                  local_var_params['username'] is None):
              raise ApiValueError("Missing the required parameter `username` when calling `generate_shopping_list`")  # noqa: E501
          # verify the required parameter 'start_date' is set
          if ('start_date' not in local_var_params or
                  local_var_params['start_date'] is None):
              raise ApiValueError("Missing the required parameter `start_date` when calling `generate_shopping_list`")  # noqa: E501
          # verify the required parameter 'end_date' is set
          if ('end_date' not in local_var_params or
                  local_var_params['end_date'] is None):
              raise ApiValueError("Missing the required parameter `end_date` when calling `generate_shopping_list`")  # noqa: E501
          # verify the required parameter 'hash' is set
          if ('hash' not in local_var_params or
                  local_var_params['hash'] is None):
              raise ApiValueError("Missing the required parameter `hash` when calling `generate_shopping_list`")  # noqa: E501
          # verify the required parameter 'inline_object13' is set
          if ('inline_object13' not in local_var_params or
                  local_var_params['inline_object13'] is None):
              raise ApiValueError("Missing the required parameter `inline_object13` when calling `generate_shopping_list`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'username' in local_var_params:
              path_params['username'] = local_var_params['username']  # noqa: E501
          if 'start_date' in local_var_params:
              path_params['start-date'] = local_var_params['start_date']  # noqa: E501
          if 'end_date' in local_var_params:
              path_params['end-date'] = local_var_params['end_date']  # noqa: E501
  
          query_params = []
          if 'hash' in local_var_params:
              query_params.append(('hash', local_var_params['hash']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'inline_object13' in local_var_params:
              body_params = local_var_params['inline_object13']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              [''])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/mealplanner/{username}/shopping-list/{start-date}/{end-date}', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_a_random_food_joke(self, **kwargs):  # noqa: E501
          """Get a Random Food Joke  # noqa: E501
  
          Get a random joke that is related to food. Caution: this is an endpoint for adults!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_a_random_food_joke(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_a_random_food_joke_with_http_info(**kwargs)  # noqa: E501
          else:
              (data) = self.get_a_random_food_joke_with_http_info(**kwargs)  # noqa: E501
              return data
  
      def get_a_random_food_joke_with_http_info(self, **kwargs):  # noqa: E501
          """Get a Random Food Joke  # noqa: E501
  
          Get a random joke that is related to food. Caution: this is an endpoint for adults!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_a_random_food_joke_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = []  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_a_random_food_joke" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/jokes/random', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_analyzed_recipe_instructions(self, id, **kwargs):  # noqa: E501
          """Get Analyzed Recipe Instructions  # noqa: E501
  
          Get an analyzed breakdown of a recipe's instructions. Each step is enriched with the ingredients and equipment required.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_analyzed_recipe_instructions(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :param bool step_breakdown: Whether to break down the recipe steps even more.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_analyzed_recipe_instructions_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_analyzed_recipe_instructions_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_analyzed_recipe_instructions_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Analyzed Recipe Instructions  # noqa: E501
  
          Get an analyzed breakdown of a recipe's instructions. Each step is enriched with the ingredients and equipment required.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_analyzed_recipe_instructions_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :param bool step_breakdown: Whether to break down the recipe steps even more.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id', 'step_breakdown']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_analyzed_recipe_instructions" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_analyzed_recipe_instructions`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'step_breakdown' in local_var_params:
              query_params.append(('stepBreakdown', local_var_params['step_breakdown']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/analyzedInstructions', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_comparable_products(self, upc, **kwargs):  # noqa: E501
          """Get Comparable Products  # noqa: E501
  
          Find comparable products to the given one.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_comparable_products(upc, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float upc: The UPC of the product for which you want to find comparable products. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_comparable_products_with_http_info(upc, **kwargs)  # noqa: E501
          else:
              (data) = self.get_comparable_products_with_http_info(upc, **kwargs)  # noqa: E501
              return data
  
      def get_comparable_products_with_http_info(self, upc, **kwargs):  # noqa: E501
          """Get Comparable Products  # noqa: E501
  
          Find comparable products to the given one.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_comparable_products_with_http_info(upc, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float upc: The UPC of the product for which you want to find comparable products. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['upc']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_comparable_products" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'upc' is set
          if ('upc' not in local_var_params or
                  local_var_params['upc'] is None):
              raise ApiValueError("Missing the required parameter `upc` when calling `get_comparable_products`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'upc' in local_var_params:
              path_params['upc'] = local_var_params['upc']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/products/upc/{upc}/comparable', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_conversation_suggests(self, query, **kwargs):  # noqa: E501
          """Get Conversation Suggests  # noqa: E501
  
          This endpoint returns suggestions for things the user can say or ask the chatbot.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_conversation_suggests(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: A (partial) query from the user. The endpoint will return if it matches topics it can talk about. (required)
          :param float number: The number of suggestions to return (between 1 and 25).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_conversation_suggests_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.get_conversation_suggests_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def get_conversation_suggests_with_http_info(self, query, **kwargs):  # noqa: E501
          """Get Conversation Suggests  # noqa: E501
  
          This endpoint returns suggestions for things the user can say or ask the chatbot.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_conversation_suggests_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: A (partial) query from the user. The endpoint will return if it matches topics it can talk about. (required)
          :param float number: The number of suggestions to return (between 1 and 25).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_conversation_suggests" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `get_conversation_suggests`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/converse/suggest', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_dish_pairing_for_wine(self, wine, **kwargs):  # noqa: E501
          """Get Dish Pairing for Wine  # noqa: E501
  
          Find a dish that goes well with a given wine.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_dish_pairing_for_wine(wine, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str wine: The type of wine that should be paired, e.g. \"merlot\", \"riesling\", or \"malbec\". (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_dish_pairing_for_wine_with_http_info(wine, **kwargs)  # noqa: E501
          else:
              (data) = self.get_dish_pairing_for_wine_with_http_info(wine, **kwargs)  # noqa: E501
              return data
  
      def get_dish_pairing_for_wine_with_http_info(self, wine, **kwargs):  # noqa: E501
          """Get Dish Pairing for Wine  # noqa: E501
  
          Find a dish that goes well with a given wine.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_dish_pairing_for_wine_with_http_info(wine, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str wine: The type of wine that should be paired, e.g. \"merlot\", \"riesling\", or \"malbec\". (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['wine']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_dish_pairing_for_wine" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'wine' is set
          if ('wine' not in local_var_params or
                  local_var_params['wine'] is None):
              raise ApiValueError("Missing the required parameter `wine` when calling `get_dish_pairing_for_wine`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'wine' in local_var_params:
              query_params.append(('wine', local_var_params['wine']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/wine/dishes', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_ingredient_information(self, id, **kwargs):  # noqa: E501
          """Get Ingredient Information  # noqa: E501
  
          Use an ingredient id to get all available information about an ingredient, such as its image and supermarket aisle.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_ingredient_information(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The ingredient id. (required)
          :param float amount: The amount of this ingredient.
          :param str unit: The unit for the given amount.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_ingredient_information_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_ingredient_information_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_ingredient_information_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Ingredient Information  # noqa: E501
  
          Use an ingredient id to get all available information about an ingredient, such as its image and supermarket aisle.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_ingredient_information_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The ingredient id. (required)
          :param float amount: The amount of this ingredient.
          :param str unit: The unit for the given amount.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id', 'amount', 'unit']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_ingredient_information" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_ingredient_information`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'amount' in local_var_params:
              query_params.append(('amount', local_var_params['amount']))  # noqa: E501
          if 'unit' in local_var_params:
              query_params.append(('unit', local_var_params['unit']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/ingredients/{id}/information', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_ingredient_substitutes(self, ingredient_name, **kwargs):  # noqa: E501
          """Get Ingredient Substitutes  # noqa: E501
  
          Search for substitutes for a given ingredient.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_ingredient_substitutes(ingredient_name, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_name: The name of the ingredient you want to replace. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_ingredient_substitutes_with_http_info(ingredient_name, **kwargs)  # noqa: E501
          else:
              (data) = self.get_ingredient_substitutes_with_http_info(ingredient_name, **kwargs)  # noqa: E501
              return data
  
      def get_ingredient_substitutes_with_http_info(self, ingredient_name, **kwargs):  # noqa: E501
          """Get Ingredient Substitutes  # noqa: E501
  
          Search for substitutes for a given ingredient.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_ingredient_substitutes_with_http_info(ingredient_name, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_name: The name of the ingredient you want to replace. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['ingredient_name']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_ingredient_substitutes" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'ingredient_name' is set
          if ('ingredient_name' not in local_var_params or
                  local_var_params['ingredient_name'] is None):
              raise ApiValueError("Missing the required parameter `ingredient_name` when calling `get_ingredient_substitutes`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'ingredient_name' in local_var_params:
              query_params.append(('ingredientName', local_var_params['ingredient_name']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/ingredients/substitutes', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_ingredient_substitutes_by_id(self, id, **kwargs):  # noqa: E501
          """Get Ingredient Substitutes by ID  # noqa: E501
  
          Search for substitutes for a given ingredient.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_ingredient_substitutes_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The id of the ingredient you want substitutes for. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_ingredient_substitutes_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_ingredient_substitutes_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_ingredient_substitutes_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Ingredient Substitutes by ID  # noqa: E501
  
          Search for substitutes for a given ingredient.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_ingredient_substitutes_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The id of the ingredient you want substitutes for. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_ingredient_substitutes_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_ingredient_substitutes_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/ingredients/{id}/substitutes', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_meal_plan_template(self, username, id, hash, **kwargs):  # noqa: E501
          """Get Meal Plan Template  # noqa: E501
  
          Get information about a meal plan template.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_meal_plan_template(username, id, hash, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param float id: The shopping list item id. (required)
          :param str hash: The private hash for the username. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_meal_plan_template_with_http_info(username, id, hash, **kwargs)  # noqa: E501
          else:
              (data) = self.get_meal_plan_template_with_http_info(username, id, hash, **kwargs)  # noqa: E501
              return data
  
      def get_meal_plan_template_with_http_info(self, username, id, hash, **kwargs):  # noqa: E501
          """Get Meal Plan Template  # noqa: E501
  
          Get information about a meal plan template.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_meal_plan_template_with_http_info(username, id, hash, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param float id: The shopping list item id. (required)
          :param str hash: The private hash for the username. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['username', 'id', 'hash']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_meal_plan_template" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'username' is set
          if ('username' not in local_var_params or
                  local_var_params['username'] is None):
              raise ApiValueError("Missing the required parameter `username` when calling `get_meal_plan_template`")  # noqa: E501
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_meal_plan_template`")  # noqa: E501
          # verify the required parameter 'hash' is set
          if ('hash' not in local_var_params or
                  local_var_params['hash'] is None):
              raise ApiValueError("Missing the required parameter `hash` when calling `get_meal_plan_template`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'username' in local_var_params:
              path_params['username'] = local_var_params['username']  # noqa: E501
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'hash' in local_var_params:
              query_params.append(('hash', local_var_params['hash']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/mealplanner/{username}/templates/{id}', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_meal_plan_templates(self, username, hash, **kwargs):  # noqa: E501
          """Get Meal Plan Templates  # noqa: E501
  
          Get meal plan templates from user or public ones.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_meal_plan_templates(username, hash, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str hash: The private hash for the username. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_meal_plan_templates_with_http_info(username, hash, **kwargs)  # noqa: E501
          else:
              (data) = self.get_meal_plan_templates_with_http_info(username, hash, **kwargs)  # noqa: E501
              return data
  
      def get_meal_plan_templates_with_http_info(self, username, hash, **kwargs):  # noqa: E501
          """Get Meal Plan Templates  # noqa: E501
  
          Get meal plan templates from user or public ones.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_meal_plan_templates_with_http_info(username, hash, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str hash: The private hash for the username. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['username', 'hash']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_meal_plan_templates" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'username' is set
          if ('username' not in local_var_params or
                  local_var_params['username'] is None):
              raise ApiValueError("Missing the required parameter `username` when calling `get_meal_plan_templates`")  # noqa: E501
          # verify the required parameter 'hash' is set
          if ('hash' not in local_var_params or
                  local_var_params['hash'] is None):
              raise ApiValueError("Missing the required parameter `hash` when calling `get_meal_plan_templates`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'username' in local_var_params:
              path_params['username'] = local_var_params['username']  # noqa: E501
  
          query_params = []
          if 'hash' in local_var_params:
              query_params.append(('hash', local_var_params['hash']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/mealplanner/{username}/templates', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_meal_plan_week(self, username, start_date, hash, **kwargs):  # noqa: E501
          """Get Meal Plan Week  # noqa: E501
  
          Retrieve a meal planned week for the given user. The username must be a spoonacular user and the hash must the the user's hash that can be found in his/her account.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_meal_plan_week(username, start_date, hash, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str start_date: The start date of the meal planned week in the format yyyy-mm-dd. (required)
          :param str hash: The private hash for the username. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_meal_plan_week_with_http_info(username, start_date, hash, **kwargs)  # noqa: E501
          else:
              (data) = self.get_meal_plan_week_with_http_info(username, start_date, hash, **kwargs)  # noqa: E501
              return data
  
      def get_meal_plan_week_with_http_info(self, username, start_date, hash, **kwargs):  # noqa: E501
          """Get Meal Plan Week  # noqa: E501
  
          Retrieve a meal planned week for the given user. The username must be a spoonacular user and the hash must the the user's hash that can be found in his/her account.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_meal_plan_week_with_http_info(username, start_date, hash, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str start_date: The start date of the meal planned week in the format yyyy-mm-dd. (required)
          :param str hash: The private hash for the username. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['username', 'start_date', 'hash']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_meal_plan_week" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'username' is set
          if ('username' not in local_var_params or
                  local_var_params['username'] is None):
              raise ApiValueError("Missing the required parameter `username` when calling `get_meal_plan_week`")  # noqa: E501
          # verify the required parameter 'start_date' is set
          if ('start_date' not in local_var_params or
                  local_var_params['start_date'] is None):
              raise ApiValueError("Missing the required parameter `start_date` when calling `get_meal_plan_week`")  # noqa: E501
          # verify the required parameter 'hash' is set
          if ('hash' not in local_var_params or
                  local_var_params['hash'] is None):
              raise ApiValueError("Missing the required parameter `hash` when calling `get_meal_plan_week`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'username' in local_var_params:
              path_params['username'] = local_var_params['username']  # noqa: E501
          if 'start_date' in local_var_params:
              path_params['start-date'] = local_var_params['start_date']  # noqa: E501
  
          query_params = []
          if 'hash' in local_var_params:
              query_params.append(('hash', local_var_params['hash']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/mealplanner/{username}/week/{start-date}', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_menu_item_information(self, id, **kwargs):  # noqa: E501
          """Get Menu Item Information  # noqa: E501
  
          Use a menu item id to get all available information about a menu item, such as nutrition.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_menu_item_information(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The menu item id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_menu_item_information_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_menu_item_information_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_menu_item_information_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Menu Item Information  # noqa: E501
  
          Use a menu item id to get all available information about a menu item, such as nutrition.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_menu_item_information_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The menu item id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_menu_item_information" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_menu_item_information`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/menuItems/{id}', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_product_information(self, id, **kwargs):  # noqa: E501
          """Get Product Information  # noqa: E501
  
          Use a product id to get full information about a product, such as ingredients, nutrition, etc. The nutritional information is per serving.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_product_information(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The id of the packaged food. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_product_information_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_product_information_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_product_information_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Product Information  # noqa: E501
  
          Use a product id to get full information about a product, such as ingredients, nutrition, etc. The nutritional information is per serving.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_product_information_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The id of the packaged food. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_product_information" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_product_information`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/products/{id}', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_random_food_trivia(self, **kwargs):  # noqa: E501
          """Get Random Food Trivia  # noqa: E501
  
          Returns random food trivia.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_random_food_trivia(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_random_food_trivia_with_http_info(**kwargs)  # noqa: E501
          else:
              (data) = self.get_random_food_trivia_with_http_info(**kwargs)  # noqa: E501
              return data
  
      def get_random_food_trivia_with_http_info(self, **kwargs):  # noqa: E501
          """Get Random Food Trivia  # noqa: E501
  
          Returns random food trivia.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_random_food_trivia_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = []  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_random_food_trivia" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/trivia/random', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_random_recipes(self, **kwargs):  # noqa: E501
          """Get Random Recipes  # noqa: E501
  
          Find random (popular) recipes. If you need to filter recipes by diet, nutrition etc. you might want to consider using the complex recipe search endpoint and set the sort request parameter to random.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_random_recipes(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param bool limit_license: Whether the recipes should have an open license that allows display with proper attribution.
          :param str tags: The tags (can be diets, meal types, cuisines, or intolerances) that the recipe must have.
          :param float number: The number of random recipes to be returned (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_random_recipes_with_http_info(**kwargs)  # noqa: E501
          else:
              (data) = self.get_random_recipes_with_http_info(**kwargs)  # noqa: E501
              return data
  
      def get_random_recipes_with_http_info(self, **kwargs):  # noqa: E501
          """Get Random Recipes  # noqa: E501
  
          Find random (popular) recipes. If you need to filter recipes by diet, nutrition etc. you might want to consider using the complex recipe search endpoint and set the sort request parameter to random.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_random_recipes_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param bool limit_license: Whether the recipes should have an open license that allows display with proper attribution.
          :param str tags: The tags (can be diets, meal types, cuisines, or intolerances) that the recipe must have.
          :param float number: The number of random recipes to be returned (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['limit_license', 'tags', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_random_recipes" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'limit_license' in local_var_params:
              query_params.append(('limitLicense', local_var_params['limit_license']))  # noqa: E501
          if 'tags' in local_var_params:
              query_params.append(('tags', local_var_params['tags']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/random', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_recipe_equipment_by_id(self, id, **kwargs):  # noqa: E501
          """Get Recipe Equipment by ID  # noqa: E501
  
          Get a recipe's equipment list.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_equipment_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_recipe_equipment_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_recipe_equipment_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_recipe_equipment_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Recipe Equipment by ID  # noqa: E501
  
          Get a recipe's equipment list.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_equipment_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_recipe_equipment_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_recipe_equipment_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/equipmentWidget.json', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_recipe_information(self, id, **kwargs):  # noqa: E501
          """Get Recipe Information  # noqa: E501
  
          Use a recipe id to get full information about a recipe, such as ingredients, nutrition, diet and allergen information, etc.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_information(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The id of the recipe. (required)
          :param bool include_nutrition: Include nutrition data in the recipe information. Nutrition data is per serving. If you want the nutrition data for the entire recipe, just multiply by the number of servings.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_recipe_information_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_recipe_information_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_recipe_information_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Recipe Information  # noqa: E501
  
          Use a recipe id to get full information about a recipe, such as ingredients, nutrition, diet and allergen information, etc.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_information_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The id of the recipe. (required)
          :param bool include_nutrition: Include nutrition data in the recipe information. Nutrition data is per serving. If you want the nutrition data for the entire recipe, just multiply by the number of servings.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id', 'include_nutrition']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_recipe_information" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_recipe_information`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'include_nutrition' in local_var_params:
              query_params.append(('includeNutrition', local_var_params['include_nutrition']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/information', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_recipe_information_bulk(self, ids, **kwargs):  # noqa: E501
          """Get Recipe Information Bulk  # noqa: E501
  
          Get information about multiple recipes at once. This is equivalent to calling the Get Recipe Information endpoint multiple times, but faster.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_information_bulk(ids, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ids: A comma-separated list of recipe ids. (required)
          :param bool include_nutrition: Include nutrition data to the recipe information. Nutrition data is per serving. If you want the nutrition data for the entire recipe, just multiply by the number of servings.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_recipe_information_bulk_with_http_info(ids, **kwargs)  # noqa: E501
          else:
              (data) = self.get_recipe_information_bulk_with_http_info(ids, **kwargs)  # noqa: E501
              return data
  
      def get_recipe_information_bulk_with_http_info(self, ids, **kwargs):  # noqa: E501
          """Get Recipe Information Bulk  # noqa: E501
  
          Get information about multiple recipes at once. This is equivalent to calling the Get Recipe Information endpoint multiple times, but faster.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_information_bulk_with_http_info(ids, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ids: A comma-separated list of recipe ids. (required)
          :param bool include_nutrition: Include nutrition data to the recipe information. Nutrition data is per serving. If you want the nutrition data for the entire recipe, just multiply by the number of servings.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['ids', 'include_nutrition']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_recipe_information_bulk" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'ids' is set
          if ('ids' not in local_var_params or
                  local_var_params['ids'] is None):
              raise ApiValueError("Missing the required parameter `ids` when calling `get_recipe_information_bulk`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'ids' in local_var_params:
              query_params.append(('ids', local_var_params['ids']))  # noqa: E501
          if 'include_nutrition' in local_var_params:
              query_params.append(('includeNutrition', local_var_params['include_nutrition']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/informationBulk', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_recipe_ingredients_by_id(self, id, **kwargs):  # noqa: E501
          """Get Recipe Ingredients by ID  # noqa: E501
  
          Get a recipe's ingredient list.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_ingredients_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_recipe_ingredients_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_recipe_ingredients_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_recipe_ingredients_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Recipe Ingredients by ID  # noqa: E501
  
          Get a recipe's ingredient list.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_ingredients_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_recipe_ingredients_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_recipe_ingredients_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/ingredientWidget.json', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_recipe_nutrition_widget_by_id(self, id, **kwargs):  # noqa: E501
          """Get Recipe Nutrition Widget by ID  # noqa: E501
  
          Get a recipe's nutrition widget data.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_nutrition_widget_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_recipe_nutrition_widget_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_recipe_nutrition_widget_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_recipe_nutrition_widget_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Recipe Nutrition Widget by ID  # noqa: E501
  
          Get a recipe's nutrition widget data.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_nutrition_widget_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_recipe_nutrition_widget_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_recipe_nutrition_widget_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/nutritionWidget.json', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_recipe_price_breakdown_by_id(self, id, **kwargs):  # noqa: E501
          """Get Recipe Price Breakdown by ID  # noqa: E501
  
          Get a recipe's price breakdown data.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_price_breakdown_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_recipe_price_breakdown_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_recipe_price_breakdown_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_recipe_price_breakdown_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Recipe Price Breakdown by ID  # noqa: E501
  
          Get a recipe's price breakdown data.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_price_breakdown_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_recipe_price_breakdown_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_recipe_price_breakdown_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/priceBreakdownWidget.json', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_recipe_taste_by_id(self, id, **kwargs):  # noqa: E501
          """Get Recipe Taste by ID  # noqa: E501
  
          Get a recipe's taste. The tastes supported are sweet, salty, sour, bitter, savory, and fatty.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_taste_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_recipe_taste_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_recipe_taste_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_recipe_taste_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Recipe Taste by ID  # noqa: E501
  
          Get a recipe's taste. The tastes supported are sweet, salty, sour, bitter, savory, and fatty.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_recipe_taste_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_recipe_taste_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_recipe_taste_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/tasteWidget.json', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_shopping_list(self, username, hash, **kwargs):  # noqa: E501
          """Get Shopping List  # noqa: E501
  
          Get the current shopping list for the given user.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_shopping_list(username, hash, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str hash: The private hash for the username. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_shopping_list_with_http_info(username, hash, **kwargs)  # noqa: E501
          else:
              (data) = self.get_shopping_list_with_http_info(username, hash, **kwargs)  # noqa: E501
              return data
  
      def get_shopping_list_with_http_info(self, username, hash, **kwargs):  # noqa: E501
          """Get Shopping List  # noqa: E501
  
          Get the current shopping list for the given user.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_shopping_list_with_http_info(username, hash, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str username: The username. (required)
          :param str hash: The private hash for the username. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['username', 'hash']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_shopping_list" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'username' is set
          if ('username' not in local_var_params or
                  local_var_params['username'] is None):
              raise ApiValueError("Missing the required parameter `username` when calling `get_shopping_list`")  # noqa: E501
          # verify the required parameter 'hash' is set
          if ('hash' not in local_var_params or
                  local_var_params['hash'] is None):
              raise ApiValueError("Missing the required parameter `hash` when calling `get_shopping_list`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'username' in local_var_params:
              path_params['username'] = local_var_params['username']  # noqa: E501
  
          query_params = []
          if 'hash' in local_var_params:
              query_params.append(('hash', local_var_params['hash']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/mealplanner/{username}/shopping-list', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_similar_recipes(self, id, **kwargs):  # noqa: E501
          """Get Similar Recipes  # noqa: E501
  
          Find recipes which are similar to the given one.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_similar_recipes(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The id of the source recipe for which similar recipes should be found. (required)
          :param float number: The number of random recipes to be returned (between 1 and 100).
          :param bool limit_license: Whether the recipes should have an open license that allows display with proper attribution.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_similar_recipes_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.get_similar_recipes_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def get_similar_recipes_with_http_info(self, id, **kwargs):  # noqa: E501
          """Get Similar Recipes  # noqa: E501
  
          Find recipes which are similar to the given one.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_similar_recipes_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The id of the source recipe for which similar recipes should be found. (required)
          :param float number: The number of random recipes to be returned (between 1 and 100).
          :param bool limit_license: Whether the recipes should have an open license that allows display with proper attribution.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id', 'number', 'limit_license']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_similar_recipes" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `get_similar_recipes`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
          if 'limit_license' in local_var_params:
              query_params.append(('limitLicense', local_var_params['limit_license']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/similar', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_wine_description(self, wine, **kwargs):  # noqa: E501
          """Get Wine Description  # noqa: E501
  
          Get a simple description of a certain wine, e.g. \"malbec\", \"riesling\", or \"merlot\".  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_wine_description(wine, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str wine: The name of the wine that should be paired, e.g. \"merlot\", \"riesling\", or \"malbec\". (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_wine_description_with_http_info(wine, **kwargs)  # noqa: E501
          else:
              (data) = self.get_wine_description_with_http_info(wine, **kwargs)  # noqa: E501
              return data
  
      def get_wine_description_with_http_info(self, wine, **kwargs):  # noqa: E501
          """Get Wine Description  # noqa: E501
  
          Get a simple description of a certain wine, e.g. \"malbec\", \"riesling\", or \"merlot\".  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_wine_description_with_http_info(wine, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str wine: The name of the wine that should be paired, e.g. \"merlot\", \"riesling\", or \"malbec\". (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['wine']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_wine_description" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'wine' is set
          if ('wine' not in local_var_params or
                  local_var_params['wine'] is None):
              raise ApiValueError("Missing the required parameter `wine` when calling `get_wine_description`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'wine' in local_var_params:
              query_params.append(('wine', local_var_params['wine']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/wine/description', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_wine_pairing(self, food, **kwargs):  # noqa: E501
          """Get Wine Pairing  # noqa: E501
  
          Find a wine that goes well with a food. Food can be a dish name (\"steak\"), an ingredient name (\"salmon\"), or a cuisine (\"italian\").  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_wine_pairing(food, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str food: The food to get a pairing for. This can be a dish (\"steak\"), an ingredient (\"salmon\"), or a cuisine (\"italian\"). (required)
          :param float max_price: The maximum price for the specific wine recommendation in USD.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_wine_pairing_with_http_info(food, **kwargs)  # noqa: E501
          else:
              (data) = self.get_wine_pairing_with_http_info(food, **kwargs)  # noqa: E501
              return data
  
      def get_wine_pairing_with_http_info(self, food, **kwargs):  # noqa: E501
          """Get Wine Pairing  # noqa: E501
  
          Find a wine that goes well with a food. Food can be a dish name (\"steak\"), an ingredient name (\"salmon\"), or a cuisine (\"italian\").  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_wine_pairing_with_http_info(food, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str food: The food to get a pairing for. This can be a dish (\"steak\"), an ingredient (\"salmon\"), or a cuisine (\"italian\"). (required)
          :param float max_price: The maximum price for the specific wine recommendation in USD.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['food', 'max_price']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_wine_pairing" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'food' is set
          if ('food' not in local_var_params or
                  local_var_params['food'] is None):
              raise ApiValueError("Missing the required parameter `food` when calling `get_wine_pairing`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'food' in local_var_params:
              query_params.append(('food', local_var_params['food']))  # noqa: E501
          if 'max_price' in local_var_params:
              query_params.append(('maxPrice', local_var_params['max_price']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/wine/pairing', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def get_wine_recommendation(self, wine, **kwargs):  # noqa: E501
          """Get Wine Recommendation  # noqa: E501
  
          Get a specific wine recommendation (concrete product) for a given wine type, e.g. \"merlot\".  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_wine_recommendation(wine, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str wine: The type of wine to get a specific product recommendation for. (required)
          :param float max_price: The maximum price for the specific wine recommendation in USD.
          :param float min_rating: The minimum rating of the recommended wine between 0 and 1. For example, 0.8 equals 4 out of 5 stars.
          :param float number: The number of wine recommendations expected (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.get_wine_recommendation_with_http_info(wine, **kwargs)  # noqa: E501
          else:
              (data) = self.get_wine_recommendation_with_http_info(wine, **kwargs)  # noqa: E501
              return data
  
      def get_wine_recommendation_with_http_info(self, wine, **kwargs):  # noqa: E501
          """Get Wine Recommendation  # noqa: E501
  
          Get a specific wine recommendation (concrete product) for a given wine type, e.g. \"merlot\".  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.get_wine_recommendation_with_http_info(wine, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str wine: The type of wine to get a specific product recommendation for. (required)
          :param float max_price: The maximum price for the specific wine recommendation in USD.
          :param float min_rating: The minimum rating of the recommended wine between 0 and 1. For example, 0.8 equals 4 out of 5 stars.
          :param float number: The number of wine recommendations expected (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['wine', 'max_price', 'min_rating', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method get_wine_recommendation" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'wine' is set
          if ('wine' not in local_var_params or
                  local_var_params['wine'] is None):
              raise ApiValueError("Missing the required parameter `wine` when calling `get_wine_recommendation`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'wine' in local_var_params:
              query_params.append(('wine', local_var_params['wine']))  # noqa: E501
          if 'max_price' in local_var_params:
              query_params.append(('maxPrice', local_var_params['max_price']))  # noqa: E501
          if 'min_rating' in local_var_params:
              query_params.append(('minRating', local_var_params['min_rating']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/wine/recommendation', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def guess_nutrition_by_dish_name(self, title, **kwargs):  # noqa: E501
          """Guess Nutrition by Dish Name  # noqa: E501
  
          Estimate the macronutrients of a dish based on its title.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.guess_nutrition_by_dish_name(title, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str title: The title of the dish. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.guess_nutrition_by_dish_name_with_http_info(title, **kwargs)  # noqa: E501
          else:
              (data) = self.guess_nutrition_by_dish_name_with_http_info(title, **kwargs)  # noqa: E501
              return data
  
      def guess_nutrition_by_dish_name_with_http_info(self, title, **kwargs):  # noqa: E501
          """Guess Nutrition by Dish Name  # noqa: E501
  
          Estimate the macronutrients of a dish based on its title.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.guess_nutrition_by_dish_name_with_http_info(title, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str title: The title of the dish. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['title']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method guess_nutrition_by_dish_name" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'title' is set
          if ('title' not in local_var_params or
                  local_var_params['title'] is None):
              raise ApiValueError("Missing the required parameter `title` when calling `guess_nutrition_by_dish_name`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'title' in local_var_params:
              query_params.append(('title', local_var_params['title']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/guessNutrition', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def image_analysis_by_url(self, image_url, **kwargs):  # noqa: E501
          """Image Analysis by URL  # noqa: E501
  
          Analyze a food image. The API tries to classify the image, guess the nutrition, and find a matching recipes. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.image_analysis_by_url(image_url, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str image_url: The URL of the image to be analyzed. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.image_analysis_by_url_with_http_info(image_url, **kwargs)  # noqa: E501
          else:
              (data) = self.image_analysis_by_url_with_http_info(image_url, **kwargs)  # noqa: E501
              return data
  
      def image_analysis_by_url_with_http_info(self, image_url, **kwargs):  # noqa: E501
          """Image Analysis by URL  # noqa: E501
  
          Analyze a food image. The API tries to classify the image, guess the nutrition, and find a matching recipes. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.image_analysis_by_url_with_http_info(image_url, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str image_url: The URL of the image to be analyzed. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['image_url']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method image_analysis_by_url" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'image_url' is set
          if ('image_url' not in local_var_params or
                  local_var_params['image_url'] is None):
              raise ApiValueError("Missing the required parameter `image_url` when calling `image_analysis_by_url`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'image_url' in local_var_params:
              query_params.append(('imageUrl', local_var_params['image_url']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/images/analyze', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def image_classification_by_url(self, image_url, **kwargs):  # noqa: E501
          """Image Classification by URL  # noqa: E501
  
          Classify a food image. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.image_classification_by_url(image_url, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str image_url: The URL of the image to be classified. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.image_classification_by_url_with_http_info(image_url, **kwargs)  # noqa: E501
          else:
              (data) = self.image_classification_by_url_with_http_info(image_url, **kwargs)  # noqa: E501
              return data
  
      def image_classification_by_url_with_http_info(self, image_url, **kwargs):  # noqa: E501
          """Image Classification by URL  # noqa: E501
  
          Classify a food image. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.image_classification_by_url_with_http_info(image_url, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str image_url: The URL of the image to be classified. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['image_url']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method image_classification_by_url" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'image_url' is set
          if ('image_url' not in local_var_params or
                  local_var_params['image_url'] is None):
              raise ApiValueError("Missing the required parameter `image_url` when calling `image_classification_by_url`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'image_url' in local_var_params:
              query_params.append(('imageUrl', local_var_params['image_url']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/images/classify', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def ingredient_search(self, query, **kwargs):  # noqa: E501
          """Ingredient Search  # noqa: E501
  
          Search for simple whole foods (e.g. fruits, vegetables, nuts, grains, meat, fish, dairy etc.).  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.ingredient_search(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The partial or full ingredient name. (required)
          :param bool add_children: Whether to add children of found foods.
          :param float min_protein_percent: The minimum percentage of protein the food must have (between 0 and 100).
          :param float max_protein_percent: The maximum percentage of protein the food can have (between 0 and 100).
          :param float min_fat_percent: The minimum percentage of fat the food must have (between 0 and 100).
          :param float max_fat_percent: The maximum percentage of fat the food can have (between 0 and 100).
          :param float min_carbs_percent: The minimum percentage of carbs the food must have (between 0 and 100).
          :param float max_carbs_percent: The maximum percentage of carbs the food can have (between 0 and 100).
          :param bool meta_information: Whether to return more meta information about the ingredients.
          :param str intolerances: A comma-separated list of intolerances. All recipes returned must not contain ingredients that are not suitable for people with the intolerances entered. See a full list of supported intolerances.
          :param str sort: The strategy to sort recipes by. See a full list of supported sorting options.
          :param str sort_direction: The direction in which to sort. Must be either 'asc' (ascending) or 'desc' (descending).
          :param float offset: The number of results to skip (between 0 and 990).
          :param float number: The number of expected results (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.ingredient_search_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.ingredient_search_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def ingredient_search_with_http_info(self, query, **kwargs):  # noqa: E501
          """Ingredient Search  # noqa: E501
  
          Search for simple whole foods (e.g. fruits, vegetables, nuts, grains, meat, fish, dairy etc.).  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.ingredient_search_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The partial or full ingredient name. (required)
          :param bool add_children: Whether to add children of found foods.
          :param float min_protein_percent: The minimum percentage of protein the food must have (between 0 and 100).
          :param float max_protein_percent: The maximum percentage of protein the food can have (between 0 and 100).
          :param float min_fat_percent: The minimum percentage of fat the food must have (between 0 and 100).
          :param float max_fat_percent: The maximum percentage of fat the food can have (between 0 and 100).
          :param float min_carbs_percent: The minimum percentage of carbs the food must have (between 0 and 100).
          :param float max_carbs_percent: The maximum percentage of carbs the food can have (between 0 and 100).
          :param bool meta_information: Whether to return more meta information about the ingredients.
          :param str intolerances: A comma-separated list of intolerances. All recipes returned must not contain ingredients that are not suitable for people with the intolerances entered. See a full list of supported intolerances.
          :param str sort: The strategy to sort recipes by. See a full list of supported sorting options.
          :param str sort_direction: The direction in which to sort. Must be either 'asc' (ascending) or 'desc' (descending).
          :param float offset: The number of results to skip (between 0 and 990).
          :param float number: The number of expected results (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'add_children', 'min_protein_percent', 'max_protein_percent', 'min_fat_percent', 'max_fat_percent', 'min_carbs_percent', 'max_carbs_percent', 'meta_information', 'intolerances', 'sort', 'sort_direction', 'offset', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method ingredient_search" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `ingredient_search`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'add_children' in local_var_params:
              query_params.append(('addChildren', local_var_params['add_children']))  # noqa: E501
          if 'min_protein_percent' in local_var_params:
              query_params.append(('minProteinPercent', local_var_params['min_protein_percent']))  # noqa: E501
          if 'max_protein_percent' in local_var_params:
              query_params.append(('maxProteinPercent', local_var_params['max_protein_percent']))  # noqa: E501
          if 'min_fat_percent' in local_var_params:
              query_params.append(('minFatPercent', local_var_params['min_fat_percent']))  # noqa: E501
          if 'max_fat_percent' in local_var_params:
              query_params.append(('maxFatPercent', local_var_params['max_fat_percent']))  # noqa: E501
          if 'min_carbs_percent' in local_var_params:
              query_params.append(('minCarbsPercent', local_var_params['min_carbs_percent']))  # noqa: E501
          if 'max_carbs_percent' in local_var_params:
              query_params.append(('maxCarbsPercent', local_var_params['max_carbs_percent']))  # noqa: E501
          if 'meta_information' in local_var_params:
              query_params.append(('metaInformation', local_var_params['meta_information']))  # noqa: E501
          if 'intolerances' in local_var_params:
              query_params.append(('intolerances', local_var_params['intolerances']))  # noqa: E501
          if 'sort' in local_var_params:
              query_params.append(('sort', local_var_params['sort']))  # noqa: E501
          if 'sort_direction' in local_var_params:
              query_params.append(('sortDirection', local_var_params['sort_direction']))  # noqa: E501
          if 'offset' in local_var_params:
              query_params.append(('offset', local_var_params['offset']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/ingredients/search', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def map_ingredients_to_grocery_products(self, body, **kwargs):  # noqa: E501
          """Map Ingredients to Grocery Products  # noqa: E501
  
          Map a set of ingredients to products you can buy in the grocery store.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.map_ingredients_to_grocery_products(body, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param object body: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.map_ingredients_to_grocery_products_with_http_info(body, **kwargs)  # noqa: E501
          else:
              (data) = self.map_ingredients_to_grocery_products_with_http_info(body, **kwargs)  # noqa: E501
              return data
  
      def map_ingredients_to_grocery_products_with_http_info(self, body, **kwargs):  # noqa: E501
          """Map Ingredients to Grocery Products  # noqa: E501
  
          Map a set of ingredients to products you can buy in the grocery store.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.map_ingredients_to_grocery_products_with_http_info(body, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param object body: (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['body']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method map_ingredients_to_grocery_products" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'body' is set
          if ('body' not in local_var_params or
                  local_var_params['body'] is None):
              raise ApiValueError("Missing the required parameter `body` when calling `map_ingredients_to_grocery_products`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          if 'body' in local_var_params:
              body_params = local_var_params['body']
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/ingredients/map', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def parse_ingredients(self, ingredient_list, servings, **kwargs):  # noqa: E501
          """Parse Ingredients  # noqa: E501
  
          Extract an ingredient from plain text.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.parse_ingredients(ingredient_list, servings, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line. (required)
          :param float servings: The number of servings that you can make from the ingredients. (required)
          :param bool include_nutrition: Whether nutrition data should be added to correctly parsed ingredients.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.parse_ingredients_with_http_info(ingredient_list, servings, **kwargs)  # noqa: E501
          else:
              (data) = self.parse_ingredients_with_http_info(ingredient_list, servings, **kwargs)  # noqa: E501
              return data
  
      def parse_ingredients_with_http_info(self, ingredient_list, servings, **kwargs):  # noqa: E501
          """Parse Ingredients  # noqa: E501
  
          Extract an ingredient from plain text.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.parse_ingredients_with_http_info(ingredient_list, servings, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line. (required)
          :param float servings: The number of servings that you can make from the ingredients. (required)
          :param bool include_nutrition: Whether nutrition data should be added to correctly parsed ingredients.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['ingredient_list', 'servings', 'include_nutrition']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method parse_ingredients" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'ingredient_list' is set
          if ('ingredient_list' not in local_var_params or
                  local_var_params['ingredient_list'] is None):
              raise ApiValueError("Missing the required parameter `ingredient_list` when calling `parse_ingredients`")  # noqa: E501
          # verify the required parameter 'servings' is set
          if ('servings' not in local_var_params or
                  local_var_params['servings'] is None):
              raise ApiValueError("Missing the required parameter `servings` when calling `parse_ingredients`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
          if 'ingredient_list' in local_var_params:
              form_params.append(('ingredientList', local_var_params['ingredient_list']))  # noqa: E501
          if 'servings' in local_var_params:
              form_params.append(('servings', local_var_params['servings']))  # noqa: E501
          if 'include_nutrition' in local_var_params:
              form_params.append(('includeNutrition', local_var_params['include_nutrition']))  # noqa: E501
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/x-www-form-urlencoded'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/parseIngredients', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def quick_answer(self, q, **kwargs):  # noqa: E501
          """Quick Answer  # noqa: E501
  
          Answer a nutrition related natural language question.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.quick_answer(q, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str q: The nutrition related question. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.quick_answer_with_http_info(q, **kwargs)  # noqa: E501
          else:
              (data) = self.quick_answer_with_http_info(q, **kwargs)  # noqa: E501
              return data
  
      def quick_answer_with_http_info(self, q, **kwargs):  # noqa: E501
          """Quick Answer  # noqa: E501
  
          Answer a nutrition related natural language question.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.quick_answer_with_http_info(q, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str q: The nutrition related question. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['q']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method quick_answer" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'q' is set
          if ('q' not in local_var_params or
                  local_var_params['q'] is None):
              raise ApiValueError("Missing the required parameter `q` when calling `quick_answer`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'q' in local_var_params:
              query_params.append(('q', local_var_params['q']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/quickAnswer', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def search_all_food(self, query, **kwargs):  # noqa: E501
          """Search All Food  # noqa: E501
  
          Search all food content with one call. That includes recipes, grocery products, menu items, simple foods (ingredients), and food videos.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_all_food(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The search query. (required)
          :param float offset: The number of results to skip (between 0 and 990).
          :param float number: The number of expected results (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.search_all_food_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.search_all_food_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def search_all_food_with_http_info(self, query, **kwargs):  # noqa: E501
          """Search All Food  # noqa: E501
  
          Search all food content with one call. That includes recipes, grocery products, menu items, simple foods (ingredients), and food videos.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_all_food_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The search query. (required)
          :param float offset: The number of results to skip (between 0 and 990).
          :param float number: The number of expected results (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'offset', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method search_all_food" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `search_all_food`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'offset' in local_var_params:
              query_params.append(('offset', local_var_params['offset']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/search', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def search_custom_foods(self, query, username, hash, **kwargs):  # noqa: E501
          """Search Custom Foods  # noqa: E501
  
          Search custom foods in a user's account.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_custom_foods(query, username, hash, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The search query. (required)
          :param str username: The username. (required)
          :param str hash: The private hash for the username. (required)
          :param float offset: The number of results to skip (between 0 and 990).
          :param float number: The number of expected results (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.search_custom_foods_with_http_info(query, username, hash, **kwargs)  # noqa: E501
          else:
              (data) = self.search_custom_foods_with_http_info(query, username, hash, **kwargs)  # noqa: E501
              return data
  
      def search_custom_foods_with_http_info(self, query, username, hash, **kwargs):  # noqa: E501
          """Search Custom Foods  # noqa: E501
  
          Search custom foods in a user's account.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_custom_foods_with_http_info(query, username, hash, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The search query. (required)
          :param str username: The username. (required)
          :param str hash: The private hash for the username. (required)
          :param float offset: The number of results to skip (between 0 and 990).
          :param float number: The number of expected results (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'username', 'hash', 'offset', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method search_custom_foods" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `search_custom_foods`")  # noqa: E501
          # verify the required parameter 'username' is set
          if ('username' not in local_var_params or
                  local_var_params['username'] is None):
              raise ApiValueError("Missing the required parameter `username` when calling `search_custom_foods`")  # noqa: E501
          # verify the required parameter 'hash' is set
          if ('hash' not in local_var_params or
                  local_var_params['hash'] is None):
              raise ApiValueError("Missing the required parameter `hash` when calling `search_custom_foods`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'username' in local_var_params:
              query_params.append(('username', local_var_params['username']))  # noqa: E501
          if 'hash' in local_var_params:
              query_params.append(('hash', local_var_params['hash']))  # noqa: E501
          if 'offset' in local_var_params:
              query_params.append(('offset', local_var_params['offset']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/customFoods/search', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def search_food_videos(self, query, **kwargs):  # noqa: E501
          """Search Food Videos  # noqa: E501
  
          Find recipe and other food related videos.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_food_videos(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The search query. (required)
          :param str type: The type of the recipes. See a full list of supported meal types.
          :param str cuisine: The cuisine(s) of the recipes. One or more, comma separated. See a full list of supported cuisines.
          :param str diet: The diet for which the recipes must be suitable. See a full list of supported diets.
          :param str include_ingredients: A comma-separated list of ingredients that the recipes should contain.
          :param str exclude_ingredients: A comma-separated list of ingredients or ingredient types that the recipes must not contain.
          :param float min_length: Minimum video length in seconds.
          :param float max_length: Maximum video length in seconds.
          :param float offset: The number of results to skip (between 0 and 900).
          :param float number: The number of results to return (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.search_food_videos_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.search_food_videos_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def search_food_videos_with_http_info(self, query, **kwargs):  # noqa: E501
          """Search Food Videos  # noqa: E501
  
          Find recipe and other food related videos.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_food_videos_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The search query. (required)
          :param str type: The type of the recipes. See a full list of supported meal types.
          :param str cuisine: The cuisine(s) of the recipes. One or more, comma separated. See a full list of supported cuisines.
          :param str diet: The diet for which the recipes must be suitable. See a full list of supported diets.
          :param str include_ingredients: A comma-separated list of ingredients that the recipes should contain.
          :param str exclude_ingredients: A comma-separated list of ingredients or ingredient types that the recipes must not contain.
          :param float min_length: Minimum video length in seconds.
          :param float max_length: Maximum video length in seconds.
          :param float offset: The number of results to skip (between 0 and 900).
          :param float number: The number of results to return (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'type', 'cuisine', 'diet', 'include_ingredients', 'exclude_ingredients', 'min_length', 'max_length', 'offset', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method search_food_videos" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `search_food_videos`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'type' in local_var_params:
              query_params.append(('type', local_var_params['type']))  # noqa: E501
          if 'cuisine' in local_var_params:
              query_params.append(('cuisine', local_var_params['cuisine']))  # noqa: E501
          if 'diet' in local_var_params:
              query_params.append(('diet', local_var_params['diet']))  # noqa: E501
          if 'include_ingredients' in local_var_params:
              query_params.append(('includeIngredients', local_var_params['include_ingredients']))  # noqa: E501
          if 'exclude_ingredients' in local_var_params:
              query_params.append(('excludeIngredients', local_var_params['exclude_ingredients']))  # noqa: E501
          if 'min_length' in local_var_params:
              query_params.append(('minLength', local_var_params['min_length']))  # noqa: E501
          if 'max_length' in local_var_params:
              query_params.append(('maxLength', local_var_params['max_length']))  # noqa: E501
          if 'offset' in local_var_params:
              query_params.append(('offset', local_var_params['offset']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/videos/search', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def search_grocery_products(self, query, **kwargs):  # noqa: E501
          """Search Grocery Products  # noqa: E501
  
          Search packaged food products, such as frozen pizza or Greek yogurt.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_grocery_products(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The search query. (required)
          :param float min_calories: The minimum amount of calories the product must have.
          :param float max_calories: The maximum amount of calories the product can have.
          :param float min_carbs: The minimum amount of carbohydrates in grams the product must have.
          :param float max_carbs: The maximum amount of carbohydrates in grams the product can have.
          :param float min_protein: The minimum amount of protein in grams the product must have.
          :param float max_protein: The maximum amount of protein in grams the product can have.
          :param float min_fat: The minimum amount of fat in grams the product must have.
          :param float max_fat: The maximum amount of fat in grams the product can have.
          :param float offset: The number of results to skip (between 0 and 990).
          :param float number: The number of expected results (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.search_grocery_products_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.search_grocery_products_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def search_grocery_products_with_http_info(self, query, **kwargs):  # noqa: E501
          """Search Grocery Products  # noqa: E501
  
          Search packaged food products, such as frozen pizza or Greek yogurt.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_grocery_products_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The search query. (required)
          :param float min_calories: The minimum amount of calories the product must have.
          :param float max_calories: The maximum amount of calories the product can have.
          :param float min_carbs: The minimum amount of carbohydrates in grams the product must have.
          :param float max_carbs: The maximum amount of carbohydrates in grams the product can have.
          :param float min_protein: The minimum amount of protein in grams the product must have.
          :param float max_protein: The maximum amount of protein in grams the product can have.
          :param float min_fat: The minimum amount of fat in grams the product must have.
          :param float max_fat: The maximum amount of fat in grams the product can have.
          :param float offset: The number of results to skip (between 0 and 990).
          :param float number: The number of expected results (between 1 and 100).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'min_calories', 'max_calories', 'min_carbs', 'max_carbs', 'min_protein', 'max_protein', 'min_fat', 'max_fat', 'offset', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method search_grocery_products" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `search_grocery_products`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'min_calories' in local_var_params:
              query_params.append(('minCalories', local_var_params['min_calories']))  # noqa: E501
          if 'max_calories' in local_var_params:
              query_params.append(('maxCalories', local_var_params['max_calories']))  # noqa: E501
          if 'min_carbs' in local_var_params:
              query_params.append(('minCarbs', local_var_params['min_carbs']))  # noqa: E501
          if 'max_carbs' in local_var_params:
              query_params.append(('maxCarbs', local_var_params['max_carbs']))  # noqa: E501
          if 'min_protein' in local_var_params:
              query_params.append(('minProtein', local_var_params['min_protein']))  # noqa: E501
          if 'max_protein' in local_var_params:
              query_params.append(('maxProtein', local_var_params['max_protein']))  # noqa: E501
          if 'min_fat' in local_var_params:
              query_params.append(('minFat', local_var_params['min_fat']))  # noqa: E501
          if 'max_fat' in local_var_params:
              query_params.append(('maxFat', local_var_params['max_fat']))  # noqa: E501
          if 'offset' in local_var_params:
              query_params.append(('offset', local_var_params['offset']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/products/search', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def search_grocery_products_by_upc(self, upc, **kwargs):  # noqa: E501
          """Search Grocery Products by UPC  # noqa: E501
  
          Get information about a packaged food using its UPC.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_grocery_products_by_upc(upc, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float upc: The product's UPC. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.search_grocery_products_by_upc_with_http_info(upc, **kwargs)  # noqa: E501
          else:
              (data) = self.search_grocery_products_by_upc_with_http_info(upc, **kwargs)  # noqa: E501
              return data
  
      def search_grocery_products_by_upc_with_http_info(self, upc, **kwargs):  # noqa: E501
          """Search Grocery Products by UPC  # noqa: E501
  
          Get information about a packaged food using its UPC.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_grocery_products_by_upc_with_http_info(upc, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float upc: The product's UPC. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['upc']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method search_grocery_products_by_upc" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'upc' is set
          if ('upc' not in local_var_params or
                  local_var_params['upc'] is None):
              raise ApiValueError("Missing the required parameter `upc` when calling `search_grocery_products_by_upc`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'upc' in local_var_params:
              path_params['upc'] = local_var_params['upc']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/products/upc/{upc}', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def search_menu_items(self, query, **kwargs):  # noqa: E501
          """Search Menu Items  # noqa: E501
  
          Search over 115,000 menu items from over 800 fast food and chain restaurants. For example, McDonald's Big Mac or Starbucks Mocha.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_menu_items(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The search query. (required)
          :param float min_calories: The minimum amount of calories the menu item must have.
          :param float max_calories: The maximum amount of calories the menu item can have.
          :param float min_carbs: The minimum amount of carbohydrates in grams the menu item must have.
          :param float max_carbs: The maximum amount of carbohydrates in grams the menu item can have.
          :param float min_protein: The minimum amount of protein in grams the menu item must have.
          :param float max_protein: The maximum amount of protein in grams the menu item can have.
          :param float min_fat: The minimum amount of fat in grams the menu item must have.
          :param float max_fat: The maximum amount of fat in grams the menu item can have.
          :param float offset: The offset number for paging (between 0 and 990).
          :param float number: The number of expected results (between 1 and 10).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.search_menu_items_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.search_menu_items_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def search_menu_items_with_http_info(self, query, **kwargs):  # noqa: E501
          """Search Menu Items  # noqa: E501
  
          Search over 115,000 menu items from over 800 fast food and chain restaurants. For example, McDonald's Big Mac or Starbucks Mocha.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_menu_items_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The search query. (required)
          :param float min_calories: The minimum amount of calories the menu item must have.
          :param float max_calories: The maximum amount of calories the menu item can have.
          :param float min_carbs: The minimum amount of carbohydrates in grams the menu item must have.
          :param float max_carbs: The maximum amount of carbohydrates in grams the menu item can have.
          :param float min_protein: The minimum amount of protein in grams the menu item must have.
          :param float max_protein: The maximum amount of protein in grams the menu item can have.
          :param float min_fat: The minimum amount of fat in grams the menu item must have.
          :param float max_fat: The maximum amount of fat in grams the menu item can have.
          :param float offset: The offset number for paging (between 0 and 990).
          :param float number: The number of expected results (between 1 and 10).
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'min_calories', 'max_calories', 'min_carbs', 'max_carbs', 'min_protein', 'max_protein', 'min_fat', 'max_fat', 'offset', 'number']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method search_menu_items" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `search_menu_items`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'min_calories' in local_var_params:
              query_params.append(('minCalories', local_var_params['min_calories']))  # noqa: E501
          if 'max_calories' in local_var_params:
              query_params.append(('maxCalories', local_var_params['max_calories']))  # noqa: E501
          if 'min_carbs' in local_var_params:
              query_params.append(('minCarbs', local_var_params['min_carbs']))  # noqa: E501
          if 'max_carbs' in local_var_params:
              query_params.append(('maxCarbs', local_var_params['max_carbs']))  # noqa: E501
          if 'min_protein' in local_var_params:
              query_params.append(('minProtein', local_var_params['min_protein']))  # noqa: E501
          if 'max_protein' in local_var_params:
              query_params.append(('maxProtein', local_var_params['max_protein']))  # noqa: E501
          if 'min_fat' in local_var_params:
              query_params.append(('minFat', local_var_params['min_fat']))  # noqa: E501
          if 'max_fat' in local_var_params:
              query_params.append(('maxFat', local_var_params['max_fat']))  # noqa: E501
          if 'offset' in local_var_params:
              query_params.append(('offset', local_var_params['offset']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/menuItems/search', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def search_recipes(self, query, **kwargs):  # noqa: E501
          """Search Recipes  # noqa: E501
  
          Search through hundreds of thousands of recipes using advanced filtering and ranking. NOTE: This method combines searching by query, by ingredients, and by nutrients into one endpoint.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_recipes(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The (natural language) recipe search query. (required)
          :param str cuisine: The cuisine(s) of the recipes. One or more, comma separated (will be interpreted as 'OR'). See a full list of supported cuisines.
          :param str exclude_cuisine: The cuisine(s) the recipes must not match. One or more, comma separated (will be interpreted as 'AND'). See a full list of supported cuisines.
          :param str diet: The diet for which the recipes must be suitable. See a full list of supported diets.
          :param str intolerances: A comma-separated list of intolerances. All recipes returned must not contain ingredients that are not suitable for people with the intolerances entered. See a full list of supported intolerances.
          :param str equipment: The equipment required. Multiple values will be interpreted as 'or'. For example, value could be \"blender, frying pan, bowl\".
          :param str include_ingredients: A comma-separated list of ingredients that should/must be used in the recipes.
          :param str exclude_ingredients: A comma-separated list of ingredients or ingredient types that the recipes must not contain.
          :param str type: The type of recipe. See a full list of supported meal types.
          :param bool instructions_required: Whether the recipes must have instructions.
          :param bool fill_ingredients: Add information about the ingredients and whether they are used or missing in relation to the query.
          :param bool add_recipe_information: If set to true, you get more information about the recipes returned.
          :param bool add_recipe_nutrition: If set to true, you get nutritional information about each recipes returned.
          :param str author: The username of the recipe author.
          :param str tags: User defined tags that have to match. The author param has to be set.
          :param float recipe_box_id: The id of the recipe box to which the search should be limited to.
          :param str title_match: Enter text that must be found in the title of the recipes.
          :param float max_ready_time: The maximum time in minutes it should take to prepare and cook the recipe.
          :param bool ignore_pantry: Whether to ignore typical pantry items, such as water, salt, flour, etc.
          :param str sort: The strategy to sort recipes by. See a full list of supported sorting options.
          :param str sort_direction: The direction in which to sort. Must be either 'asc' (ascending) or 'desc' (descending).
          :param float min_carbs: The minimum amount of carbohydrates in grams the recipe must have.
          :param float max_carbs: The maximum amount of carbohydrates in grams the recipe can have.
          :param float min_protein: The minimum amount of protein in grams the recipe must have.
          :param float max_protein: The maximum amount of protein in grams the recipe can have.
          :param float min_calories: The minimum amount of calories the recipe must have.
          :param float max_calories: The maximum amount of calories the recipe can have.
          :param float min_fat: The minimum amount of fat in grams the recipe must have.
          :param float max_fat: The maximum amount of fat in grams the recipe can have.
          :param float min_alcohol: The minimum amount of alcohol in grams the recipe must have.
          :param float max_alcohol: The maximum amount of alcohol in grams the recipe can have.
          :param float min_caffeine: The minimum amount of caffeine in milligrams the recipe must have.
          :param float max_caffeine: The maximum amount of caffeine in milligrams the recipe can have.
          :param float min_copper: The minimum amount of copper in milligrams the recipe must have.
          :param float max_copper: The maximum amount of copper in milligrams the recipe can have.
          :param float min_calcium: The minimum amount of calcium in milligrams the recipe must have.
          :param float max_calcium: The maximum amount of calcium in milligrams the recipe can have.
          :param float min_choline: The minimum amount of choline in milligrams the recipe must have.
          :param float max_choline: The maximum amount of choline in milligrams the recipe can have.
          :param float min_cholesterol: The minimum amount of cholesterol in milligrams the recipe must have.
          :param float max_cholesterol: The maximum amount of cholesterol in milligrams the recipe can have.
          :param float min_fluoride: The minimum amount of fluoride in milligrams the recipe must have.
          :param float max_fluoride: The maximum amount of fluoride in milligrams the recipe can have.
          :param float min_saturated_fat: The minimum amount of saturated fat in grams the recipe must have.
          :param float max_saturated_fat: The maximum amount of saturated fat in grams the recipe can have.
          :param float min_vitamin_a: The minimum amount of Vitamin A in IU the recipe must have.
          :param float max_vitamin_a: The maximum amount of Vitamin A in IU the recipe can have.
          :param float min_vitamin_c: The minimum amount of Vitamin C milligrams the recipe must have.
          :param float max_vitamin_c: The maximum amount of Vitamin C in milligrams the recipe can have.
          :param float min_vitamin_d: The minimum amount of Vitamin D in micrograms the recipe must have.
          :param float max_vitamin_d: The maximum amount of Vitamin D in micrograms the recipe can have.
          :param float min_vitamin_e: The minimum amount of Vitamin E in milligrams the recipe must have.
          :param float max_vitamin_e: The maximum amount of Vitamin E in milligrams the recipe can have.
          :param float min_vitamin_k: The minimum amount of Vitamin K in micrograms the recipe must have.
          :param float max_vitamin_k: The maximum amount of Vitamin K in micrograms the recipe can have.
          :param float min_vitamin_b1: The minimum amount of Vitamin B1 in milligrams the recipe must have.
          :param float max_vitamin_b1: The maximum amount of Vitamin B1 in milligrams the recipe can have.
          :param float min_vitamin_b2: The minimum amount of Vitamin B2 in milligrams the recipe must have.
          :param float max_vitamin_b2: The maximum amount of Vitamin B2 in milligrams the recipe can have.
          :param float min_vitamin_b5: The minimum amount of Vitamin B5 in milligrams the recipe must have.
          :param float max_vitamin_b5: The maximum amount of Vitamin B5 in milligrams the recipe can have.
          :param float min_vitamin_b3: The minimum amount of Vitamin B3 in milligrams the recipe must have.
          :param float max_vitamin_b3: The maximum amount of Vitamin B3 in milligrams the recipe can have.
          :param float min_vitamin_b6: The minimum amount of Vitamin B6 in milligrams the recipe must have.
          :param float max_vitamin_b6: The maximum amount of Vitamin B6 in milligrams the recipe can have.
          :param float min_vitamin_b12: The minimum amount of Vitamin B12 in micrograms the recipe must have.
          :param float max_vitamin_b12: The maximum amount of Vitamin B12 in micrograms the recipe can have.
          :param float min_fiber: The minimum amount of fiber in grams the recipe must have.
          :param float max_fiber: The maximum amount of fiber in grams the recipe can have.
          :param float min_folate: The minimum amount of folate in micrograms the recipe must have.
          :param float max_folate: The maximum amount of folate in micrograms the recipe can have.
          :param float min_folic_acid: The minimum amount of folic acid in micrograms the recipe must have.
          :param float max_folic_acid: The maximum amount of folic acid in micrograms the recipe can have.
          :param float min_iodine: The minimum amount of iodine in micrograms the recipe must have.
          :param float max_iodine: The maximum amount of iodine in micrograms the recipe can have.
          :param float min_iron: The minimum amount of iron in milligrams the recipe must have.
          :param float max_iron: The maximum amount of iron in milligrams the recipe can have.
          :param float min_magnesium: The minimum amount of magnesium in milligrams the recipe must have.
          :param float max_magnesium: The maximum amount of magnesium in milligrams the recipe can have.
          :param float min_manganese: The minimum amount of manganese in milligrams the recipe must have.
          :param float max_manganese: The maximum amount of manganese in milligrams the recipe can have.
          :param float min_phosphorus: The minimum amount of phosphorus in milligrams the recipe must have.
          :param float max_phosphorus: The maximum amount of phosphorus in milligrams the recipe can have.
          :param float min_potassium: The minimum amount of potassium in milligrams the recipe must have.
          :param float max_potassium: The maximum amount of potassium in milligrams the recipe can have.
          :param float min_selenium: The minimum amount of selenium in micrograms the recipe must have.
          :param float max_selenium: The maximum amount of selenium in micrograms the recipe can have.
          :param float min_sodium: The minimum amount of sodium in milligrams the recipe must have.
          :param float max_sodium: The maximum amount of sodium in milligrams the recipe can have.
          :param float min_sugar: The minimum amount of sugar in grams the recipe must have.
          :param float max_sugar: The maximum amount of sugar in grams the recipe can have.
          :param float min_zinc: The minimum amount of zinc in milligrams the recipe must have.
          :param float max_zinc: The maximum amount of zinc in milligrams the recipe can have.
          :param float offset: The number of results to skip (between 0 and 900).
          :param float number: The number of expected results (between 1 and 100).
          :param bool limit_license: Whether the recipes should have an open license that allows display with proper attribution.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.search_recipes_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.search_recipes_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def search_recipes_with_http_info(self, query, **kwargs):  # noqa: E501
          """Search Recipes  # noqa: E501
  
          Search through hundreds of thousands of recipes using advanced filtering and ranking. NOTE: This method combines searching by query, by ingredients, and by nutrients into one endpoint.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_recipes_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The (natural language) recipe search query. (required)
          :param str cuisine: The cuisine(s) of the recipes. One or more, comma separated (will be interpreted as 'OR'). See a full list of supported cuisines.
          :param str exclude_cuisine: The cuisine(s) the recipes must not match. One or more, comma separated (will be interpreted as 'AND'). See a full list of supported cuisines.
          :param str diet: The diet for which the recipes must be suitable. See a full list of supported diets.
          :param str intolerances: A comma-separated list of intolerances. All recipes returned must not contain ingredients that are not suitable for people with the intolerances entered. See a full list of supported intolerances.
          :param str equipment: The equipment required. Multiple values will be interpreted as 'or'. For example, value could be \"blender, frying pan, bowl\".
          :param str include_ingredients: A comma-separated list of ingredients that should/must be used in the recipes.
          :param str exclude_ingredients: A comma-separated list of ingredients or ingredient types that the recipes must not contain.
          :param str type: The type of recipe. See a full list of supported meal types.
          :param bool instructions_required: Whether the recipes must have instructions.
          :param bool fill_ingredients: Add information about the ingredients and whether they are used or missing in relation to the query.
          :param bool add_recipe_information: If set to true, you get more information about the recipes returned.
          :param bool add_recipe_nutrition: If set to true, you get nutritional information about each recipes returned.
          :param str author: The username of the recipe author.
          :param str tags: User defined tags that have to match. The author param has to be set.
          :param float recipe_box_id: The id of the recipe box to which the search should be limited to.
          :param str title_match: Enter text that must be found in the title of the recipes.
          :param float max_ready_time: The maximum time in minutes it should take to prepare and cook the recipe.
          :param bool ignore_pantry: Whether to ignore typical pantry items, such as water, salt, flour, etc.
          :param str sort: The strategy to sort recipes by. See a full list of supported sorting options.
          :param str sort_direction: The direction in which to sort. Must be either 'asc' (ascending) or 'desc' (descending).
          :param float min_carbs: The minimum amount of carbohydrates in grams the recipe must have.
          :param float max_carbs: The maximum amount of carbohydrates in grams the recipe can have.
          :param float min_protein: The minimum amount of protein in grams the recipe must have.
          :param float max_protein: The maximum amount of protein in grams the recipe can have.
          :param float min_calories: The minimum amount of calories the recipe must have.
          :param float max_calories: The maximum amount of calories the recipe can have.
          :param float min_fat: The minimum amount of fat in grams the recipe must have.
          :param float max_fat: The maximum amount of fat in grams the recipe can have.
          :param float min_alcohol: The minimum amount of alcohol in grams the recipe must have.
          :param float max_alcohol: The maximum amount of alcohol in grams the recipe can have.
          :param float min_caffeine: The minimum amount of caffeine in milligrams the recipe must have.
          :param float max_caffeine: The maximum amount of caffeine in milligrams the recipe can have.
          :param float min_copper: The minimum amount of copper in milligrams the recipe must have.
          :param float max_copper: The maximum amount of copper in milligrams the recipe can have.
          :param float min_calcium: The minimum amount of calcium in milligrams the recipe must have.
          :param float max_calcium: The maximum amount of calcium in milligrams the recipe can have.
          :param float min_choline: The minimum amount of choline in milligrams the recipe must have.
          :param float max_choline: The maximum amount of choline in milligrams the recipe can have.
          :param float min_cholesterol: The minimum amount of cholesterol in milligrams the recipe must have.
          :param float max_cholesterol: The maximum amount of cholesterol in milligrams the recipe can have.
          :param float min_fluoride: The minimum amount of fluoride in milligrams the recipe must have.
          :param float max_fluoride: The maximum amount of fluoride in milligrams the recipe can have.
          :param float min_saturated_fat: The minimum amount of saturated fat in grams the recipe must have.
          :param float max_saturated_fat: The maximum amount of saturated fat in grams the recipe can have.
          :param float min_vitamin_a: The minimum amount of Vitamin A in IU the recipe must have.
          :param float max_vitamin_a: The maximum amount of Vitamin A in IU the recipe can have.
          :param float min_vitamin_c: The minimum amount of Vitamin C milligrams the recipe must have.
          :param float max_vitamin_c: The maximum amount of Vitamin C in milligrams the recipe can have.
          :param float min_vitamin_d: The minimum amount of Vitamin D in micrograms the recipe must have.
          :param float max_vitamin_d: The maximum amount of Vitamin D in micrograms the recipe can have.
          :param float min_vitamin_e: The minimum amount of Vitamin E in milligrams the recipe must have.
          :param float max_vitamin_e: The maximum amount of Vitamin E in milligrams the recipe can have.
          :param float min_vitamin_k: The minimum amount of Vitamin K in micrograms the recipe must have.
          :param float max_vitamin_k: The maximum amount of Vitamin K in micrograms the recipe can have.
          :param float min_vitamin_b1: The minimum amount of Vitamin B1 in milligrams the recipe must have.
          :param float max_vitamin_b1: The maximum amount of Vitamin B1 in milligrams the recipe can have.
          :param float min_vitamin_b2: The minimum amount of Vitamin B2 in milligrams the recipe must have.
          :param float max_vitamin_b2: The maximum amount of Vitamin B2 in milligrams the recipe can have.
          :param float min_vitamin_b5: The minimum amount of Vitamin B5 in milligrams the recipe must have.
          :param float max_vitamin_b5: The maximum amount of Vitamin B5 in milligrams the recipe can have.
          :param float min_vitamin_b3: The minimum amount of Vitamin B3 in milligrams the recipe must have.
          :param float max_vitamin_b3: The maximum amount of Vitamin B3 in milligrams the recipe can have.
          :param float min_vitamin_b6: The minimum amount of Vitamin B6 in milligrams the recipe must have.
          :param float max_vitamin_b6: The maximum amount of Vitamin B6 in milligrams the recipe can have.
          :param float min_vitamin_b12: The minimum amount of Vitamin B12 in micrograms the recipe must have.
          :param float max_vitamin_b12: The maximum amount of Vitamin B12 in micrograms the recipe can have.
          :param float min_fiber: The minimum amount of fiber in grams the recipe must have.
          :param float max_fiber: The maximum amount of fiber in grams the recipe can have.
          :param float min_folate: The minimum amount of folate in micrograms the recipe must have.
          :param float max_folate: The maximum amount of folate in micrograms the recipe can have.
          :param float min_folic_acid: The minimum amount of folic acid in micrograms the recipe must have.
          :param float max_folic_acid: The maximum amount of folic acid in micrograms the recipe can have.
          :param float min_iodine: The minimum amount of iodine in micrograms the recipe must have.
          :param float max_iodine: The maximum amount of iodine in micrograms the recipe can have.
          :param float min_iron: The minimum amount of iron in milligrams the recipe must have.
          :param float max_iron: The maximum amount of iron in milligrams the recipe can have.
          :param float min_magnesium: The minimum amount of magnesium in milligrams the recipe must have.
          :param float max_magnesium: The maximum amount of magnesium in milligrams the recipe can have.
          :param float min_manganese: The minimum amount of manganese in milligrams the recipe must have.
          :param float max_manganese: The maximum amount of manganese in milligrams the recipe can have.
          :param float min_phosphorus: The minimum amount of phosphorus in milligrams the recipe must have.
          :param float max_phosphorus: The maximum amount of phosphorus in milligrams the recipe can have.
          :param float min_potassium: The minimum amount of potassium in milligrams the recipe must have.
          :param float max_potassium: The maximum amount of potassium in milligrams the recipe can have.
          :param float min_selenium: The minimum amount of selenium in micrograms the recipe must have.
          :param float max_selenium: The maximum amount of selenium in micrograms the recipe can have.
          :param float min_sodium: The minimum amount of sodium in milligrams the recipe must have.
          :param float max_sodium: The maximum amount of sodium in milligrams the recipe can have.
          :param float min_sugar: The minimum amount of sugar in grams the recipe must have.
          :param float max_sugar: The maximum amount of sugar in grams the recipe can have.
          :param float min_zinc: The minimum amount of zinc in milligrams the recipe must have.
          :param float max_zinc: The maximum amount of zinc in milligrams the recipe can have.
          :param float offset: The number of results to skip (between 0 and 900).
          :param float number: The number of expected results (between 1 and 100).
          :param bool limit_license: Whether the recipes should have an open license that allows display with proper attribution.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query', 'cuisine', 'exclude_cuisine', 'diet', 'intolerances', 'equipment', 'include_ingredients', 'exclude_ingredients', 'type', 'instructions_required', 'fill_ingredients', 'add_recipe_information', 'add_recipe_nutrition', 'author', 'tags', 'recipe_box_id', 'title_match', 'max_ready_time', 'ignore_pantry', 'sort', 'sort_direction', 'min_carbs', 'max_carbs', 'min_protein', 'max_protein', 'min_calories', 'max_calories', 'min_fat', 'max_fat', 'min_alcohol', 'max_alcohol', 'min_caffeine', 'max_caffeine', 'min_copper', 'max_copper', 'min_calcium', 'max_calcium', 'min_choline', 'max_choline', 'min_cholesterol', 'max_cholesterol', 'min_fluoride', 'max_fluoride', 'min_saturated_fat', 'max_saturated_fat', 'min_vitamin_a', 'max_vitamin_a', 'min_vitamin_c', 'max_vitamin_c', 'min_vitamin_d', 'max_vitamin_d', 'min_vitamin_e', 'max_vitamin_e', 'min_vitamin_k', 'max_vitamin_k', 'min_vitamin_b1', 'max_vitamin_b1', 'min_vitamin_b2', 'max_vitamin_b2', 'min_vitamin_b5', 'max_vitamin_b5', 'min_vitamin_b3', 'max_vitamin_b3', 'min_vitamin_b6', 'max_vitamin_b6', 'min_vitamin_b12', 'max_vitamin_b12', 'min_fiber', 'max_fiber', 'min_folate', 'max_folate', 'min_folic_acid', 'max_folic_acid', 'min_iodine', 'max_iodine', 'min_iron', 'max_iron', 'min_magnesium', 'max_magnesium', 'min_manganese', 'max_manganese', 'min_phosphorus', 'max_phosphorus', 'min_potassium', 'max_potassium', 'min_selenium', 'max_selenium', 'min_sodium', 'max_sodium', 'min_sugar', 'max_sugar', 'min_zinc', 'max_zinc', 'offset', 'number', 'limit_license']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method search_recipes" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `search_recipes`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
          if 'cuisine' in local_var_params:
              query_params.append(('cuisine', local_var_params['cuisine']))  # noqa: E501
          if 'exclude_cuisine' in local_var_params:
              query_params.append(('excludeCuisine', local_var_params['exclude_cuisine']))  # noqa: E501
          if 'diet' in local_var_params:
              query_params.append(('diet', local_var_params['diet']))  # noqa: E501
          if 'intolerances' in local_var_params:
              query_params.append(('intolerances', local_var_params['intolerances']))  # noqa: E501
          if 'equipment' in local_var_params:
              query_params.append(('equipment', local_var_params['equipment']))  # noqa: E501
          if 'include_ingredients' in local_var_params:
              query_params.append(('includeIngredients', local_var_params['include_ingredients']))  # noqa: E501
          if 'exclude_ingredients' in local_var_params:
              query_params.append(('excludeIngredients', local_var_params['exclude_ingredients']))  # noqa: E501
          if 'type' in local_var_params:
              query_params.append(('type', local_var_params['type']))  # noqa: E501
          if 'instructions_required' in local_var_params:
              query_params.append(('instructionsRequired', local_var_params['instructions_required']))  # noqa: E501
          if 'fill_ingredients' in local_var_params:
              query_params.append(('fillIngredients', local_var_params['fill_ingredients']))  # noqa: E501
          if 'add_recipe_information' in local_var_params:
              query_params.append(('addRecipeInformation', local_var_params['add_recipe_information']))  # noqa: E501
          if 'add_recipe_nutrition' in local_var_params:
              query_params.append(('addRecipeNutrition', local_var_params['add_recipe_nutrition']))  # noqa: E501
          if 'author' in local_var_params:
              query_params.append(('author', local_var_params['author']))  # noqa: E501
          if 'tags' in local_var_params:
              query_params.append(('tags', local_var_params['tags']))  # noqa: E501
          if 'recipe_box_id' in local_var_params:
              query_params.append(('recipeBoxId', local_var_params['recipe_box_id']))  # noqa: E501
          if 'title_match' in local_var_params:
              query_params.append(('titleMatch', local_var_params['title_match']))  # noqa: E501
          if 'max_ready_time' in local_var_params:
              query_params.append(('maxReadyTime', local_var_params['max_ready_time']))  # noqa: E501
          if 'ignore_pantry' in local_var_params:
              query_params.append(('ignorePantry', local_var_params['ignore_pantry']))  # noqa: E501
          if 'sort' in local_var_params:
              query_params.append(('sort', local_var_params['sort']))  # noqa: E501
          if 'sort_direction' in local_var_params:
              query_params.append(('sortDirection', local_var_params['sort_direction']))  # noqa: E501
          if 'min_carbs' in local_var_params:
              query_params.append(('minCarbs', local_var_params['min_carbs']))  # noqa: E501
          if 'max_carbs' in local_var_params:
              query_params.append(('maxCarbs', local_var_params['max_carbs']))  # noqa: E501
          if 'min_protein' in local_var_params:
              query_params.append(('minProtein', local_var_params['min_protein']))  # noqa: E501
          if 'max_protein' in local_var_params:
              query_params.append(('maxProtein', local_var_params['max_protein']))  # noqa: E501
          if 'min_calories' in local_var_params:
              query_params.append(('minCalories', local_var_params['min_calories']))  # noqa: E501
          if 'max_calories' in local_var_params:
              query_params.append(('maxCalories', local_var_params['max_calories']))  # noqa: E501
          if 'min_fat' in local_var_params:
              query_params.append(('minFat', local_var_params['min_fat']))  # noqa: E501
          if 'max_fat' in local_var_params:
              query_params.append(('maxFat', local_var_params['max_fat']))  # noqa: E501
          if 'min_alcohol' in local_var_params:
              query_params.append(('minAlcohol', local_var_params['min_alcohol']))  # noqa: E501
          if 'max_alcohol' in local_var_params:
              query_params.append(('maxAlcohol', local_var_params['max_alcohol']))  # noqa: E501
          if 'min_caffeine' in local_var_params:
              query_params.append(('minCaffeine', local_var_params['min_caffeine']))  # noqa: E501
          if 'max_caffeine' in local_var_params:
              query_params.append(('maxCaffeine', local_var_params['max_caffeine']))  # noqa: E501
          if 'min_copper' in local_var_params:
              query_params.append(('minCopper', local_var_params['min_copper']))  # noqa: E501
          if 'max_copper' in local_var_params:
              query_params.append(('maxCopper', local_var_params['max_copper']))  # noqa: E501
          if 'min_calcium' in local_var_params:
              query_params.append(('minCalcium', local_var_params['min_calcium']))  # noqa: E501
          if 'max_calcium' in local_var_params:
              query_params.append(('maxCalcium', local_var_params['max_calcium']))  # noqa: E501
          if 'min_choline' in local_var_params:
              query_params.append(('minCholine', local_var_params['min_choline']))  # noqa: E501
          if 'max_choline' in local_var_params:
              query_params.append(('maxCholine', local_var_params['max_choline']))  # noqa: E501
          if 'min_cholesterol' in local_var_params:
              query_params.append(('minCholesterol', local_var_params['min_cholesterol']))  # noqa: E501
          if 'max_cholesterol' in local_var_params:
              query_params.append(('maxCholesterol', local_var_params['max_cholesterol']))  # noqa: E501
          if 'min_fluoride' in local_var_params:
              query_params.append(('minFluoride', local_var_params['min_fluoride']))  # noqa: E501
          if 'max_fluoride' in local_var_params:
              query_params.append(('maxFluoride', local_var_params['max_fluoride']))  # noqa: E501
          if 'min_saturated_fat' in local_var_params:
              query_params.append(('minSaturatedFat', local_var_params['min_saturated_fat']))  # noqa: E501
          if 'max_saturated_fat' in local_var_params:
              query_params.append(('maxSaturatedFat', local_var_params['max_saturated_fat']))  # noqa: E501
          if 'min_vitamin_a' in local_var_params:
              query_params.append(('minVitaminA', local_var_params['min_vitamin_a']))  # noqa: E501
          if 'max_vitamin_a' in local_var_params:
              query_params.append(('maxVitaminA', local_var_params['max_vitamin_a']))  # noqa: E501
          if 'min_vitamin_c' in local_var_params:
              query_params.append(('minVitaminC', local_var_params['min_vitamin_c']))  # noqa: E501
          if 'max_vitamin_c' in local_var_params:
              query_params.append(('maxVitaminC', local_var_params['max_vitamin_c']))  # noqa: E501
          if 'min_vitamin_d' in local_var_params:
              query_params.append(('minVitaminD', local_var_params['min_vitamin_d']))  # noqa: E501
          if 'max_vitamin_d' in local_var_params:
              query_params.append(('maxVitaminD', local_var_params['max_vitamin_d']))  # noqa: E501
          if 'min_vitamin_e' in local_var_params:
              query_params.append(('minVitaminE', local_var_params['min_vitamin_e']))  # noqa: E501
          if 'max_vitamin_e' in local_var_params:
              query_params.append(('maxVitaminE', local_var_params['max_vitamin_e']))  # noqa: E501
          if 'min_vitamin_k' in local_var_params:
              query_params.append(('minVitaminK', local_var_params['min_vitamin_k']))  # noqa: E501
          if 'max_vitamin_k' in local_var_params:
              query_params.append(('maxVitaminK', local_var_params['max_vitamin_k']))  # noqa: E501
          if 'min_vitamin_b1' in local_var_params:
              query_params.append(('minVitaminB1', local_var_params['min_vitamin_b1']))  # noqa: E501
          if 'max_vitamin_b1' in local_var_params:
              query_params.append(('maxVitaminB1', local_var_params['max_vitamin_b1']))  # noqa: E501
          if 'min_vitamin_b2' in local_var_params:
              query_params.append(('minVitaminB2', local_var_params['min_vitamin_b2']))  # noqa: E501
          if 'max_vitamin_b2' in local_var_params:
              query_params.append(('maxVitaminB2', local_var_params['max_vitamin_b2']))  # noqa: E501
          if 'min_vitamin_b5' in local_var_params:
              query_params.append(('minVitaminB5', local_var_params['min_vitamin_b5']))  # noqa: E501
          if 'max_vitamin_b5' in local_var_params:
              query_params.append(('maxVitaminB5', local_var_params['max_vitamin_b5']))  # noqa: E501
          if 'min_vitamin_b3' in local_var_params:
              query_params.append(('minVitaminB3', local_var_params['min_vitamin_b3']))  # noqa: E501
          if 'max_vitamin_b3' in local_var_params:
              query_params.append(('maxVitaminB3', local_var_params['max_vitamin_b3']))  # noqa: E501
          if 'min_vitamin_b6' in local_var_params:
              query_params.append(('minVitaminB6', local_var_params['min_vitamin_b6']))  # noqa: E501
          if 'max_vitamin_b6' in local_var_params:
              query_params.append(('maxVitaminB6', local_var_params['max_vitamin_b6']))  # noqa: E501
          if 'min_vitamin_b12' in local_var_params:
              query_params.append(('minVitaminB12', local_var_params['min_vitamin_b12']))  # noqa: E501
          if 'max_vitamin_b12' in local_var_params:
              query_params.append(('maxVitaminB12', local_var_params['max_vitamin_b12']))  # noqa: E501
          if 'min_fiber' in local_var_params:
              query_params.append(('minFiber', local_var_params['min_fiber']))  # noqa: E501
          if 'max_fiber' in local_var_params:
              query_params.append(('maxFiber', local_var_params['max_fiber']))  # noqa: E501
          if 'min_folate' in local_var_params:
              query_params.append(('minFolate', local_var_params['min_folate']))  # noqa: E501
          if 'max_folate' in local_var_params:
              query_params.append(('maxFolate', local_var_params['max_folate']))  # noqa: E501
          if 'min_folic_acid' in local_var_params:
              query_params.append(('minFolicAcid', local_var_params['min_folic_acid']))  # noqa: E501
          if 'max_folic_acid' in local_var_params:
              query_params.append(('maxFolicAcid', local_var_params['max_folic_acid']))  # noqa: E501
          if 'min_iodine' in local_var_params:
              query_params.append(('minIodine', local_var_params['min_iodine']))  # noqa: E501
          if 'max_iodine' in local_var_params:
              query_params.append(('maxIodine', local_var_params['max_iodine']))  # noqa: E501
          if 'min_iron' in local_var_params:
              query_params.append(('minIron', local_var_params['min_iron']))  # noqa: E501
          if 'max_iron' in local_var_params:
              query_params.append(('maxIron', local_var_params['max_iron']))  # noqa: E501
          if 'min_magnesium' in local_var_params:
              query_params.append(('minMagnesium', local_var_params['min_magnesium']))  # noqa: E501
          if 'max_magnesium' in local_var_params:
              query_params.append(('maxMagnesium', local_var_params['max_magnesium']))  # noqa: E501
          if 'min_manganese' in local_var_params:
              query_params.append(('minManganese', local_var_params['min_manganese']))  # noqa: E501
          if 'max_manganese' in local_var_params:
              query_params.append(('maxManganese', local_var_params['max_manganese']))  # noqa: E501
          if 'min_phosphorus' in local_var_params:
              query_params.append(('minPhosphorus', local_var_params['min_phosphorus']))  # noqa: E501
          if 'max_phosphorus' in local_var_params:
              query_params.append(('maxPhosphorus', local_var_params['max_phosphorus']))  # noqa: E501
          if 'min_potassium' in local_var_params:
              query_params.append(('minPotassium', local_var_params['min_potassium']))  # noqa: E501
          if 'max_potassium' in local_var_params:
              query_params.append(('maxPotassium', local_var_params['max_potassium']))  # noqa: E501
          if 'min_selenium' in local_var_params:
              query_params.append(('minSelenium', local_var_params['min_selenium']))  # noqa: E501
          if 'max_selenium' in local_var_params:
              query_params.append(('maxSelenium', local_var_params['max_selenium']))  # noqa: E501
          if 'min_sodium' in local_var_params:
              query_params.append(('minSodium', local_var_params['min_sodium']))  # noqa: E501
          if 'max_sodium' in local_var_params:
              query_params.append(('maxSodium', local_var_params['max_sodium']))  # noqa: E501
          if 'min_sugar' in local_var_params:
              query_params.append(('minSugar', local_var_params['min_sugar']))  # noqa: E501
          if 'max_sugar' in local_var_params:
              query_params.append(('maxSugar', local_var_params['max_sugar']))  # noqa: E501
          if 'min_zinc' in local_var_params:
              query_params.append(('minZinc', local_var_params['min_zinc']))  # noqa: E501
          if 'max_zinc' in local_var_params:
              query_params.append(('maxZinc', local_var_params['max_zinc']))  # noqa: E501
          if 'offset' in local_var_params:
              query_params.append(('offset', local_var_params['offset']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
          if 'limit_license' in local_var_params:
              query_params.append(('limitLicense', local_var_params['limit_license']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/complexSearch', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def search_recipes_by_ingredients(self, ingredients, **kwargs):  # noqa: E501
          """Search Recipes by Ingredients  # noqa: E501
  
                       Ever wondered what recipes you can cook with the ingredients you have in your fridge or pantry? This endpoint lets you find recipes that either maximize the usage of ingredients you have at hand (pre shopping) or minimize the ingredients that you don't currently have (post shopping).           # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_recipes_by_ingredients(ingredients, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredients: A comma-separated list of ingredients that the recipes should contain. (required)
          :param float number: The maximum number of recipes to return (between 1 and 100). Defaults to 10.
          :param bool limit_license: Whether the recipes should have an open license that allows display with proper attribution.
          :param float ranking: Whether to maximize used ingredients (1) or minimize missing ingredients (2) first.
          :param bool ignore_pantry: Whether to ignore typical pantry items, such as water, salt, flour, etc.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.search_recipes_by_ingredients_with_http_info(ingredients, **kwargs)  # noqa: E501
          else:
              (data) = self.search_recipes_by_ingredients_with_http_info(ingredients, **kwargs)  # noqa: E501
              return data
  
      def search_recipes_by_ingredients_with_http_info(self, ingredients, **kwargs):  # noqa: E501
          """Search Recipes by Ingredients  # noqa: E501
  
                       Ever wondered what recipes you can cook with the ingredients you have in your fridge or pantry? This endpoint lets you find recipes that either maximize the usage of ingredients you have at hand (pre shopping) or minimize the ingredients that you don't currently have (post shopping).           # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_recipes_by_ingredients_with_http_info(ingredients, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredients: A comma-separated list of ingredients that the recipes should contain. (required)
          :param float number: The maximum number of recipes to return (between 1 and 100). Defaults to 10.
          :param bool limit_license: Whether the recipes should have an open license that allows display with proper attribution.
          :param float ranking: Whether to maximize used ingredients (1) or minimize missing ingredients (2) first.
          :param bool ignore_pantry: Whether to ignore typical pantry items, such as water, salt, flour, etc.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['ingredients', 'number', 'limit_license', 'ranking', 'ignore_pantry']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method search_recipes_by_ingredients" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'ingredients' is set
          if ('ingredients' not in local_var_params or
                  local_var_params['ingredients'] is None):
              raise ApiValueError("Missing the required parameter `ingredients` when calling `search_recipes_by_ingredients`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'ingredients' in local_var_params:
              query_params.append(('ingredients', local_var_params['ingredients']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
          if 'limit_license' in local_var_params:
              query_params.append(('limitLicense', local_var_params['limit_license']))  # noqa: E501
          if 'ranking' in local_var_params:
              query_params.append(('ranking', local_var_params['ranking']))  # noqa: E501
          if 'ignore_pantry' in local_var_params:
              query_params.append(('ignorePantry', local_var_params['ignore_pantry']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/findByIngredients', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def search_recipes_by_nutrients(self, **kwargs):  # noqa: E501
          """Search Recipes by Nutrients  # noqa: E501
  
          Find a set of recipes that adhere to the given nutritional limits. You may set limits for macronutrients (calories, protein, fat, and carbohydrate) and/or many micronutrients.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_recipes_by_nutrients(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float min_carbs: The minimum amount of carbohydrates in grams the recipe must have.
          :param float max_carbs: The maximum amount of carbohydrates in grams the recipe can have.
          :param float min_protein: The minimum amount of protein in grams the recipe must have.
          :param float max_protein: The maximum amount of protein in grams the recipe can have.
          :param float min_calories: The minimum amount of calories the recipe must have.
          :param float max_calories: The maximum amount of calories the recipe can have.
          :param float min_fat: The minimum amount of fat in grams the recipe must have.
          :param float max_fat: The maximum amount of fat in grams the recipe can have.
          :param float min_alcohol: The minimum amount of alcohol in grams the recipe must have.
          :param float max_alcohol: The maximum amount of alcohol in grams the recipe can have.
          :param float min_caffeine: The minimum amount of caffeine in milligrams the recipe must have.
          :param float max_caffeine: The maximum amount of caffeine in milligrams the recipe can have.
          :param float min_copper: The minimum amount of copper in milligrams the recipe must have.
          :param float max_copper: The maximum amount of copper in milligrams the recipe can have.
          :param float min_calcium: The minimum amount of calcium in milligrams the recipe must have.
          :param float max_calcium: The maximum amount of calcium in milligrams the recipe can have.
          :param float min_choline: The minimum amount of choline in milligrams the recipe must have.
          :param float max_choline: The maximum amount of choline in milligrams the recipe can have.
          :param float min_cholesterol: The minimum amount of cholesterol in milligrams the recipe must have.
          :param float max_cholesterol: The maximum amount of cholesterol in milligrams the recipe can have.
          :param float min_fluoride: The minimum amount of fluoride in milligrams the recipe must have.
          :param float max_fluoride: The maximum amount of fluoride in milligrams the recipe can have.
          :param float min_saturated_fat: The minimum amount of saturated fat in grams the recipe must have.
          :param float max_saturated_fat: The maximum amount of saturated fat in grams the recipe can have.
          :param float min_vitamin_a: The minimum amount of Vitamin A in IU the recipe must have.
          :param float max_vitamin_a: The maximum amount of Vitamin A in IU the recipe can have.
          :param float min_vitamin_c: The minimum amount of Vitamin C in milligrams the recipe must have.
          :param float max_vitamin_c: The maximum amount of Vitamin C in milligrams the recipe can have.
          :param float min_vitamin_d: The minimum amount of Vitamin D in micrograms the recipe must have.
          :param float max_vitamin_d: The maximum amount of Vitamin D in micrograms the recipe can have.
          :param float min_vitamin_e: The minimum amount of Vitamin E in milligrams the recipe must have.
          :param float max_vitamin_e: The maximum amount of Vitamin E in milligrams the recipe can have.
          :param float min_vitamin_k: The minimum amount of Vitamin K in micrograms the recipe must have.
          :param float max_vitamin_k: The maximum amount of Vitamin K in micrograms the recipe can have.
          :param float min_vitamin_b1: The minimum amount of Vitamin B1 in milligrams the recipe must have.
          :param float max_vitamin_b1: The maximum amount of Vitamin B1 in milligrams the recipe can have.
          :param float min_vitamin_b2: The minimum amount of Vitamin B2 in milligrams the recipe must have.
          :param float max_vitamin_b2: The maximum amount of Vitamin B2 in milligrams the recipe can have.
          :param float min_vitamin_b5: The minimum amount of Vitamin B5 in milligrams the recipe must have.
          :param float max_vitamin_b5: The maximum amount of Vitamin B5 in milligrams the recipe can have.
          :param float min_vitamin_b3: The minimum amount of Vitamin B3 in milligrams the recipe must have.
          :param float max_vitamin_b3: The maximum amount of Vitamin B3 in milligrams the recipe can have.
          :param float min_vitamin_b6: The minimum amount of Vitamin B6 in milligrams the recipe must have.
          :param float max_vitamin_b6: The maximum amount of Vitamin B6 in milligrams the recipe can have.
          :param float min_vitamin_b12: The minimum amount of Vitamin B12 in micrograms the recipe must have.
          :param float max_vitamin_b12: The maximum amount of Vitamin B12 in micrograms the recipe can have.
          :param float min_fiber: The minimum amount of fiber in grams the recipe must have.
          :param float max_fiber: The maximum amount of fiber in grams the recipe can have.
          :param float min_folate: The minimum amount of folate in micrograms the recipe must have.
          :param float max_folate: The maximum amount of folate in micrograms the recipe can have.
          :param float min_folic_acid: The minimum amount of folic acid in micrograms the recipe must have.
          :param float max_folic_acid: The maximum amount of folic acid in micrograms the recipe can have.
          :param float min_iodine: The minimum amount of iodine in micrograms the recipe must have.
          :param float max_iodine: The maximum amount of iodine in micrograms the recipe can have.
          :param float min_iron: The minimum amount of iron in milligrams the recipe must have.
          :param float max_iron: The maximum amount of iron in milligrams the recipe can have.
          :param float min_magnesium: The minimum amount of magnesium in milligrams the recipe must have.
          :param float max_magnesium: The maximum amount of magnesium in milligrams the recipe can have.
          :param float min_manganese: The minimum amount of manganese in milligrams the recipe must have.
          :param float max_manganese: The maximum amount of manganese in milligrams the recipe can have.
          :param float min_phosphorus: The minimum amount of phosphorus in milligrams the recipe must have.
          :param float max_phosphorus: The maximum amount of phosphorus in milligrams the recipe can have.
          :param float min_potassium: The minimum amount of potassium in milligrams the recipe must have.
          :param float max_potassium: The maximum amount of potassium in milligrams the recipe can have.
          :param float min_selenium: The minimum amount of selenium in micrograms the recipe must have.
          :param float max_selenium: The maximum amount of selenium in micrograms the recipe can have.
          :param float min_sodium: The minimum amount of sodium in milligrams the recipe must have.
          :param float max_sodium: The maximum amount of sodium in milligrams the recipe can have.
          :param float min_sugar: The minimum amount of sugar in grams the recipe must have.
          :param float max_sugar: The maximum amount of sugar in grams the recipe can have.
          :param float min_zinc: The minimum amount of zinc in milligrams the recipe must have.
          :param float max_zinc: The maximum amount of zinc in milligrams the recipe can have.
          :param float offset: The number of results to skip (between 0 and 900).
          :param float number: The number of expected results (between 1 and 100).
          :param bool random: If true, every request will give you a random set of recipes within the requested limits.
          :param bool limit_license: Whether the recipes should have an open license that allows display with proper attribution.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.search_recipes_by_nutrients_with_http_info(**kwargs)  # noqa: E501
          else:
              (data) = self.search_recipes_by_nutrients_with_http_info(**kwargs)  # noqa: E501
              return data
  
      def search_recipes_by_nutrients_with_http_info(self, **kwargs):  # noqa: E501
          """Search Recipes by Nutrients  # noqa: E501
  
          Find a set of recipes that adhere to the given nutritional limits. You may set limits for macronutrients (calories, protein, fat, and carbohydrate) and/or many micronutrients.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_recipes_by_nutrients_with_http_info(async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float min_carbs: The minimum amount of carbohydrates in grams the recipe must have.
          :param float max_carbs: The maximum amount of carbohydrates in grams the recipe can have.
          :param float min_protein: The minimum amount of protein in grams the recipe must have.
          :param float max_protein: The maximum amount of protein in grams the recipe can have.
          :param float min_calories: The minimum amount of calories the recipe must have.
          :param float max_calories: The maximum amount of calories the recipe can have.
          :param float min_fat: The minimum amount of fat in grams the recipe must have.
          :param float max_fat: The maximum amount of fat in grams the recipe can have.
          :param float min_alcohol: The minimum amount of alcohol in grams the recipe must have.
          :param float max_alcohol: The maximum amount of alcohol in grams the recipe can have.
          :param float min_caffeine: The minimum amount of caffeine in milligrams the recipe must have.
          :param float max_caffeine: The maximum amount of caffeine in milligrams the recipe can have.
          :param float min_copper: The minimum amount of copper in milligrams the recipe must have.
          :param float max_copper: The maximum amount of copper in milligrams the recipe can have.
          :param float min_calcium: The minimum amount of calcium in milligrams the recipe must have.
          :param float max_calcium: The maximum amount of calcium in milligrams the recipe can have.
          :param float min_choline: The minimum amount of choline in milligrams the recipe must have.
          :param float max_choline: The maximum amount of choline in milligrams the recipe can have.
          :param float min_cholesterol: The minimum amount of cholesterol in milligrams the recipe must have.
          :param float max_cholesterol: The maximum amount of cholesterol in milligrams the recipe can have.
          :param float min_fluoride: The minimum amount of fluoride in milligrams the recipe must have.
          :param float max_fluoride: The maximum amount of fluoride in milligrams the recipe can have.
          :param float min_saturated_fat: The minimum amount of saturated fat in grams the recipe must have.
          :param float max_saturated_fat: The maximum amount of saturated fat in grams the recipe can have.
          :param float min_vitamin_a: The minimum amount of Vitamin A in IU the recipe must have.
          :param float max_vitamin_a: The maximum amount of Vitamin A in IU the recipe can have.
          :param float min_vitamin_c: The minimum amount of Vitamin C in milligrams the recipe must have.
          :param float max_vitamin_c: The maximum amount of Vitamin C in milligrams the recipe can have.
          :param float min_vitamin_d: The minimum amount of Vitamin D in micrograms the recipe must have.
          :param float max_vitamin_d: The maximum amount of Vitamin D in micrograms the recipe can have.
          :param float min_vitamin_e: The minimum amount of Vitamin E in milligrams the recipe must have.
          :param float max_vitamin_e: The maximum amount of Vitamin E in milligrams the recipe can have.
          :param float min_vitamin_k: The minimum amount of Vitamin K in micrograms the recipe must have.
          :param float max_vitamin_k: The maximum amount of Vitamin K in micrograms the recipe can have.
          :param float min_vitamin_b1: The minimum amount of Vitamin B1 in milligrams the recipe must have.
          :param float max_vitamin_b1: The maximum amount of Vitamin B1 in milligrams the recipe can have.
          :param float min_vitamin_b2: The minimum amount of Vitamin B2 in milligrams the recipe must have.
          :param float max_vitamin_b2: The maximum amount of Vitamin B2 in milligrams the recipe can have.
          :param float min_vitamin_b5: The minimum amount of Vitamin B5 in milligrams the recipe must have.
          :param float max_vitamin_b5: The maximum amount of Vitamin B5 in milligrams the recipe can have.
          :param float min_vitamin_b3: The minimum amount of Vitamin B3 in milligrams the recipe must have.
          :param float max_vitamin_b3: The maximum amount of Vitamin B3 in milligrams the recipe can have.
          :param float min_vitamin_b6: The minimum amount of Vitamin B6 in milligrams the recipe must have.
          :param float max_vitamin_b6: The maximum amount of Vitamin B6 in milligrams the recipe can have.
          :param float min_vitamin_b12: The minimum amount of Vitamin B12 in micrograms the recipe must have.
          :param float max_vitamin_b12: The maximum amount of Vitamin B12 in micrograms the recipe can have.
          :param float min_fiber: The minimum amount of fiber in grams the recipe must have.
          :param float max_fiber: The maximum amount of fiber in grams the recipe can have.
          :param float min_folate: The minimum amount of folate in micrograms the recipe must have.
          :param float max_folate: The maximum amount of folate in micrograms the recipe can have.
          :param float min_folic_acid: The minimum amount of folic acid in micrograms the recipe must have.
          :param float max_folic_acid: The maximum amount of folic acid in micrograms the recipe can have.
          :param float min_iodine: The minimum amount of iodine in micrograms the recipe must have.
          :param float max_iodine: The maximum amount of iodine in micrograms the recipe can have.
          :param float min_iron: The minimum amount of iron in milligrams the recipe must have.
          :param float max_iron: The maximum amount of iron in milligrams the recipe can have.
          :param float min_magnesium: The minimum amount of magnesium in milligrams the recipe must have.
          :param float max_magnesium: The maximum amount of magnesium in milligrams the recipe can have.
          :param float min_manganese: The minimum amount of manganese in milligrams the recipe must have.
          :param float max_manganese: The maximum amount of manganese in milligrams the recipe can have.
          :param float min_phosphorus: The minimum amount of phosphorus in milligrams the recipe must have.
          :param float max_phosphorus: The maximum amount of phosphorus in milligrams the recipe can have.
          :param float min_potassium: The minimum amount of potassium in milligrams the recipe must have.
          :param float max_potassium: The maximum amount of potassium in milligrams the recipe can have.
          :param float min_selenium: The minimum amount of selenium in micrograms the recipe must have.
          :param float max_selenium: The maximum amount of selenium in micrograms the recipe can have.
          :param float min_sodium: The minimum amount of sodium in milligrams the recipe must have.
          :param float max_sodium: The maximum amount of sodium in milligrams the recipe can have.
          :param float min_sugar: The minimum amount of sugar in grams the recipe must have.
          :param float max_sugar: The maximum amount of sugar in grams the recipe can have.
          :param float min_zinc: The minimum amount of zinc in milligrams the recipe must have.
          :param float max_zinc: The maximum amount of zinc in milligrams the recipe can have.
          :param float offset: The number of results to skip (between 0 and 900).
          :param float number: The number of expected results (between 1 and 100).
          :param bool random: If true, every request will give you a random set of recipes within the requested limits.
          :param bool limit_license: Whether the recipes should have an open license that allows display with proper attribution.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['min_carbs', 'max_carbs', 'min_protein', 'max_protein', 'min_calories', 'max_calories', 'min_fat', 'max_fat', 'min_alcohol', 'max_alcohol', 'min_caffeine', 'max_caffeine', 'min_copper', 'max_copper', 'min_calcium', 'max_calcium', 'min_choline', 'max_choline', 'min_cholesterol', 'max_cholesterol', 'min_fluoride', 'max_fluoride', 'min_saturated_fat', 'max_saturated_fat', 'min_vitamin_a', 'max_vitamin_a', 'min_vitamin_c', 'max_vitamin_c', 'min_vitamin_d', 'max_vitamin_d', 'min_vitamin_e', 'max_vitamin_e', 'min_vitamin_k', 'max_vitamin_k', 'min_vitamin_b1', 'max_vitamin_b1', 'min_vitamin_b2', 'max_vitamin_b2', 'min_vitamin_b5', 'max_vitamin_b5', 'min_vitamin_b3', 'max_vitamin_b3', 'min_vitamin_b6', 'max_vitamin_b6', 'min_vitamin_b12', 'max_vitamin_b12', 'min_fiber', 'max_fiber', 'min_folate', 'max_folate', 'min_folic_acid', 'max_folic_acid', 'min_iodine', 'max_iodine', 'min_iron', 'max_iron', 'min_magnesium', 'max_magnesium', 'min_manganese', 'max_manganese', 'min_phosphorus', 'max_phosphorus', 'min_potassium', 'max_potassium', 'min_selenium', 'max_selenium', 'min_sodium', 'max_sodium', 'min_sugar', 'max_sugar', 'min_zinc', 'max_zinc', 'offset', 'number', 'random', 'limit_license']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method search_recipes_by_nutrients" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'min_carbs' in local_var_params:
              query_params.append(('minCarbs', local_var_params['min_carbs']))  # noqa: E501
          if 'max_carbs' in local_var_params:
              query_params.append(('maxCarbs', local_var_params['max_carbs']))  # noqa: E501
          if 'min_protein' in local_var_params:
              query_params.append(('minProtein', local_var_params['min_protein']))  # noqa: E501
          if 'max_protein' in local_var_params:
              query_params.append(('maxProtein', local_var_params['max_protein']))  # noqa: E501
          if 'min_calories' in local_var_params:
              query_params.append(('minCalories', local_var_params['min_calories']))  # noqa: E501
          if 'max_calories' in local_var_params:
              query_params.append(('maxCalories', local_var_params['max_calories']))  # noqa: E501
          if 'min_fat' in local_var_params:
              query_params.append(('minFat', local_var_params['min_fat']))  # noqa: E501
          if 'max_fat' in local_var_params:
              query_params.append(('maxFat', local_var_params['max_fat']))  # noqa: E501
          if 'min_alcohol' in local_var_params:
              query_params.append(('minAlcohol', local_var_params['min_alcohol']))  # noqa: E501
          if 'max_alcohol' in local_var_params:
              query_params.append(('maxAlcohol', local_var_params['max_alcohol']))  # noqa: E501
          if 'min_caffeine' in local_var_params:
              query_params.append(('minCaffeine', local_var_params['min_caffeine']))  # noqa: E501
          if 'max_caffeine' in local_var_params:
              query_params.append(('maxCaffeine', local_var_params['max_caffeine']))  # noqa: E501
          if 'min_copper' in local_var_params:
              query_params.append(('minCopper', local_var_params['min_copper']))  # noqa: E501
          if 'max_copper' in local_var_params:
              query_params.append(('maxCopper', local_var_params['max_copper']))  # noqa: E501
          if 'min_calcium' in local_var_params:
              query_params.append(('minCalcium', local_var_params['min_calcium']))  # noqa: E501
          if 'max_calcium' in local_var_params:
              query_params.append(('maxCalcium', local_var_params['max_calcium']))  # noqa: E501
          if 'min_choline' in local_var_params:
              query_params.append(('minCholine', local_var_params['min_choline']))  # noqa: E501
          if 'max_choline' in local_var_params:
              query_params.append(('maxCholine', local_var_params['max_choline']))  # noqa: E501
          if 'min_cholesterol' in local_var_params:
              query_params.append(('minCholesterol', local_var_params['min_cholesterol']))  # noqa: E501
          if 'max_cholesterol' in local_var_params:
              query_params.append(('maxCholesterol', local_var_params['max_cholesterol']))  # noqa: E501
          if 'min_fluoride' in local_var_params:
              query_params.append(('minFluoride', local_var_params['min_fluoride']))  # noqa: E501
          if 'max_fluoride' in local_var_params:
              query_params.append(('maxFluoride', local_var_params['max_fluoride']))  # noqa: E501
          if 'min_saturated_fat' in local_var_params:
              query_params.append(('minSaturatedFat', local_var_params['min_saturated_fat']))  # noqa: E501
          if 'max_saturated_fat' in local_var_params:
              query_params.append(('maxSaturatedFat', local_var_params['max_saturated_fat']))  # noqa: E501
          if 'min_vitamin_a' in local_var_params:
              query_params.append(('minVitaminA', local_var_params['min_vitamin_a']))  # noqa: E501
          if 'max_vitamin_a' in local_var_params:
              query_params.append(('maxVitaminA', local_var_params['max_vitamin_a']))  # noqa: E501
          if 'min_vitamin_c' in local_var_params:
              query_params.append(('minVitaminC', local_var_params['min_vitamin_c']))  # noqa: E501
          if 'max_vitamin_c' in local_var_params:
              query_params.append(('maxVitaminC', local_var_params['max_vitamin_c']))  # noqa: E501
          if 'min_vitamin_d' in local_var_params:
              query_params.append(('minVitaminD', local_var_params['min_vitamin_d']))  # noqa: E501
          if 'max_vitamin_d' in local_var_params:
              query_params.append(('maxVitaminD', local_var_params['max_vitamin_d']))  # noqa: E501
          if 'min_vitamin_e' in local_var_params:
              query_params.append(('minVitaminE', local_var_params['min_vitamin_e']))  # noqa: E501
          if 'max_vitamin_e' in local_var_params:
              query_params.append(('maxVitaminE', local_var_params['max_vitamin_e']))  # noqa: E501
          if 'min_vitamin_k' in local_var_params:
              query_params.append(('minVitaminK', local_var_params['min_vitamin_k']))  # noqa: E501
          if 'max_vitamin_k' in local_var_params:
              query_params.append(('maxVitaminK', local_var_params['max_vitamin_k']))  # noqa: E501
          if 'min_vitamin_b1' in local_var_params:
              query_params.append(('minVitaminB1', local_var_params['min_vitamin_b1']))  # noqa: E501
          if 'max_vitamin_b1' in local_var_params:
              query_params.append(('maxVitaminB1', local_var_params['max_vitamin_b1']))  # noqa: E501
          if 'min_vitamin_b2' in local_var_params:
              query_params.append(('minVitaminB2', local_var_params['min_vitamin_b2']))  # noqa: E501
          if 'max_vitamin_b2' in local_var_params:
              query_params.append(('maxVitaminB2', local_var_params['max_vitamin_b2']))  # noqa: E501
          if 'min_vitamin_b5' in local_var_params:
              query_params.append(('minVitaminB5', local_var_params['min_vitamin_b5']))  # noqa: E501
          if 'max_vitamin_b5' in local_var_params:
              query_params.append(('maxVitaminB5', local_var_params['max_vitamin_b5']))  # noqa: E501
          if 'min_vitamin_b3' in local_var_params:
              query_params.append(('minVitaminB3', local_var_params['min_vitamin_b3']))  # noqa: E501
          if 'max_vitamin_b3' in local_var_params:
              query_params.append(('maxVitaminB3', local_var_params['max_vitamin_b3']))  # noqa: E501
          if 'min_vitamin_b6' in local_var_params:
              query_params.append(('minVitaminB6', local_var_params['min_vitamin_b6']))  # noqa: E501
          if 'max_vitamin_b6' in local_var_params:
              query_params.append(('maxVitaminB6', local_var_params['max_vitamin_b6']))  # noqa: E501
          if 'min_vitamin_b12' in local_var_params:
              query_params.append(('minVitaminB12', local_var_params['min_vitamin_b12']))  # noqa: E501
          if 'max_vitamin_b12' in local_var_params:
              query_params.append(('maxVitaminB12', local_var_params['max_vitamin_b12']))  # noqa: E501
          if 'min_fiber' in local_var_params:
              query_params.append(('minFiber', local_var_params['min_fiber']))  # noqa: E501
          if 'max_fiber' in local_var_params:
              query_params.append(('maxFiber', local_var_params['max_fiber']))  # noqa: E501
          if 'min_folate' in local_var_params:
              query_params.append(('minFolate', local_var_params['min_folate']))  # noqa: E501
          if 'max_folate' in local_var_params:
              query_params.append(('maxFolate', local_var_params['max_folate']))  # noqa: E501
          if 'min_folic_acid' in local_var_params:
              query_params.append(('minFolicAcid', local_var_params['min_folic_acid']))  # noqa: E501
          if 'max_folic_acid' in local_var_params:
              query_params.append(('maxFolicAcid', local_var_params['max_folic_acid']))  # noqa: E501
          if 'min_iodine' in local_var_params:
              query_params.append(('minIodine', local_var_params['min_iodine']))  # noqa: E501
          if 'max_iodine' in local_var_params:
              query_params.append(('maxIodine', local_var_params['max_iodine']))  # noqa: E501
          if 'min_iron' in local_var_params:
              query_params.append(('minIron', local_var_params['min_iron']))  # noqa: E501
          if 'max_iron' in local_var_params:
              query_params.append(('maxIron', local_var_params['max_iron']))  # noqa: E501
          if 'min_magnesium' in local_var_params:
              query_params.append(('minMagnesium', local_var_params['min_magnesium']))  # noqa: E501
          if 'max_magnesium' in local_var_params:
              query_params.append(('maxMagnesium', local_var_params['max_magnesium']))  # noqa: E501
          if 'min_manganese' in local_var_params:
              query_params.append(('minManganese', local_var_params['min_manganese']))  # noqa: E501
          if 'max_manganese' in local_var_params:
              query_params.append(('maxManganese', local_var_params['max_manganese']))  # noqa: E501
          if 'min_phosphorus' in local_var_params:
              query_params.append(('minPhosphorus', local_var_params['min_phosphorus']))  # noqa: E501
          if 'max_phosphorus' in local_var_params:
              query_params.append(('maxPhosphorus', local_var_params['max_phosphorus']))  # noqa: E501
          if 'min_potassium' in local_var_params:
              query_params.append(('minPotassium', local_var_params['min_potassium']))  # noqa: E501
          if 'max_potassium' in local_var_params:
              query_params.append(('maxPotassium', local_var_params['max_potassium']))  # noqa: E501
          if 'min_selenium' in local_var_params:
              query_params.append(('minSelenium', local_var_params['min_selenium']))  # noqa: E501
          if 'max_selenium' in local_var_params:
              query_params.append(('maxSelenium', local_var_params['max_selenium']))  # noqa: E501
          if 'min_sodium' in local_var_params:
              query_params.append(('minSodium', local_var_params['min_sodium']))  # noqa: E501
          if 'max_sodium' in local_var_params:
              query_params.append(('maxSodium', local_var_params['max_sodium']))  # noqa: E501
          if 'min_sugar' in local_var_params:
              query_params.append(('minSugar', local_var_params['min_sugar']))  # noqa: E501
          if 'max_sugar' in local_var_params:
              query_params.append(('maxSugar', local_var_params['max_sugar']))  # noqa: E501
          if 'min_zinc' in local_var_params:
              query_params.append(('minZinc', local_var_params['min_zinc']))  # noqa: E501
          if 'max_zinc' in local_var_params:
              query_params.append(('maxZinc', local_var_params['max_zinc']))  # noqa: E501
          if 'offset' in local_var_params:
              query_params.append(('offset', local_var_params['offset']))  # noqa: E501
          if 'number' in local_var_params:
              query_params.append(('number', local_var_params['number']))  # noqa: E501
          if 'random' in local_var_params:
              query_params.append(('random', local_var_params['random']))  # noqa: E501
          if 'limit_license' in local_var_params:
              query_params.append(('limitLicense', local_var_params['limit_license']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/findByNutrients', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def search_site_content(self, query, **kwargs):  # noqa: E501
          """Search Site Content  # noqa: E501
  
          Search spoonacular's site content. You'll be able to find everything that you could also find using the search suggestions on spoonacular.com. This is a suggest API so you can send partial strings as queries.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_site_content(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The query to search for. You can also use partial queries such as \"spagh\" to already find spaghetti recipes, articles, grocery products, and other content. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.search_site_content_with_http_info(query, **kwargs)  # noqa: E501
          else:
              (data) = self.search_site_content_with_http_info(query, **kwargs)  # noqa: E501
              return data
  
      def search_site_content_with_http_info(self, query, **kwargs):  # noqa: E501
          """Search Site Content  # noqa: E501
  
          Search spoonacular's site content. You'll be able to find everything that you could also find using the search suggestions on spoonacular.com. This is a suggest API so you can send partial strings as queries.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.search_site_content_with_http_info(query, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str query: The query to search for. You can also use partial queries such as \"spagh\" to already find spaghetti recipes, articles, grocery products, and other content. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['query']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method search_site_content" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'query' is set
          if ('query' not in local_var_params or
                  local_var_params['query'] is None):
              raise ApiValueError("Missing the required parameter `query` when calling `search_site_content`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'query' in local_var_params:
              query_params.append(('query', local_var_params['query']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/site/search', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def summarize_recipe(self, id, **kwargs):  # noqa: E501
          """Summarize Recipe  # noqa: E501
  
          Automatically generate a short description that summarizes key information about the recipe.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.summarize_recipe(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.summarize_recipe_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.summarize_recipe_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def summarize_recipe_with_http_info(self, id, **kwargs):  # noqa: E501
          """Summarize Recipe  # noqa: E501
  
          Automatically generate a short description that summarizes key information about the recipe.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.summarize_recipe_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method summarize_recipe" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `summarize_recipe`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/summary', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def talk_to_chatbot(self, text, **kwargs):  # noqa: E501
          """Talk to Chatbot  # noqa: E501
  
          This endpoint can be used to have a conversation about food with the spoonacular chatbot. Use the \"Get Conversation Suggests\" endpoint to show your user what he or she can say.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.talk_to_chatbot(text, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str text: The request / question / answer from the user to the chatbot. (required)
          :param str context_id: An arbitrary globally unique id for your conversation. The conversation can contain states so you should pass your context id if you want the bot to be able to remember the conversation.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.talk_to_chatbot_with_http_info(text, **kwargs)  # noqa: E501
          else:
              (data) = self.talk_to_chatbot_with_http_info(text, **kwargs)  # noqa: E501
              return data
  
      def talk_to_chatbot_with_http_info(self, text, **kwargs):  # noqa: E501
          """Talk to Chatbot  # noqa: E501
  
          This endpoint can be used to have a conversation about food with the spoonacular chatbot. Use the \"Get Conversation Suggests\" endpoint to show your user what he or she can say.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.talk_to_chatbot_with_http_info(text, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str text: The request / question / answer from the user to the chatbot. (required)
          :param str context_id: An arbitrary globally unique id for your conversation. The conversation can contain states so you should pass your context id if you want the bot to be able to remember the conversation.
          :return: object
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['text', 'context_id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method talk_to_chatbot" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'text' is set
          if ('text' not in local_var_params or
                  local_var_params['text'] is None):
              raise ApiValueError("Missing the required parameter `text` when calling `talk_to_chatbot`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
          if 'text' in local_var_params:
              query_params.append(('text', local_var_params['text']))  # noqa: E501
          if 'context_id' in local_var_params:
              query_params.append(('contextId', local_var_params['context_id']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['application/json'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/converse', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='object',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_equipment(self, instructions, **kwargs):  # noqa: E501
          """Visualize Equipment  # noqa: E501
  
          Visualize the equipment used to make a recipe. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_equipment(instructions, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str instructions: The recipe's instructions. (required)
          :param str view: How to visualize the equipment, either \\\"grid\\\" or \\\"list\\\".
          :param bool default_css: Whether the default CSS should be added to the response.
          :param bool show_backlink: Whether to show a backlink to spoonacular. If set false, this call counts against your quota.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_equipment_with_http_info(instructions, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_equipment_with_http_info(instructions, **kwargs)  # noqa: E501
              return data
  
      def visualize_equipment_with_http_info(self, instructions, **kwargs):  # noqa: E501
          """Visualize Equipment  # noqa: E501
  
          Visualize the equipment used to make a recipe. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_equipment_with_http_info(instructions, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str instructions: The recipe's instructions. (required)
          :param str view: How to visualize the equipment, either \\\"grid\\\" or \\\"list\\\".
          :param bool default_css: Whether the default CSS should be added to the response.
          :param bool show_backlink: Whether to show a backlink to spoonacular. If set false, this call counts against your quota.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['instructions', 'view', 'default_css', 'show_backlink']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_equipment" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'instructions' is set
          if ('instructions' not in local_var_params or
                  local_var_params['instructions'] is None):
              raise ApiValueError("Missing the required parameter `instructions` when calling `visualize_equipment`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
          if 'instructions' in local_var_params:
              form_params.append(('instructions', local_var_params['instructions']))  # noqa: E501
          if 'view' in local_var_params:
              form_params.append(('view', local_var_params['view']))  # noqa: E501
          if 'default_css' in local_var_params:
              form_params.append(('defaultCss', local_var_params['default_css']))  # noqa: E501
          if 'show_backlink' in local_var_params:
              form_params.append(('showBacklink', local_var_params['show_backlink']))  # noqa: E501
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/x-www-form-urlencoded'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/visualizeEquipment', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_ingredients(self, ingredient_list, servings, **kwargs):  # noqa: E501
          """Visualize Ingredients  # noqa: E501
  
          Visualize ingredients of a recipe. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_ingredients(ingredient_list, servings, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line. (required)
          :param float servings: The number of servings. (required)
          :param str measure: The original system of measurement, either \\\"metric\\\" or \\\"us\\\".
          :param str view: How to visualize the ingredients, either \\\"grid\\\" or \\\"list\\\".
          :param bool default_css: Whether the default CSS should be added to the response.
          :param bool show_backlink: Whether to show a backlink to spoonacular. If set false, this call counts against your quota.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_ingredients_with_http_info(ingredient_list, servings, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_ingredients_with_http_info(ingredient_list, servings, **kwargs)  # noqa: E501
              return data
  
      def visualize_ingredients_with_http_info(self, ingredient_list, servings, **kwargs):  # noqa: E501
          """Visualize Ingredients  # noqa: E501
  
          Visualize ingredients of a recipe. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_ingredients_with_http_info(ingredient_list, servings, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line. (required)
          :param float servings: The number of servings. (required)
          :param str measure: The original system of measurement, either \\\"metric\\\" or \\\"us\\\".
          :param str view: How to visualize the ingredients, either \\\"grid\\\" or \\\"list\\\".
          :param bool default_css: Whether the default CSS should be added to the response.
          :param bool show_backlink: Whether to show a backlink to spoonacular. If set false, this call counts against your quota.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['ingredient_list', 'servings', 'measure', 'view', 'default_css', 'show_backlink']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_ingredients" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'ingredient_list' is set
          if ('ingredient_list' not in local_var_params or
                  local_var_params['ingredient_list'] is None):
              raise ApiValueError("Missing the required parameter `ingredient_list` when calling `visualize_ingredients`")  # noqa: E501
          # verify the required parameter 'servings' is set
          if ('servings' not in local_var_params or
                  local_var_params['servings'] is None):
              raise ApiValueError("Missing the required parameter `servings` when calling `visualize_ingredients`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
          if 'ingredient_list' in local_var_params:
              form_params.append(('ingredientList', local_var_params['ingredient_list']))  # noqa: E501
          if 'servings' in local_var_params:
              form_params.append(('servings', local_var_params['servings']))  # noqa: E501
          if 'measure' in local_var_params:
              form_params.append(('measure', local_var_params['measure']))  # noqa: E501
          if 'view' in local_var_params:
              form_params.append(('view', local_var_params['view']))  # noqa: E501
          if 'default_css' in local_var_params:
              form_params.append(('defaultCss', local_var_params['default_css']))  # noqa: E501
          if 'show_backlink' in local_var_params:
              form_params.append(('showBacklink', local_var_params['show_backlink']))  # noqa: E501
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/x-www-form-urlencoded'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/visualizeIngredients', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_menu_item_nutrition_by_id(self, id, **kwargs):  # noqa: E501
          """Visualize Menu Item Nutrition by ID  # noqa: E501
  
          Visualize a menu item's nutritional information as HTML including CSS.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_menu_item_nutrition_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The menu item id. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_menu_item_nutrition_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_menu_item_nutrition_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def visualize_menu_item_nutrition_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Visualize Menu Item Nutrition by ID  # noqa: E501
  
          Visualize a menu item's nutritional information as HTML including CSS.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_menu_item_nutrition_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The menu item id. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id', 'default_css']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_menu_item_nutrition_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `visualize_menu_item_nutrition_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'default_css' in local_var_params:
              query_params.append(('defaultCss', local_var_params['default_css']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/menuItems/{id}/nutritionWidget', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_price_breakdown(self, ingredient_list, servings, **kwargs):  # noqa: E501
          """Visualize Price Breakdown  # noqa: E501
  
          Visualize the price breakdown of a recipe. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_price_breakdown(ingredient_list, servings, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line. (required)
          :param float servings: The number of servings. (required)
          :param float mode: The mode in which the widget should be delivered. 1 = separate views (compact), 2 = all in one view (full).
          :param bool default_css: Whether the default CSS should be added to the response.
          :param bool show_backlink: Whether to show a backlink to spoonacular. If set false, this call counts against your quota.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_price_breakdown_with_http_info(ingredient_list, servings, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_price_breakdown_with_http_info(ingredient_list, servings, **kwargs)  # noqa: E501
              return data
  
      def visualize_price_breakdown_with_http_info(self, ingredient_list, servings, **kwargs):  # noqa: E501
          """Visualize Price Breakdown  # noqa: E501
  
          Visualize the price breakdown of a recipe. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_price_breakdown_with_http_info(ingredient_list, servings, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line. (required)
          :param float servings: The number of servings. (required)
          :param float mode: The mode in which the widget should be delivered. 1 = separate views (compact), 2 = all in one view (full).
          :param bool default_css: Whether the default CSS should be added to the response.
          :param bool show_backlink: Whether to show a backlink to spoonacular. If set false, this call counts against your quota.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['ingredient_list', 'servings', 'mode', 'default_css', 'show_backlink']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_price_breakdown" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'ingredient_list' is set
          if ('ingredient_list' not in local_var_params or
                  local_var_params['ingredient_list'] is None):
              raise ApiValueError("Missing the required parameter `ingredient_list` when calling `visualize_price_breakdown`")  # noqa: E501
          # verify the required parameter 'servings' is set
          if ('servings' not in local_var_params or
                  local_var_params['servings'] is None):
              raise ApiValueError("Missing the required parameter `servings` when calling `visualize_price_breakdown`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
          if 'ingredient_list' in local_var_params:
              form_params.append(('ingredientList', local_var_params['ingredient_list']))  # noqa: E501
          if 'servings' in local_var_params:
              form_params.append(('servings', local_var_params['servings']))  # noqa: E501
          if 'mode' in local_var_params:
              form_params.append(('mode', local_var_params['mode']))  # noqa: E501
          if 'default_css' in local_var_params:
              form_params.append(('defaultCss', local_var_params['default_css']))  # noqa: E501
          if 'show_backlink' in local_var_params:
              form_params.append(('showBacklink', local_var_params['show_backlink']))  # noqa: E501
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/x-www-form-urlencoded'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/visualizePriceEstimator', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_product_nutrition_by_id(self, id, **kwargs):  # noqa: E501
          """Visualize Product Nutrition by ID  # noqa: E501
  
          Visualize a product's nutritional information as HTML including CSS.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_product_nutrition_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The id of the product. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_product_nutrition_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_product_nutrition_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def visualize_product_nutrition_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Visualize Product Nutrition by ID  # noqa: E501
  
          Visualize a product's nutritional information as HTML including CSS.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_product_nutrition_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The id of the product. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id', 'default_css']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_product_nutrition_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `visualize_product_nutrition_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'default_css' in local_var_params:
              query_params.append(('defaultCss', local_var_params['default_css']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/food/products/{id}/nutritionWidget', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_recipe_equipment_by_id(self, id, **kwargs):  # noqa: E501
          """Visualize Recipe Equipment by ID  # noqa: E501
  
          Visualize a recipe's equipment list.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_equipment_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_recipe_equipment_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_recipe_equipment_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def visualize_recipe_equipment_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Visualize Recipe Equipment by ID  # noqa: E501
  
          Visualize a recipe's equipment list.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_equipment_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id', 'default_css']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_recipe_equipment_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `visualize_recipe_equipment_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'default_css' in local_var_params:
              query_params.append(('defaultCss', local_var_params['default_css']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/equipmentWidget', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_recipe_ingredients_by_id(self, id, **kwargs):  # noqa: E501
          """Visualize Recipe Ingredients by ID  # noqa: E501
  
          Visualize a recipe's ingredient list.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_ingredients_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_recipe_ingredients_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_recipe_ingredients_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def visualize_recipe_ingredients_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Visualize Recipe Ingredients by ID  # noqa: E501
  
          Visualize a recipe's ingredient list.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_ingredients_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id', 'default_css']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_recipe_ingredients_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `visualize_recipe_ingredients_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'default_css' in local_var_params:
              query_params.append(('defaultCss', local_var_params['default_css']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/ingredientWidget', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_recipe_nutrition(self, ingredient_list, servings, **kwargs):  # noqa: E501
          """Visualize Recipe Nutrition  # noqa: E501
  
          Visualize a recipe's nutritional information as HTML including CSS. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_nutrition(ingredient_list, servings, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line. (required)
          :param float servings: The number of servings. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :param bool show_backlink: Whether to show a backlink to spoonacular. If set false, this call counts against your quota.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_recipe_nutrition_with_http_info(ingredient_list, servings, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_recipe_nutrition_with_http_info(ingredient_list, servings, **kwargs)  # noqa: E501
              return data
  
      def visualize_recipe_nutrition_with_http_info(self, ingredient_list, servings, **kwargs):  # noqa: E501
          """Visualize Recipe Nutrition  # noqa: E501
  
          Visualize a recipe's nutritional information as HTML including CSS. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_nutrition_with_http_info(ingredient_list, servings, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line. (required)
          :param float servings: The number of servings. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :param bool show_backlink: Whether to show a backlink to spoonacular. If set false, this call counts against your quota.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['ingredient_list', 'servings', 'default_css', 'show_backlink']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_recipe_nutrition" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'ingredient_list' is set
          if ('ingredient_list' not in local_var_params or
                  local_var_params['ingredient_list'] is None):
              raise ApiValueError("Missing the required parameter `ingredient_list` when calling `visualize_recipe_nutrition`")  # noqa: E501
          # verify the required parameter 'servings' is set
          if ('servings' not in local_var_params or
                  local_var_params['servings'] is None):
              raise ApiValueError("Missing the required parameter `servings` when calling `visualize_recipe_nutrition`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
          if 'ingredient_list' in local_var_params:
              form_params.append(('ingredientList', local_var_params['ingredient_list']))  # noqa: E501
          if 'servings' in local_var_params:
              form_params.append(('servings', local_var_params['servings']))  # noqa: E501
          if 'default_css' in local_var_params:
              form_params.append(('defaultCss', local_var_params['default_css']))  # noqa: E501
          if 'show_backlink' in local_var_params:
              form_params.append(('showBacklink', local_var_params['show_backlink']))  # noqa: E501
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/x-www-form-urlencoded'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/visualizeNutrition', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_recipe_nutrition_by_id(self, id, **kwargs):  # noqa: E501
          """Visualize Recipe Nutrition by ID  # noqa: E501
  
          Visualize a recipe's nutritional information as HTML including CSS.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_nutrition_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_recipe_nutrition_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_recipe_nutrition_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def visualize_recipe_nutrition_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Visualize Recipe Nutrition by ID  # noqa: E501
  
          Visualize a recipe's nutritional information as HTML including CSS.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_nutrition_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id', 'default_css']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_recipe_nutrition_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `visualize_recipe_nutrition_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'default_css' in local_var_params:
              query_params.append(('defaultCss', local_var_params['default_css']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/nutritionWidget', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_recipe_price_breakdown_by_id(self, id, **kwargs):  # noqa: E501
          """Visualize Recipe Price Breakdown by ID  # noqa: E501
  
          Visualize a recipe's price breakdown.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_price_breakdown_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_recipe_price_breakdown_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_recipe_price_breakdown_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def visualize_recipe_price_breakdown_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Visualize Recipe Price Breakdown by ID  # noqa: E501
  
          Visualize a recipe's price breakdown.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_price_breakdown_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :param bool default_css: Whether the default CSS should be added to the response.
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id', 'default_css']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_recipe_price_breakdown_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `visualize_recipe_price_breakdown_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
          if 'default_css' in local_var_params:
              query_params.append(('defaultCss', local_var_params['default_css']))  # noqa: E501
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/priceBreakdownWidget', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_recipe_taste(self, ingredient_list, **kwargs):  # noqa: E501
          """Visualize Recipe Taste  # noqa: E501
  
          Visualize a recipe's taste information as HTML including CSS. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_taste(ingredient_list, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line. (required)
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_recipe_taste_with_http_info(ingredient_list, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_recipe_taste_with_http_info(ingredient_list, **kwargs)  # noqa: E501
              return data
  
      def visualize_recipe_taste_with_http_info(self, ingredient_list, **kwargs):  # noqa: E501
          """Visualize Recipe Taste  # noqa: E501
  
          Visualize a recipe's taste information as HTML including CSS. You can play around with that endpoint!  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_taste_with_http_info(ingredient_list, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param str ingredient_list: The ingredient list of the recipe, one ingredient per line. (required)
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['ingredient_list']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_recipe_taste" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'ingredient_list' is set
          if ('ingredient_list' not in local_var_params or
                  local_var_params['ingredient_list'] is None):
              raise ApiValueError("Missing the required parameter `ingredient_list` when calling `visualize_recipe_taste`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
          if 'ingredient_list' in local_var_params:
              form_params.append(('ingredientList', local_var_params['ingredient_list']))  # noqa: E501
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # HTTP header `Content-Type`
          header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
              ['application/x-www-form-urlencoded'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/visualizeTaste', 'POST',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  
      def visualize_recipe_taste_by_id(self, id, **kwargs):  # noqa: E501
          """Visualize Recipe Taste by ID  # noqa: E501
  
          Get a recipe's taste. The tastes supported are sweet, salty, sour, bitter, savory, and fatty.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_taste_by_id(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('async_req'):
              return self.visualize_recipe_taste_by_id_with_http_info(id, **kwargs)  # noqa: E501
          else:
              (data) = self.visualize_recipe_taste_by_id_with_http_info(id, **kwargs)  # noqa: E501
              return data
  
      def visualize_recipe_taste_by_id_with_http_info(self, id, **kwargs):  # noqa: E501
          """Visualize Recipe Taste by ID  # noqa: E501
  
          Get a recipe's taste. The tastes supported are sweet, salty, sour, bitter, savory, and fatty.  # noqa: E501
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please pass async_req=True
          >>> thread = api.visualize_recipe_taste_by_id_with_http_info(id, async_req=True)
          >>> result = thread.get()
  
          :param async_req bool
          :param float id: The recipe id. (required)
          :return: str
                   If the method is called asynchronously,
                   returns the request thread.
          """
  
          local_var_params = locals()
  
          all_params = ['id']  # noqa: E501
          all_params.append('async_req')
          all_params.append('_return_http_data_only')
          all_params.append('_preload_content')
          all_params.append('_request_timeout')
  
          for key, val in six.iteritems(local_var_params['kwargs']):
              if key not in all_params:
                  raise ApiTypeError(
                      "Got an unexpected keyword argument '%s'"
                      " to method visualize_recipe_taste_by_id" % key
                  )
              local_var_params[key] = val
          del local_var_params['kwargs']
          # verify the required parameter 'id' is set
          if ('id' not in local_var_params or
                  local_var_params['id'] is None):
              raise ApiValueError("Missing the required parameter `id` when calling `visualize_recipe_taste_by_id`")  # noqa: E501
  
          collection_formats = {}
  
          path_params = {}
          if 'id' in local_var_params:
              path_params['id'] = local_var_params['id']  # noqa: E501
  
          query_params = []
  
          header_params = {}
  
          form_params = []
          local_var_files = {}
  
          body_params = None
          # HTTP header `Accept`
          header_params['Accept'] = self.api_client.select_header_accept(
              ['text/html'])  # noqa: E501
  
          # Authentication setting
          auth_settings = ['apiKeyScheme']  # noqa: E501
  
          return self.api_client.call_api(
              '/recipes/{id}/tasteWidget', 'GET',
              path_params,
              query_params,
              header_params,
              body=body_params,
              post_params=form_params,
              files=local_var_files,
              response_type='str',  # noqa: E501
              auth_settings=auth_settings,
              async_req=local_var_params.get('async_req'),
              _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
              _preload_content=local_var_params.get('_preload_content', True),
              _request_timeout=local_var_params.get('_request_timeout'),
              collection_formats=collection_formats)
  