code: def create_observations(params: Dict[str, Dict[str, Any]], access_token: str) -> List[Dict[str, Any]]:
      
      response = requests.post(url="{base_url}/observations.json".format(base_url=INAT_BASE_URL),
                               json=params,
                               headers=_build_auth_header(access_token))
      response.raise_for_status()
      return response.json()
docs: Create a single or several (if passed an array) observations).
  
      :param params:
      :param access_token: the access token, as returned by :func:`get_access_token()`
  
      :return: iNaturalist's JSON response, as a Python object
      :raise: requests.HTTPError, if the call is not successful. iNaturalist returns an error 422 (unprocessable entity)
              if it rejects the observation data (for example an observation date in the future or a latitude > 90. In
              that case the exception's `response` attribute give details about the errors.
  
      allowed params: see https://www.inaturalist.org/pages/api+reference#post-observations
  
      Example:
  
          params = {'observation':
              {'species_guess': 'Pieris rapae'},
          }
  
      TODO investigate: according to the doc, we should be able to pass multiple observations (in an array, and in
      renaming observation to observations, but as far as I saw they are not created (while a status of 200 is returned)