Query and List Feeds
Feed: Query and List Feeds
User Intent
"I want to list all my feeds or find a specific feed by name"
Operation
SDK Method:
graphlit.queryFeeds()orgraphlit.getFeed()GraphQL:
queryFeedsorgetFeedqueryEntity Type: Feed
Common Use Cases: List active feeds, find feed by name, check feed status, manage feeds
TypeScript (Canonical)
import { Graphlit } from 'graphlit-client';
import { EntityState, FeedTypes } from 'graphlit-client/dist/generated/graphql-types';
const graphlit = new Graphlit();
// Query all feeds
const allFeeds = await graphlit.queryFeeds();
console.log(`Total feeds: ${allFeeds.feeds.results.length}`);
allFeeds.feeds.results.forEach((feed) => {
console.log(`- ${feed.name} (${feed.type}): ${feed.state}`);
});
// Query specific feed types
const slackFeeds = await graphlit.queryFeeds({
types: [FeedTypes.Slack],
});
console.log(`\nSlack feeds: ${slackFeeds.feeds.results.length}`);
// Search by name
const docFeeds = await graphlit.queryFeeds({
search: 'Documentation',
});
console.log(`\nDocumentation feeds: ${docFeeds.feeds.results.length}`);
// Get specific feed by ID
const feedId = 'feed-id-here';
const feed = await graphlit.getFeed(feedId);
console.log(`\nFeed: ${feed.feed.name}`);
console.log(`Type: ${feed.feed.type}`);
console.log(`State: ${feed.feed.state}`);Query all feeds (snake_case)
all_feeds = await graphlit.queryFeeds()
print(f"Total feeds: {len(all_feeds.feeds.results)}")
for feed in all_feeds.feeds.results: print(f"- {feed.name} ({feed.type}): {feed.state}")
Query by type
slack_feeds = await graphlit.queryFeeds( filter=FeedFilterInput( types=[FeedTypes.Slack] ) )
Get specific feed
feed = await graphlit.getFeed(feed_id) print(f"Feed: {feed.feed.name}")
**C#**:
```csharp
using Graphlit;
var client = new Graphlit();
// Query all feeds (PascalCase)
var allFeeds = await graphlit.QueryFeeds();
Console.WriteLine($"Total feeds: {allFeeds.Feeds.Results.Count}");
foreach (var feed in allFeeds.Feeds.Results)
{
Console.WriteLine($"- {feed.Name} ({feed.Type}): {feed.State}");
}
// Query by type
var slackFeeds = await graphlit.QueryFeeds(new FeedFilter {
Types = new[] { FeedSlack }
});
// Get specific feed
var feed = await graphlit.GetFeed(feedId);
Console.WriteLine($"Feed: {feed.Feed.Name}");Parameters
queryFeeds (Optional Filter)
types(FeedTypes[]): Filter by feed typeSLACK,GOOGLE,RSS,WEB, etc.
search(string): Search by feed namestates(EntityState[]): Filter by stateENABLED,DISABLED
getFeed (Required)
id(string): Feed ID
Response
queryFeeds
{
feeds: {
results: Feed[]; // Array of feeds
}
}
interface Feed {
id: string;
name: string;
type: FeedTypes;
state: EntityState;
creationDate: Date;
// Type-specific config (slack, google, rss, web)
}getFeed
{
feed: {
id: string;
name: string;
type: FeedTypes;
state: EntityState;
slack?: SlackFeedProperties;
google?: GoogleFeedProperties;
rss?: RSSFeedProperties;
web?: WebFeedProperties;
}
}Developer Hints
Feed States
// Check if feed is active
const feeds = await graphlit.queryFeeds();
feeds.feeds.results.forEach(feed => {
if (feed.state === EntityState.Enabled) {
console.log(` ${feed.name} is active`);
} else {
console.log(` ${feed.name} is disabled`);
}
});Important: Disabled feeds don't sync new content. Re-enable with updateFeed().
Find Feed by Name
// Search for feed
const results = await graphlit.queryFeeds({
search: 'Engineering Slack'
});
if (results.feeds.results.length > 0) {
const feed = results.feeds.results[0];
console.log(`Found feed: ${feed.id}`);
} else {
console.log('Feed not found');
}Filter by Type
// Get all Slack feeds
const slackFeeds = await graphlit.queryFeeds({
types: [FeedTypes.Slack]
});
// Get all web crawls
const webFeeds = await graphlit.queryFeeds({
types: [FeedTypes.Web]
});
// Multiple types
const cloudFeeds = await graphlit.queryFeeds({
types: [FeedTypes.Google, FeedTypes.Microsoft]
});Check Feed Details
// Get full feed configuration
const feed = await graphlit.getFeed(feedId);
// Check type-specific config
if (feed.feed.type === FeedTypes.Slack && feed.feed.slack) {
console.log('Slack channels:', feed.feed.slack.channels);
}
if (feed.feed.type === FeedTypes.Web && feed.feed.web) {
console.log('Starting URL:', feed.feed.web.uri);
console.log('Read limit:', feed.feed.web.readLimit);
}Variations
1. List All Feeds
Get all feeds:
const feeds = await graphlit.queryFeeds();
console.log(`You have ${feeds.feeds.results.length} feeds`);2. Filter by Type
Only specific feed types:
const slackFeeds = await graphlit.queryFeeds({
types: [FeedTypes.Slack]
});
console.log('Slack feeds:');
slackFeeds.feeds.results.forEach(feed => {
console.log(`- ${feed.name}`);
});3. Search by Name
Find feeds matching search:
const docFeeds = await graphlit.queryFeeds({
search: 'docs'
});
console.log(`Found ${docFeeds.feeds.results.length} documentation feeds`);4. Get Feed Details
Retrieve specific feed:
const feed = await graphlit.getFeed(feedId);
console.log(`Feed: ${feed.feed.name}`);
console.log(`Type: ${feed.feed.type}`);
console.log(`Created: ${feed.feed.creationDate}`);
console.log(`State: ${feed.feed.state}`);5. List Active Feeds Only
Filter by state:
const activeFeeds = await graphlit.queryFeeds({
states: [EntityState.Enabled]
});
console.log(`Active feeds: ${activeFeeds.feeds.results.length}`);6. Feed Inventory Report
Generate feed summary:
const feeds = await graphlit.queryFeeds();
const byType = feeds.feeds.results.reduce((acc, feed) => {
acc[feed.type] = (acc[feed.type] || 0) + 1;
return acc;
}, {} as Record<string, number>);
console.log('Feed Inventory:');
Object.entries(byType).forEach(([type, count]) => {
console.log(` ${type}: ${count}`);
});
const activeCount = feeds.feeds.results.filter(
f => f.state === EntityState.Enabled
).length;
console.log(`\nActive: ${activeCount} / ${feeds.feeds.results.length}`);Common Issues
Issue: Feed not found error
Solution: Verify feed ID is correct. Feed may have been deleted. Use queryFeeds() to list all feeds.
Issue: Search returns no results
Solution: Search is case-sensitive. Try partial matches. Use queryFeeds() without filter to see all feeds.
Issue: Wrong feed type returned
Solution: Check types filter includes correct FeedTypes enum value.
Issue: Feed appears but no content syncing
Solution: Check feed state. If DISABLED, feed is not syncing. Re-enable with updateFeed().
Production Example
Feed management dashboard:
// Get all feeds with details
const feeds = await graphlit.queryFeeds();
console.log('=== FEED INVENTORY ===\n');
// Group by type
const byType = new Map<string, typeof feeds.feeds.results>();
feeds.feeds.results.forEach(feed => {
const type = feed.type;
if (!byType.has(type)) {
byType.set(type, []);
}
byType.get(type)!.push(feed);
});
// Print by type
for (const [type, feedList] of byType) {
console.log(`\n${type} Feeds (${feedList.length}):`);
for (const feed of feedList) {
const status = feed.state === EntityState.Enabled ? '' : '';
console.log(` ${status} ${feed.name} (${feed.id})`);
// Check if syncing is done
const isDone = await graphlit.isFeedDone(feed.id);
const syncStatus = isDone.isFeedDone.result ? 'Complete' : 'Syncing';
console.log(` Status: ${syncStatus}`);
// Count synced content
const content = await graphlit.queryContents({
feeds: [{ id: feed.id }],
limit: 1 // Just get count
});
console.log(` Content: ${content.contents.results.length} items`);
}
}Find and update feed:
// Find feed by name
const results = await graphlit.queryFeeds({
search: 'Engineering Slack'
});
if (results.feeds.results.length === 0) {
console.log('Feed not found');
} else {
const feed = results.feeds.results[0];
console.log(`Found feed: ${feed.name} (${feed.id})`);
// Get full details
const fullFeed = await graphlit.getFeed(feed.id);
// Check if it's Slack feed
if (fullFeed.feed.type === FeedTypes.Slack && fullFeed.feed.slack) {
console.log('Channels:', fullFeed.feed.slack.channels?.map(c => c.name).join(', '));
}
// Check sync status
const isDone = await graphlit.isFeedDone(feed.id);
console.log(`Sync complete: ${isDone.isFeedDone.result}`);
// Count content
const content = await graphlit.queryContents({
feeds: [{ id: feed.id }]
});
console.log(`Synced items: ${content.contents.results.length}`);
}Health check script:
// Check all feeds are healthy
const feeds = await graphlit.queryFeeds();
console.log('=== FEED HEALTH CHECK ===\n');
for (const feed of feeds.feeds.results) {
const status = {
name: feed.name,
type: feed.type,
enabled: feed.state === EntityState.Enabled,
syncComplete: false,
contentCount: 0
};
// Check sync status
const isDone = await graphlit.isFeedDone(feed.id);
status.syncComplete = isDone.isFeedDone.result || false;
// Count content
const content = await graphlit.queryContents({
feeds: [{ id: feed.id }]
});
status.contentCount = content.contents.results.length;
// Report
const healthIcon = status.enabled && status.contentCount > 0 ? '' : '';
console.log(`${healthIcon} ${status.name}`);
console.log(` Enabled: ${status.enabled}`);
console.log(` Synced: ${status.syncComplete ? 'Yes' : 'In Progress'}`);
console.log(` Content: ${status.contentCount} items\n`);
}Last updated
Was this helpful?