code: function(includeClusterScoped) {
      var kinds = [];
      var rejectedKinds = _.map(Constants.AVAILABLE_KINDS_BLACKLIST, function(kind) {
        return _.isString(kind) ?
                { kind: kind, group: '' } :
                kind;
      });
  
      // ignore the legacy openshift kinds, these have been migrated to api groups
      _.each(_.pickBy(API_CFG, function(value, key) {
        return key !== 'openshift';
      }), function(api) {
        _.each(api.resources.v1, function(resource) {
          if (resource.namespaced || includeClusterScoped) {
            // Exclude subresources and any rejected kinds
            if (_.includes(resource.name, '/') || _.find(rejectedKinds, { kind: resource.kind, group: '' })) {
              return;
            }
  
            kinds.push({
              kind: resource.kind,
              group:  ''
            });
          }
        });
      });
  
     // Kinds under api groups
      _.each(APIS_CFG.groups, function(group) {
  
        // Use the console's default version first, and the server's preferred version second
        var preferredVersion = defaultVersion[group.name] || group.preferredVersion;
        _.each(group.versions[preferredVersion].resources, function(resource) {
          // Exclude subresources and any rejected kinds
          if (_.includes(resource.name, '/') || _.find(rejectedKinds, {kind: resource.kind, group: group.name})) {
            return;
          }
  
  
          if(excludeKindFromAPIGroupList(group.name, resource.kind)) {
            return;
          }
  
          if (resource.namespaced || includeClusterScoped) {
            kinds.push({
              kind: resource.kind,
              group: group.name
            });
          }
        });
      });
  
      return _.uniqBy(kinds, function(value) {
        return value.group + "/" + value.kind;
      });
    }
docs: Returns an array of available kinds, including their group