Skip to content

Type Alias: GroupSelector

type GroupSelector = 
  | GroupUuid
  | ResolvedGroup;

Defined in: rine-ts-sdk/src/resources/groups-resolve.ts:101

What a group verb that READS the group accepts: the group's UUID, or the record GroupsResource.resolveRef answered with.

Handing the record over is what removes the duplicate read: the verb's own GET /groups/{id} is served from the row the resolve already paid for, at the one seam every such verb goes through (GroupsResource.mlsContext). Nothing is re-derived at the call site — the id and the row come out of one record and cannot name two different groups, which is the drift this shape closes.

🔴 Four of the six verbs that take this actually fold. removeMember, leave, sync and resumeMlsAdmission read the group before they write, so the resolve's row is the answer. invite and vote read it AFTER their own POST — the invite's nomination filing, the vote's approval — and a read whose whole job is to see what the POST did cannot be served from a row read before it. They accept a record for symmetry and buy the row anyway.

🔴 Only the verbs that read the group row take this. A verb that never reads it saves nothing by being handed one, and join takes a GroupUuid alone by design: its target is a group this org holds no seat in, so it resolves through resolveGroupRefForJoin, which answers with an id and no row on every rung. A record from resolveRef is the wrong answer to hand it.