Files
0pt/app/api/subscriptions/route.ts
T

30 lines
1.2 KiB
TypeScript

import { NextRequest, NextResponse } from "next/server";
import { createSubscription, listSubscriptions } from "@/lib/subscriptions-store";
import { isSiaxError, siaxErrorResponseForLegacy } from "../siax-error-mapping";
// GET /api/subscriptions — feeds list. POST — convert an order to a recurring feed.
export async function GET() {
try {
return NextResponse.json(await listSubscriptions());
} catch (err: unknown) {
// 0pt#53: durable-store failure -> documented DEPENDENCY_UNAVAILABLE/503.
if (isSiaxError(err)) return siaxErrorResponseForLegacy(err);
throw err;
}
}
export async function POST(req: NextRequest) {
const parsed = await req.json().catch(() => ({}));
const body = parsed && typeof parsed === "object" ? parsed : {};
if (!body.order_id) {
return NextResponse.json({ error: { code: "bad_request", message: "order_id krävs" } }, { status: 400 });
}
try {
const sub = await createSubscription(body.order_id, body.cadence ?? "weekly", body.webhook_url ?? null);
return NextResponse.json(sub, { status: 201 });
} catch (err: unknown) {
if (isSiaxError(err)) return siaxErrorResponseForLegacy(err);
throw err;
}
}