allocations()) ->allowedFilters([ AllowedFilter::exact('ip'), AllowedFilter::exact('port'), 'ip_alias', AllowedFilter::callback('server_id', function (Builder $builder, $value) { if (empty($value) || is_bool($value) || !ctype_digit((string) $value)) { return $builder->whereNull('server_id'); } return $builder->where('server_id', $value); }), ]) ->paginate($request->query('per_page') ?? 50); return $this->fractal->collection($allocations) ->transformWith($this->getTransformer(AllocationTransformer::class)) ->toArray(); } /** * Store new allocations for a given node. * * @throws \Pterodactyl\Exceptions\DisplayException * @throws \Pterodactyl\Exceptions\Service\Allocation\CidrOutOfRangeException * @throws \Pterodactyl\Exceptions\Service\Allocation\InvalidPortMappingException * @throws \Pterodactyl\Exceptions\Service\Allocation\PortOutOfRangeException * @throws \Pterodactyl\Exceptions\Service\Allocation\TooManyPortsInRangeException */ public function store(StoreAllocationRequest $request, Node $node): JsonResponse { $this->assignmentService->handle($node, $request->validated()); return new JsonResponse([], JsonResponse::HTTP_NO_CONTENT); } /** * Delete a specific allocation from the Panel. * * @throws \Pterodactyl\Exceptions\Service\Allocation\ServerUsingAllocationException */ public function delete(DeleteAllocationRequest $request, Node $node, Allocation $allocation): JsonResponse { $this->deletionService->handle($allocation); return new JsonResponse([], JsonResponse::HTTP_NO_CONTENT); } }