code: function update (client) {
    return function update (options) {
      options = options || {};
      const req = {
        url: `${client.baseUrl}/rest/applications/${options.variantId}/installations/${options.installation.id}`,
        body: options.installation,
        method: 'PUT'
      };
  
      return request(client, req)
        .then((response) => {
          if (response.resp.statusCode !== 204) {
            return Promise.reject(response.body);
          }
  
          return Promise.resolve(response.body);
        });
    };
  }
docs: A function to update an existing installation.
  @param {object} options - An options object that is the JSON representation of the Variant to Update
  @param {string} options.variantId - The id of the push application
  @param {object} options.installation - the installation object
  @param {string} options.installation.id - The id of the installation to be updated
  @param {string} options.installation.deviceToken - the deviceToken of the installation
  @param {string} [options.installation.alias] - string to map the Installation to an actual user.
  @param {boolean} [options.installation.enabled] - Flag if the actual client installation is enabled (default) or not.
  @param {string} [options.installation.platform] - the name of the platform. FOR ADMIN UI ONLY - Helps with setting up Routes
  @param {string} [options.installation.deviceType] - the type of the registered device
  @param {string} [options.installation.operatingSystem] - the name of the Operating System.
  @param {string} [options.installation.osVersion] - the version string of the mobile OS.
  @params {Array} [options.installation.categories] - set of all categories the client is in
  @returns {Promise} A promise that resolves with No Content
  @example
  adminClient(baseUrl, settings)
  .then((client) => {
  client.installations.update(installationOptions)
  .then(() => {
  console.log('success')
  })
  })