ensureAbility($request, 'read')) { return $error; } $teamId = $this->resolveTeamId($request); if (is_null($teamId)) { return Response::error('Invalid token.'); } $args = $this->paginationArgs($request); $query = Server::whereTeamId($teamId)->with('settings:id,server_id,is_reachable,is_usable'); $total = (clone $query)->count(); $summaries = $query ->orderBy('name') ->skip($args['offset']) ->take($args['per_page']) ->get() ->map(fn ($s) => [ 'uuid' => $s->uuid, 'name' => $s->name, 'ip' => $s->ip, 'is_reachable' => $s->settings?->is_reachable, 'is_usable' => $s->settings?->is_usable, ]) ->values() ->all(); return $this->respond( $summaries, [], $this->paginationMeta('list_servers', $args, $total), ); } public function schema(JsonSchema $schema): array { return [ 'page' => $schema->integer()->description('Page number (default 1).'), 'per_page' => $schema->integer()->description('Items per page (default 50, max 100).'), ]; } }