From cd11405ecfb772355a219f60624752d6a571d7a4 Mon Sep 17 00:00:00 2001 From: "M.Husnain-dev" Date: Mon, 6 Jul 2026 23:44:58 +0500 Subject: [PATCH 1/2] Handle non-mapping request data in update_traits --- api/edge_api/identities/views.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/api/edge_api/identities/views.py b/api/edge_api/identities/views.py index ab241b6ba652..96992f77d611 100644 --- a/api/edge_api/identities/views.py +++ b/api/edge_api/identities/views.py @@ -1,7 +1,7 @@ import base64 import json import typing - +from collections.abc import Mapping import pydantic from common.environments.permissions import ( MANAGE_IDENTITIES, @@ -176,6 +176,10 @@ def update_traits(self, request, *args, **kwargs): # type: ignore[no-untyped-de if not environment.project.organisation.persist_trait_data: raise TraitPersistenceError() edge_identity = self.get_object() + if not isinstance(request.data, dict): + raise ValidationError( + "Expected a JSON object (dictionary) for trait data." + ) try: trait = TraitModel(**request.data) except pydantic.ValidationError as validation_error: From 9932350f512604801ba798d2672dfa15c3e60b7f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 6 Jul 2026 18:46:35 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- api/edge_api/identities/views.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/api/edge_api/identities/views.py b/api/edge_api/identities/views.py index 96992f77d611..48d9bb853240 100644 --- a/api/edge_api/identities/views.py +++ b/api/edge_api/identities/views.py @@ -1,7 +1,7 @@ import base64 import json import typing -from collections.abc import Mapping + import pydantic from common.environments.permissions import ( MANAGE_IDENTITIES, @@ -177,9 +177,7 @@ def update_traits(self, request, *args, **kwargs): # type: ignore[no-untyped-de raise TraitPersistenceError() edge_identity = self.get_object() if not isinstance(request.data, dict): - raise ValidationError( - "Expected a JSON object (dictionary) for trait data." - ) + raise ValidationError("Expected a JSON object (dictionary) for trait data.") try: trait = TraitModel(**request.data) except pydantic.ValidationError as validation_error: