static async apiCreateCluster (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.');
    }

    const newCluster = {
      title: req.body.title,
      description: req.body.description,
      url: req.body.url,
      localUrl: req.body.localUrl,
      id: uuid(),
      type: req.body.type,
      hideDeltaBPS: false,
      hideDeltaTDPS: false,
      hideMonitoring: false,
      hideArkimeNodes: false,
      hideDataNodes: false,
      hideTotalNodes: false
    };

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

      let foundGroup = false;
      for (const group of parliament.groups) {
        if (group.id === req.params.id) {
          group.clusters.push(newCluster);
          foundGroup = true;
          break;
        }
      }

      if (!foundGroup) {
        return res.serverError(500, 'Unable to find group to place cluster.');
      }

      await Parliament.setParliament(parliament);
      res.json({ success: true, cluster: newCluster, text: 'Successfully added the cluster.' });
    } catch (e) {
      if (ArkimeConfig.debug) {
        console.log('Error creating cluster', e);
      }
      res.serverError(500, 'Unable to create cluster.');
    }
  }
POST /api/groups/:id/clusters

Creates a new cluster in the group. Requires parliamentAdmin role.
@name /groups/:id/clusters
@param {string} id - The id of the group to add the cluster to.
@param {Cluster} cluster - The cluster to add to the group.
@returns {boolean} success - Whether the operation was successful.
@returns {string} text - The success/error message to (optionally) display to the user.
@returns {Cluster} cluster - The new cluster including its unique id (if successful).