docs: def put_observation_field_values(observation_id: int, observation_field_id: int, value: Any,
                                   access_token: str) -> Dict[str, Any]:
      # TODO: Also implement a put_or_update_observation_field_values() that deletes then recreates the field_value?
      # TODO: Write example use in docstring.
      # TODO: Return some meaningful exception if it fails because the field is already set.
      # TODO: Also show in example  to obtain the observation_field_id?
      # TODO: What happens when parameters are invalid
      # TODO: It appears pushing the same value/pair twice in a row (but deleting it meanwhile via the UI)...
      # TODO: ...triggers an error 404 the second time (report to iNaturalist?)
      """Sets an observation field (value) on an observation.
  
      :param observation_id:
      :param observation_field_id:
      :param value
      :param access_token: access_token: the access token, as returned by :func:`get_access_token()`
  
      :returns: iNaturalist's response as a dict, for example:
              {'id': 31,
               'observation_id': 18166477,
               'observation_field_id': 31,
               'value': 'fouraging',
               'created_at': '2012-09-29T11:05:44.935+02:00',
               'updated_at': '2018-11-13T10:49:47.985+01:00',
               'user_id': 1,
               'updater_id': 1263313,
               'uuid': 'b404b654-1bf0-4299-9288-52eeda7ac0db',
               'created_at_utc': '2012-09-29T09:05:44.935Z',
               'updated_at_utc': '2018-11-13T09:49:47.985Z'}
  
      Will fail if this observation_field is already set for this observation.
      """
  
      payload = {
          'observation_field_value': {
              'observation_id': observation_id,
              'observation_field_id': observation_field_id,
              'value': value
          }
      }
  
      response = requests.put("{base_url}/observation_field_values/{id}".format(base_url=INAT_BASE_URL,
                                                                                id=observation_field_id),
                              headers=_build_auth_header(access_token),
                              json=payload)
  
      response.raise_for_status()
      return response.json()