From 8fa297e970043777bfda0018b2bcf5b3bb3a4fd5 Mon Sep 17 00:00:00 2001 From: vladimirtomecko Date: Thu, 21 May 2026 19:51:24 +0200 Subject: [PATCH] fix: order versions by createTime desc so latest is reachable on >1000-version packages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GAR's versions.list endpoint defaults to ASC ordering by createTime and caps server-side pageSize at 1000 regardless of requested value. For any package with more than 1000 versions, the existing single-page fetch returns the oldest 1000 — the newest releases are unreachable, so the synthesized maven-metadata.xml advertises stale `` / `` values and Coursier/sbt consumers (and downstream tools like Scala Steward) never see new versions. Adding `orderBy=createTime desc` flips the first page to newest-first, so the most recent 1000 versions are visible — sufficient for the "resolve latest version" use case that Maven metadata is built for. The `desc` suffix follows the standard Google list-ordering syntax defined in AIP-132. `createTime` is a documented sortable field on the GAR Version resource. Docs: - versions.list reference (states "Maximum page size is 1,000"): https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories.packages.versions/list - AIP-132 (List), section on order_by syntax with `desc` suffix: https://google.aip.dev/132 Verified empirically against a live GAR repo: with the parameter, versions.list returns 1.863.6, 1.863.5, 1.863.4, ... (newest first); without it, the same call returns 0.0.100, 0.0.101, ... (oldest first). --- .../src/main/scala/dev/rolang/gar/ArtifactregistryHandler.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/core/src/main/scala/dev/rolang/gar/ArtifactregistryHandler.scala b/modules/core/src/main/scala/dev/rolang/gar/ArtifactregistryHandler.scala index c640f9a..a723cf9 100644 --- a/modules/core/src/main/scala/dev/rolang/gar/ArtifactregistryHandler.scala +++ b/modules/core/src/main/scala/dev/rolang/gar/ArtifactregistryHandler.scala @@ -115,6 +115,8 @@ class ArtifactRegistryUrlConnection( ) newUrl.put("fields", "versions.name,versions.createTime") newUrl.put("pageSize", 1000) + // Default ASC ordering hides the latest versions on packages with >1000 versions (server-side pageSize cap is 1000). + newUrl.put("orderBy", "createTime desc") newUrl } else { val genericUrl = new GenericUrl()