- Add admin dashboard with sync controls and data browser - Implement RMM, Auvik, and Addigy organization mappings - Add chunked ticket sync with progress tracking - Implement entity sync service with rate limiting - Add analytics engine and performance optimizer - Create data browser for all PSA entities - Add navigation components and UI improvements - Implement background processing and sync services - Add comprehensive documentation and migration scripts - Update configuration items with multi-system support - Enhance contact management and purchase history - Add issue type assignment and LLM analyzer - Improve error handling and logging utilities
72 lines
2.5 KiB
JavaScript
72 lines
2.5 KiB
JavaScript
// Quick test to fetch Auvik device configuration
|
|
const deviceId = 'NTAyNzUxNTczODUzNjc1MjYxLDExNDk1OTYxNzUxOTczNTA4MjU';
|
|
const tenantId = '502751573853675261'; // hynesindustries tenant
|
|
const apiUrl = process.env.AUVIK_API_URL;
|
|
const apiUser = process.env.AUVIK_API_USER;
|
|
const apiKey = process.env.AUVIK_API_KEY;
|
|
|
|
const credentials = Buffer.from(`${apiUser}:${apiKey}`).toString('base64');
|
|
|
|
// Try configuration endpoints with proper tenant parameter
|
|
const endpoints = [
|
|
{ name: 'Configuration with tenant and deviceId filter', url: `${apiUrl}/v1/inventory/configuration?tenants=${tenantId}&filter[deviceId]=${deviceId}` },
|
|
{ name: 'Configuration with tenant only', url: `${apiUrl}/v1/inventory/configuration?tenants=${tenantId}` },
|
|
{ name: 'Single Configuration', url: `${apiUrl}/v1/inventory/configuration/${deviceId}?tenants=${tenantId}` },
|
|
];
|
|
|
|
console.log('Testing Auvik API endpoints for device:', deviceId);
|
|
console.log('Device: YNGHYNSWP19 (Serial: TW35L3R0FS)\n');
|
|
|
|
async function testEndpoint(endpoint) {
|
|
console.log(`\n=== Testing: ${endpoint.name} ===`);
|
|
console.log('URL:', endpoint.url);
|
|
|
|
try {
|
|
const response = await fetch(endpoint.url, {
|
|
headers: {
|
|
'Authorization': `Basic ${credentials}`,
|
|
'Accept': 'application/json',
|
|
}
|
|
});
|
|
|
|
console.log('Status:', response.status, response.statusText);
|
|
const text = await response.text();
|
|
|
|
if (!response.ok) {
|
|
console.error('Error:', text.substring(0, 200));
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const data = JSON.parse(text);
|
|
console.log('✓ Success! Response:');
|
|
console.log(JSON.stringify(data, null, 2).substring(0, 2000));
|
|
|
|
// Special handling for configuration
|
|
if (endpoint.name === 'Configuration' && data.data && data.data.length > 0) {
|
|
const latest = data.data[0];
|
|
console.log('\n=== Latest Configuration Details ===');
|
|
console.log('Type:', latest.attributes.configType);
|
|
console.log('Backup Date:', latest.attributes.backupDate);
|
|
console.log('Size:', latest.attributes.configSize, 'bytes');
|
|
|
|
if (latest.attributes.configText) {
|
|
console.log('\n=== Configuration Text (first 1000 chars) ===');
|
|
console.log(latest.attributes.configText.substring(0, 1000));
|
|
}
|
|
}
|
|
} catch (e) {
|
|
console.log('Response (not JSON):', text.substring(0, 500));
|
|
}
|
|
} catch (error) {
|
|
console.error('Fetch error:', error.message);
|
|
}
|
|
}
|
|
|
|
async function runTests() {
|
|
for (const endpoint of endpoints) {
|
|
await testEndpoint(endpoint);
|
|
}
|
|
}
|
|
|
|
runTests();
|