Skip to main content
Glama
check-accounts-answer.cjsβ€’4.03 kB
#!/usr/bin/env node // Check available accounts using the accounts management endpoint const axios = require('axios'); async function checkAccountsAnswer() { console.log(`πŸ” CHECKING AVAILABLE ACCOUNTS ANSWER`); console.log(`πŸ‘€ Account: saola (david+saola@umbrellacost.com)`); console.log(`❓ Question: "show me all available accounts"`); console.log('═'.repeat(80)); try { // Use the working dual authentication from the cost script console.log('πŸ” Detecting user management system...'); let authHeaders; try { // Try Keycloak first const keycloakResponse = await axios.post('https://api.umbrellacost.io/api/v1/authentication/token/generate', { username: 'david+saola@umbrellacost.com', password: 'Dsamsung1!' }); authHeaders = { 'Authorization': `Bearer ${keycloakResponse.data.token}`, 'Content-Type': 'application/json' }; console.log('βœ… Keycloak authentication successful'); } catch (keycloakError) { console.log('πŸ”„ Keycloak failed, trying Cognito fallback...'); // Cognito fallback const cognitoResponse = await axios.post('https://api.umbrellacost.io/api/v1/authentication/cognito', { username: 'david+saola@umbrellacost.com', password: 'Dsamsung1!' }); if (cognitoResponse.status !== 200) { throw new Error(`Cognito auth failed: ${cognitoResponse.status}`); } // Get user data to build Basic auth const userResponse = await axios.get('https://api.umbrellacost.io/api/v1/users', { headers: { 'Authorization': `Bearer ${cognitoResponse.data.token}`, 'Content-Type': 'application/json' } }); const userData = Array.isArray(userResponse.data) ? userResponse.data[0] : userResponse.data; const apiKey = `${userData.userApiKey}:${userData.customerId}:${userData.currentAccountId}`; authHeaders = { 'Authorization': `Basic ${Buffer.from(apiKey).toString('base64')}`, 'Content-Type': 'application/json' }; console.log('βœ… Cognito authentication successful'); } // Test /user-management/accounts endpoint for cloud accounts console.log('\nπŸ“‹ Testing /user-management/accounts endpoint...'); const accountsResponse = await axios.get('https://api.umbrellacost.io/api/v1/user-management/accounts', { headers: authHeaders }); console.log('βœ… Accounts endpoint response:'); console.log(`πŸ“Š Status: ${accountsResponse.status}`); console.log(`πŸ“‹ Data type: ${Array.isArray(accountsResponse.data) ? 'Array' : typeof accountsResponse.data}`); if (Array.isArray(accountsResponse.data)) { console.log(`\nπŸ€– ANSWER: ${accountsResponse.data.length} cloud accounts available`); // Show accounts with details console.log('\nπŸ“‹ Available Accounts:'); accountsResponse.data.forEach((account, i) => { const accountName = account.accountName || account.name || account.displayName || 'Unknown'; const accountId = account.accountId || account.id || 'N/A'; const provider = account.cloudProvider || account.provider || 'Unknown'; console.log(` ${i + 1}. ${accountName} (${accountId}) - ${provider}`); }); } else if (accountsResponse.data) { console.log('πŸ€– ANSWER: Account data available'); console.log('πŸ“‹ Data structure:', JSON.stringify(accountsResponse.data, null, 2).substring(0, 1000) + '...'); } } catch (error) { if (error.response) { console.log(`❌ API Error: ${error.response.status} - ${error.response.data?.message || error.response.statusText}`); if (error.response.data) { console.log('πŸ“‹ Error details:', JSON.stringify(error.response.data, null, 2).substring(0, 500)); } } else { console.log(`❌ Request Error: ${error.message}`); } } } checkAccountsAnswer().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