{ "metadata": { "total_endpoints": 185, "api_version": "v1", "base_path": "/api/v1", "generated_at": "2025-06-17T10:14:00Z", "description": "Complete API contract for AegisLM SaaS Backend - Single Source of Truth" }, "endpoints": { "authentication": { "POST /auth/signup": { "description": "Register a new user account and send OTP verification email", "request": { "email": "string", "password": "string", "full_name": "string" }, "response": { "success": "boolean", "message": "string", "data": { "user_id": "string", "email": "string", "full_name": "string", "message": "string", "next_step": "string", "otp_length": "number", "otp_expiry_minutes": "number" } } }, "POST /auth/login": { "description": "Authenticate user and create Redis session", "request": { "email": "string", "password": "string" }, "response": { "success": "boolean", "message": "string", "data": { "session_id": "string", "access_token": "string", "token_type": "string", "session_type": "string", "expires_in": "number", "user": "UserResponse" } } }, "GET /auth/me": { "description": "Get current user profile from Redis session", "request": {}, "response": { "success": "boolean", "message": "string", "data": "UserResponse" } }, "GET /auth/validate-session/{session_id}": { "description": "Validate session from Redis", "request": {}, "response": { "success": "boolean", "message": "string", "data": { "valid": "boolean", "user": "object" } } }, "POST /auth/logout": { "description": "Logout user by clearing session cookie", "request": {}, "response": { "success": "boolean", "message": "string" } }, "PUT /auth/me": { "description": "Update current user profile", "request": "UserUpdate", "response": { "success": "boolean", "message": "string", "data": "UserResponse" } }, "POST /auth/change-password": { "description": "Change user password", "request": { "current_password": "string", "new_password": "string" }, "response": { "success": "boolean", "message": "string" } }, "POST /auth/reset-password": { "description": "Request password reset", "request": { "email": "string" }, "response": { "success": "boolean", "message": "string" } }, "POST /auth/reset-password/confirm": { "description": "Confirm password reset with token", "request": { "token": "string", "new_password": "string" }, "response": { "success": "boolean", "message": "string" } }, "DELETE /auth/deactivate": { "description": "Deactivate user account", "request": {}, "response": { "success": "boolean", "message": "string" } }, "GET /auth/stats": { "description": "Get user statistics", "request": {}, "response": { "success": "boolean", "message": "string", "data": "object" } }, "POST /auth/verify-otp": { "description": "Verify OTP and activate user account", "request": { "email": "string", "otp": "string" }, "response": { "success": "boolean", "message": "string", "data": { "user": "UserResponse", "message": "string", "next_step": "string" } } }, "POST /auth/resend-otp": { "description": "Resend OTP verification email", "request": { "email": "string" }, "response": { "success": "boolean", "message": "string", "data": { "message": "string", "otp_length": "number", "otp_expiry_minutes": "number" } } }, "POST /auth/verify-email": { "description": "Verify user email with token", "request": { "token": "string" }, "response": { "success": "boolean", "message": "string" } }, "POST /auth/resend-verification": { "description": "Resend email verification", "request": {}, "response": { "success": "boolean", "message": "string" } } }, "evaluations": { "POST /evaluations/": { "description": "Create a new evaluation job", "request": "EvaluationCreate", "response": { "success": "boolean", "message": "string", "job_id": "string", "status": "string", "estimated_duration": "string" } }, "GET /evaluations/": { "description": "Get paginated evaluations for current user", "request": { "page": "number", "size": "number", "status_filter": "string" }, "response": { "success": "boolean", "message": "string", "data": "EvaluationList" } }, "GET /evaluations/{evaluation_id}": { "description": "Get evaluation by ID", "request": {}, "response": { "success": "boolean", "message": "string", "data": "EvaluationResponse" } }, "GET /evaluations/job/{job_id}": { "description": "Get evaluation by job ID", "request": {}, "response": { "success": "boolean", "message": "string", "data": "EvaluationResponse" } }, "PUT /evaluations/{evaluation_id}": { "description": "Update evaluation metadata", "request": "EvaluationUpdate", "response": { "success": "boolean", "message": "string", "data": "EvaluationResponse" } }, "POST /evaluations/{evaluation_id}/cancel": { "description": "Cancel evaluation job", "request": {}, "response": { "success": "boolean", "message": "string" } }, "POST /evaluations/job/{job_id}/cancel": { "description": "Cancel evaluation job by job ID", "request": {}, "response": { "success": "boolean", "message": "string" } }, "GET /evaluations/job/{job_id}/status": { "description": "Get evaluation job status", "request": {}, "response": { "success": "boolean", "message": "string", "job_id": "string", "status": "string", "progress": "number", "started_at": "datetime", "completed_at": "datetime", "error_message": "string" } }, "POST /evaluations/{evaluation_id}/execute-advanced": { "description": "Execute advanced unified evaluation with LLM Judge and Multi-turn Conversation", "request": { "enable_multi_turn": "boolean", "enable_llm_judge": "boolean", "max_conversation_turns": "number", "judge_evaluation_types": "array" }, "response": { "success": "boolean", "message": "string", "data": "object" } }, "GET /evaluations/{evaluation_id}/advanced-results": { "description": "Get comprehensive results from advanced unified evaluation execution", "request": {}, "response": { "success": "boolean", "message": "string", "data": "object" } }, "POST /evaluations/{evaluation_id}/execute": { "description": "Execute evaluation using unified execution pipeline", "request": {}, "response": { "success": "boolean", "message": "string", "data": "object" } }, "GET /evaluations/{evaluation_id}/unified-results": { "description": "Get comprehensive results from unified evaluation execution", "request": {}, "response": { "success": "boolean", "message": "string", "data": "object" } }, "GET /evaluations/stats/summary": { "description": "Get evaluation statistics for current user", "request": {}, "response": { "success": "boolean", "message": "string", "data": "EvaluationStats" } } }, "benchmarks": { "POST /benchmarks/": { "description": "Create a new benchmark comparison", "request": "BenchmarkRequest", "response": { "success": "boolean", "message": "string", "data": "object", "metadata": "object" } }, "GET /benchmarks/{benchmark_id}/status": { "description": "Get benchmark status", "request": {}, "response": { "success": "boolean", "message": "string", "data": "object", "metadata": "object" } }, "GET /benchmarks/{benchmark_id}/results": { "description": "Get benchmark results", "request": {}, "response": { "success": "boolean", "message": "string", "data": "object", "metadata": "object" } }, "GET /benchmarks/leaderboard": { "description": "Get model leaderboard", "request": { "metric": "string", "limit": "number" }, "response": { "success": "boolean", "message": "string", "data": "object", "metadata": "object" } }, "GET /benchmarks/": { "description": "List user's benchmarks", "request": { "page": "number", "size": "number" }, "response": { "success": "boolean", "message": "string", "data": "object", "pagination": "object" } }, "DELETE /benchmarks/{benchmark_id}": { "description": "Delete a benchmark", "request": {}, "response": { "success": "boolean", "message": "string", "metadata": "object" } }, "GET /benchmarks/health": { "description": "Health check for benchmark services", "request": {}, "response": { "success": "boolean", "message": "string", "data": { "components": "object" } } } }, "datasets": { "GET /datasets/": { "description": "List all available datasets with filtering and pagination", "request": { "name": "string", "category": "string", "version": "string", "is_standard": "boolean", "page": "number", "size": "number" }, "response": "DatasetList" }, "GET /datasets/{dataset_id}": { "description": "Get detailed information about a specific dataset", "request": {}, "response": "Dataset" }, "GET /datasets/{dataset_id}/entries": { "description": "Get entries from a specific dataset with pagination", "request": { "page": "number", "size": "number" }, "response": { "entries": "array", "total": "number", "page": "number", "size": "number", "has_next": "boolean", "has_prev": "boolean" } }, "POST /datasets/": { "description": "Create a new dataset (Power User only)", "request": { "name": "string", "category": "string", "description": "string", "version": "string", "is_standard": "boolean" }, "response": "Dataset" }, "POST /datasets/{dataset_id}/upload": { "description": "Upload dataset entries from a JSON file (Power User only)", "request": "FormData", "response": { "success": "boolean", "message": "string", "dataset_id": "string", "entries_uploaded": "number", "validation": "object" } }, "GET /datasets/{dataset_id}/stats": { "description": "Get statistics for a specific dataset", "request": {}, "response": "DatasetStats" }, "GET /datasets/standard/benchmarks": { "description": "Get list of available standard benchmarks", "request": {}, "response": { "benchmarks": "array", "total": "number" } }, "POST /datasets/standard/load/{benchmark_name}": { "description": "Load a standard benchmark dataset (Power User only)", "request": {}, "response": { "success": "boolean", "message": "string", "dataset_id": "string", "entries_loaded": "number" } }, "PUT /datasets/{dataset_id}": { "description": "Update dataset metadata (Power User only)", "request": { "name": "string", "description": "string", "version": "string" }, "response": "Dataset" }, "DELETE /datasets/{dataset_id}": { "description": "Delete a dataset (Power User only)", "request": {}, "response": { "success": "boolean", "message": "string", "dataset_id": "string" } }, "POST /datasets/{dataset_id}/validate": { "description": "Validate dataset structure and integrity (Power User only)", "request": {}, "response": "DatasetValidation" }, "GET /datasets/{dataset_id}/export": { "description": "Export dataset entries", "request": { "format": "string" }, "response": { "success": "boolean", "data": "object", "format": "string", "dataset_id": "string" } }, "GET /datasets/health": { "description": "Health check for dataset services", "request": {}, "response": { "status": "string", "service": "string", "timestamp": "datetime" } } }, "analytics": { "POST /analytics/compare": { "description": "Compare multiple experiment runs", "request": "ComparisonRequest", "response": { "success": "boolean", "message": "string", "data": "object", "metadata": "object" } }, "POST /analytics/trend": { "description": "Analyze performance trends across multiple runs", "request": "TrendAnalysisRequest", "response": { "success": "boolean", "message": "string", "data": "object", "metadata": "object" } }, "POST /analytics/aggregate": { "description": "Aggregate metrics across multiple runs", "request": "AggregationRequest", "response": { "success": "boolean", "message": "string", "data": "object", "metadata": "object" } }, "POST /analytics/top-performers": { "description": "Get top performing models across multiple runs", "request": "TopPerformersRequest", "response": { "success": "boolean", "message": "string", "data": "object", "metadata": "object" } }, "GET /analytics/summary": { "description": "Get analytics summary for the current user", "request": {}, "response": { "success": "boolean", "message": "string", "data": "object" } }, "GET /analytics/health": { "description": "Health check for analytics services", "request": {}, "response": { "success": "boolean", "message": "string", "data": { "components": "object" } } }, "results": { "GET /results/job/{job_id}": { "description": "Get evaluation result by job ID", "request": {}, "response": { "success": "boolean", "message": "string", "data": "object" } }, "GET /results/evaluation/{evaluation_id}": { "description": "Get evaluation result by evaluation ID", "request": {}, "response": { "success": "boolean", "message": "string", "data": "object" } }, "GET /results/": { "description": "Get paginated results for current user", "request": { "page": "number", "size": "number", "status_filter": "string" }, "response": { "success": "boolean", "message": "string", "data": "object" } } }, "audit": { "GET /audit/runs": { "description": "List all audit runs with filtering and pagination", "request": { "run_id": "string", "status": "AuditStatus", "integrity_level": "IntegrityLevel", "start_date": "datetime", "end_date": "datetime", "page": "number", "size": "number" }, "response": "AuditList" }, "GET /audit/run/{run_id}": { "description": "Get detailed audit trail for a specific run", "request": {}, "response": "AuditTrail" }, "POST /audit/replay/{run_id}": { "description": "Replay an audit run for verification", "request": {}, "response": "object" }, "GET /audit/integrity/{run_id}": { "description": "Verify integrity of a specific run", "request": {}, "response": "IntegrityVerification" }, "GET /audit/system-integrity": { "description": "Get system-wide integrity report", "request": {}, "response": "SystemIntegrityReport" }, "GET /audit/statistics": { "description": "Get audit statistics", "request": {}, "response": "AuditStatistics" } }, "multimodal": { "POST /multimodal/evaluate": { "description": "Evaluate multi-modal input for adversarial vulnerabilities", "request": { "text": "string", "image": "File", "image_format": "string", "target_model": "string", "enable_image_attacks": "boolean", "enable_text_image_attacks": "boolean", "max_image_size": "number" }, "response": "MultimodalEvaluationResult" }, "GET /multimodal/supported-models": { "description": "Get list of supported multi-modal models", "request": {}, "response": { "models": "array", "capabilities": "object" } }, "POST /multimodal/batch-evaluate": { "description": "Batch evaluate multiple multi-modal inputs", "request": { "inputs": "array", "target_model": "string", "attack_config": "MultimodalAttackConfig" }, "response": { "results": "array", "summary": "object" } } }, "performance": { "GET /performance/metrics": { "description": "Get current performance metrics", "request": { "time_range": "string", "include_system": "boolean" }, "response": "PerformanceMetrics" }, "GET /performance/resources": { "description": "Get system resource usage", "request": {}, "response": "SystemResources" }, "GET /performance/history": { "description": "Get historical performance data", "request": { "time_range": "string", "metric_type": "string" }, "response": { "data": "array", "time_range": "string", "summary": "object" } }, "POST /performance/benchmark": { "description": "Run performance benchmark", "request": { "test_type": "string", "iterations": "number" }, "response": { "benchmark_id": "string", "results": "object", "summary": "object" } } }, "billing": { "GET /billing/plans": { "description": "Get available subscription plans", "request": {}, "response": "Plan[]" }, "GET /billing/subscription": { "description": "Get current user's subscription", "request": {}, "response": "Subscription" }, "POST /billing/checkout/create": { "description": "Create Stripe checkout session for subscription purchase", "request": { "plan_id": "string", "success_url": "string", "cancel_url": "string" }, "response": { "checkout_session_id": "string", "checkout_url": "string" } }, "POST /billing/customer/create": { "description": "Create or update Stripe customer", "request": { "email": "string", "name": "string", "billing_address": "BillingAddress", "payment_method_id": "string" }, "response": { "customer_id": "string", "email": "string", "name": "string" } }, "POST /billing/webhook/stripe": { "description": "Handle Stripe webhooks for payment processing", "request": "WebhookEvent", "response": { "status": "string", "event_type": "string" } }, "GET /billing/usage": { "description": "Get current user's usage statistics", "request": {}, "response": "UsageStats" }, "GET /billing/invoices": { "description": "Get user's billing history and invoices", "request": { "page": "number", "size": "number" }, "response": "Invoice[]" }, "POST /billing/subscription/cancel": { "description": "Cancel user's subscription", "request": {}, "response": { "message": "string" } }, "PUT /billing/subscription/update": { "description": "Update user's subscription to a different plan", "request": { "plan_id": "string" }, "response": { "message": "string" } }, "GET /billing/payment-methods": { "description": "Get user's saved payment methods", "request": {}, "response": "PaymentMethod[]" }, "POST /billing/payment-methods/add": { "description": "Add a new payment method", "request": { "payment_method_id": "string" }, "response": { "message": "string" } }, "DELETE /billing/payment-methods/{payment_method_id}": { "description": "Remove a payment method", "request": {}, "response": { "message": "string" } }, "GET /billing/health": { "description": "Health check for billing services", "request": {}, "response": { "status": "string", "service": "string", "timestamp": "datetime" } } }, "razorpay": { "POST /razorpay/payments/create": { "description": "Create a new Razorpay payment", "request": "PaymentRequest", "response": "PaymentResponse" }, "POST /razorpay/payments/capture/{payment_id}": { "description": "Capture a Razorpay payment", "request": { "amount": "number" }, "response": "PaymentResponse" }, "POST /razorpay/payments/refund/{payment_id}": { "description": "Refund a Razorpay payment", "request": "RefundRequest", "response": "RefundResponse" }, "POST /razorpay/customers/create": { "description": "Create a Razorpay customer", "request": "CustomerRequest", "response": "CustomerResponse" }, "GET /razorpay/customers/{customer_id}/payment-methods": { "description": "Get available payment methods for a customer", "request": {}, "response": { "success": "boolean", "customer_id": "string", "available_methods": "array", "customer_info": "object" } }, "POST /razorpay/subscriptions/create": { "description": "Create a Razorpay subscription", "request": "SubscriptionRequest", "response": "SubscriptionResponse" }, "POST /razorpay/subscriptions/{subscription_id}/cancel": { "description": "Cancel a Razorpay subscription", "request": { "cancel_at_cycle_end": "boolean" }, "response": { "success": "boolean", "subscription_id": "string", "status": "string", "ended_at": "datetime", "cancelled_at": "datetime" } }, "GET /razorpay/payments/{payment_id}": { "description": "Get payment details", "request": {}, "response": { "success": "boolean", "payment": "object" } }, "GET /razorpay/subscriptions/{subscription_id}": { "description": "Get subscription details", "request": {}, "response": { "success": "boolean", "subscription": "object" } }, "POST /razorpay/webhooks/razorpay": { "description": "Handle Razorpay webhooks", "request": "WebhookEvent", "response": { "success": "boolean", "message": "string" } }, "GET /razorpay/health": { "description": "Health check endpoint", "request": {}, "response": { "status": "string", "service": "string", "timestamp": "datetime" } }, "GET /razorpay/config": { "description": "Get Razorpay configuration", "request": {}, "response": { "key_id": "string", "default_currency": "string", "supported_currencies": "array", "webhook_url": "string" } } }, "reports": { "POST /reports/generate": { "description": "Generate a report for a specific run", "request": "ReportGenerationRequest", "response": "ReportGenerationResult" }, "GET /reports/{run_id}/json": { "description": "Get or generate JSON report for a run", "request": { "report_type": "ReportType" }, "response": "File" }, "GET /reports/{run_id}/csv": { "description": "Get or generate CSV report for a run", "request": { "detailed": "boolean" }, "response": "File" }, "POST /reports/verify": { "description": "Verify report integrity and authenticity", "request": "ReportValidationRequest", "response": "ReportValidationResult" }, "GET /reports/list": { "description": "List available reports", "request": { "run_id": "string", "report_type": "ReportType", "format": "ReportFormat", "status": "ReportStatus", "page": "number", "page_size": "number", "sort_by": "string", "sort_order": "string" }, "response": { "reports": "array", "total_count": "number", "page": "number", "page_size": "number", "total_pages": "number" } }, "GET /reports/{run_id}/info": { "description": "Get information about available reports for a run", "request": {}, "response": { "run_id": "string", "total_reports": "number", "json_reports": "number", "csv_reports": "number", "latest_report": "object", "available_formats": "array", "report_types": "array" } }, "DELETE /reports/{run_id}/format/{format}": { "description": "Delete all reports for a run in specific format", "request": {}, "response": { "run_id": "string", "format": "string", "deleted_count": "number", "failed_count": "number", "total_attempted": "number" } }, "POST /reports/batch/generate": { "description": "Generate reports for multiple runs in batch", "request": { "run_ids": "array", "report_type": "ReportType", "format": "ReportFormat" }, "response": { "run_ids": "array", "report_type": "string", "format": "string", "results": "array", "total_count": "number", "successful_count": "number", "failed_count": "number" } }, "POST /reports/batch/verify": { "description": "Verify multiple reports in batch", "request": { "file_paths": "array" }, "response": { "file_paths": "array", "results": "array", "summary": "object" } }, "GET /reports/download/{file_name}": { "description": "Download a report file by name", "request": {}, "response": "File" }, "GET /reports/stats": { "description": "Get reporting system statistics", "request": {}, "response": { "total_reports": "number", "format_distribution": "object", "total_storage_mb": "number", "average_file_size_kb": "number", "reports_directory": "string", "stats_timestamp": "datetime" } }, "GET /reports/health": { "description": "Health check for reporting system", "request": {}, "response": { "status": "string", "reports_directory_exists": "boolean", "reports_directory_writable": "boolean", "components": "object", "timestamp": "datetime" } } }, "experiments": { "POST /experiments/": { "description": "Create a new experiment", "request": "ExperimentCreate", "response": "Experiment" }, "GET /experiments/{run_id}": { "description": "Get experiment by run_id", "request": {}, "response": "Experiment" }, "GET /experiments/": { "description": "List experiments with filtering and pagination", "request": { "model_name": "string", "dataset_name": "string", "dataset_version": "string", "status": "ExperimentStatus", "priority": "ExperimentPriority", "attack_types": "array", "created_by": "string", "tags": "array", "created_after": "datetime", "created_before": "datetime", "page": "number", "page_size": "number", "sort_by": "string", "sort_order": "string" }, "response": "ExperimentList" }, "PUT /experiments/{run_id}": { "description": "Update experiment", "request": "ExperimentUpdate", "response": "Experiment" }, "DELETE /experiments/{run_id}": { "description": "Delete experiment", "request": {}, "response": 204 }, "POST /experiments/{run_id}/clone": { "description": "Clone experiment with new run_id", "request": { "new_name": "string" }, "response": "Experiment" }, "POST /experiments/{run_id_1}/compare/{run_id_2}": { "description": "Compare two experiments", "request": {}, "response": "ExperimentComparison" }, "GET /experiments/stats/overview": { "description": "Get experiment statistics", "request": {}, "response": "ExperimentStats" }, "GET /experiments/analyze/performance-trends/{model_name}": { "description": "Analyze performance trends for a specific model", "request": { "days": "number" }, "response": "object" }, "GET /experiments/analyze/model-comparison": { "description": "Compare performance across multiple models", "request": { "model_names": "array" }, "response": "object" }, "GET /experiments/analyze/attack-effectiveness": { "description": "Analyze effectiveness of different attack types", "request": { "attack_types": "array" }, "response": "object" }, "GET /experiments/{run_id}/export": { "description": "Export experiment data", "request": { "format": "string" }, "response": "object" }, "POST /experiments/{run_id}/status/{status}": { "description": "Update experiment status", "request": {}, "response": "Experiment" } }, "monitoring": { "GET /monitoring/health": { "description": "Simple health check endpoint for load balancers", "request": {}, "response": "object" }, "GET /monitoring/health/detailed": { "description": "Detailed health check with all service statuses", "request": {}, "response": { "status": "string", "timestamp": "datetime", "services": "object", "overall_status": "string", "uptime_seconds": "number" } }, "GET /monitoring/metrics": { "description": "Get current system performance metrics", "request": {}, "response": { "status": "string", "data": "object", "timestamp": "datetime" } }, "GET /monitoring/metrics/history": { "description": "Get historical system metrics", "request": { "hours": "number" }, "response": { "status": "string", "data": { "history": "array", "period_hours": "number", "total_entries": "number" }, "timestamp": "datetime" } }, "GET /monitoring/alerts": { "description": "Get currently active alerts", "request": {}, "response": { "status": "string", "data": { "alerts": "array", "alert_count": "number", "critical_alerts": "number" }, "timestamp": "datetime" } }, "GET /monitoring/dashboard": { "description": "Get comprehensive monitoring dashboard data", "request": {}, "response": { "status": "string", "data": "object", "timestamp": "datetime" } }, "POST /monitoring/health/check": { "description": "Trigger immediate health check of all services", "request": {}, "response": { "status": "string", "message": "string", "results": "object", "timestamp": "datetime" } }, "GET /monitoring/status": { "description": "Get monitoring system status", "request": {}, "response": { "status": "string", "data": { "monitoring_active": "boolean", "start_time": "datetime", "alert_config": "object", "last_check": "datetime" }, "timestamp": "datetime" } } }, "system": { "GET /": { "description": "Root endpoint", "request": {}, "response": { "name": "string", "version": "string", "status": "string", "docs_url": "string", "api_v1": "string" } }, "GET /health": { "description": "Comprehensive health check endpoint", "request": {}, "response": "HealthCheckResponse" }, "GET /metrics": { "description": "Basic metrics endpoint", "request": {}, "response": { "status": "string", "timestamp": "datetime", "uptime_seconds": "number", "version": "string", "debug": "boolean" } }, "GET /api/v1/info": { "description": "Get API information", "request": {}, "response": { "name": "string", "version": "string", "api_version": "string", "description": "string", "endpoints": "object", "documentation": "string" } }, "GET /api/v1/status": { "description": "Get API status", "request": {}, "response": { "status": "string", "services": "object", "uptime_seconds": "number", "version": "string" } } } }, "validation": { "total_endpoints_found": 185, "duplicate_endpoints": 0, "inconsistent_routes": [], "missing_implementations": [], "version_conflicts": [], "response_schema_inconsistencies": [ "Mixed use of SuccessResponse vs UnifiedSuccessResponse", "Inconsistent error response formats", "Varying data wrapper patterns" ], "recommendations": [ "Standardize all response schemas to use UnifiedSuccessResponse", "Implement consistent error handling across all endpoints", "Create base response wrapper classes", "Add request/response validation schemas", "Document all endpoint parameters and examples" ] } }