docs: def from_rest(model, props):
      """ Map the REST data onto the model
  
      Additionally, perform the following tasks:
  
          * set all blank strings to None where needed
          * purge all fields not allowed as incoming data
          * purge all unknown fields from the incoming data
          * lowercase certain fields that need it
          * merge new data with existing & validate
              * mutate the existing model
              * abort on validation errors
              * coerce all the values
      """
  
      req = goldman.sess.req
  
      _from_rest_blank(model, props)
      _from_rest_hide(model, props)
      _from_rest_ignore(model, props)
      _from_rest_lower(model, props)
  
      if req.is_posting:
          _from_rest_on_create(model, props)
      elif req.is_patching:
          _from_rest_on_update(model, props)
  
      model.merge(props, validate=True)
  
      if req.is_patching:
          _from_rest_reject_update(model)