30 lines
1.2 KiB
TypeScript
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;
|
|
}
|
|
}
|