diff --git a/synapse/rest/admin/users.py b/synapse/rest/admin/users.py
index 0229e87f43..a9645e4af7 100644
--- a/synapse/rest/admin/users.py
+++ b/synapse/rest/admin/users.py
@@ -23,7 +23,7 @@ import hmac
import logging
import secrets
from http import HTTPStatus
-from typing import TYPE_CHECKING, Dict, List, Optional, Tuple
+from typing import TYPE_CHECKING, Dict, List, Optional, Tuple, Union
import attr
@@ -118,7 +118,8 @@ class UsersRestServletV2(RestServlet):
errcode=Codes.INVALID_PARAM,
)
- deactivated = parse_boolean(request, "deactivated", default=False)
+ deactivated = self._parse_parameter_deactivated(request)
+
locked = parse_boolean(request, "locked", default=False)
admins = parse_boolean(request, "admins")
@@ -182,6 +183,22 @@ class UsersRestServletV2(RestServlet):
return HTTPStatus.OK, ret
+ def _parse_parameter_deactivated(self, request: SynapseRequest) -> Optional[bool]:
+ """
+ Return None (no filtering) if `deactivated` is `true`, otherwise return `False`
+ (exclude deactivated users from the results).
+ """
+ return None if parse_boolean(request, "deactivated") else False
+
+
+class UsersRestServletV3(UsersRestServletV2):
+ PATTERNS = admin_patterns("/users$", "v3")
+
+ def _parse_parameter_deactivated(
+ self, request: SynapseRequest
+ ) -> Union[bool, None]:
+ return parse_boolean(request, "deactivated")
+
class UserRestServletV2(RestServlet):
PATTERNS = admin_patterns("/users/(?P<user_id>[^/]*)$", "v2")
|