diff --git a/src/pages/api/batch.ts b/src/pages/api/batch.ts new file mode 100644 index 00000000..0557d4da --- /dev/null +++ b/src/pages/api/batch.ts @@ -0,0 +1,41 @@ +import sendHandler from './send'; + +export default async function handler(req, res) { + if (req.method !== 'POST') { + res.setHeader('Allow', ['POST']); + return res.status(405).end(`Method ${req.method} Not Allowed`); + } + + const events = req.body; + + if (!Array.isArray(events)) { + return res.status(400).json({ error: 'Invalid payload, expected an array.' }); + } + + try { + for (const event of events) { + const mockReq = { + ...req, + body: event, + headers: { ...req.headers, origin: req.headers.origin || 'http://localhost:3000' }, + }; + + const mockRes = { + ...res, + status: (code) => { + res.status(code); + return mockRes; + }, + json: (data) => res.json(data), + setHeader: (key, value) => res.setHeader(key, value), + end: () => {}, + }; + + await sendHandler(mockReq, mockRes); + } + + return res.status(200).json({ success: true, message: `${events.length} events processed.` }); + } catch (error) { + return res.status(500).json({ error: 'Internal Server Error' }); + } +}