static async apiCreateView (req, res) {
    if (!ArkimeUtil.isString(req.body.name)) {
      return res.serverError(403, 'Missing view name');
    }

    if (!ArkimeUtil.isString(req.body.expression)) {
      return res.serverError(403, 'Missing view expression');
    }

    const user = req.settingUser;

    req.body.user = user.userId;

    // comma/newline separated value -> array of values
    let users = ArkimeUtil.commaOrNewlineStringToArray(req.body.users || '');
    users = await User.validateUserIds(users);
    req.body.users = users.validUsers;

    try {
      const { body: { _id: id } } = await Db.createView(req.body);
      const { body: { _source: view } } = await Db.getView(id);

      view.id = id;
      view.users = view.users.join(',');

      return res.send(JSON.stringify({
        success: true,
        view,
        text: 'Created view!',
        invalidUsers: ArkimeUtil.safeStr(users.invalidUsers)
      }));
    } catch (err) {
      console.log(`ERROR - ${req.method} /api/view (createView)`, util.inspect(err, false, 50));
      return res.serverError(500, 'Error creating view');
    }
  }
POST - /api/view

Creates an Arkime view.
@name /view
@returns {boolean} success - Whether the create view operation was successful.
@returns {string} text - The success/error message to (optionally) display to the user.
@returns {string} viewName - The name of the new view.
@returns {ArkimeView} view - The new view data.