@the_cfdude/productboard-mcp
Version:
Model Context Protocol server for Productboard REST API with dynamic tool loading
38 lines (37 loc) • 1.35 kB
TypeScript
/**
* ProductBoard API Pagination Handler
*
* Handles the correct pagination pattern for ProductBoard API:
* - First call returns max 100 items by default
* - No limit/pageLimit/pageOffset parameters accepted
* - Must recursively follow links.next to get all items
* - Uses cursor-based pagination via links.next URLs
*/
export interface PaginatedResponse {
data: any[];
links?: {
next?: string;
prev?: string;
self?: string;
};
meta?: any;
}
export interface PaginationOptions {
maxPages?: number;
maxItems?: number;
onPageFetched?: (pageData: any[], pageNum: number, totalSoFar: number) => void;
}
/**
* Fetch all pages from a ProductBoard API endpoint using proper cursor pagination
*
* @param apiClient - Axios instance configured for ProductBoard API
* @param endpoint - API endpoint path (e.g., '/features', '/components')
* @param initialParams - Initial query parameters (filters, etc.)
* @param options - Pagination options
* @returns Combined data from all pages
*/
export declare function fetchAllPages(apiClient: any, endpoint: string, initialParams?: any, options?: PaginationOptions): Promise<PaginatedResponse>;
/**
* Simplified wrapper for common use cases
*/
export declare function fetchAllItems(apiClient: any, endpoint: string, filters?: any): Promise<any[]>;