/** * POST /api/settings/software-catalog/save (staff only) * Body: { plans: CatalogPlan[], features: CatalogFeature[], addons: CatalogAddon[], * deleted?: { plans: number[], items: number[] } } * Persists a whole catalog edit from the settings page (upsert + delete) into * CUST_SoftwarePlan / CUST_SoftwareCatalogItem and returns the fresh catalog. */ import { gateFromEvent } from '../../../utils/chatAccess' import { saveSoftwareCatalog } from '../../../utils/offers/softwareCatalog' export default defineEventHandler(async (event) => { const { token } = await gateFromEvent(event, { requireChat: false }) const body = await readBody(event) try { const { catalog, warnings } = await saveSoftwareCatalog(event, token, body) return { status: 200, catalog, warnings } } catch (err: any) { const status = Number(err?.statusCode ?? err?.status ?? err?.response?.status) || 500 const message = err?.statusMessage || err?.data?.detail || err?.data?.title || err?.message || 'Speichern fehlgeschlagen' return { status, message } } })