Skip to main content
Glama
test-simple-api-call-fixed.cjsโ€ข5.27 kB
#!/usr/bin/env node const https = require('https'); async function makeHttpRequest(hostname, path, method = 'GET', headers = {}, postData = null) { return new Promise((resolve, reject) => { const options = { hostname, path, method, headers: { 'Content-Type': 'application/json', 'User-Agent': 'Debug-Test/1.0', ...headers } }; if (postData && method === 'POST') { const data = JSON.stringify(postData); options.headers['Content-Length'] = Buffer.byteLength(data); } const req = https.request(options, (res) => { let responseBody = ''; res.on('data', (chunk) => responseBody += chunk); res.on('end', () => { try { const parsedBody = responseBody ? JSON.parse(responseBody) : null; resolve({ statusCode: res.statusCode, headers: res.headers, body: parsedBody, rawBody: responseBody }); } catch (error) { resolve({ statusCode: res.statusCode, headers: res.headers, body: null, rawBody: responseBody }); } }); }); req.on('error', (error) => reject(error)); req.setTimeout(10000, () => { req.destroy(); reject(new Error('Request timeout')); }); if (postData && method === 'POST') { req.write(JSON.stringify(postData)); } req.end(); }); } async function testApiCall() { console.log('๐Ÿงช Testing Simple API Call After Authentication'); console.log('================================================'); // First authenticate console.log('๐Ÿ” Authenticating...'); const authResponse = await makeHttpRequest( 'api.umbrellacost.io', '/api/v1/users/signin', 'POST', {}, { username: 'david+saola@umbrellacost.com', password: 'Dsamsung1!' } ); console.log('Auth status:', authResponse.statusCode); console.log('Has jwtToken?', !!authResponse.body?.jwtToken); if (!authResponse.body?.jwtToken) { console.log('โŒ Authentication failed'); console.log('Auth response:', authResponse.rawBody.substring(0, 200)); return; } console.log('โœ… Authentication successful'); const jwtToken = authResponse.body.jwtToken; // Test a simple API call - /users endpoint console.log('\n๐Ÿ” Testing /users endpoint...'); try { const userResponse = await makeHttpRequest( 'api.umbrellacost.io', '/api/v1/users', 'GET', { 'Authorization': jwtToken, 'Content-Type': 'application/json' } ); console.log('๐Ÿ“ฅ Users response status:', userResponse.statusCode); console.log('๐Ÿ“ฅ Users response size:', userResponse.rawBody.length); if (userResponse.statusCode === 200) { console.log('โœ… Users endpoint working!'); console.log('๐Ÿ“ฅ Users response preview:', userResponse.rawBody.substring(0, 200)); } else { console.log('โŒ Users endpoint failed'); console.log('๐Ÿ“ฅ Users error:', userResponse.rawBody); } } catch (error) { console.log('โŒ Users endpoint error:', error.message); } // Test budgets endpoint with simple parameters console.log('\n๐Ÿ” Testing /budgets/v2/i/ endpoint...'); try { const budgetResponse = await makeHttpRequest( 'api.umbrellacost.io', '/api/v1/budgets/v2/i/?only_metadata=true', 'GET', { 'Authorization': jwtToken, 'Content-Type': 'application/json' } ); console.log('๐Ÿ“ฅ Budget response status:', budgetResponse.statusCode); console.log('๐Ÿ“ฅ Budget response size:', budgetResponse.rawBody.length); if (budgetResponse.statusCode === 200) { console.log('โœ… Budget endpoint working!'); console.log('๐Ÿ“ฅ Budget response preview:', budgetResponse.rawBody.substring(0, 200)); } else { console.log('โŒ Budget endpoint failed'); console.log('๐Ÿ“ฅ Budget error:', budgetResponse.rawBody); } } catch (error) { console.log('โŒ Budget endpoint error:', error.message); } // Test simple invoices endpoint console.log('\n๐Ÿ” Testing /invoices/caui endpoint with basic params...'); try { const params = 'groupBy=none&periodGranLevel=month&costType=["cost","discount"]&isUnblended=true&startDate=2024-01-01&endDate=2024-01-31'; const invoiceResponse = await makeHttpRequest( 'api.umbrellacost.io', `/api/v1/invoices/caui?${params}`, 'GET', { 'Authorization': jwtToken, 'Content-Type': 'application/json' } ); console.log('๐Ÿ“ฅ Invoice response status:', invoiceResponse.statusCode); console.log('๐Ÿ“ฅ Invoice response size:', invoiceResponse.rawBody.length); if (invoiceResponse.statusCode === 200) { console.log('โœ… Invoice endpoint working!'); console.log('๐Ÿ“ฅ Invoice response preview:', invoiceResponse.rawBody.substring(0, 200)); } else { console.log('โŒ Invoice endpoint failed'); console.log('๐Ÿ“ฅ Invoice error:', invoiceResponse.rawBody); } } catch (error) { console.log('โŒ Invoice endpoint error:', error.message); } } testApiCall().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