Breaking changes
Groups public surface redesigned around overviews, routing, and metadata (#1513) TheGroups API is now split into three purpose-built views so no caller can mistake the send-path routing cache for display data.
GroupOverview— new slim, display-oriented type:id,subject,hierarchy, andparticipant_count. Canonical source of subject, community hierarchy, parent, and subgroup kind for high-level callers.GroupMetadata— unchanged full object, still the entry point for participants, roles, and settings.- Routing snapshots — the old
GroupInfo(nowGroupRoutingInfo) ispub(crate). It powers the send path only; sending a message consults it for you.
GroupHierarchy { Standalone, Community, Subgroup { parent, kind } } and SubgroupKind { Regular, Announcement, General }. Both are #[non_exhaustive].
Renames
New APIs
Groups::fetch_overviews(&[Jid])— batch fetch slim overviews for a chosen set of groups. ReturnsFound/Truncated/Forbidden/NotFoundper JID. Same wire request asfetch_metadata_batch, but each<group>node is parsed with a slim parser that never materializes participants.Groups::resolve_participant_addresses(&mut GroupMetadata)— opt-in LID → PN backfill.fetch_metadatano longer runs this implicitly; call it at the callsite when you need PN-keyed display data. The extra cache/database cost now reads at the point of use.Community::list_participating— parent-community-only overview list.
Behavior changes
GroupMetadata.subjectandGroupMetadataResponse.subjectare nowOption<String>. Protocol absence (None) is kept distinct from an explicit empty subject (Some("")).- Strict batch refusal classification. Only
403maps toForbiddenand only404maps toNotFound. Any other server error fails the whole batch call rather than being misreported as a missing group. - Empty batches never send a wire-invalid zero-group request.
fetch_metadata_batch(&[])andfetch_overviews(&[])return an empty vector directly. list_participatingomits<participants>and<description>presence flags from its request, matching WhatsApp Web’s overview projection. It never fans out per group and never runs LID/PN backfill.