json(MarketplacePackage::query()->with('publisher')->where('is_active', true)->when($request->filled('type'), fn ($q) => $q->where('type', $request->string('type')))->paginate(min(100, max(1, $request->integer('per_page', 25))))); } public function installed(): JsonResponse { return response()->json(InstalledPackage::query()->with('package')->paginate(50)); } public function install(MarketplacePackage $package, MarketplaceManager $manager, Request $request): JsonResponse { return response()->json($manager->install($package, $request->user()?->id)->load('package'), 201); } public function toggle(InstalledPackage $package, MarketplaceManager $manager, Request $request): JsonResponse { return response()->json($manager->setEnabled($package, ! $package->is_enabled, $request->user()?->id)); } public function remove(InstalledPackage $package, MarketplaceManager $manager, Request $request): JsonResponse { $manager->remove($package, $request->user()?->id); return response()->json(['status' => 'removed']); } }