Skip to main content
Glama
test-saola-pagination-fix.cjs•3.33 kB
const axios = require('axios'); async function testSaolaPaginationFix() { console.log('🧪 Testing SAOLA pagination fix (divisionId = 0 should NOT have commonParams)...\n'); // Login first const loginResponse = await axios.post('https://cognito-idp.us-east-1.amazonaws.com/', { AuthFlow: 'USER_PASSWORD_AUTH', ClientId: '7i82cnpt469rcd93fif1glhnkm', AuthParameters: { USERNAME: 'david+saola@umbrellacost.com', PASSWORD: process.env.UMBRELLA_PASSWORD || 'YourPasswordHere' } }, { headers: { 'X-Amz-Target': 'AWSCognitoIdentityProviderService.InitiateAuth', 'Content-Type': 'application/x-amz-json-1.1' } }); const idToken = loginResponse.data.AuthenticationResult.IdToken; const userKey = '8bd39ae4-ebea-4426-bd22-07349dd8b962'; // SAOLA userKey const requestBody = { filters: { status_filter: "potential_savings", is_open: true, user_status: { done: false, excluded: false }, open_recs_creation_date: { from: "2024-10-02", to: "2025-10-02" }, closed_and_done_recs_dates: { last_update_date: { from: "2024-10-02", to: "2025-10-02" } }, cost_mode: "UNBLENDED" }, sort: [{ by: "savings", order: "desc" }], page_size: 100, pagination_token: null }; console.log('📋 Request body:', JSON.stringify(requestBody, null, 2)); let allRecommendations = []; let paginationToken = null; let pageCount = 0; do { const pageRequestBody = { ...requestBody, pagination_token: paginationToken }; console.log(`\n📄 Fetching page ${pageCount + 1}...`); // Test WITHOUT commonParams (correct for direct customers) const response = await axios.post('https://api.umbrellacost.io/api/v2/recommendations/list', pageRequestBody, { headers: { 'Authorization': idToken, 'apikey': `${userKey}:9350:0`, 'Content-Type': 'application/json' // NO commonParams header - this is correct for divisionId = 0 }, timeout: 30000 }); const pageData = response.data.page || []; allRecommendations.push(...pageData); paginationToken = response.data.pagination_token; pageCount++; console.log(` ✅ Page ${pageCount}: ${pageData.length} recommendations`); console.log(` 🔗 Next token: ${paginationToken ? 'YES (has more pages)' : 'NO (last page)'}`); if (pageCount > 20) { console.log(' ⚠️ Safety limit reached (20 pages)'); break; } } while (paginationToken); console.log(`\n📊 FINAL RESULTS:`); console.log(` Total pages fetched: ${pageCount}`); console.log(` Total recommendations: ${allRecommendations.length}`); console.log(` Expected: More than 100 if pagination is working`); if (allRecommendations.length === 100) { console.log(`\n❌ PAGINATION NOT WORKING - Only got 100 results`); } else { console.log(`\n✅ PAGINATION WORKING - Got ${allRecommendations.length} results`); } // Show savings breakdown const totalSavings = allRecommendations.reduce((sum, rec) => sum + (rec.annualSavings?.unblended || 0), 0); console.log(` Total potential savings: $${totalSavings.toFixed(2)}`); } testSaolaPaginationFix().catch(console.error);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/daviddraiumbrella/invoice-monitoring'

If you have feedback or need assistance with the MCP directory API, please join our Discord server