docs: def put_feature(ctx, dataset, fid, feature, input):
      """Create or update a dataset feature.
  
      The semantics of HTTP PUT apply: if the dataset has no feature
      with the given `fid` a new feature will be created. Returns a
      GeoJSON representation of the new or updated feature.
  
          $ mapbox datasets put-feature dataset-id feature-id 'geojson-feature'
  
      All endpoints require authentication. An access token with
      `datasets:write` scope is required, see `mapbox --help`.
      """
  
      if feature is None:
          stdin = click.open_file(input, 'r')
          feature = stdin.read()
  
      feature = json.loads(feature)
  
      service = ctx.obj.get('service')
      res = service.update_feature(dataset, fid, feature)
  
      if res.status_code == 200:
          click.echo(res.text)
      else:
          raise MapboxCLIException(res.text.strip())