code: def save(self):
          
          check_bind(self)
  
          creating = self.id is None
          if creating and not self.__class__._has_schema_method("create"):
              raise MethodNotSupported("{} do not support creating.".format(self.__class__.__name__))
          if not creating and not self.__class__._has_schema_method("update"):
              raise MethodNotSupported("{} do not support updating.".format(self.__class__.__name__))
  
          try:
              self._resource.save()
          except HTTPError as e:
              if e.response.status_code == 400:
                  err_json = e.response.json().get("errors", [])
                  msg = pretty_print_error(err_json)
                  raise ServerError(msg)
              elif e.response.status_code == 404:
                  action = "creating" if creating else "updating"
                  raise MethodNotSupported(
                      "{} do not support {}.".format(self.__class__.__name__, action)
                  )
              elif e.response.status_code == 409:
                  raise ServerError("This {} object already exists".format(self.__class__.__name__))
              else:
                  raise e
docs: Either create or persist changes on this object back to the One Codex server.