code: func (s *APIServer) uploadSessionRecording(auth ClientI, w http.ResponseWriter, r *http.Request, p httprouter.Params, version string) (interface{}, error) {
  	var files form.Files
  	var namespace, sid string
  
  	err := form.Parse(r,
  		form.FileSlice("recording", &files),
  		form.String("namespace", &namespace, form.Required()),
  		form.String("sid", &sid, form.Required()),
  	)
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  	if r.MultipartForm != nil {
  		defer r.MultipartForm.RemoveAll()
  	}
  	if !services.IsValidNamespace(namespace) {
  		return nil, trace.BadParameter("invalid namespace %q", namespace)
  	}
  	if len(files) != 1 {
  		return nil, trace.BadParameter("expected a single file parameter but got %d", len(files))
  	}
  	defer files[0].Close()
  	if err = auth.UploadSessionRecording(events.SessionRecording{
  		SessionID: session.ID(sid),
  		Namespace: namespace,
  		Recording: files[0],
  	}); err != nil {
  		return nil, trace.Wrap(err)
  	}
  	return message("ok"), nil
  }
docs: // HTTP POST /:version/sessions/:id/recording