summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2026-01-24 21:39:53 +0100
committerLudovic Courtès <ludo@gnu.org>2026-01-29 11:51:37 +0100
commit9dd02e1f9112c1bae3f86da0fa23a94da5b91c7d (patch)
treeca3bc660fecb2d621cf45fe28033ecf2698ec22d
parentcf81cfadbd22f70807df57b94afca4507aa71491 (diff)
teams: Correctly handle more than 50 teams.
The page size limit for GET requests on /api/v1/orgs/guix/teams is 50. Thus, ‘organization-teams’ was previously reporting at most 50 teams, even though there are now 52 of them. This patch fixes that. * etc/teams.scm (organization-teams): Rename to… (organization-teams/paginated): … this. Add ‘page’ parameter and honor it. Remove “limit” URL parameter. (organization-teams): New procedure. Fixes: guix/guix#5833 Reported-by: Maxim Cournoyer <maxim@guixotic.coop> Change-Id: Ia25685e001e8522ca4268557ade7d29b5106ae00 Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #5883
-rwxr-xr-xetc/teams.scm17
1 files changed, 14 insertions, 3 deletions
diff --git a/etc/teams.scm b/etc/teams.scm
index 1650286c425..5e5d5643edd 100755
--- a/etc/teams.scm
+++ b/etc/teams.scm
@@ -285,14 +285,25 @@ PARAMETERS."
;; API documentation at <https://codeberg.org/api/swagger>.
-(define-forgejo-request (organization-teams organization)
- "Return the list of teams of ORGANIZATION."
+(define-forgejo-request (organization-teams/paginated organization page)
+ "Return the list of teams of ORGANIZATION, for the given PAGE (1-indexed)."
(GET "orgs" organization "teams"
- & '(("limit" . "100"))) ;get up to 100 teams
+ & `(("page" . ,(number->string page))))
=> 200
(lambda (port)
(map json->forgejo-team (vector->list (json->scm port)))))
+(define (organization-teams token organization)
+ "Return the list of teams of ORGANIZATION."
+ (let loop ((index 1)
+ (pages '()))
+ (match (organization-teams/paginated token organization index)
+ (()
+ (concatenate (reverse pages)))
+ (lst
+ (loop (+ 1 index)
+ (cons lst pages))))))
+
(define-forgejo-request (create-team organization team)
"Create TEAM, a Forgejo team, under ORGANIZATION."
(POST "orgs" organization "teams")