diff --git a/proto/mls/message_contents/group_metadata.proto b/proto/mls/message_contents/group_metadata.proto index 11ec956b..4fda46d6 100644 --- a/proto/mls/message_contents/group_metadata.proto +++ b/proto/mls/message_contents/group_metadata.proto @@ -10,7 +10,6 @@ option java_package = "org.xmtp.proto.mls.message.contents"; message GroupMetadataV1 { ConversationType conversation_type = 1; string creator_account_address = 2; - PolicySet policies = 3; } // Defines the type of conversation @@ -19,64 +18,3 @@ enum ConversationType { CONVERSATION_TYPE_GROUP = 1; CONVERSATION_TYPE_DM = 2; } - -// The set of policies that govern the group -message PolicySet { - MembershipPolicy add_member_policy = 1; - MembershipPolicy remove_member_policy = 2; - map update_metadata_policy = 3; -} - -// A policy that governs adding/removing members or installations -message MembershipPolicy { - // Base policy - enum BasePolicy { - BASE_POLICY_UNSPECIFIED = 0; - BASE_POLICY_ALLOW = 1; - BASE_POLICY_DENY = 2; - BASE_POLICY_ALLOW_IF_ACTOR_CREATOR = 3; - } - - // Combine multiple policies. All must evaluate to true - message AndCondition { - repeated MembershipPolicy policies = 1; - } - - // Combine multiple policies. Any must evaluate to true - message AnyCondition { - repeated MembershipPolicy policies = 1; - } - - oneof kind { - BasePolicy base = 1; - AndCondition and_condition = 2; - AnyCondition any_condition = 3; - } -} - -// A policy that governs updating metadata -message MetadataPolicy { - // Base policy - enum MetadataBasePolicy { - METADATA_BASE_POLICY_UNSPECIFIED = 0; - METADATA_BASE_POLICY_ALLOW = 1; - METADATA_BASE_POLICY_DENY = 2; - METADATA_BASE_POLICY_ALLOW_IF_ACTOR_CREATOR = 3; - } - - // Combine multiple policies. All must evaluate to true - message AndCondition { - repeated MetadataPolicy policies = 1; - } - - // Combine multiple policies. Any must evaluate to true - message AnyCondition { - repeated MetadataPolicy policies = 1; - } - - oneof kind { - MetadataBasePolicy base = 1; - AndCondition and_condition = 2; - AnyCondition any_condition = 3; - } -} diff --git a/proto/mls/message_contents/group_mutable_metadata.proto b/proto/mls/message_contents/group_mutable_metadata.proto index 82926ef1..821d700f 100644 --- a/proto/mls/message_contents/group_mutable_metadata.proto +++ b/proto/mls/message_contents/group_mutable_metadata.proto @@ -8,5 +8,69 @@ option java_package = "org.xmtp.proto.mls.message.contents"; // Message for group mutable metadata message GroupMutableMetadataV1 { - map attributes = 1; // Map to store various metadata attributes + // Map to store various metadata attributes (Group name, etc.) + map attributes = 1; + PolicySet policies = 2; } + +// The set of policies that govern the group +message PolicySet { + MembershipPolicy add_member_policy = 1; + MembershipPolicy remove_member_policy = 2; + map update_metadata_policy = 3; +} + +// A policy that governs adding/removing members or installations +message MembershipPolicy { + // Base policy + enum BasePolicy { + BASE_POLICY_UNSPECIFIED = 0; + BASE_POLICY_ALLOW = 1; + BASE_POLICY_DENY = 2; + BASE_POLICY_ALLOW_IF_ACTOR_CREATOR = 3; + } + + // Combine multiple policies. All must evaluate to true + message AndCondition { + repeated MembershipPolicy policies = 1; + } + + // Combine multiple policies. Any must evaluate to true + message AnyCondition { + repeated MembershipPolicy policies = 1; + } + + oneof kind { + BasePolicy base = 1; + AndCondition and_condition = 2; + AnyCondition any_condition = 3; + } +} + +// A policy that governs updating metadata +message MetadataPolicy { + // Base policy + enum MetadataBasePolicy { + METADATA_BASE_POLICY_UNSPECIFIED = 0; + METADATA_BASE_POLICY_ALLOW = 1; + METADATA_BASE_POLICY_DENY = 2; + METADATA_BASE_POLICY_ALLOW_IF_ACTOR_CREATOR = 3; + } + + // Combine multiple policies. All must evaluate to true + message AndCondition { + repeated MetadataPolicy policies = 1; + } + + // Combine multiple policies. Any must evaluate to true + message AnyCondition { + repeated MetadataPolicy policies = 1; + } + + oneof kind { + MetadataBasePolicy base = 1; + AndCondition and_condition = 2; + AnyCondition any_condition = 3; + } +} +