Coverage for .venv/lib/python3.13/site-packages/litellm/proxy/management_endpoints/compliance_endpoints.py: 100%
20 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 12:01 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-10 12:01 +0000
1"""
2COMPLIANCE CHECK ENDPOINTS
4Endpoints for checking regulatory compliance of LLM request logs.
6/compliance/eu-ai-act - Check EU AI Act compliance
7/compliance/gdpr - Check GDPR compliance
8"""
10from typing import Final
12from fastapi import APIRouter, Depends, Request
14from litellm.proxy._types import UserAPIKeyAuth
15from litellm.proxy.auth.user_api_key_auth import user_api_key_auth
16from litellm.proxy.compliance_checks import ComplianceChecker
17from litellm.proxy.management_helpers.utils import management_endpoint_wrapper
18from litellm.types.proxy.compliance_endpoints import (
19 ComplianceCheckRequest,
20 ComplianceResponse,
21)
23router: Final = APIRouter()
26@router.post(
27 "/compliance/eu-ai-act",
28 tags=["compliance"],
29 dependencies=[Depends(user_api_key_auth)],
30 response_model=ComplianceResponse,
31)
32@management_endpoint_wrapper
33async def check_eu_ai_act_compliance(
34 data: ComplianceCheckRequest,
35 http_request: Request,
36 user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
37) -> ComplianceResponse:
38 """
39 Check EU AI Act compliance for a spend log entry.
41 Checks:
42 - Art. 9: Guardrails applied (any guardrail)
43 - Art. 5: Content screened before LLM (pre-call guardrails)
44 - Art. 12: Audit record complete (user_id, model, timestamp, guardrail_results)
45 """
46 checker: Final = ComplianceChecker(data)
47 checks: Final = checker.check_eu_ai_act()
48 return ComplianceResponse(
49 compliant=all(c.passed for c in checks),
50 regulation="EU AI Act",
51 checks=checks,
52 )
55@router.post(
56 "/compliance/gdpr",
57 tags=["compliance"],
58 dependencies=[Depends(user_api_key_auth)],
59 response_model=ComplianceResponse,
60)
61@management_endpoint_wrapper
62async def check_gdpr_compliance(
63 data: ComplianceCheckRequest,
64 http_request: Request,
65 user_api_key_dict: UserAPIKeyAuth = Depends(user_api_key_auth),
66) -> ComplianceResponse:
67 """
68 Check GDPR compliance for a spend log entry.
70 Checks:
71 - Art. 32: Data protection applied (pre-call guardrails)
72 - Art. 5(1)(c): Sensitive data protected (masked/blocked or no issues)
73 - Art. 30: Audit record complete (user_id, model, timestamp, guardrail_results)
74 """
75 checker: Final = ComplianceChecker(data)
76 checks: Final = checker.check_gdpr()
77 return ComplianceResponse(
78 compliant=all(c.passed for c in checks),
79 regulation="GDPR",
80 checks=checks,
81 )