json([ 'success' => true, 'data' => $data, 'message' => $message, ], $code); } protected function created(mixed $data = null, string $message = 'Created'): JsonResponse { return $this->success($data, $message, 201); } protected function error(string $message, int $code = 400, array $errors = []): JsonResponse { $response = [ 'success' => false, 'message' => $message, ]; if (!empty($errors)) { $response['errors'] = $errors; } return response()->json($response, $code); } protected function unauthorized(string $message = 'Unauthorized'): JsonResponse { return $this->error($message, 401); } protected function forbidden(string $message = 'Forbidden'): JsonResponse { return $this->error($message, 403); } protected function notFound(string $message = 'Resource not found'): JsonResponse { return $this->error($message, 404); } }