From 2292b6530c772b33d66b464272c0d256c870c190 Mon Sep 17 00:00:00 2001 From: Yash Rathod <52967673+yash30389@users.noreply.github.com> Date: Wed, 28 Oct 2026 13:47:01 +0530 Subject: [PATCH] Refactor tag management for premium users Refactor tag handling for key management to ensure only premium users can add tags. Adjust logic to manage tags in metadata appropriately. --- .../key_management_endpoints.py | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/litellm/proxy/management_endpoints/key_management_endpoints.py b/litellm/proxy/management_endpoints/key_management_endpoints.py index f7b72b263d4..25db059e4b7 100644 --- a/litellm/proxy/management_endpoints/key_management_endpoints.py +++ b/litellm/proxy/management_endpoints/key_management_endpoints.py @@ -1667,16 +1667,23 @@ async def _common_key_generation_helper( if "tags" in data_json: from litellm.proxy.proxy_server import premium_user - if premium_user is not True and data_json["tags"] is not None: - raise ValueError(f"Only premium users can add tags to keys. {CommonProxyErrors.not_premium_user.value}") + tags = data_json.get("tags") + if premium_user is not True and isinstance(tags, list) and len(tags) > 0: + raise ValueError( + f"Only premium users can add tags to keys. {CommonProxyErrors.not_premium_user.value}" + ) _metadata: Final = data_json.get("metadata") - if not _metadata: - data_json["metadata"] = {"tags": data_json["tags"]} + if tags is None: + if isinstance(_metadata, dict): + _metadata.pop("tags", None) + data_json.pop("tags", None) else: - data_json["metadata"]["tags"] = data_json["tags"] - - data_json.pop("tags") + if not _metadata: + data_json["metadata"] = {"tags": tags} + else: + data_json["metadata"]["tags"] = tags + data_json.pop("tags") # Validate MCP servers in object_permission are within team scope _is_proxy_admin_caller: Final = user_api_key_dict.user_role == LitellmUserRoles.PROXY_ADMIN.value