- GET /api/products returns code, description and definition_of_done - GET /api/products/:id/next-story returns story.code and per-task code + implementation_plan - GET /api/sprints/:id/tasks returns description, implementation_plan, story_code and derived per-task code - POST /api/todos accepts and returns optional description (max 2000) All changes are additive — existing clients ignore unknown keys. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
18 lines
665 B
TypeScript
18 lines
665 B
TypeScript
import { authenticateApiRequest } from '@/lib/api-auth'
|
|
import { prisma } from '@/lib/prisma'
|
|
import { productAccessFilter } from '@/lib/product-access'
|
|
|
|
export async function GET(request: Request) {
|
|
const auth = await authenticateApiRequest(request)
|
|
if ('error' in auth) {
|
|
return Response.json({ error: auth.error }, { status: auth.status })
|
|
}
|
|
|
|
const products = await prisma.product.findMany({
|
|
where: { archived: false, ...productAccessFilter(auth.userId) },
|
|
orderBy: { created_at: 'desc' },
|
|
select: { id: true, code: true, name: true, description: true, repo_url: true, definition_of_done: true },
|
|
})
|
|
|
|
return Response.json(products)
|
|
}
|