From 392bbf35b70ea6547edee19cea42c7111cb9d39e Mon Sep 17 00:00:00 2001 From: Julio Quinteros Pro Date: Wed, 18 Feb 2026 11:36:15 -0300 Subject: [PATCH] fix(proxy): use prisma.Json for JSON fields in _rotate_master_key create_many MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prisma's create_many() requires JSON fields to be wrapped in prisma.Json() not passed as raw JSON strings. Lines 3099-3100 were using safe_dumps() (which returns str) instead of prisma.Json(), causing Prisma validation errors during master key rotation. This is consistent with the existing pattern in the same file (line 3134 already uses prisma.Json for litellm_config env vars). The regression test test_rotate_master_key_model_data_valid_for_prisma was already correctly asserting isinstance(..., prisma.Json) — the test exposed the mismatch. Co-Authored-By: Claude Sonnet 4.6 --- .../proxy/management_endpoints/key_management_endpoints.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/litellm/proxy/management_endpoints/key_management_endpoints.py b/litellm/proxy/management_endpoints/key_management_endpoints.py index 942a4f98a6..007e558cff 100644 --- a/litellm/proxy/management_endpoints/key_management_endpoints.py +++ b/litellm/proxy/management_endpoints/key_management_endpoints.py @@ -3096,8 +3096,8 @@ async def _rotate_master_key( # noqa: PLR0915 ) if new_model: _dumped = new_model.model_dump(exclude_none=True) - _dumped["litellm_params"] = safe_dumps(_dumped["litellm_params"]) - _dumped["model_info"] = safe_dumps(_dumped["model_info"]) + _dumped["litellm_params"] = prisma.Json(_dumped["litellm_params"]) # type: ignore[attr-defined] + _dumped["model_info"] = prisma.Json(_dumped["model_info"]) # type: ignore[attr-defined] new_models.append(_dumped) verbose_proxy_logger.debug("Resetting proxy model table") async with prisma_client.db.tx() as tx: