service->createSession($request->input('session_name')); return response()->json($session, 201); } public function append(string $sessionId, AppendMessageRequest $request): JsonResponse { try { $message = $this->service->appendMessage([ 'session_id' => $sessionId, ...$request->validated(), ]); } catch (ChatSessionStatusException $e) { return response()->json(['message' => $e->getMessage()], 403); } return (new MessageResource($message))->response()->setStatusCode(201); } public function listMessages(Request $request, string $sessionId): JsonResponse { $afterSeq = (int) $request->query('after_seq', 0); $limit = (int) $request->query('limit', 50); $limit = $limit > 0 && $limit <= 200 ? $limit : 50; $messages = $this->service->listMessagesBySeq($sessionId, $afterSeq, $limit); return MessageResource::collection($messages)->response(); } }