docs: function create (client) {
    return function create (options) {
      options = options || {};
  
      const type = getType(options);
  
      const req = {
        url: `${client.baseUrl}/rest/applications/${options.pushAppId}/${type}`,
        method: 'POST'
      };
  
      const data = {
        name: options.name,
        description: options.description
      };
  
      if (options.type !== 'ios') {
        for (let key in options[options.type]) {
          data[key] = options[options.type][key];
        }
  
        req.body = data;
      } else {
        data.passphrase = options.ios.passphrase;
        data.production = options.ios.production ? 'true' : 'false';
  
        // If they send in a string, then lets assume that is the location of the cert file
        // Otherwise, we will assume it is a Stream or Buffer and can just pass it along
        if (typeof options.ios.certificate === 'string') {
          data.certificate = fs.createReadStream(options.ios.certificate);
        } else {
          data.certificate = options.ios.certificate;
        }
  
        // need to clean up the description field if it is undefined, doing multipart with request barfs if this is null
        if (!data.description) {
          delete data.description;
        }
  
        req.formData = data;
      }
  
      return request(client, req)
        .then((response) => {
          if (response.resp.statusCode !== 201) {
            return Promise.reject(response.body);
          }
  
          return Promise.resolve(response.body);
        });
    };
  }