import { NextRequest, NextResponse } from 'next/server'; import { z } from 'zod'; import { getSession } from '@/lib/auth'; import { getGHLClientForUser } from '@/lib/ghl/helpers'; const statusSchema = z.object({ status: z.enum(['read', 'unread']).optional(), starred: z.boolean().optional(), }); export async function PUT( request: NextRequest, { params }: { params: Promise<{ conversationId: string }> } ) { const session = await getSession(); if (!session) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } const ghl = await getGHLClientForUser(session.user.id); if (!ghl) { return NextResponse.json({ error: 'GHL not configured' }, { status: 400 }); } const { conversationId } = await params; try { const body = await request.json(); const validated = statusSchema.parse(body); if (validated.status === 'read') { await ghl.conversations.markAsRead(conversationId); } else if (validated.status === 'unread') { await ghl.conversations.markAsUnread(conversationId); } if (validated.starred === true) { await ghl.conversations.star(conversationId); } else if (validated.starred === false) { await ghl.conversations.unstar(conversationId); } return NextResponse.json({ success: true }); } catch (error) { return NextResponse.json({ error: 'Failed to update status' }, { status: 500 }); } }