From b331d54b34738f39ed0155c140db15088030b8b8 Mon Sep 17 00:00:00 2001 From: cthomas Date: Sat, 19 Apr 2025 11:13:16 -0700 Subject: [PATCH] chore: openapi overrides patches (#1796) --- letta/schemas/providers.py | 1 - letta/server/rest_api/routers/v1/providers.py | 17 ++++++++++------- letta/services/provider_manager.py | 4 ++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/letta/schemas/providers.py b/letta/schemas/providers.py index e5129d15..cbe042bc 100644 --- a/letta/schemas/providers.py +++ b/letta/schemas/providers.py @@ -66,7 +66,6 @@ class ProviderCreate(ProviderBase): class ProviderUpdate(ProviderBase): - id: str = Field(..., description="The id of the provider to update.") api_key: str = Field(..., description="API key used for requests to the provider.") diff --git a/letta/server/rest_api/routers/v1/providers.py b/letta/server/rest_api/routers/v1/providers.py index c26101d5..1de78ba5 100644 --- a/letta/server/rest_api/routers/v1/providers.py +++ b/letta/server/rest_api/routers/v1/providers.py @@ -11,7 +11,7 @@ if TYPE_CHECKING: router = APIRouter(prefix="/providers", tags=["providers"]) -@router.get("/", tags=["providers"], response_model=List[Provider], operation_id="list_providers") +@router.get("/", response_model=List[Provider], operation_id="list_providers") def list_providers( after: Optional[str] = Query(None), limit: Optional[int] = Query(50), @@ -31,7 +31,7 @@ def list_providers( return providers -@router.post("/", tags=["providers"], response_model=Provider, operation_id="create_provider") +@router.post("/", response_model=Provider, operation_id="create_provider") def create_provider( request: ProviderCreate = Body(...), actor_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present @@ -47,8 +47,9 @@ def create_provider( return provider -@router.patch("/", tags=["providers"], response_model=Provider, operation_id="modify_provider") +@router.patch("/{provider_id}", response_model=Provider, operation_id="modify_provider") def modify_provider( + provider_id: str, request: ProviderUpdate = Body(...), actor_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present server: "SyncServer" = Depends(get_letta_server), @@ -57,13 +58,12 @@ def modify_provider( Update an existing custom provider """ actor = server.user_manager.get_user_or_default(user_id=actor_id) - provider = server.provider_manager.update_provider(request, actor=actor) - return provider + return server.provider_manager.update_provider(provider_id=provider_id, request=request, actor=actor) -@router.delete("/", tags=["providers"], response_model=None, operation_id="delete_provider") +@router.delete("/{provider_id}", response_model=None, operation_id="delete_provider") def delete_provider( - provider_id: str = Query(..., description="The provider_id key to be deleted."), + provider_id: str, actor_id: Optional[str] = Header(None, alias="user_id"), server: "SyncServer" = Depends(get_letta_server), ): @@ -73,6 +73,9 @@ def delete_provider( try: actor = server.user_manager.get_user_or_default(user_id=actor_id) server.provider_manager.delete_provider_by_id(provider_id=provider_id, actor=actor) + return JSONResponse(status_code=status.HTTP_200_OK, content={"message": f"Provider id={provider_id} successfully deleted"}) + except NoResultFound: + raise HTTPException(status_code=404, detail=f"Provider provider_id={provider_id} not found for user_id={actor.id}.") except HTTPException: raise except Exception as e: diff --git a/letta/services/provider_manager.py b/letta/services/provider_manager.py index c81a6234..39596e17 100644 --- a/letta/services/provider_manager.py +++ b/letta/services/provider_manager.py @@ -29,11 +29,11 @@ class ProviderManager: return new_provider.to_pydantic() @enforce_types - def update_provider(self, provider_update: ProviderUpdate, actor: PydanticUser) -> PydanticProvider: + def update_provider(self, provider_id: str, provider_update: ProviderUpdate, actor: PydanticUser) -> PydanticProvider: """Update provider details.""" with self.session_maker() as session: # Retrieve the existing provider by ID - existing_provider = ProviderModel.read(db_session=session, identifier=provider_update.id, actor=actor) + existing_provider = ProviderModel.read(db_session=session, identifier=provider_id, actor=actor) # Update only the fields that are provided in ProviderUpdate update_data = provider_update.model_dump(to_orm=True, exclude_unset=True, exclude_none=True)