diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 992b3af..1102faf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,7 +18,7 @@ repos: - id: codespell exclude: ^locale/ - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.14.8 + rev: v0.15.0 hooks: - id: ruff-check args: [--fix] diff --git a/CHANGELOG.md b/CHANGELOG.md index bc0be47..3ed95c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## `2.2.0` - 2026-02-06 + +#### 🚀 New Features + +- **Added `get_metadata_by_email` to User resource** + - Enables retrieving user metadata using email address. + +--- + ## `2.1.3` - 2025-11-24 #### 🐛 Bug Fixes diff --git a/magic_admin/resources/user.py b/magic_admin/resources/user.py index f0c60cb..f684b3d 100644 --- a/magic_admin/resources/user.py +++ b/magic_admin/resources/user.py @@ -6,6 +6,14 @@ class User(ResourceComponent): v1_user_info = "/v1/admin/user" v1_user_logout = "/v1/admin/user/logout" + v2_user_info = "/v2/admin/user" + + def get_metadata_by_email(self, email): + return self.request( + "get", + self.v2_user_info, + params={"type": "email", "value": email}, + ) def get_metadata_by_issuer_and_wallet(self, issuer, wallet_type): return self.request( diff --git a/pyproject.toml b/pyproject.toml index 5082bef..746f985 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "magic-admin" -version = "2.1.3" +version = "2.2.0" description = "Magic Python Library" readme = "README.md" authors = [ diff --git a/tests/unit/resources/user_test.py b/tests/unit/resources/user_test.py index e336572..53afb77 100644 --- a/tests/unit/resources/user_test.py +++ b/tests/unit/resources/user_test.py @@ -55,6 +55,22 @@ def setup(self): self.user = User() self.user.Token = mock.Mock() + def test_get_metadata_by_email(self): + self.user.request = mock.Mock(return_value=self.metadata_no_wallets) + + assert ( + self.user.get_metadata_by_email( + sentinel.email, + ) + == self.metadata_no_wallets + ) + + self.user.request.assert_called_once_with( + "get", + self.user.v2_user_info, + params={"type": "email", "value": sentinel.email}, + ) + @pytest.fixture def mock_construct_issuer_with_public_address(self, mocker): return mocker.patch(