docs: def save(self, model, path):
          """Save a file or directory model to path.
          """
          self.log.debug("S3contents.GenericManager: save %s: '%s'", model, path)
          if "type" not in model:
              self.do_error("No model type provided", 400)
          if "content" not in model and model["type"] != "directory":
              self.do_error("No file content provided", 400)
  
          if model["type"] not in ("file", "directory", "notebook"):
              self.do_error("Unhandled contents type: %s" % model["type"], 400)
  
          try:
              if model["type"] == "notebook":
                  validation_message = self._save_notebook(model, path)
              elif model["type"] == "file":
                  validation_message = self._save_file(model, path)
              else:
                  validation_message = self._save_directory(path)
          except Exception as e:
              self.log.error("Error while saving file: %s %s", path, e, exc_info=True)
              self.do_error("Unexpected error while saving file: %s %s" % (path, e), 500)
  
          model = self.get(path, type=model["type"], content=False)
          if validation_message is not None:
              model["message"] = validation_message
          return model