{"openapi":"3.1.0","info":{"title":"PromptLock API","description":"AI Compliance & Security API for real-time prompt filtering","version":"0.1.0"},"paths":{"/v1/health":{"get":{"tags":["health"],"summary":"Health Check","description":"Health check endpoint with database, Redis, and model status.","operationId":"health_check_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/analyze":{"post":{"tags":["analysis"],"summary":"Analyze Text","description":"Analyze text for compliance violations and security issues.\n\nThis endpoint performs comprehensive analysis of the input text:\n- Detects PII (SSN, credit cards, emails, etc.)\n- Identifies prompt injection attempts\n- Checks HIPAA, GDPR, and PCI-DSS compliance\n- Returns clean/redacted text based on action parameter\n\nSupports both regular API key authentication and RapidAPI authentication.\nPCI compliance framework is gated to MEGA plan (RapidAPI) or Pro plan (direct).","operationId":"analyze_text_v1_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analyze-demo":{"post":{"tags":["analysis"],"summary":"Analyze Demo Text","description":"Demo analysis endpoint with strict rate limiting and text size restrictions.\n\nThis endpoint provides a limited demo of the analysis functionality:\n- No API key required\n- Strict rate limiting: 10 requests per hour, 2 per minute per IP\n- Limited text size: 500 characters max\n- Limited compliance frameworks: HIPAA and GDPR only\n- Limited actions: no \"block\" action allowed","operationId":"analyze_demo_text_v1_analyze_demo_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/test-detect":{"post":{"tags":["testing"],"summary":"Test Detection","description":"Test endpoint for detection engines - no auth required.","operationId":"test_detection_v1_test_detect_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/test-endpoint":{"get":{"tags":["testing"],"summary":"Test Endpoint","description":"Test endpoint to verify API is working.","operationId":"test_endpoint_v1_test_endpoint_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/auth/register":{"post":{"tags":["authentication"],"summary":"Register","description":"Register a new user. Sends confirmation email.","operationId":"register_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/confirm-email":{"post":{"tags":["authentication"],"summary":"Confirm Email","description":"Confirm email address with token.","operationId":"confirm_email_v1_auth_confirm_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/resend-confirmation":{"post":{"tags":["authentication"],"summary":"Resend Confirmation","description":"Resend confirmation email.","operationId":"resend_confirmation_v1_auth_resend_confirmation_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendConfirmationRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/login":{"post":{"tags":["authentication"],"summary":"Login","description":"Login user and return access token.","operationId":"login_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/request-password-reset":{"post":{"tags":["authentication"],"summary":"Request Password Reset","description":"Request password reset email.","operationId":"request_password_reset_v1_auth_request_password_reset_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/reset-password":{"post":{"tags":["authentication"],"summary":"Reset Password","description":"Reset password with token.","operationId":"reset_password_v1_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetConfirm"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/request-email-change":{"post":{"tags":["authentication"],"summary":"Request Email Change","description":"Request email change (requires authentication and password verification).","operationId":"request_email_change_v1_auth_request_email_change_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailChangeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/auth/confirm-email-change":{"post":{"tags":["authentication"],"summary":"Confirm Email Change","description":"Confirm email change with token.","operationId":"confirm_email_change_v1_auth_confirm_email_change_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/me":{"get":{"tags":["authentication"],"summary":"Get Current User Info","description":"Get current user information.","operationId":"get_current_user_info_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/api-keys/":{"get":{"tags":["api-keys"],"summary":"List Api Keys","description":"List all API keys for the authenticated user.","operationId":"list_api_keys_v1_api_keys__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/APIKeyResponse"},"type":"array","title":"Response List Api Keys V1 Api Keys  Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["api-keys"],"summary":"Create Api Key","description":"Create a new API key for the authenticated user.","operationId":"create_api_key_v1_api_keys__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyWithSecretResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/api-keys/{api_key_id}":{"get":{"tags":["api-keys"],"summary":"Get Api Key","description":"Get a specific API key by ID.","operationId":"get_api_key_v1_api_keys__api_key_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Api Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["api-keys"],"summary":"Update Api Key","description":"Update an API key.","operationId":"update_api_key_v1_api_keys__api_key_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Api Key Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["api-keys"],"summary":"Delete Api Key","description":"Delete (deactivate) an API key.","operationId":"delete_api_key_v1_api_keys__api_key_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Api Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-keys/{api_key_id}/regenerate":{"post":{"tags":["api-keys"],"summary":"Regenerate Api Key","description":"Regenerate the secret for an API key. The old secret is immediately invalidated.","operationId":"regenerate_api_key_v1_api_keys__api_key_id__regenerate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Api Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyWithSecretResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/history":{"get":{"tags":["analytics"],"summary":"Get Analysis History","description":"Get analysis history for the authenticated user.","operationId":"get_analysis_history_v1_analytics_history_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"include_content","in":"query","required":false,"schema":{"type":"boolean","description":"Include prompt and response text","default":false,"title":"Include Content"},"description":"Include prompt and response text"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisHistoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/stats":{"get":{"tags":["analytics"],"summary":"Get Analysis Stats","description":"Get analysis statistics for the authenticated user.","operationId":"get_analysis_stats_v1_analytics_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisStatsResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/analytics/trends":{"get":{"tags":["analytics"],"summary":"Get Trends","description":"Get trends data for the authenticated user.","operationId":"get_trends_v1_analytics_trends_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"description":"Number of days to include","default":30,"title":"Days"},"description":"Number of days to include"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrendsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analytics/logs/export":{"get":{"tags":["analytics"],"summary":"Export Logs","description":"Export audit logs for compliance purposes.\n\nReturns logs filtered by date range, scoped to the authenticated user's API keys.\nEach entry includes: timestamp, frameworks applied, entities detected, action taken, risk score.\n\nSupports CSV and JSON export formats for auditor requirements.","operationId":"export_logs_v1_analytics_logs_export_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"start_date","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"Start of date range (inclusive)","title":"Start Date"},"description":"Start of date range (inclusive)"},{"name":"end_date","in":"query","required":true,"schema":{"type":"string","format":"date-time","description":"End of date range (inclusive)","title":"End Date"},"description":"End of date range (inclusive)"},{"name":"format","in":"query","required":false,"schema":{"type":"string","description":"Export format: csv or json","default":"csv","title":"Format"},"description":"Export format: csv or json"},{"name":"api_key_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by specific API key (optional)","title":"Api Key Id"},"description":"Filter by specific API key (optional)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/checkout":{"post":{"tags":["billing"],"summary":"Create Checkout","description":"Create a Stripe Checkout session for subscription upgrade/creation.","operationId":"create_checkout_v1_billing_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/billing/portal":{"post":{"tags":["billing"],"summary":"Create Portal","description":"Create a Stripe Customer Portal session for self-service billing management.","operationId":"create_portal_v1_billing_portal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/billing/subscription":{"get":{"tags":["billing"],"summary":"Get Subscription Info","description":"Get current subscription information for the user.","operationId":"get_subscription_info_v1_billing_subscription_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"force_refresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force Refresh"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/overview":{"get":{"tags":["billing"],"summary":"Get Billing Overview Route","description":"Return aggregated billing overview including subscription summary.","operationId":"get_billing_overview_route_v1_billing_overview_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"force_refresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force Refresh"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/usage":{"get":{"tags":["billing"],"summary":"Get Usage Info","description":"Get usage information for the current billing period.","operationId":"get_usage_info_v1_billing_usage_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"force_refresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force Refresh"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/webhook":{"post":{"tags":["billing"],"summary":"Stripe Webhook","description":"Handle Stripe webhook events.","operationId":"stripe_webhook_v1_billing_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/billing/plans":{"get":{"tags":["billing"],"summary":"Get Available Plans","description":"Get available billing plans and their pricing.","operationId":"get_available_plans_v1_billing_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/billing/health":{"get":{"tags":["billing"],"summary":"Billing Health","description":"Health check for billing service.","operationId":"billing_health_v1_billing_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/internal/metrics/summary":{"get":{"tags":["internal-metrics"],"summary":"Get Metrics Summary","description":"Get high-level metrics summary.","operationId":"get_metrics_summary_v1_internal_metrics_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"range","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TimeRange"}],"default":"30d","title":"Range"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"use_rollups","in":"query","required":false,"schema":{"type":"boolean","description":"Use rollup tables for day-grain queries","default":true,"title":"Use Rollups"},"description":"Use rollup tables for day-grain queries"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetricsSummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/metrics/violations/top":{"get":{"tags":["internal-metrics"],"summary":"Get Top Violations","description":"Get top violation types over the specified range.","operationId":"get_top_violations_v1_internal_metrics_violations_top_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"range","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TimeRange"}],"default":"30d","title":"Range"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViolationsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/metrics/distribution":{"get":{"tags":["internal-metrics"],"summary":"Get Distribution Metrics","description":"Get request distribution by geography, origins, referers, and accounts.","operationId":"get_distribution_metrics_v1_internal_metrics_distribution_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"range","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TimeRange"}],"default":"30d","title":"Range"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}},{"name":"include_unknown","in":"query","required":false,"schema":{"type":"boolean","description":"Include '(none)' and unknown in top lists","default":false,"title":"Include Unknown"},"description":"Include '(none)' and unknown in top lists"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/metrics/compliance":{"get":{"tags":["internal-metrics"],"summary":"Get Compliance Metrics","description":"Get compliance-related metrics.","operationId":"get_compliance_metrics_v1_internal_metrics_compliance_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"range","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TimeRange"}],"default":"30d","title":"Range"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplianceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/metrics/top/accounts":{"get":{"tags":["internal-metrics"],"summary":"Get Top Accounts","operationId":"get_top_accounts_v1_internal_metrics_top_accounts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"range","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TimeRange"}],"default":"30d","title":"Range"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TopAccount"},"title":"Response Get Top Accounts V1 Internal Metrics Top Accounts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/metrics/top/api-keys":{"get":{"tags":["internal-metrics"],"summary":"Get Top Api Keys","operationId":"get_top_api_keys_v1_internal_metrics_top_api_keys_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"range","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TimeRange"}],"default":"30d","title":"Range"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TopApiKey"},"title":"Response Get Top Api Keys V1 Internal Metrics Top Api Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/metrics/top/origins":{"get":{"tags":["internal-metrics"],"summary":"Get Top Origins","operationId":"get_top_origins_v1_internal_metrics_top_origins_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"range","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TimeRange"}],"default":"30d","title":"Range"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TopOrigin"},"title":"Response Get Top Origins V1 Internal Metrics Top Origins Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/metrics/top/referers":{"get":{"tags":["internal-metrics"],"summary":"Get Top Referers","operationId":"get_top_referers_v1_internal_metrics_top_referers_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"range","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TimeRange"}],"default":"30d","title":"Range"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TopReferer"},"title":"Response Get Top Referers V1 Internal Metrics Top Referers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/internal/metrics/top/ip-prefixes":{"get":{"tags":["internal-metrics"],"summary":"Get Top Ip Prefixes","operationId":"get_top_ip_prefixes_v1_internal_metrics_top_ip_prefixes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"range","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/TimeRange"}],"default":"30d","title":"Range"}},{"name":"from_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Date"}},{"name":"to_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TopIpPrefix"},"title":"Response Get Top Ip Prefixes V1 Internal Metrics Top Ip Prefixes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users":{"get":{"tags":["admin"],"summary":"List All Users","description":"List all users with admin details (admin only).","operationId":"list_all_users_v1_admin_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by email or company","title":"Search"},"description":"Search by email or company"},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by user status","title":"Status Filter"},"description":"Filter by user status"},{"name":"plan_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by plan type","title":"Plan Filter"},"description":"Filter by plan type"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUsersResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users/{user_id}":{"get":{"tags":["admin"],"summary":"Get User Details","description":"Get detailed user information (admin only).","operationId":"get_user_details_v1_admin_users__user_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Delete User","description":"Delete a user and all associated data (super admin only).","operationId":"delete_user_v1_admin_users__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users/{user_id}/status":{"put":{"tags":["admin"],"summary":"Update User Status","description":"Update user status (admin only).","operationId":"update_user_status_v1_admin_users__user_id__status_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Status Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users/{user_id}/account-type":{"put":{"tags":["admin"],"summary":"Update User Account Type","description":"Update user account type (super admin only).","operationId":"update_user_account_type_v1_admin_users__user_id__account_type_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Account Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/admins":{"get":{"tags":["admin"],"summary":"List Admin Users","description":"List all admin and super admin users.","operationId":"list_admin_users_v1_admin_admins_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/users/{user_id}/promote":{"post":{"tags":["admin"],"summary":"Promote User To Admin","description":"Promote a user to admin (super admin only).","operationId":"promote_user_to_admin_v1_admin_users__user_id__promote_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users/{user_id}/demote":{"post":{"tags":["admin"],"summary":"Demote Admin To User","description":"Demote an admin to regular user (super admin only).","operationId":"demote_admin_to_user_v1_admin_users__user_id__demote_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users/{user_id}/promote-super-admin":{"post":{"tags":["admin"],"summary":"Promote User To Super Admin","description":"Promote a user to super admin (super admin only).","operationId":"promote_user_to_super_admin_v1_admin_users__user_id__promote_super_admin_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/logs/all":{"get":{"tags":["admin"],"summary":"Get All Logs","description":"Get all analysis logs across all users (admin only).","operationId":"get_all_logs_v1_admin_logs_all_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"include_content","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Content"}},{"name":"risk_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by risk level: high, medium, low","title":"Risk Filter"},"description":"Filter by risk level: high, medium, low"},{"name":"action_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by action taken","title":"Action Filter"},"description":"Filter by action taken"},{"name":"user_id_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by specific user","title":"User Id Filter"},"description":"Filter by specific user"},{"name":"date_from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date (ISO format)","title":"Date From"},"description":"Start date (ISO format)"},{"name":"date_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date (ISO format)","title":"Date To"},"description":"End date (ISO format)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/stats/overview":{"get":{"tags":["admin"],"summary":"Get Admin Overview Stats","description":"Get system overview statistics (admin only).","operationId":"get_admin_overview_stats_v1_admin_stats_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/decrypt":{"post":{"tags":["admin"],"summary":"Decrypt Content","description":"Decrypt encrypted prompt/response content (admin only).","operationId":"decrypt_content_v1_admin_decrypt_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecryptRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecryptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/subscriptions":{"get":{"tags":["admin"],"summary":"List All Subscriptions","description":"List all subscriptions with admin details (admin only).","operationId":"list_all_subscriptions_v1_admin_subscriptions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by subscription status","title":"Status Filter"},"description":"Filter by subscription status"},{"name":"plan_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by plan type","title":"Plan Filter"},"description":"Filter by plan type"},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by user email or company","title":"Search"},"description":"Search by user email or company"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminSubscriptionsList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/subscriptions/{subscription_id}":{"get":{"tags":["admin"],"summary":"Get Subscription Details","description":"Get detailed subscription information (admin only).","operationId":"get_subscription_details_v1_admin_subscriptions__subscription_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subscription Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/users/{user_id}/plan":{"put":{"tags":["admin"],"summary":"Change User Plan","description":"Change user's plan type (super admin only).","operationId":"change_user_plan_v1_admin_users__user_id__plan_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Plan Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/billing/overview":{"get":{"tags":["admin"],"summary":"Get Billing Overview","description":"Get billing system overview stats (admin only).","operationId":"get_billing_overview_v1_admin_billing_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/api-keys":{"get":{"tags":["admin"],"summary":"List All Api Keys","description":"List all API keys across all users (admin only).","operationId":"list_all_api_keys_v1_admin_api_keys_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by user email, key name, or company","title":"Search"},"description":"Search by user email, key name, or company"},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by key status (active/inactive)","title":"Status Filter"},"description":"Filter by key status (active/inactive)"},{"name":"user_id_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by specific user","title":"User Id Filter"},"description":"Filter by specific user"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAPIKeysList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/api-keys/{api_key_id}":{"get":{"tags":["admin"],"summary":"Get Api Key Details","description":"Get detailed API key information (admin only).","operationId":"get_api_key_details_v1_admin_api_keys__api_key_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Api Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Delete Api Key Admin","description":"Delete API key (admin only).","operationId":"delete_api_key_admin_v1_admin_api_keys__api_key_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Api Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/api-keys/{api_key_id}/status":{"put":{"tags":["admin"],"summary":"Update Api Key Status","description":"Update API key status (enable/disable) (admin only).","operationId":"update_api_key_status_v1_admin_api_keys__api_key_id__status_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Api Key Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Status Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/api-keys/{api_key_id}/usage-limit":{"put":{"tags":["admin"],"summary":"Update Api Key Usage Limit","description":"Update API key usage limit (super admin only).","operationId":"update_api_key_usage_limit_v1_admin_api_keys__api_key_id__usage_limit_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"api_key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Api Key Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Limit Data"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/allowlist/add":{"post":{"tags":["admin"],"summary":"Add To Allowlist","description":"Add a value to the detection allowlist.","operationId":"add_to_allowlist_v1_admin_allowlist_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/admin/blocklist/add":{"post":{"tags":["admin"],"summary":"Add To Blocklist","description":"Add a value to the detection blocklist.","operationId":"add_to_blocklist_v1_admin_blocklist_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityListRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/feedback":{"post":{"tags":["feedback"],"summary":"Submit Feedback","description":"Submit feedback on detection accuracy.\n\nUse this endpoint to report false positives (content incorrectly flagged\nas an injection) or false negatives (injections that were missed).\n\nThis feedback is used to improve the detection model over time.\n\nArgs:\n    request: Feedback details including the text and whether it was a false positive\n\nReturns:\n    Confirmation that feedback was recorded","operationId":"submit_feedback_v1_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/feedback/stats":{"get":{"tags":["feedback"],"summary":"Get Feedback Stats","description":"Get statistics on collected feedback (admin only).\n\nReturns aggregate statistics about collected feedback data.","operationId":"get_feedback_stats_v1_feedback_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackStatsResponse"}}}}}}}},"components":{"schemas":{"APIKeyCreate":{"properties":{"name":{"type":"string","title":"Name"},"permissions":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Permissions","default":{}},"usage_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Usage Limit","default":10000}},"type":"object","required":["name"],"title":"APIKeyCreate"},"APIKeyResponse":{"properties":{"id":{"type":"string","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"permissions":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Permissions"},"usage_limit":{"type":"integer","title":"Usage Limit"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"is_active":{"type":"boolean","title":"Is Active"},"logging_enabled":{"type":"boolean","title":"Logging Enabled","default":true}},"type":"object","required":["id","name","permissions","usage_limit","created_at","last_used_at","is_active"],"title":"APIKeyResponse"},"APIKeyUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"usage_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Usage Limit"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"logging_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logging Enabled"}},"type":"object","title":"APIKeyUpdate"},"APIKeyWithSecretResponse":{"properties":{"api_key_info":{"$ref":"#/components/schemas/APIKeyResponse"},"api_key_secret":{"type":"string","title":"Api Key Secret"}},"type":"object","required":["api_key_info","api_key_secret"],"title":"APIKeyWithSecretResponse","description":"Response when creating a new API key - includes the secret key"},"AdminAPIKey":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"user_email":{"type":"string","title":"User Email"},"user_company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Company"},"name":{"type":"string","title":"Name"},"permissions":{"type":"object","title":"Permissions"},"usage_limit":{"type":"integer","title":"Usage Limit"},"created_at":{"type":"string","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["id","user_id","user_email","user_company","name","permissions","usage_limit","created_at","last_used_at","is_active"],"title":"AdminAPIKey"},"AdminAPIKeysList":{"properties":{"api_keys":{"items":{"$ref":"#/components/schemas/AdminAPIKey"},"type":"array","title":"Api Keys"},"total_count":{"type":"integer","title":"Total Count"},"page_info":{"$ref":"#/components/schemas/PageInfo"}},"type":"object","required":["api_keys","total_count","page_info"],"title":"AdminAPIKeysList"},"AdminSubscription":{"properties":{"id":{"type":"string","title":"Id"},"user_id":{"type":"string","title":"User Id"},"user_email":{"type":"string","title":"User Email"},"user_company":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Company"},"stripe_subscription_id":{"type":"string","title":"Stripe Subscription Id"},"status":{"type":"string","title":"Status"},"current_period_start":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Period Start"},"current_period_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Period End"},"created_at":{"type":"string","title":"Created At"},"plan_type":{"type":"string","title":"Plan Type"}},"type":"object","required":["id","user_id","user_email","user_company","stripe_subscription_id","status","current_period_start","current_period_end","created_at","plan_type"],"title":"AdminSubscription"},"AdminSubscriptionsList":{"properties":{"subscriptions":{"items":{"$ref":"#/components/schemas/AdminSubscription"},"type":"array","title":"Subscriptions"},"total_count":{"type":"integer","title":"Total Count"},"page_info":{"$ref":"#/components/schemas/PageInfo"}},"type":"object","required":["subscriptions","total_count","page_info"],"title":"AdminSubscriptionsList"},"AdminUsersResponse":{"properties":{"users":{"items":{"$ref":"#/components/schemas/UserAdmin"},"type":"array","title":"Users"},"total_count":{"type":"integer","title":"Total Count"},"page_info":{"$ref":"#/components/schemas/PageInfo"}},"type":"object","required":["users","total_count","page_info"],"title":"AdminUsersResponse"},"AnalysisContext":{"properties":{"user_location":{"anyOf":[{},{"type":"null"}],"title":"User Location","description":"Optional user location string (<=128 chars)."},"consent_given":{"anyOf":[{},{"type":"null"}],"title":"Consent Given","description":"Whether the end user has provided consent."},"medical_context":{"anyOf":[{},{"type":"null"}],"title":"Medical Context","description":"Whether the submission is within a medical context."},"research_context":{"anyOf":[{},{"type":"null"}],"title":"Research Context","description":"Whether the data is used for research purposes."},"de_identified":{"anyOf":[{},{"type":"null"}],"title":"De Identified","description":"Whether the submission is already de-identified."},"payment_context":{"anyOf":[{},{"type":"null"}],"title":"Payment Context","description":"Whether payment information is being processed."},"storage_context":{"anyOf":[{},{"type":"null"}],"title":"Storage Context","description":"Whether data will be stored by the client."},"eu_user":{"anyOf":[{},{"type":"null"}],"title":"Eu User","description":"Whether the end user is located in the EU."}},"additionalProperties":false,"type":"object","title":"AnalysisContext","description":"Context information for analysis."},"AnalysisHistoryResponse":{"properties":{"history":{"items":{"$ref":"#/components/schemas/AnalysisLogResponse"},"type":"array","title":"History"},"total_count":{"type":"integer","title":"Total Count"},"stats":{"$ref":"#/components/schemas/AnalysisStatsResponse"}},"type":"object","required":["history","total_count","stats"],"title":"AnalysisHistoryResponse"},"AnalysisLogResponse":{"properties":{"id":{"type":"string","title":"Id"},"text_hash":{"type":"string","title":"Text Hash"},"prompt_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt Text"},"response_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Response Text"},"risk_score":{"type":"integer","title":"Risk Score"},"violations":{"items":{"type":"object"},"type":"array","title":"Violations"},"compliance_frameworks":{"items":{"type":"string"},"type":"array","title":"Compliance Frameworks"},"action_taken":{"type":"string","title":"Action Taken"},"processing_time_ms":{"type":"integer","title":"Processing Time Ms"},"tokens_analyzed":{"type":"integer","title":"Tokens Analyzed"},"client_ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Ip"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","text_hash","risk_score","violations","compliance_frameworks","action_taken","processing_time_ms","tokens_analyzed","client_ip","user_agent","created_at"],"title":"AnalysisLogResponse"},"AnalysisRequest":{"properties":{"text":{"type":"string","maxLength":10240,"title":"Text","description":"Text to analyze (max 10KB)"},"compliance_frameworks":{"anyOf":[{"items":{"type":"string","enum":["HIPAA","GDPR","PCI"]},"type":"array"},{"type":"null"}],"title":"Compliance Frameworks","description":"Compliance frameworks to check against (defaults to prompt injection only if not specified)"},"action_on_high_risk":{"anyOf":[{"type":"string","enum":["flag","block","redact","score"]},{"type":"null"}],"title":"Action On High Risk","description":"Action override when risk is found (score = compute only, no action). OMITTED/null = policy-inherit: each framework's configured policy decides (e.g. HIPAA redact, PCI block at their thresholds). BREAKING (2026-07): omission previously behaved like 'flag'; pass 'flag' explicitly to keep the old behavior."},"context":{"anyOf":[{"$ref":"#/components/schemas/AnalysisContext"},{"type":"null"}]},"fast_mode":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Fast Mode","description":"Control ML inference for prompt injection detection. True = skip ML, use regex only (fastest, ~90% accuracy). False = force ML (error if unavailable). None (default) = auto: use ML if available, fallback to regex if not."}},"type":"object","required":["text"],"title":"AnalysisRequest","description":"Request model for text analysis."},"AnalysisResponse":{"properties":{"risk_score":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Risk Score","description":"Overall risk score (0-100)"},"action_taken":{"type":"string","enum":["flag","block","redact","allow","score"],"title":"Action Taken","description":"Action taken based on the analysis (score = compute only)"},"clean_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clean Text","description":"Processed text (redacted if applicable)"},"violations":{"items":{"$ref":"#/components/schemas/Violation"},"type":"array","title":"Violations","description":"List of detected violations"},"compliance_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"Compliance Status","description":"Violation count per compliance framework"},"usage":{"allOf":[{"$ref":"#/components/schemas/UsageInfo"}],"description":"Usage and performance information"},"medical_context_detected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Medical Context Detected","description":"Whether medical context was detected"},"framework_actions":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Framework Actions","description":"Recommended actions per framework (in score mode)"},"severity_levels":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Severity Levels","description":"Severity levels per framework (in score mode)"},"redaction_summary":{"anyOf":[{"items":{"$ref":"#/components/schemas/RedactionSummaryItem"},"type":"array"},{"type":"null"}],"title":"Redaction Summary","description":"Summary of masking applied per category"},"risk_factors":{"anyOf":[{"items":{"$ref":"#/components/schemas/RiskFactorItem"},"type":"array"},{"type":"null"}],"title":"Risk Factors","description":"Aggregated risk factors contributing to the score"},"denial_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Denial Reason","description":"Explanation provided when content is blocked"},"detection_details":{"anyOf":[{"$ref":"#/components/schemas/DetectionDetails"},{"type":"null"}],"description":"Enhanced detection details (rules_score, ml_score, detection_source)"},"injection":{"allOf":[{"$ref":"#/components/schemas/InjectionResult"}],"description":"Prompt injection summary and metadata"}},"type":"object","required":["risk_score","action_taken","compliance_status","usage","injection"],"title":"AnalysisResponse","description":"Response model for text analysis."},"AnalysisStatsResponse":{"properties":{"total_requests":{"type":"integer","title":"Total Requests"},"high_risk_requests":{"type":"integer","title":"High Risk Requests"},"actions_taken":{"type":"object","title":"Actions Taken"},"risk_percentage":{"type":"number","title":"Risk Percentage"}},"type":"object","required":["total_requests","high_risk_requests","actions_taken","risk_percentage"],"title":"AnalysisStatsResponse"},"CheckoutRequest":{"properties":{"plan_type":{"type":"string","title":"Plan Type"},"success_url":{"type":"string","title":"Success Url"},"cancel_url":{"type":"string","title":"Cancel Url"}},"type":"object","required":["plan_type","success_url","cancel_url"],"title":"CheckoutRequest"},"ComplianceResponse":{"properties":{"by_ruleset":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Ruleset"},"audit_exports_30d":{"type":"integer","title":"Audit Exports 30D"}},"type":"object","required":["by_ruleset","audit_exports_30d"],"title":"ComplianceResponse"},"ConfirmEmailRequest":{"properties":{"token":{"type":"string","title":"Token","description":"Email confirmation token"}},"type":"object","required":["token"],"title":"ConfirmEmailRequest","description":"Request to confirm email address."},"DecryptRequest":{"properties":{"encrypted_content":{"type":"string","title":"Encrypted Content"}},"type":"object","required":["encrypted_content"],"title":"DecryptRequest"},"DecryptResponse":{"properties":{"decrypted_content":{"type":"string","title":"Decrypted Content"},"success":{"type":"boolean","title":"Success"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["decrypted_content","success"],"title":"DecryptResponse"},"DetectionDetails":{"properties":{"rules_score":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Rules Score","description":"Score from pattern rules engine (0.0-1.0)"},"ml_score":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Ml Score","description":"Score from ML model (0.0-1.0)"},"detection_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detection Source","description":"Source of detection: 'rules', 'ml', or 'combined'"},"preprocessing":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Preprocessing","description":"Preprocessing details (obfuscation detection)"},"rule_matches":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Rule Matches","description":"Top matched rules with categories and severities"},"pattern_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern Category","description":"Matched pattern category (rule-based detector)"},"pattern_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern Name","description":"Matched pattern name (rule-based detector)"}},"type":"object","title":"DetectionDetails","description":"Enhanced detection details for debugging and transparency."},"DistributionGeoTop":{"properties":{"country":{"type":"string","title":"Country"},"count":{"type":"integer","title":"Count"},"pct":{"type":"number","title":"Pct"}},"type":"object","required":["country","count","pct"],"title":"DistributionGeoTop"},"DistributionResponse":{"properties":{"by_country":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Country"},"geo":{"$ref":"#/components/schemas/GeoDistribution"},"origins":{"$ref":"#/components/schemas/DistributionSection"},"referers":{"$ref":"#/components/schemas/DistributionSection"},"accounts":{"additionalProperties":{"additionalProperties":{"type":"integer"},"type":"object"},"type":"object","title":"Accounts"},"deprecated":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Deprecated"}},"type":"object","required":["by_country","geo","origins","referers","accounts"],"title":"DistributionResponse"},"DistributionSection":{"properties":{"distinct":{"type":"integer","title":"Distinct"},"top":{"items":{"type":"object"},"type":"array","title":"Top"},"other_count":{"type":"integer","title":"Other Count"}},"type":"object","required":["distinct","top","other_count"],"title":"DistributionSection"},"EmailChangeRequest":{"properties":{"new_email":{"type":"string","format":"email","title":"New Email","description":"New email address"},"password":{"type":"string","title":"Password","description":"Current password for verification"}},"type":"object","required":["new_email","password"],"title":"EmailChangeRequest","description":"Request to change email address."},"EntityListRequest":{"properties":{"text":{"type":"string","title":"Text"}},"type":"object","required":["text"],"title":"EntityListRequest"},"FeedbackRequest":{"properties":{"text":{"type":"string","maxLength":10000,"title":"Text","description":"The input text that was analyzed"},"is_false_positive":{"type":"boolean","title":"Is False Positive","description":"True if user says it's NOT an injection (FP), False if user says it IS an injection (FN)"},"ml_score":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Ml Score","description":"The score the system gave (0.0-1.0)"},"feedback_text":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Feedback Text","description":"Optional user comment explaining the feedback"}},"type":"object","required":["text","is_false_positive","ml_score"],"title":"FeedbackRequest","description":"Request model for user feedback on detection accuracy."},"FeedbackResponse":{"properties":{"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["status","message"],"title":"FeedbackResponse","description":"Response model for feedback submission."},"FeedbackStatsResponse":{"properties":{"total":{"type":"integer","title":"Total"},"by_source":{"type":"object","title":"By Source"},"by_label":{"type":"object","title":"By Label"},"avg_score_diff":{"type":"number","title":"Avg Score Diff"}},"type":"object","required":["total","by_source","by_label","avg_score_diff"],"title":"FeedbackStatsResponse","description":"Response model for feedback statistics."},"GeoDistribution":{"properties":{"total":{"type":"integer","title":"Total"},"located":{"type":"integer","title":"Located"},"unknown":{"type":"integer","title":"Unknown"},"coverage_pct":{"type":"number","title":"Coverage Pct"},"top":{"items":{"$ref":"#/components/schemas/DistributionGeoTop"},"type":"array","title":"Top"},"other_count":{"type":"integer","title":"Other Count"}},"type":"object","required":["total","located","unknown","coverage_pct","top","other_count"],"title":"GeoDistribution"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status","description":"Service status"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp","description":"Current timestamp"},"version":{"type":"string","title":"Version","description":"API version"},"database":{"type":"string","title":"Database","description":"Database connection status"},"redis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redis","description":"Redis connection status"},"models":{"type":"object","title":"Models","description":"ML model status"},"background_tasks":{"type":"object","title":"Background Tasks","description":"Background tasks status"}},"type":"object","required":["status","timestamp","version","database","models","background_tasks"],"title":"HealthResponse","description":"Health check response."},"InjectionDetails":{"properties":{"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method","description":"Detection method: ml_model, pattern_match, or combined"},"pattern_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern Category","description":"Matched pattern category (rule-based detector)"},"pattern_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pattern Name","description":"Matched pattern name (rule-based detector)"},"ml_score":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.0},{"type":"null"}],"title":"Ml Score","description":"ML model score (0.0-1.0)"}},"type":"object","title":"InjectionDetails","description":"Prompt injection detail metadata for response consumers."},"InjectionResult":{"properties":{"detected":{"type":"boolean","title":"Detected","description":"Whether prompt injection was detected"},"risk":{"type":"string","title":"Risk","description":"Injection risk level (low/medium/high)"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence","description":"Detection confidence"},"details":{"anyOf":[{"$ref":"#/components/schemas/InjectionDetails"},{"type":"null"}],"description":"Detection method details"}},"type":"object","required":["detected","risk","confidence"],"title":"InjectionResult","description":"Prompt injection summary for API responses."},"MessageResponse":{"properties":{"message":{"type":"string","title":"Message"},"success":{"type":"boolean","title":"Success","default":true}},"type":"object","required":["message"],"title":"MessageResponse","description":"Simple message response."},"MetricsSummaryResponse":{"properties":{"requests":{"additionalProperties":{"type":"integer"},"type":"object","title":"Requests"},"active_api_keys_30d":{"type":"integer","title":"Active Api Keys 30D"},"latency":{"additionalProperties":{"type":"integer"},"type":"object","title":"Latency"},"success_rate_24h_pct":{"type":"number","title":"Success Rate 24H Pct"}},"type":"object","required":["requests","active_api_keys_30d","latency","success_rate_24h_pct"],"title":"MetricsSummaryResponse"},"PageInfo":{"properties":{"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["limit","offset","has_more"],"title":"PageInfo"},"PasswordResetConfirm":{"properties":{"token":{"type":"string","title":"Token","description":"Password reset token"},"new_password":{"type":"string","minLength":8,"title":"New Password","description":"New password (minimum 8 characters)"}},"type":"object","required":["token","new_password"],"title":"PasswordResetConfirm","description":"Request to complete password reset."},"PasswordResetRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"Email address for password reset"}},"type":"object","required":["email"],"title":"PasswordResetRequest","description":"Request to initiate password reset."},"PortalRequest":{"properties":{"return_url":{"type":"string","title":"Return Url"}},"type":"object","required":["return_url"],"title":"PortalRequest"},"RedactionSummaryItem":{"properties":{"category":{"type":"string","title":"Category","description":"Violation category"},"count":{"type":"integer","minimum":0.0,"title":"Count","description":"Number of occurrences redacted"},"frameworks":{"items":{"type":"string"},"type":"array","title":"Frameworks","description":"Frameworks applied"},"masking":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Masking","description":"Masking strategy applied"}},"type":"object","required":["category","count"],"title":"RedactionSummaryItem","description":"Description of how a specific category was redacted."},"ResendConfirmationRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"Email address to resend confirmation to"}},"type":"object","required":["email"],"title":"ResendConfirmationRequest","description":"Request to resend confirmation email."},"RiskFactorItem":{"properties":{"category":{"type":"string","title":"Category","description":"Risk category"},"count":{"type":"integer","minimum":0.0,"title":"Count","description":"Number of violations in this category"},"frameworks":{"items":{"type":"string"},"type":"array","title":"Frameworks","description":"Frameworks implicated"}},"type":"object","required":["category","count"],"title":"RiskFactorItem","description":"Aggregated risk factor contributing to the final score."},"TestRequest":{"properties":{"text":{"type":"string","title":"Text"},"frameworks":{"items":{"type":"string"},"type":"array","title":"Frameworks","default":["HIPAA"]}},"type":"object","required":["text"],"title":"TestRequest"},"TestResponse":{"properties":{"text":{"type":"string","title":"Text"},"risk_score":{"type":"integer","title":"Risk Score"},"violations":{"items":{"type":"object"},"type":"array","title":"Violations"},"tokens":{"type":"integer","title":"Tokens"}},"type":"object","required":["text","risk_score","violations","tokens"],"title":"TestResponse"},"TimeRange":{"type":"string","enum":["24h","7d","30d","custom"],"title":"TimeRange"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"user":{"$ref":"#/components/schemas/UserResponse"}},"type":"object","required":["access_token","user"],"title":"TokenResponse"},"TopAccount":{"properties":{"account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"requests_total":{"type":"integer","title":"Requests Total"},"flagged_pct":{"type":"number","title":"Flagged Pct"},"error_rate_pct":{"type":"number","title":"Error Rate Pct"},"latency_avg_ms":{"type":"integer","title":"Latency Avg Ms"},"latency_p95_ms":{"type":"integer","title":"Latency P95 Ms"}},"type":"object","required":["account_id","email","requests_total","flagged_pct","error_rate_pct","latency_avg_ms","latency_p95_ms"],"title":"TopAccount"},"TopApiKey":{"properties":{"api_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Key Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"account_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Email"},"requests_total":{"type":"integer","title":"Requests Total"},"flagged_pct":{"type":"number","title":"Flagged Pct"},"error_rate_pct":{"type":"number","title":"Error Rate Pct"},"latency_avg_ms":{"type":"integer","title":"Latency Avg Ms"},"latency_p95_ms":{"type":"integer","title":"Latency P95 Ms"}},"type":"object","required":["api_key_id","name","account_email","requests_total","flagged_pct","error_rate_pct","latency_avg_ms","latency_p95_ms"],"title":"TopApiKey"},"TopIpPrefix":{"properties":{"ip_prefix":{"type":"string","title":"Ip Prefix"},"requests_total":{"type":"integer","title":"Requests Total"},"error_rate_pct":{"type":"number","title":"Error Rate Pct"},"latency_avg_ms":{"type":"integer","title":"Latency Avg Ms"},"latency_p95_ms":{"type":"integer","title":"Latency P95 Ms"}},"type":"object","required":["ip_prefix","requests_total","error_rate_pct","latency_avg_ms","latency_p95_ms"],"title":"TopIpPrefix"},"TopOrigin":{"properties":{"origin_host":{"type":"string","title":"Origin Host"},"requests_total":{"type":"integer","title":"Requests Total"},"flagged_pct":{"type":"number","title":"Flagged Pct"},"error_rate_pct":{"type":"number","title":"Error Rate Pct"},"latency_avg_ms":{"type":"integer","title":"Latency Avg Ms"},"latency_p95_ms":{"type":"integer","title":"Latency P95 Ms"}},"type":"object","required":["origin_host","requests_total","flagged_pct","error_rate_pct","latency_avg_ms","latency_p95_ms"],"title":"TopOrigin"},"TopReferer":{"properties":{"referer_host":{"type":"string","title":"Referer Host"},"requests_total":{"type":"integer","title":"Requests Total"},"flagged_pct":{"type":"number","title":"Flagged Pct"},"error_rate_pct":{"type":"number","title":"Error Rate Pct"},"latency_avg_ms":{"type":"integer","title":"Latency Avg Ms"},"latency_p95_ms":{"type":"integer","title":"Latency P95 Ms"}},"type":"object","required":["referer_host","requests_total","flagged_pct","error_rate_pct","latency_avg_ms","latency_p95_ms"],"title":"TopReferer"},"TrendDataPoint":{"properties":{"date":{"type":"string","title":"Date"},"requests":{"type":"integer","title":"Requests"},"high_risk_requests":{"type":"integer","title":"High Risk Requests"}},"type":"object","required":["date","requests","high_risk_requests"],"title":"TrendDataPoint","description":"Single data point for trends chart."},"TrendsResponse":{"properties":{"trends":{"items":{"$ref":"#/components/schemas/TrendDataPoint"},"type":"array","title":"Trends"},"period_days":{"type":"integer","title":"Period Days"},"total_requests":{"type":"integer","title":"Total Requests"},"total_high_risk_requests":{"type":"integer","title":"Total High Risk Requests"}},"type":"object","required":["trends","period_days","total_requests","total_high_risk_requests"],"title":"TrendsResponse","description":"Response model for trends data."},"UsageInfo":{"properties":{"tokens_analyzed":{"type":"integer","title":"Tokens Analyzed","description":"Number of tokens processed"},"processing_time_ms":{"type":"integer","title":"Processing Time Ms","description":"Processing time in milliseconds"}},"type":"object","required":["tokens_analyzed","processing_time_ms"],"title":"UsageInfo","description":"Usage information for the analysis."},"UserAdmin":{"properties":{"id":{"type":"string","title":"Id"},"email":{"type":"string","title":"Email"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"plan_type":{"type":"string","title":"Plan Type"},"status":{"type":"string","title":"Status"},"account_type":{"type":"string","title":"Account Type"},"created_at":{"type":"string","title":"Created At"},"stripe_customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Customer Id"},"api_key_count":{"type":"integer","title":"Api Key Count"},"analysis_count":{"type":"integer","title":"Analysis Count"},"last_activity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Activity"}},"type":"object","required":["id","email","company_name","plan_type","status","account_type","created_at","stripe_customer_id","api_key_count","analysis_count","last_activity"],"title":"UserAdmin"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"User email address"},"password":{"type":"string","minLength":8,"title":"Password","description":"User password (minimum 8 characters)"},"company_name":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Company Name","description":"Company name"},"plan_type":{"type":"string","enum":["free","indie","starter","pro","professional","enterprise"],"title":"Plan Type","description":"Subscription plan type","default":"free"}},"type":"object","required":["email","password"],"title":"UserCreate"},"UserLogin":{"properties":{"email":{"type":"string","format":"email","title":"Email","description":"User email address"},"password":{"type":"string","title":"Password","description":"User password"}},"type":"object","required":["email","password"],"title":"UserLogin"},"UserResponse":{"properties":{"id":{"type":"string","title":"Id"},"email":{"type":"string","title":"Email"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"plan_type":{"type":"string","title":"Plan Type"},"status":{"type":"string","title":"Status"},"account_type":{"type":"string","title":"Account Type"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","email","company_name","plan_type","status","account_type","created_at"],"title":"UserResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"Violation":{"properties":{"type":{"type":"string","title":"Type","description":"Type of violation (pii_detection, prompt_injection, etc.)"},"category":{"type":"string","title":"Category","description":"Specific category of the violation"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence","description":"Confidence score (0.0 to 1.0)"},"position":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Position","description":"Start and end position in text"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text","description":"The violating text"},"placeholder":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Placeholder","description":"Replacement placeholder for redaction"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Human-readable description"},"compliance_frameworks":{"items":{"type":"string"},"type":"array","title":"Compliance Frameworks","description":"Relevant compliance frameworks"}},"type":"object","required":["type","category","confidence"],"title":"Violation","description":"Model for a compliance violation."},"ViolationFlag":{"properties":{"flag":{"type":"string","title":"Flag"},"occurrences":{"type":"integer","title":"Occurrences"}},"type":"object","required":["flag","occurrences"],"title":"ViolationFlag"},"ViolationsResponse":{"properties":{"top_violations":{"items":{"$ref":"#/components/schemas/ViolationFlag"},"type":"array","title":"Top Violations"}},"type":"object","required":["top_violations"],"title":"ViolationsResponse"}},"securitySchemes":{"HTTPBearer":{"type":"http","description":"JWT token for user authentication","scheme":"bearer"}}}}