// src/integrations/atlas/client.js import axios from 'axios'; import { logger } from '../../utils/logger.js'; export const atlasAxios = axios.create({ baseURL: 'https://hub.xyte.io/core/v1', timeout: 12000, headers: { 'Content-Type': 'application/json', 'Authorization': process.env.ATLAS_AUTH_KEY, // assuming this is the full Bearer token or API key }, }); // Optional: request logging (remove or conditional in production) atlasAxios.interceptors.request.use(cfg => { logger('atlas:request', `${cfg.method.toUpperCase()} ${cfg.url}`, 'debug'); return cfg; }); atlasAxios.interceptors.response.use( res => res, err => { const msg = err.response ? `${err.response.status} - ${JSON.stringify(err.response.data?.message || err.response.data)}` : err.message; logger('atlas:error', msg); return Promise.reject(err); } ); /** * Simple GET wrapper with better error context */ export async function atlasGet(endpoint, params = {}) { try { const res = await atlasAxios.get(endpoint, { params }); return res.data; } catch (err) { const ctx = err.response?.data?.message || err.message; throw new Error(`Atlas GET ${endpoint} failed: ${ctx}`); } } export default atlasAxios; // NOTE: Device list caching + find/getForStore live ONLY in ./devices.js // (uses atlasGet + full pagination). Old single-page duplicates removed to prevent drift.