mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-26 19:24:27 +00:00
115 lines
3.4 KiB
Python
115 lines
3.4 KiB
Python
"""
|
|
CRUD endpoints for storing reusable credentials.
|
|
"""
|
|
|
|
import asyncio
|
|
import traceback
|
|
from typing import Optional
|
|
|
|
from fastapi import APIRouter, Depends, Request, Response
|
|
|
|
import litellm
|
|
from litellm.proxy._types import UserAPIKeyAuth
|
|
from litellm.proxy.auth.user_api_key_auth import user_api_key_auth
|
|
from litellm.proxy.utils import handle_exception_on_proxy
|
|
from litellm.types.utils import CredentialItem
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post(
|
|
"/v1/credentials",
|
|
dependencies=[Depends(user_api_key_auth)],
|
|
tags=["credential management"],
|
|
)
|
|
async def create_credential(
|
|
request: Request,
|
|
fastapi_response: Response,
|
|
credential: CredentialItem,
|
|
user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
|
|
):
|
|
try:
|
|
litellm.credential_list.append(credential)
|
|
return {"success": True, "message": "Credential created successfully"}
|
|
except Exception as e:
|
|
return handle_exception_on_proxy(e)
|
|
|
|
|
|
@router.get(
|
|
"/v1/credentials",
|
|
dependencies=[Depends(user_api_key_auth)],
|
|
tags=["credential management"],
|
|
)
|
|
async def get_credentials(
|
|
request: Request,
|
|
fastapi_response: Response,
|
|
user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
|
|
):
|
|
try:
|
|
return {"success": True, "credentials": litellm.credential_list}
|
|
except Exception as e:
|
|
return handle_exception_on_proxy(e)
|
|
|
|
|
|
@router.get(
|
|
"/v1/credentials/{credential_name}",
|
|
dependencies=[Depends(user_api_key_auth)],
|
|
tags=["credential management"],
|
|
)
|
|
async def get_credential(
|
|
request: Request,
|
|
fastapi_response: Response,
|
|
credential_name: str,
|
|
user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
|
|
):
|
|
try:
|
|
for credential in litellm.credential_list:
|
|
if credential.credential_name == credential_name:
|
|
return {"success": True, "credential": credential}
|
|
return {"success": False, "message": "Credential not found"}
|
|
except Exception as e:
|
|
return handle_exception_on_proxy(e)
|
|
|
|
|
|
@router.delete(
|
|
"/v1/credentials/{credential_name}",
|
|
dependencies=[Depends(user_api_key_auth)],
|
|
tags=["credential management"],
|
|
)
|
|
async def delete_credential(
|
|
request: Request,
|
|
fastapi_response: Response,
|
|
credential_name: str,
|
|
user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
|
|
):
|
|
try:
|
|
litellm.credential_list = [
|
|
credential
|
|
for credential in litellm.credential_list
|
|
if credential.credential_name != credential_name
|
|
]
|
|
return {"success": True, "message": "Credential deleted successfully"}
|
|
except Exception as e:
|
|
return handle_exception_on_proxy(e)
|
|
|
|
|
|
@router.put(
|
|
"/v1/credentials/{credential_name}",
|
|
dependencies=[Depends(user_api_key_auth)],
|
|
tags=["credential management"],
|
|
)
|
|
async def update_credential(
|
|
request: Request,
|
|
fastapi_response: Response,
|
|
credential_name: str,
|
|
credential: CredentialItem,
|
|
user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
|
|
):
|
|
try:
|
|
for i, c in enumerate(litellm.credential_list):
|
|
if c.credential_name == credential_name:
|
|
litellm.credential_list[i] = credential
|
|
return {"success": True, "message": "Credential updated successfully"}
|
|
return {"success": False, "message": "Credential not found"}
|
|
except Exception as e:
|
|
return handle_exception_on_proxy(e)
|