Skip to main content

Overview

LibXMTP groups support two types of metadata:
  1. GroupMetadata - Immutable metadata set at group creation
  2. GroupMutableMetadata - Mutable metadata that can be updated based on permissions
Both are stored as MLS Unknown Group Context Extensions.

GroupMetadataOptions

Options for configuring group metadata at creation time.

Fields

Defaults

If not specified, fields use these defaults (from xmtp_configuration):
  • name: DEFAULT_GROUP_NAME
  • description: DEFAULT_GROUP_DESCRIPTION
  • image_url_square: DEFAULT_GROUP_IMAGE_URL_SQUARE
  • app_data: Empty string

Implementation

DMMetadataOptions

Options for configuring DM (direct message) metadata.
Note: DMs have fewer configurable options since name/description are derived from participants.

GroupMetadata (Immutable)

Immutable metadata created at group creation time.

Fields

Methods

new

Conversions

Helper Function

Extracts immutable metadata from MLS extensions.

GroupMutableMetadata

Mutable metadata that can be updated according to permission policies.

Fields

Methods

new

new_default

Creates default mutable metadata for a new group. Behavior:
  • Creator is added as super admin
  • Attributes populated from opts
  • Commit log signer stored if provided

new_dm_default

Creates default mutable metadata for a DM. Behavior:
  • No admins or super admins (not needed for DMs)
  • Minimal attributes

supported_fields

Returns metadata fields that receive default permission policies. Supported Fields:
  • GroupName
  • Description
  • GroupImageUrlSquare
  • MessageDisappearFromNS
  • MessageDisappearInNS
  • MinimumSupportedProtocolVersion
  • AppData

is_admin

Checks if an inbox ID is an admin.

is_super_admin

Checks if an inbox ID is a super admin.

commit_log_signer

Retrieves the commit log signer secret from attributes. Returns: None if field is not present or hex decoding fails.

Conversions

Helper Functions

find_mutable_metadata_extension

Searches for the mutable metadata extension in MLS Extensions.

extract_group_mutable_metadata

Extracts mutable metadata from an OpenMLS group.

MetadataField

Enum representing supported metadata fields.

Methods

as_str

Returns the string representation used as a key in the attributes map. Mappings:
  • 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"
Note: CommitLogSigner uses the _ prefix to make it super-admin-only.

Display Implementation

MessageDisappearingSettings

Configuration for disappearing messages.

Fields

Methods

new

is_enabled

Returns 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

Example: 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 in crates/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