import { NextResponse } from "next/server";

export async function GET() {
  return NextResponse.json({
    name: "Songs2YT API",
    version: "1.0",
    authentication: "Authorization: Bearer <api_key>",
    requirements: ["Pro subscription", "YouTube account connected"],
    rateLimit: "60 requests per minute per account (plus any approved bonus)",
    guidance: {
      recommended:
        "For most jobs (especially 5+ audio files): POST /api/v1/upload per file, then POST /api/v1/jobs with the returned paths",
      batch:
        "POST /api/v1/jobs/batch is for small packs only. Large multipart bodies may fail with 'failed to parse body as FormData'",
    },
    endpoints: [
      {
        method: "POST",
        path: "/api/v1/upload",
        description: "Upload a single image or audio file (use for two-step flow)",
        body: "multipart/form-data: file, type (image|audio)",
      },
      {
        method: "POST",
        path: "/api/v1/jobs",
        description: "Create a video job from uploaded file paths (recommended for large batches)",
        body: "application/json: { imagePath, items[] }",
      },
      {
        method: "POST",
        path: "/api/v1/jobs/batch",
        description:
          "One-shot batch for small packs only; large uploads may fail FormData parsing; prefer upload + jobs",
        body: "multipart/form-data: image, audio[] (repeatable), metadata? (JSON string)",
      },
      {
        method: "GET",
        path: "/api/v1/playlists",
        description: "List YouTube playlists for the authenticated Pro account",
      },
      {
        method: "POST",
        path: "/api/v1/playlists",
        description: "Create a YouTube playlist",
        body: "application/json: { title, description?, privacy? (public|unlisted|private) }",
      },
      {
        method: "GET",
        path: "/api/v1/jobs",
        description: "List recent jobs",
        query: "limit (default 20, max 100)",
      },
      {
        method: "GET",
        path: "/api/v1/jobs/:id",
        description: "Get job status and item details",
      },
    ],
    docs: "/dashboard/api-docs",
  });
}
