code: public OobResponse getOobResponse(HttpServletRequest req, String gitkitToken)
        throws GitkitServerException {
      try {
        String action = req.getParameter("action");
        if ("resetPassword".equals(action)) {
          String oobLink = buildOobLink(buildPasswordResetRequest(req), action);
          return new OobResponse(
              req.getParameter("email"),
              null,
              oobLink,
              OobAction.RESET_PASSWORD);
        } else if ("changeEmail".equals(action)) {
          if (gitkitToken == null) {
            return new OobResponse("login is required");
          } else {
            String oobLink = buildOobLink(buildChangeEmailRequest(req, gitkitToken), action);
            return new OobResponse(
                req.getParameter("oldEmail"),
                req.getParameter("newEmail"),
                oobLink,
                OobAction.CHANGE_EMAIL);
          }
        } else {
          return new OobResponse("unknown request");
        }
      } catch (GitkitClientException e) {
        return new OobResponse(e.getMessage());
      }
    }
docs: Gets out-of-band response. Used by oob endpoint for ResetPassword and ChangeEmail operation.
  The web site needs to send user an email containing the oobUrl in the response. The user needs
  to click the oobUrl to finish the operation.
  
  @param req http request for the oob endpoint
  @param gitkitToken Gitkit token of authenticated user, required for ChangeEmail operation
  @return the oob response.
  @throws GitkitServerException