code: func (s *APIServer) upsertReverseTunnel(auth ClientI, w http.ResponseWriter, r *http.Request, p httprouter.Params, version string) (interface{}, error) {
  	var req upsertReverseTunnelRawReq
  	if err := httplib.ReadJSON(r, &req); err != nil {
  		return nil, trace.Wrap(err)
  	}
  	tun, err := services.GetReverseTunnelMarshaler().UnmarshalReverseTunnel(req.ReverseTunnel)
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  	if req.TTL != 0 {
  		tun.SetTTL(s, req.TTL)
  	}
  	if err := auth.UpsertReverseTunnel(tun); err != nil {
  		return nil, trace.Wrap(err)
  	}
  	return message("ok"), nil
  }
docs: // upsertReverseTunnel is called by admin to create a reverse tunnel to remote proxy