From 871b5c1edbfaf40134acaa3a94eaa910c71accec Mon Sep 17 00:00:00 2001 From: Bjorn Date: Tue, 7 Apr 2026 14:28:12 -0700 Subject: [PATCH] fix: remove unnecessary users.info calls from usergroup grants MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Grants method was calling users.info for every group member just to build a user resource and extract its ID — but the grant only needs the resource ID, which is constructed from the Slack user ID we already have from the member list. This eliminates all per-member API calls from the grants loop, removing the rate limit problem entirely for usergroup grants. Co-Authored-By: Claude Opus 4.6 (1M context) --- pkg/connector/user_group.go | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/pkg/connector/user_group.go b/pkg/connector/user_group.go index 9b66f1de..98327e55 100644 --- a/pkg/connector/user_group.go +++ b/pkg/connector/user_group.go @@ -164,21 +164,11 @@ func (o *userGroupResourceType) Grants( var rv []*v2.Grant for _, member := range page { - user, err := o.client.GetUserInfoContext(ctx, member) + userID, err := resource.NewResourceID(resourceTypeUser, member) if err != nil { - wrappedErr := client.WrapError(err, fmt.Sprintf("fetching user info for member %s", member), &outputAnnotations) - if client.IsRateLimited(&outputAnnotations) { - wrappedErr = client.WrapErrorWithRateLimitOverride(wrappedErr, &outputAnnotations) - } - return nil, &resource.SyncOpResults{Annotations: outputAnnotations}, wrappedErr + return nil, nil, fmt.Errorf("baton-slack: creating user resource ID: %w", err) } - ur, err := userResource(ctx, user, res.Id) - if err != nil { - return nil, nil, fmt.Errorf("creating user resource: %w", err) - } - - grant := grant.NewGrant(res, memberEntitlement, ur.Id) - rv = append(rv, grant) + rv = append(rv, grant.NewGrant(res, memberEntitlement, userID)) } // If there are more members, return a token so the SDK calls us again.