Overview
LibXMTP groups support two types of metadata:- GroupMetadata - Immutable metadata set at group creation
- GroupMutableMetadata - Mutable metadata that can be updated based on permissions
GroupMetadataOptions
Options for configuring group metadata at creation time.Fields
| Field | Type | Description | Max Length |
|---|---|---|---|
name | Option<String> | Group display name | 100 chars |
image_url_square | Option<String> | URL for group image | 2048 chars |
description | Option<String> | Group description | 1000 chars |
message_disappearing_settings | Option<MessageDisappearingSettings> | Disappearing message configuration | N/A |
app_data | Option<String> | Application-specific data | 8192 chars |
Defaults
If not specified, fields use these defaults (fromxmtp_configuration):
name:DEFAULT_GROUP_NAMEdescription:DEFAULT_GROUP_DESCRIPTIONimage_url_square:DEFAULT_GROUP_IMAGE_URL_SQUAREapp_data: Empty string
Implementation
DMMetadataOptions
Options for configuring DM (direct message) metadata.GroupMetadata (Immutable)
Immutable metadata created at group creation time.Fields
| Field | Type | Description |
|---|---|---|
conversation_type | ConversationType | Type of conversation (Group, DM, etc.) |
creator_inbox_id | String | Inbox ID of the group creator |
dm_members | Option<DmMembers<InboxId>> | DM member information (DMs only) |
oneshot_message | Option<OneshotMessage> | Optional oneshot message |
Methods
new
Conversions
Helper Function
GroupMutableMetadata
Mutable metadata that can be updated according to permission policies.Fields
| Field | Type | Description |
|---|---|---|
attributes | HashMap<String, String> | Key-value metadata attributes |
admin_list | Vec<String> | List of admin inbox IDs |
super_admin_list | Vec<String> | List of super admin inbox IDs |
Methods
new
new_default
- Creator is added as super admin
- Attributes populated from
opts - Commit log signer stored if provided
new_dm_default
- No admins or super admins (not needed for DMs)
- Minimal attributes
supported_fields
GroupNameDescriptionGroupImageUrlSquareMessageDisappearFromNSMessageDisappearInNSMinimumSupportedProtocolVersionAppData
is_admin
is_super_admin
commit_log_signer
None if field is not present or hex decoding fails.
Conversions
Helper Functions
find_mutable_metadata_extension
extract_group_mutable_metadata
MetadataField
Enum representing supported metadata fields.Methods
as_str
GroupName→"group_name"Description→"description"GroupImageUrlSquare→"group_image_url_square"MessageDisappearFromNS→"message_disappear_from_ns"MessageDisappearInNS→"message_disappear_in_ns"MinimumSupportedProtocolVersion→"minimum_supported_protocol_version"CommitLogSigner→"_commit_log_signer"(super admin prefix)AppData→"app_data"
CommitLogSigner uses the _ prefix to make it super-admin-only.
Display Implementation
MessageDisappearingSettings
Configuration for disappearing messages.Fields
| Field | Type | Description |
|---|---|---|
from_ns | i64 | Timestamp (nanoseconds) from when messages should be tracked for deletion |
in_ns | i64 | Duration (nanoseconds) after which tracked messages will be deleted |
Methods
new
is_enabled
true if both from_ns and in_ns are greater than 0.
Default Implementation
DmMembers
Represents the two members of a DM conversation.Methods
as_ref
Display Implementation
DmMembers { member_one_inbox_id: "Alice", member_two_inbox_id: "Bob" } becomes "dm:alice:bob"
Conversions
Error Handling
GroupMetadataError
GroupMutableMetadataError
Usage Examples
Creating a Group with Custom Metadata
Extracting Metadata from a Group
Checking Admin Status
Constants
Defined incrates/xmtp_mls/src/groups/mod.rs:
Source References
- GroupMetadataOptions:
crates/xmtp_mls_common/src/group.rs:3 - DMMetadataOptions:
crates/xmtp_mls_common/src/group.rs:12 - GroupMetadata:
crates/xmtp_mls_common/src/group_metadata.rs:36 - GroupMutableMetadata:
crates/xmtp_mls_common/src/group_mutable_metadata.rs:99 - MetadataField:
crates/xmtp_mls_common/src/group_mutable_metadata.rs:42 - MessageDisappearingSettings:
crates/xmtp_mls_common/src/group_mutable_metadata.rs:83 - DmMembers:
crates/xmtp_mls_common/src/group_metadata.rs:115
