@@ -72,6 +72,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
7272 powerLevelsIncludeNotifications : false ,
7373 allowKnockingInEventAuth : false ,
7474 allowRestrictedJoinsInEventAuth : false ,
75+ requireIntegerPowerLevels : false ,
7576 },
7677 RoomVersionV2 : {
7778 Supported : true ,
@@ -85,6 +86,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
8586 powerLevelsIncludeNotifications : false ,
8687 allowKnockingInEventAuth : false ,
8788 allowRestrictedJoinsInEventAuth : false ,
89+ requireIntegerPowerLevels : false ,
8890 },
8991 RoomVersionV3 : {
9092 Supported : true ,
@@ -98,6 +100,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
98100 powerLevelsIncludeNotifications : false ,
99101 allowKnockingInEventAuth : false ,
100102 allowRestrictedJoinsInEventAuth : false ,
103+ requireIntegerPowerLevels : false ,
101104 },
102105 RoomVersionV4 : {
103106 Supported : true ,
@@ -111,6 +114,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
111114 powerLevelsIncludeNotifications : false ,
112115 allowKnockingInEventAuth : false ,
113116 allowRestrictedJoinsInEventAuth : false ,
117+ requireIntegerPowerLevels : false ,
114118 },
115119 RoomVersionV5 : {
116120 Supported : true ,
@@ -124,6 +128,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
124128 powerLevelsIncludeNotifications : false ,
125129 allowKnockingInEventAuth : false ,
126130 allowRestrictedJoinsInEventAuth : false ,
131+ requireIntegerPowerLevels : false ,
127132 },
128133 RoomVersionV6 : {
129134 Supported : true ,
@@ -137,6 +142,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
137142 powerLevelsIncludeNotifications : true ,
138143 allowKnockingInEventAuth : false ,
139144 allowRestrictedJoinsInEventAuth : false ,
145+ requireIntegerPowerLevels : false ,
140146 },
141147 RoomVersionV7 : {
142148 Supported : true ,
@@ -150,6 +156,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
150156 powerLevelsIncludeNotifications : true ,
151157 allowKnockingInEventAuth : true ,
152158 allowRestrictedJoinsInEventAuth : false ,
159+ requireIntegerPowerLevels : false ,
153160 },
154161 RoomVersionV8 : {
155162 Supported : true ,
@@ -163,6 +170,7 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
163170 powerLevelsIncludeNotifications : true ,
164171 allowKnockingInEventAuth : true ,
165172 allowRestrictedJoinsInEventAuth : true ,
173+ requireIntegerPowerLevels : false ,
166174 },
167175 RoomVersionV9 : {
168176 Supported : true ,
@@ -176,6 +184,21 @@ var roomVersionMeta = map[RoomVersion]RoomVersionDescription{
176184 powerLevelsIncludeNotifications : true ,
177185 allowKnockingInEventAuth : true ,
178186 allowRestrictedJoinsInEventAuth : true ,
187+ requireIntegerPowerLevels : false ,
188+ },
189+ "org.matrix.msc3667" : { // based on room version 7
190+ Supported : true ,
191+ Stable : false ,
192+ stateResAlgorithm : StateResV2 ,
193+ eventFormat : EventFormatV2 ,
194+ eventIDFormat : EventIDFormatV3 ,
195+ redactionAlgorithm : RedactionAlgorithmV2 ,
196+ enforceSignatureChecks : true ,
197+ enforceCanonicalJSON : true ,
198+ powerLevelsIncludeNotifications : true ,
199+ allowKnockingInEventAuth : true ,
200+ allowRestrictedJoinsInEventAuth : false ,
201+ requireIntegerPowerLevels : true ,
179202 },
180203}
181204
@@ -231,6 +254,7 @@ type RoomVersionDescription struct {
231254 powerLevelsIncludeNotifications bool
232255 allowKnockingInEventAuth bool
233256 allowRestrictedJoinsInEventAuth bool
257+ requireIntegerPowerLevels bool
234258 Supported bool
235259 Stable bool
236260}
@@ -312,6 +336,15 @@ func (v RoomVersion) EnforceCanonicalJSON() (bool, error) {
312336 return false , UnsupportedRoomVersionError {v }
313337}
314338
339+ // RequireIntegerPowerLevels returns true if the given room version calls for
340+ // power levels as integers only, false otherwise.
341+ func (v RoomVersion ) RequireIntegerPowerLevels () (bool , error ) {
342+ if r , ok := roomVersionMeta [v ]; ok {
343+ return r .requireIntegerPowerLevels , nil
344+ }
345+ return false , UnsupportedRoomVersionError {v }
346+ }
347+
315348// UnsupportedRoomVersionError occurs when a call has been made with a room
316349// version that is not supported by this version of gomatrixserverlib.
317350type UnsupportedRoomVersionError struct {
0 commit comments