Add SyncKitClient::list_members
Lists a group's members (id, role, joined-at) via GET /groups/{id}/members, so
an admin UI can show who to remove. Part of Groups p4 M4.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 files changed,
+27 insertions,
-0 deletions
| 147 |
147 |
|
Ok(())
|
| 148 |
148 |
|
}
|
| 149 |
149 |
|
|
|
150 |
+ |
/// List a group's members (id, role, joined-at). Admin only (the server gates
|
|
151 |
+ |
/// it); use to show who can be removed.
|
|
152 |
+ |
#[instrument(skip(self))]
|
|
153 |
+ |
pub async fn list_members(&self, group_id: GroupId) -> Result<Vec<GroupMember>> {
|
|
154 |
+ |
let token = self.require_token()?;
|
|
155 |
+ |
let url = self.endpoints.group_members(group_id);
|
|
156 |
+ |
self.retry_request_json(Idempotency::ReadOnly, || {
|
|
157 |
+ |
let req = self.http.get(&url).bearer_auth(&token);
|
|
158 |
+ |
async move { check_response(req.send().await?).await }
|
|
159 |
+ |
})
|
|
160 |
+ |
.await
|
|
161 |
+ |
}
|
|
162 |
+ |
|
| 150 |
163 |
|
/// Remove a member from a group by user id. Admin only. The server membership
|
| 151 |
164 |
|
/// ACL revokes the member's group read/write access immediately.
|
| 152 |
165 |
|
///
|
| 264 |
264 |
|
pub created_at: DateTime<Utc>,
|
| 265 |
265 |
|
}
|
| 266 |
266 |
|
|
|
267 |
+ |
/// A member of a group, as returned by
|
|
268 |
+ |
/// [`SyncKitClient::list_members`](crate::SyncKitClient::list_members). Grants are
|
|
269 |
+ |
/// not included — each member fetches only their own.
|
|
270 |
+ |
#[derive(Debug, Clone, Deserialize)]
|
|
271 |
+ |
#[non_exhaustive]
|
|
272 |
+ |
pub struct GroupMember {
|
|
273 |
+ |
/// The member's account id.
|
|
274 |
+ |
pub user_id: UserId,
|
|
275 |
+ |
/// `"admin"` or `"member"`.
|
|
276 |
+ |
pub role: String,
|
|
277 |
+ |
/// When they were added.
|
|
278 |
+ |
pub added_at: DateTime<Utc>,
|
|
279 |
+ |
}
|
|
280 |
+ |
|
| 267 |
281 |
|
/// The caller's sealed Group Content Key grant, as returned by
|
| 268 |
282 |
|
/// [`SyncKitClient::group_grant`](crate::SyncKitClient::group_grant). Opened with
|
| 269 |
283 |
|
/// the member's identity private key to recover the GCK.
|