static async apiUpdateCluster (req, res, next) {
    if (!ArkimeUtil.isString(req.body.title)) {
      return res.serverError(422, 'A cluster must have a title.');
    }

    if (!ArkimeUtil.isString(req.body.url)) {
      return res.serverError(422, 'A cluster must have a url.');
    }

    if (req.body.description && !ArkimeUtil.isString(req.body.description)) {
      return res.serverError(422, 'A cluster must have a string description.');
    }

    if (req.body.localUrl && !ArkimeUtil.isString(req.body.localUrl)) {
      return res.serverError(422, 'A cluster must have a string localUrl.');
    }

    if (req.body.type && !ArkimeUtil.isString(req.body.type)) {
      return res.serverError(422, 'A cluster must have a string type.');
    }

    try {
      const { body: { _source: parliament } } = await Parliament.getParliament();

      let foundCluster = false;
      for (const group of parliament.groups) {
        if (group.id === req.params.groupId) {
          for (const cluster of group.clusters) {
            if (cluster.id === req.params.clusterId) {
              cluster.url = req.body.url;
              cluster.title = req.body.title;
              cluster.localUrl = req.body.localUrl;
              cluster.description = req.body.description;
              cluster.hideDeltaBPS = typeof req.body.hideDeltaBPS === 'boolean' ? req.body.hideDeltaBPS : undefined;
              cluster.hideDataNodes = typeof req.body.hideDataNodes === 'boolean' ? req.body.hideDataNodes : undefined;
              cluster.hideDeltaTDPS = typeof req.body.hideDeltaTDPS === 'boolean' ? req.body.hideDeltaTDPS : undefined;
              cluster.hideTotalNodes = typeof req.body.hideTotalNodes === 'boolean' ? req.body.hideTotalNodes : undefined;
              cluster.hideMonitoring = typeof req.body.hideMonitoring === 'boolean' ? req.body.hideMonitoring : undefined;
              cluster.hideArkimeNodes = typeof req.body.hideArkimeNodes === 'boolean' ? req.body.hideArkimeNodes : undefined;
              cluster.type = req.body.type;

              foundCluster = true;
              break;
            }
          }
        }
      }

      if (!foundCluster) {
        return res.serverError(500, 'Unable to find cluster to update.');
      }

      await Parliament.setParliament(parliament);
      res.json({ success: true, text: 'Successfully updated the cluster.' });
    } catch (e) {
      if (ArkimeConfig.debug) {
        console.log('Error updating cluster', e);
      }
      res.serverError(500, 'Unable to update cluster.');
    }
  }
PUT - /api/groups/:groupId/clusters/:clusterId

Updates a cluster in the group. Requires parliamentAdmin role.
@name /groups/:groupId/clusters/:clusterId
@param {string} groupId - The id of the group to update the cluster in.
@param {string} clusterId - The id of the cluster to update.
@param {Cluster} cluster - The updated cluster.
@returns {boolean} success - Whether the operation was successful.
@returns {string} text - The success/error message to (optionally) display to the user.