import refreshTokenHelper from "../../../utils/refreshTokenHelper" import forceLogoutHelper from "../../../utils/forceLogoutHelper" import errorHandlingHelper from "../../../utils/errorHandlingHelper" import { listChanges, eventFetch, type ChangeStatus } from "../../../utils/listings/listingStore" // GET /api/sales/sis/changes?orderSourceId=&listingId=&status=queued,sent&top= // Change history / outbox view (CUST_MarketplaceListingChange), newest first. const handleFunc = async (event: any, authToken: any = null) => { const token = authToken ?? await getTokenHelper(event) const q = getQuery(event) const orderSourceId = Number(q.orderSourceId) || undefined const listingId = Number(q.listingId) || undefined const status = String(q.status || '').split(',').map(s => s.trim()).filter(Boolean) as ChangeStatus[] const top = Math.min(2000, Math.max(1, Number(q.top) || 500)) if (!orderSourceId && !listingId) return { status: 400, message: 'orderSourceId or listingId is required' } const rows = await listChanges(eventFetch(event, token), { orderSourceId, listingId, ...(status.length ? { status } : {}) }, top) rows.sort((a, b) => (b.created || '').localeCompare(a.created || '') || b.id - a.id) const counts: Record = {} for (const r of rows) counts[r.changeStatus] = (counts[r.changeStatus] || 0) + 1 return { status: 200, rows, counts, total: rows.length } } export default defineEventHandler(async (event) => { let data: any = {} try { data = await handleFunc(event) } catch (err: any) { try { const authToken: any = await refreshTokenHelper(event) data = await handleFunc(event, authToken) } catch (error: any) { data = errorHandlingHelper(err?.data ?? err, error?.data ?? error) forceLogoutHelper(event, data) } } return data })