code: def put(self, pid, record, **kwargs):
          
          if request.mimetype not in self.loaders:
              raise UnsupportedMediaRESTError(request.mimetype)
  
          data = self.loaders[request.mimetype]()
          if data is None:
              raise InvalidDataRESTError()
  
          self.check_etag(str(record.revision_id))
  
          record.clear()
          record.update(data)
          record.commit()
          db.session.commit()
          if self.indexer_class:
              self.indexer_class().index(record)
          return self.make_response(
              pid, record, links_factory=self.links_factory)
docs: Replace a record.
  
          Permissions: ``update_permission_factory``
  
          The body should be a JSON object, which will fully replace the current
          record metadata.
  
          Procedure description:
  
          #. The ETag is checked.
  
          #. The record is updated by calling the record API `clear()`,
             `update()` and then `commit()`.
  
          #. The HTTP response is built with the help of the link factory.
  
          :param pid: Persistent identifier for record.
          :param record: Record object.
          :returns: The modified record.