|
""" |
|
Checks for LiteLLM service account keys |
|
|
|
""" |
|
|
|
from litellm.proxy._types import ProxyErrorTypes, ProxyException, UserAPIKeyAuth |
|
|
|
|
|
def check_if_token_is_service_account(valid_token: UserAPIKeyAuth) -> bool: |
|
""" |
|
Checks if the token is a service account |
|
|
|
Returns: |
|
bool: True if token is a service account |
|
|
|
""" |
|
if valid_token.metadata: |
|
if "service_account_id" in valid_token.metadata: |
|
return True |
|
return False |
|
|
|
|
|
async def service_account_checks( |
|
valid_token: UserAPIKeyAuth, request_data: dict |
|
) -> bool: |
|
""" |
|
If a virtual key is a service account, checks it's a valid service account |
|
|
|
A token is a service account if it has a service_account_id in its metadata |
|
|
|
Service Account Specific Checks: |
|
- Check if required_params is set |
|
""" |
|
|
|
if check_if_token_is_service_account(valid_token) is not True: |
|
return True |
|
|
|
from litellm.proxy.proxy_server import general_settings |
|
|
|
if "service_account_settings" in general_settings: |
|
service_account_settings = general_settings["service_account_settings"] |
|
if "enforced_params" in service_account_settings: |
|
_enforced_params = service_account_settings["enforced_params"] |
|
for param in _enforced_params: |
|
if param not in request_data: |
|
raise ProxyException( |
|
type=ProxyErrorTypes.bad_request_error.value, |
|
code=400, |
|
param=param, |
|
message=f"BadRequest please pass param={param} in request body. This is a required param for service account", |
|
) |
|
|
|
return True |
|
|