// Real read-only probe (GET only, no writes, no deploy). Verifies token paging and eight-bucket status contract. const base = 'http://192.168.110.96:8301/api/cockpit/v1' const get = async (path) => { const response = await fetch(`${base}${path}`) let body = null try { body = await response.json() } catch { body = null } return { status: response.status, body } } const bucket = (r) => (r.body && r.body.data) || {} const first = await get('/map-snapshot?page=1&pageSize=2') const token = bucket(first).snapshotAt console.log('page1', { status: first.status, snapshotAt: token, total: bucket(first).total, hasDistribution: 'pointStatusDistribution' in bucket(first), mapFilterKeys: Object.keys(bucket(first).mapFilter || {}) }) const withToken = await get(`/map-snapshot?page=2&pageSize=2${token ? `&snapshotAt=${encodeURIComponent(token)}` : ''}`) console.log('page2-with-token', { status: withToken.status, code: withToken.body && withToken.body.code }) const withoutToken = await get('/map-snapshot?page=2&pageSize=2') console.log('page2-no-token', { status: withoutToken.status, code: withoutToken.body && withoutToken.body.code, category: withoutToken.body && withoutToken.body.data && withoutToken.body.data.category }) const noFilter = await get('/map-snapshot?page=1&pageSize=500') const alarm = await get('/map-snapshot?page=1&pageSize=500&pointStatus=ALARM') console.log('status-filter', { noFilterTotal: bucket(noFilter).total, alarmTotal: bucket(alarm).total, echo: bucket(alarm).mapFilter && bucket(alarm).mapFilter.pointStatus }) for (const value of ['UNKNOWN', 'UNASSOCIATED', 'BOGUS']) { const response = await get(`/map-snapshot?page=1&pageSize=5&pointStatus=${value}`) console.log(`status-${value}`, { status: response.status, code: response.body && response.body.code }) } const distribution = await get('/monitoring/distribution?mode=WARNING&pointStatus=UNKNOWN') console.log('distribution-UNKNOWN', { status: distribution.status, code: distribution.body && distribution.body.code }) console.log('distribution-buckets', Object.keys(bucket(distribution).pointStatusDistribution || {}))