From 7ec15bd00819f11a714cf1c7bd2c70304855d3f9 Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Thu, 7 May 2026 16:52:56 -0700 Subject: [PATCH] managed agents: add pfp_url to AgentCreate/Out and AgentUpdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AgentCreate accepts an optional pfp_url; AgentOut surfaces it on read. New AgentUpdate model is the body shape for PATCH /agents/{id} — extra='forbid' so unknown fields 422 instead of being silently ignored. Both 'name' and 'pfp_url' use empty-string-as-clear semantics (null/absent = no-op). --- litellm/proxy/managed_agents_endpoints/types.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/litellm/proxy/managed_agents_endpoints/types.py b/litellm/proxy/managed_agents_endpoints/types.py index c9538c73838..bd0e0a95a91 100644 --- a/litellm/proxy/managed_agents_endpoints/types.py +++ b/litellm/proxy/managed_agents_endpoints/types.py @@ -80,6 +80,18 @@ class AgentCreate(BaseModel): branch: Optional[str] = None litellm_api_key: Optional[str] = None litellm_api_base: Optional[str] = None + pfp_url: Optional[str] = None + + +class AgentUpdate(BaseModel): + """Partial update — every field is optional. Only provided fields are + written. Setting a string field to "" clears it; null is treated as + no-op (field absent in the request).""" + + model_config = ConfigDict(extra="forbid") + + name: Optional[str] = None + pfp_url: Optional[str] = None class AgentOut(BaseModel): @@ -90,6 +102,7 @@ class AgentOut(BaseModel): model: str template_id: str branch: str + pfp_url: Optional[str] = None created_at: Optional[datetime] = None