docs: function pullcatalog(opts, cb) {
    opts.path = APIM_CATALOG_ENDP +
                '?' + // filter parms
                APIM_CLIENT_ID_EQ + opts.clientid + '&' +
                APIM_TYPE_EQ + APIM_TYPE_FILTER;
    opts.prefix = 'catalogs-';
    opts.suffix = '.json';
    fetch(opts, function(err, result) {
      if (err) {
        cb(err);
      } else if (typeof result === 'object') {
        response.catalogs = result.file;
        var models = [];
        models.push(new ModelType('products', 'products-', APIM_PRODUCTS_ENDP));
        models.push(new ModelType('apis', 'apis-', APIM_APIS_ENDP));
        models.push(new ModelType('subscriptions', 'subs-', APIM_SUBS_ENDP));
        models.push(new ModelType('tlsprofiles', 'tlsprofs-', APIM_TLS_ENDP));
        models.push(new ModelType('registries', 'registries-', APIM_REGISTRIES_ENDP));
        models.forEach(
          function(model) {
            response[model.name] = [];
          }
        );
        var catalogsJSON;
        try {
          catalogsJSON = JSON.parse(result.contents);
        } catch (e) {
          cb(e);
          return;
        }
        var catalogs = [];
        catalogsJSON.forEach(function(obj) {
          catalogs.push({
            org: obj.organization.id,
            cat: obj.id });
        });
        cb(null, catalogs, models);
      } else {
        var error = new Error('Unexpected type returned from catalog fetch');
        cb(error);
      }
    });
  }