chore: openapi overrides patches (#1796)

This commit is contained in:
cthomas
2025-04-19 11:13:16 -07:00
committed by GitHub
parent 9da0229fea
commit b331d54b34
3 changed files with 12 additions and 10 deletions

View File

@@ -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.")

View File

@@ -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:

View File

@@ -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)