{ "components": { "schemas": { "ABACEvalRequest": { "properties": { "action": { "default": "read", "title": "Action", "type": "string" }, "hour_override": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Hour Override" }, "resource_amount": { "default": 12500.0, "title": "Resource Amount", "type": "number" }, "resource_bank_id": { "default": "bank_a", "title": "Resource Bank Id", "type": "string" }, "resource_classification": { "default": 1, "title": "Resource Classification", "type": "integer" }, "resource_id": { "default": "alt_1001", "title": "Resource Id", "type": "string" }, "resource_type": { "default": "alert", "title": "Resource Type", "type": "string" }, "user_approval_tier": { "default": 50000.0, "title": "User Approval Tier", "type": "number" }, "user_bank_id": { "default": "bank_a", "title": "User Bank Id", "type": "string" }, "user_clearance": { "default": 2, "title": "User Clearance", "type": "integer" }, "user_roles": { "default": [ "analyst" ], "items": { "type": "string" }, "title": "User Roles", "type": "array" }, "user_shift_hours": { "default": "08:00-18:00", "title": "User Shift Hours", "type": "string" }, "user_username": { "default": "analyst_a1", "title": "User Username", "type": "string" } }, "title": "ABACEvalRequest", "type": "object" }, "ABACEvalResponse": { "properties": { "allowed": { "title": "Allowed", "type": "boolean" }, "evaluated_at": { "title": "Evaluated At", "type": "string" }, "policy_name": { "title": "Policy Name", "type": "string" }, "reason": { "title": "Reason", "type": "string" } }, "required": [ "allowed", "policy_name", "reason", "evaluated_at" ], "title": "ABACEvalResponse", "type": "object" }, "AccountResponse": { "properties": { "account_id": { "title": "Account Id", "type": "string" }, "balance": { "title": "Balance", "type": "number" }, "bank_name": { "title": "Bank Name", "type": "string" }, "currency": { "title": "Currency", "type": "string" }, "iban": { "title": "Iban", "type": "string" } }, "required": [ "account_id", "iban", "currency", "balance", "bank_name" ], "title": "AccountResponse", "type": "object" }, "ActiveAlertResponse": { "properties": { "alert_name": { "title": "Alert Name", "type": "string" }, "severity": { "title": "Severity", "type": "string" }, "started_at": { "title": "Started At", "type": "string" }, "status": { "title": "Status", "type": "string" }, "summary": { "title": "Summary", "type": "string" } }, "required": [ "alert_name", "severity", "summary", "started_at", "status" ], "title": "ActiveAlertResponse", "type": "object" }, "AlertDetails": { "properties": { "alert_id": { "title": "Alert Id", "type": "string" }, "explanation": { "title": "Explanation", "type": "string" }, "reason_codes": { "items": { "type": "string" }, "title": "Reason Codes", "type": "array" }, "risk_factors": { "items": { "type": "string" }, "title": "Risk Factors", "type": "array" }, "severity": { "title": "Severity", "type": "string" }, "status": { "title": "Status", "type": "string" }, "top_features": { "items": { "additionalProperties": true, "type": "object" }, "title": "Top Features", "type": "array" } }, "required": [ "alert_id", "severity", "status", "reason_codes", "explanation", "top_features", "risk_factors" ], "title": "AlertDetails", "type": "object" }, "AlertResponse": { "properties": { "bank_id": { "title": "Bank Id", "type": "string" }, "confidence": { "title": "Confidence", "type": "number" }, "created_at": { "title": "Created At", "type": "string" }, "id": { "title": "Id", "type": "string" }, "involved_entity_ids": { "items": { "type": "string" }, "title": "Involved Entity Ids", "type": "array" }, "model_confidence": { "default": 0.0, "title": "Model Confidence", "type": "number" }, "reason_codes": { "items": { "type": "string" }, "title": "Reason Codes", "type": "array" }, "risk_factors": { "default": [], "items": { "type": "string" }, "title": "Risk Factors", "type": "array" }, "risk_score": { "title": "Risk Score", "type": "number" }, "severity": { "title": "Severity", "type": "string" }, "status": { "title": "Status", "type": "string" }, "top_features": { "default": [], "items": { "additionalProperties": true, "type": "object" }, "title": "Top Features", "type": "array" }, "transaction_id": { "title": "Transaction Id", "type": "string" } }, "required": [ "id", "bank_id", "transaction_id", "risk_score", "severity", "status", "reason_codes", "confidence", "involved_entity_ids", "created_at" ], "title": "AlertResponse", "type": "object" }, "AuditChainEntryResponse": { "properties": { "actor": { "title": "Actor", "type": "string" }, "curr_hash": { "title": "Curr Hash", "type": "string" }, "details": { "additionalProperties": true, "title": "Details", "type": "object" }, "event_type": { "title": "Event Type", "type": "string" }, "index": { "title": "Index", "type": "integer" }, "prev_hash": { "title": "Prev Hash", "type": "string" }, "target_id": { "title": "Target Id", "type": "string" }, "timestamp": { "title": "Timestamp", "type": "string" } }, "required": [ "index", "event_type", "actor", "target_id", "timestamp", "details", "prev_hash", "curr_hash" ], "title": "AuditChainEntryResponse", "type": "object" }, "AuditChainVerifyResponse": { "properties": { "broken_index": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Broken Index" }, "genesis_hash": { "title": "Genesis Hash", "type": "string" }, "is_valid": { "title": "Is Valid", "type": "boolean" }, "last_hash": { "title": "Last Hash", "type": "string" }, "tamper_reason": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tamper Reason" }, "total_records": { "title": "Total Records", "type": "integer" }, "verified_at": { "title": "Verified At", "type": "string" } }, "required": [ "is_valid", "total_records", "genesis_hash", "last_hash", "verified_at" ], "title": "AuditChainVerifyResponse", "type": "object" }, "BankComparisonResponse": { "description": "Per-bank local vs federated comparison.", "properties": { "bank_id": { "title": "Bank Id", "type": "string" }, "bank_name": { "title": "Bank Name", "type": "string" }, "federated_metrics": { "$ref": "#/components/schemas/MetricsResponse" }, "improvement": { "additionalProperties": { "type": "number" }, "title": "Improvement", "type": "object" }, "local_metrics": { "$ref": "#/components/schemas/MetricsResponse" } }, "required": [ "bank_id", "bank_name", "local_metrics", "federated_metrics", "improvement" ], "title": "BankComparisonResponse", "type": "object" }, "BankEvaluateRequest": { "properties": { "weights": { "$ref": "#/components/schemas/ModelWeightsSchema" } }, "required": [ "weights" ], "title": "BankEvaluateRequest", "type": "object" }, "BankEvaluateResponse": { "properties": { "accuracy": { "title": "Accuracy", "type": "number" }, "auc_roc": { "title": "Auc Roc", "type": "number" }, "confusion_matrix": { "items": { "items": { "type": "integer" }, "type": "array" }, "title": "Confusion Matrix", "type": "array" }, "f1_score": { "title": "F1 Score", "type": "number" }, "loss": { "title": "Loss", "type": "number" }, "num_samples": { "title": "Num Samples", "type": "integer" }, "precision": { "title": "Precision", "type": "number" }, "recall": { "title": "Recall", "type": "number" }, "roc_fpr": { "items": { "type": "number" }, "title": "Roc Fpr", "type": "array" }, "roc_thresholds": { "items": { "type": "number" }, "title": "Roc Thresholds", "type": "array" }, "roc_tpr": { "items": { "type": "number" }, "title": "Roc Tpr", "type": "array" } }, "required": [ "loss", "num_samples", "accuracy", "precision", "recall", "f1_score", "auc_roc", "confusion_matrix", "roc_fpr", "roc_tpr", "roc_thresholds" ], "title": "BankEvaluateResponse", "type": "object" }, "BankInitializeRequest": { "properties": { "bank_id": { "title": "Bank Id", "type": "string" }, "num_transactions": { "title": "Num Transactions", "type": "integer" }, "seed": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": 42, "title": "Seed" } }, "required": [ "bank_id", "num_transactions" ], "title": "BankInitializeRequest", "type": "object" }, "BankOnboardingBundleResponse": { "description": "Complete bundle returned to a bank IT team upon registration.", "properties": { "bank_id": { "title": "Bank Id", "type": "string" }, "cert_fingerprint": { "title": "Cert Fingerprint", "type": "string" }, "connector_config_yaml": { "title": "Connector Config Yaml", "type": "string" }, "contact_email": { "title": "Contact Email", "type": "string" }, "coordinator_endpoint": { "title": "Coordinator Endpoint", "type": "string" }, "data_residency_region": { "title": "Data Residency Region", "type": "string" }, "jurisdiction": { "title": "Jurisdiction", "type": "string" }, "legal_name": { "title": "Legal Name", "type": "string" }, "mtls_cert_pem": { "title": "Mtls Cert Pem", "type": "string" }, "mtls_key_pem": { "title": "Mtls Key Pem", "type": "string" }, "status": { "title": "Status", "type": "string" } }, "required": [ "bank_id", "status", "legal_name", "jurisdiction", "contact_email", "data_residency_region", "cert_fingerprint", "mtls_cert_pem", "mtls_key_pem", "connector_config_yaml", "coordinator_endpoint" ], "title": "BankOnboardingBundleResponse", "type": "object" }, "BankRegisterRequest": { "description": "Payload to register a new bank node.", "properties": { "bank_id": { "description": "Unique bank node identifier (e.g. bank_alpha)", "title": "Bank Id", "type": "string" }, "contact_email": { "description": "Primary security contact email", "title": "Contact Email", "type": "string" }, "data_residency_region": { "description": "Regulatory cloud region (e.g. eu-west-1)", "title": "Data Residency Region", "type": "string" }, "jurisdiction": { "description": "ISO 3166-1 alpha-2 country code (e.g. TR, US, DE)", "title": "Jurisdiction", "type": "string" }, "legal_name": { "description": "Legal institution name", "title": "Legal Name", "type": "string" } }, "required": [ "bank_id", "legal_name", "jurisdiction", "contact_email", "data_residency_region" ], "title": "BankRegisterRequest", "type": "object" }, "BankResponse": { "description": "Bank details within a simulation response.", "properties": { "contribution_score": { "default": 0.0, "title": "Contribution Score", "type": "number" }, "data_profile": { "anyOf": [ { "$ref": "#/components/schemas/DataProfileResponse" }, { "type": "null" } ] }, "federated_metrics": { "anyOf": [ { "$ref": "#/components/schemas/MetricsResponse" }, { "type": "null" } ] }, "fraud_ratio": { "title": "Fraud Ratio", "type": "number" }, "id": { "title": "Id", "type": "string" }, "improvement": { "anyOf": [ { "additionalProperties": { "type": "number" }, "type": "object" }, { "type": "null" } ], "title": "Improvement" }, "local_metrics": { "anyOf": [ { "$ref": "#/components/schemas/MetricsResponse" }, { "type": "null" } ] }, "name": { "title": "Name", "type": "string" }, "num_transactions": { "title": "Num Transactions", "type": "integer" }, "quarantined": { "default": false, "title": "Quarantined", "type": "boolean" }, "status": { "title": "Status", "type": "string" }, "tier": { "title": "Tier", "type": "string" } }, "required": [ "id", "name", "tier", "fraud_ratio", "num_transactions", "status" ], "title": "BankResponse", "type": "object" }, "BankStatusResponse": { "description": "Detailed status of a bank node.", "properties": { "activated_at": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Activated At" }, "bank_id": { "title": "Bank Id", "type": "string" }, "cert_fingerprint": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cert Fingerprint" }, "created_at": { "title": "Created At", "type": "string" }, "jurisdiction": { "title": "Jurisdiction", "type": "string" }, "legal_name": { "title": "Legal Name", "type": "string" }, "schema_provisioned": { "title": "Schema Provisioned", "type": "boolean" }, "status": { "title": "Status", "type": "string" }, "vault_key_path": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Vault Key Path" } }, "required": [ "bank_id", "legal_name", "jurisdiction", "status", "schema_provisioned", "created_at" ], "title": "BankStatusResponse", "type": "object" }, "BankTrainRequest": { "properties": { "batch_size": { "title": "Batch Size", "type": "integer" }, "dp_delta": { "title": "Dp Delta", "type": "number" }, "dp_epsilon": { "title": "Dp Epsilon", "type": "number" }, "dp_max_grad_norm": { "title": "Dp Max Grad Norm", "type": "number" }, "dp_mode": { "default": "opacus", "title": "Dp Mode", "type": "string" }, "enable_dp": { "title": "Enable Dp", "type": "boolean" }, "epochs": { "title": "Epochs", "type": "integer" }, "fedprox_mu": { "default": 0.0, "title": "Fedprox Mu", "type": "number" }, "learning_rate": { "title": "Learning Rate", "type": "number" }, "moon_mu": { "default": 0.0, "title": "Moon Mu", "type": "number" }, "moon_temperature": { "default": 0.5, "title": "Moon Temperature", "type": "number" }, "prev_local_weights": { "anyOf": [ { "$ref": "#/components/schemas/ModelWeightsSchema" }, { "type": "null" } ] }, "weights": { "$ref": "#/components/schemas/ModelWeightsSchema" } }, "required": [ "weights", "learning_rate", "batch_size", "epochs", "enable_dp", "dp_epsilon", "dp_delta", "dp_max_grad_norm" ], "title": "BankTrainRequest", "type": "object" }, "BankTrainResponse": { "properties": { "actual_epsilon": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Actual Epsilon" }, "loss": { "title": "Loss", "type": "number" }, "num_samples": { "title": "Num Samples", "type": "integer" }, "weights": { "$ref": "#/components/schemas/ModelWeightsSchema" } }, "required": [ "weights", "num_samples", "loss" ], "title": "BankTrainResponse", "type": "object" }, "BusinessRuleCreateRequest": { "properties": { "action": { "default": "BLOCK_TRANSACTION", "description": "Action to trigger (e.g. BLOCK_TRANSACTION)", "title": "Action", "type": "string" }, "condition": { "additionalProperties": true, "description": "Condition JSON AST (e.g. {'and': [...]})", "title": "Condition", "type": "object" }, "is_active": { "default": true, "title": "Is Active", "type": "boolean" }, "rule_name": { "title": "Rule Name", "type": "string" } }, "required": [ "rule_name", "condition" ], "title": "BusinessRuleCreateRequest", "type": "object" }, "BusinessRuleResponse": { "properties": { "action": { "title": "Action", "type": "string" }, "condition": { "additionalProperties": true, "title": "Condition", "type": "object" }, "created_at": { "title": "Created At", "type": "string" }, "id": { "title": "Id", "type": "string" }, "is_active": { "title": "Is Active", "type": "boolean" }, "rule_name": { "title": "Rule Name", "type": "string" }, "updated_at": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Updated At" } }, "required": [ "id", "rule_name", "condition", "action", "is_active", "created_at" ], "title": "BusinessRuleResponse", "type": "object" }, "BusinessRuleTestRequest": { "properties": { "condition": { "additionalProperties": true, "title": "Condition", "type": "object" }, "transaction": { "additionalProperties": true, "title": "Transaction", "type": "object" } }, "required": [ "condition", "transaction" ], "title": "BusinessRuleTestRequest", "type": "object" }, "BusinessRuleTestResponse": { "properties": { "matches": { "title": "Matches", "type": "boolean" }, "message": { "title": "Message", "type": "string" } }, "required": [ "matches", "message" ], "title": "BusinessRuleTestResponse", "type": "object" }, "BusinessRuleUpdateRequest": { "properties": { "action": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Action" }, "condition": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Condition" }, "is_active": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Active" }, "rule_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Rule Name" } }, "title": "BusinessRuleUpdateRequest", "type": "object" }, "CalibrationBinResponse": { "properties": { "bin_index": { "title": "Bin Index", "type": "integer" }, "empirical_fraud_ratio": { "title": "Empirical Fraud Ratio", "type": "number" }, "mean_predicted_prob": { "title": "Mean Predicted Prob", "type": "number" }, "prob_max": { "title": "Prob Max", "type": "number" }, "prob_min": { "title": "Prob Min", "type": "number" }, "sample_count": { "title": "Sample Count", "type": "integer" } }, "required": [ "bin_index", "prob_min", "prob_max", "mean_predicted_prob", "empirical_fraud_ratio", "sample_count" ], "title": "CalibrationBinResponse", "type": "object" }, "CalibrationResponse": { "properties": { "bins": { "items": { "$ref": "#/components/schemas/CalibrationBinResponse" }, "title": "Bins", "type": "array" }, "brier_score": { "title": "Brier Score", "type": "number" }, "evaluated_at": { "title": "Evaluated At", "type": "string" }, "expected_calibration_error": { "title": "Expected Calibration Error", "type": "number" }, "is_well_calibrated": { "title": "Is Well Calibrated", "type": "boolean" }, "max_calibration_error": { "title": "Max Calibration Error", "type": "number" } }, "required": [ "brier_score", "expected_calibration_error", "max_calibration_error", "is_well_calibrated", "evaluated_at", "bins" ], "title": "CalibrationResponse", "type": "object" }, "CaseCreateRequest": { "properties": { "alert_ids": { "description": "Associated alert IDs", "items": { "type": "string" }, "title": "Alert Ids", "type": "array" }, "priority": { "default": "p3_medium", "description": "Priority level of the case", "maxLength": 64, "title": "Priority", "type": "string" }, "title": { "description": "Title of the investigation case", "maxLength": 256, "title": "Title", "type": "string" } }, "required": [ "title" ], "title": "CaseCreateRequest", "type": "object" }, "CaseEventResponse": { "properties": { "actor": { "title": "Actor", "type": "string" }, "description": { "title": "Description", "type": "string" }, "event_type": { "title": "Event Type", "type": "string" }, "metadata": { "additionalProperties": true, "default": {}, "title": "Metadata", "type": "object" }, "timestamp": { "title": "Timestamp", "type": "string" } }, "required": [ "event_type", "description", "actor", "timestamp" ], "title": "CaseEventResponse", "type": "object" }, "CaseLinkAlertRequest": { "properties": { "alert_id": { "title": "Alert Id", "type": "string" } }, "required": [ "alert_id" ], "title": "CaseLinkAlertRequest", "type": "object" }, "CaseNoteRequest": { "properties": { "author": { "default": "analyst", "description": "Author identifier", "maxLength": 128, "title": "Author", "type": "string" }, "content": { "description": "Note content text", "maxLength": 4096, "title": "Content", "type": "string" } }, "required": [ "content" ], "title": "CaseNoteRequest", "type": "object" }, "CaseNoteResponse": { "properties": { "author": { "title": "Author", "type": "string" }, "case_id": { "title": "Case Id", "type": "string" }, "content": { "title": "Content", "type": "string" }, "created_at": { "title": "Created At", "type": "string" }, "id": { "title": "Id", "type": "string" } }, "required": [ "id", "case_id", "author", "content", "created_at" ], "title": "CaseNoteResponse", "type": "object" }, "CaseResponse": { "properties": { "alert_ids": { "items": { "type": "string" }, "title": "Alert Ids", "type": "array" }, "assigned_to": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Assigned To" }, "closed_at": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Closed At" }, "created_at": { "title": "Created At", "type": "string" }, "duration_hours": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Duration Hours" }, "evidence_ids": { "default": [], "items": { "type": "string" }, "title": "Evidence Ids", "type": "array" }, "id": { "title": "Id", "type": "string" }, "is_open": { "default": true, "title": "Is Open", "type": "boolean" }, "notes": { "default": [], "items": { "$ref": "#/components/schemas/CaseNoteResponse" }, "title": "Notes", "type": "array" }, "priority": { "title": "Priority", "type": "string" }, "status": { "title": "Status", "type": "string" }, "timeline": { "default": [], "items": { "$ref": "#/components/schemas/CaseEventResponse" }, "title": "Timeline", "type": "array" }, "title": { "title": "Title", "type": "string" }, "total_risk_score": { "default": 0.0, "title": "Total Risk Score", "type": "number" }, "updated_at": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Updated At" } }, "required": [ "id", "title", "status", "priority", "alert_ids", "created_at" ], "title": "CaseResponse", "type": "object" }, "CaseStatusRequest": { "properties": { "actor": { "default": "analyst", "title": "Actor", "type": "string" }, "status": { "title": "Status", "type": "string" }, "supervisor_signature": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Supervisor Signature" } }, "required": [ "status" ], "title": "CaseStatusRequest", "type": "object" }, "CaseSummaryResponse": { "properties": { "alert_count": { "title": "Alert Count", "type": "integer" }, "assigned_to": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Assigned To" }, "created_at": { "title": "Created At", "type": "string" }, "id": { "title": "Id", "type": "string" }, "is_open": { "default": true, "title": "Is Open", "type": "boolean" }, "priority": { "title": "Priority", "type": "string" }, "status": { "title": "Status", "type": "string" }, "title": { "title": "Title", "type": "string" } }, "required": [ "id", "title", "status", "priority", "alert_count", "created_at" ], "title": "CaseSummaryResponse", "type": "object" }, "CertRotationResponse": { "description": "Response after rotating a bank's mTLS certificate.", "properties": { "bank_id": { "title": "Bank Id", "type": "string" }, "cert_fingerprint": { "title": "Cert Fingerprint", "type": "string" }, "mtls_cert_pem": { "title": "Mtls Cert Pem", "type": "string" }, "mtls_key_pem": { "title": "Mtls Key Pem", "type": "string" } }, "required": [ "bank_id", "mtls_cert_pem", "mtls_key_pem", "cert_fingerprint" ], "title": "CertRotationResponse", "type": "object" }, "ClientCapabilityResponse": { "properties": { "bank_id": { "title": "Bank Id", "type": "string" }, "device_count": { "title": "Device Count", "type": "integer" }, "hardware_type": { "title": "Hardware Type", "type": "string" }, "last_heartbeat_ago_seconds": { "title": "Last Heartbeat Ago Seconds", "type": "number" }, "python_version": { "title": "Python Version", "type": "string" }, "pytorch_version": { "title": "Pytorch Version", "type": "string" }, "ram_gb": { "title": "Ram Gb", "type": "number" }, "status": { "title": "Status", "type": "string" } }, "required": [ "bank_id", "pytorch_version", "python_version", "hardware_type", "ram_gb", "device_count", "status", "last_heartbeat_ago_seconds" ], "title": "ClientCapabilityResponse", "type": "object" }, "CommunityAnalyticsResponse": { "properties": { "average_risk": { "title": "Average Risk", "type": "number" }, "community_id": { "title": "Community Id", "type": "integer" }, "fraud_density": { "title": "Fraud Density", "type": "number" }, "node_ids": { "items": { "type": "string" }, "title": "Node Ids", "type": "array" }, "size": { "title": "Size", "type": "integer" } }, "required": [ "community_id", "node_ids", "size", "fraud_density", "average_risk" ], "title": "CommunityAnalyticsResponse", "type": "object" }, "ComparisonResponse": { "description": "Side-by-side local vs federated comparison across all banks.", "properties": { "aggregate_improvement": { "additionalProperties": { "type": "number" }, "title": "Aggregate Improvement", "type": "object" }, "banks": { "items": { "$ref": "#/components/schemas/BankComparisonResponse" }, "title": "Banks", "type": "array" }, "simulation_id": { "title": "Simulation Id", "type": "string" } }, "required": [ "simulation_id", "banks", "aggregate_improvement" ], "title": "ComparisonResponse", "type": "object" }, "ConsentRequest": { "properties": { "account_id": { "title": "Account Id", "type": "string" }, "permissions": { "items": { "type": "string" }, "title": "Permissions", "type": "array" }, "valid_until": { "description": "Epoch timestamp representing valid until date", "title": "Valid Until", "type": "number" } }, "required": [ "account_id", "valid_until" ], "title": "ConsentRequest", "type": "object" }, "ConsentResponse": { "properties": { "account_id": { "title": "Account Id", "type": "string" }, "consent_id": { "title": "Consent Id", "type": "string" }, "permissions": { "items": { "type": "string" }, "title": "Permissions", "type": "array" }, "status": { "title": "Status", "type": "string" }, "valid_until": { "title": "Valid Until", "type": "number" } }, "required": [ "consent_id", "status", "account_id", "permissions", "valid_until" ], "title": "ConsentResponse", "type": "object" }, "CounterfactualChangeSchema": { "properties": { "delta_explanation": { "title": "Delta Explanation", "type": "string" }, "feature": { "title": "Feature", "type": "string" }, "original_value": { "title": "Original Value" }, "remediated_value": { "title": "Remediated Value" } }, "required": [ "feature", "original_value", "remediated_value", "delta_explanation" ], "title": "CounterfactualChangeSchema", "type": "object" }, "CounterfactualExplanationResponse": { "properties": { "alert_id": { "title": "Alert Id", "type": "string" }, "changes": { "default": [], "items": { "$ref": "#/components/schemas/CounterfactualChangeSchema" }, "title": "Changes", "type": "array" }, "is_cleared": { "title": "Is Cleared", "type": "boolean" }, "original_score": { "title": "Original Score", "type": "number" }, "remediated_score": { "title": "Remediated Score", "type": "number" }, "summary_text": { "default": "", "title": "Summary Text", "type": "string" } }, "required": [ "alert_id", "original_score", "remediated_score", "is_cleared" ], "title": "CounterfactualExplanationResponse", "type": "object" }, "CronCleanupResponse": { "description": "Structured response output for session & artifact maintenance cleanup.", "properties": { "expired_sessions_purged": { "default": 0, "description": "Count of expired user/investigator sessions purged", "title": "Expired Sessions Purged", "type": "integer" }, "gdpr_ttl_erasure_records": { "default": 0, "description": "Count of GDPR TTL erasure records processed", "title": "Gdpr Ttl Erasure Records", "type": "integer" }, "status": { "default": "SUCCESS", "title": "Status", "type": "string" }, "temporary_artifacts_removed": { "default": 0, "description": "Count of stale temporary files removed", "title": "Temporary Artifacts Removed", "type": "integer" }, "timestamp_iso": { "description": "ISO timestamp of cron execution completion", "title": "Timestamp Iso", "type": "string" } }, "required": [ "timestamp_iso" ], "title": "CronCleanupResponse", "type": "object" }, "CronHealthStatusResponse": { "description": "Structured system health status summary for scheduled monitoring.", "properties": { "active_bank_nodes_ping": { "default": 3, "title": "Active Bank Nodes Ping", "type": "integer" }, "database_pool_active": { "default": true, "title": "Database Pool Active", "type": "boolean" }, "disk_storage_available_mb": { "default": 10240.0, "title": "Disk Storage Available Mb", "type": "number" }, "sla_compliance_pct": { "default": 99.95, "title": "Sla Compliance Pct", "type": "number" }, "status": { "default": "HEALTHY", "title": "Status", "type": "string" }, "timestamp_iso": { "description": "ISO timestamp of health check", "title": "Timestamp Iso", "type": "string" } }, "required": [ "timestamp_iso" ], "title": "CronHealthStatusResponse", "type": "object" }, "DLGAuditRequest": { "properties": { "original_gradients": { "description": "Original gradients before secure aggregation", "items": { "type": "number" }, "title": "Original Gradients", "type": "array" }, "received_gradients": { "description": "Gradients received after aggregation (potential reconstruction vector)", "items": { "type": "number" }, "title": "Received Gradients", "type": "array" } }, "required": [ "original_gradients", "received_gradients" ], "title": "DLGAuditRequest", "type": "object" }, "DashboardStatsResponse": { "properties": { "active_scenarios": { "title": "Active Scenarios", "type": "integer" }, "critical_alerts": { "title": "Critical Alerts", "type": "integer" }, "cross_institution_matches": { "title": "Cross Institution Matches", "type": "integer" }, "graph_clusters": { "title": "Graph Clusters", "type": "integer" }, "open_cases": { "title": "Open Cases", "type": "integer" }, "shared_intelligence_items": { "title": "Shared Intelligence Items", "type": "integer" }, "total_alerts": { "title": "Total Alerts", "type": "integer" }, "total_entities": { "title": "Total Entities", "type": "integer" } }, "required": [ "total_alerts", "critical_alerts", "open_cases", "total_entities", "shared_intelligence_items", "cross_institution_matches", "active_scenarios", "graph_clusters" ], "title": "DashboardStatsResponse", "type": "object" }, "DataProfileResponse": { "description": "Statistical profile of a bank's dataset.", "properties": { "bank_name": { "title": "Bank Name", "type": "string" }, "fraud_ratio": { "title": "Fraud Ratio", "type": "number" }, "mean_account_age_days": { "title": "Mean Account Age Days", "type": "number" }, "mean_transaction_amount": { "title": "Mean Transaction Amount", "type": "number" }, "mean_velocity": { "title": "Mean Velocity", "type": "number" }, "num_transactions": { "title": "Num Transactions", "type": "integer" }, "std_transaction_amount": { "title": "Std Transaction Amount", "type": "number" }, "top_countries": { "items": { "type": "string" }, "title": "Top Countries", "type": "array" }, "top_merchant_categories": { "items": { "type": "string" }, "title": "Top Merchant Categories", "type": "array" } }, "required": [ "bank_name", "num_transactions", "fraud_ratio", "mean_transaction_amount", "std_transaction_amount", "top_merchant_categories", "top_countries", "mean_account_age_days", "mean_velocity" ], "title": "DataProfileResponse", "type": "object" }, "DecisionReplayResponse": { "properties": { "alert_id": { "title": "Alert Id", "type": "string" }, "audit_matched": { "default": true, "title": "Audit Matched", "type": "boolean" }, "features_snapshot": { "additionalProperties": true, "default": {}, "title": "Features Snapshot", "type": "object" }, "graph_snapshot": { "additionalProperties": { "type": "integer" }, "default": {}, "title": "Graph Snapshot", "type": "object" }, "model_auc": { "title": "Model Auc", "type": "number" }, "model_version": { "title": "Model Version", "type": "string" }, "policy_rules_evaluated": { "default": [], "items": { "$ref": "#/components/schemas/PolicyRuleEvaluationSchema" }, "title": "Policy Rules Evaluated", "type": "array" }, "reconstructed_risk_score": { "default": 0.0, "title": "Reconstructed Risk Score", "type": "number" }, "reproduced_severity": { "default": "low", "title": "Reproduced Severity", "type": "string" }, "timestamp": { "title": "Timestamp", "type": "string" }, "transaction_id": { "title": "Transaction Id", "type": "string" } }, "required": [ "alert_id", "transaction_id", "timestamp", "model_version", "model_auc" ], "title": "DecisionReplayResponse", "type": "object" }, "DriftAnalysisResponse": { "properties": { "auto_retrain_triggered": { "title": "Auto Retrain Triggered", "type": "boolean" }, "calibration": { "anyOf": [ { "$ref": "#/components/schemas/CalibrationResponse" }, { "type": "null" } ] }, "concept_drift_psi": { "title": "Concept Drift Psi", "type": "number" }, "evaluated_at": { "title": "Evaluated At", "type": "string" }, "feature_drifts": { "items": { "$ref": "#/components/schemas/FeatureDriftResponse" }, "title": "Feature Drifts", "type": "array" }, "max_psi": { "title": "Max Psi", "type": "number" }, "mean_ks_p_value": { "title": "Mean Ks P Value", "type": "number" }, "overall_status": { "title": "Overall Status", "type": "string" } }, "required": [ "overall_status", "max_psi", "mean_ks_p_value", "concept_drift_psi", "auto_retrain_triggered", "evaluated_at", "feature_drifts" ], "title": "DriftAnalysisResponse", "type": "object" }, "EdgeContributionSchema": { "properties": { "contribution_percentage": { "title": "Contribution Percentage", "type": "number" }, "relationship_type": { "title": "Relationship Type", "type": "string" }, "source": { "title": "Source", "type": "string" }, "target": { "title": "Target", "type": "string" }, "weight": { "title": "Weight", "type": "number" } }, "required": [ "source", "target", "relationship_type", "weight", "contribution_percentage" ], "title": "EdgeContributionSchema", "type": "object" }, "EntityFuzzyResolveMatch": { "properties": { "entity": { "$ref": "#/components/schemas/EntityResponse" }, "similarity_score": { "title": "Similarity Score", "type": "number" } }, "required": [ "entity", "similarity_score" ], "title": "EntityFuzzyResolveMatch", "type": "object" }, "EntityFuzzyResolveRequest": { "properties": { "entity_type": { "default": "customer", "title": "Entity Type", "type": "string" }, "query_name": { "title": "Query Name", "type": "string" }, "threshold": { "default": 0.7, "title": "Threshold", "type": "number" } }, "required": [ "query_name" ], "title": "EntityFuzzyResolveRequest", "type": "object" }, "EntityFuzzyResolveResponse": { "properties": { "matches": { "items": { "$ref": "#/components/schemas/EntityFuzzyResolveMatch" }, "title": "Matches", "type": "array" } }, "required": [ "matches" ], "title": "EntityFuzzyResolveResponse", "type": "object" }, "EntityProfileResponse": { "properties": { "alert_count": { "title": "Alert Count", "type": "integer" }, "attributes": { "additionalProperties": true, "default": {}, "title": "Attributes", "type": "object" }, "bank_id": { "title": "Bank Id", "type": "string" }, "banks_present": { "items": { "type": "string" }, "title": "Banks Present", "type": "array" }, "cross_institution_count": { "title": "Cross Institution Count", "type": "integer" }, "display_label": { "title": "Display Label", "type": "string" }, "entity_id": { "title": "Entity Id", "type": "string" }, "entity_type": { "title": "Entity Type", "type": "string" }, "first_seen": { "title": "First Seen", "type": "string" }, "last_seen": { "title": "Last Seen", "type": "string" }, "privacy_id": { "title": "Privacy Id", "type": "string" }, "relationship_count": { "title": "Relationship Count", "type": "integer" }, "risk_level": { "title": "Risk Level", "type": "string" } }, "required": [ "entity_id", "entity_type", "privacy_id", "display_label", "bank_id", "risk_level", "alert_count", "relationship_count", "cross_institution_count", "banks_present", "first_seen", "last_seen" ], "title": "EntityProfileResponse", "type": "object" }, "EntityResolveRequest": { "properties": { "privacy_hash": { "title": "Privacy Hash", "type": "string" } }, "required": [ "privacy_hash" ], "title": "EntityResolveRequest", "type": "object" }, "EntityResponse": { "properties": { "alert_count": { "default": 0, "title": "Alert Count", "type": "integer" }, "attributes": { "additionalProperties": true, "default": {}, "title": "Attributes", "type": "object" }, "bank_id": { "title": "Bank Id", "type": "string" }, "display_label": { "title": "Display Label", "type": "string" }, "entity_type": { "title": "Entity Type", "type": "string" }, "first_seen": { "title": "First Seen", "type": "string" }, "id": { "title": "Id", "type": "string" }, "last_seen": { "title": "Last Seen", "type": "string" }, "privacy_id": { "title": "Privacy Id", "type": "string" }, "risk_level": { "title": "Risk Level", "type": "string" } }, "required": [ "id", "entity_type", "privacy_id", "bank_id", "display_label", "risk_level", "first_seen", "last_seen" ], "title": "EntityResponse", "type": "object" }, "EvidenceRequest": { "properties": { "content": { "title": "Content", "type": "string" }, "evidence_type": { "title": "Evidence Type", "type": "string" }, "file_path": { "title": "File Path", "type": "string" }, "title": { "title": "Title", "type": "string" }, "uploaded_by": { "default": "analyst", "title": "Uploaded By", "type": "string" } }, "required": [ "evidence_type", "title", "file_path", "content" ], "title": "EvidenceRequest", "type": "object" }, "EvidenceResponse": { "properties": { "case_id": { "title": "Case Id", "type": "string" }, "content_hash": { "title": "Content Hash", "type": "string" }, "evidence_type": { "title": "Evidence Type", "type": "string" }, "file_path": { "title": "File Path", "type": "string" }, "id": { "title": "Id", "type": "string" }, "title": { "title": "Title", "type": "string" }, "uploaded_at": { "title": "Uploaded At", "type": "string" }, "uploaded_by": { "title": "Uploaded By", "type": "string" } }, "required": [ "id", "case_id", "evidence_type", "title", "file_path", "content_hash", "uploaded_by", "uploaded_at" ], "title": "EvidenceResponse", "type": "object" }, "ExplainabilityResponse": { "properties": { "alert_id": { "title": "Alert Id", "type": "string" }, "explanation_text": { "default": "", "title": "Explanation Text", "type": "string" }, "historical_evidence": { "items": { "type": "string" }, "title": "Historical Evidence", "type": "array" }, "model_confidence": { "title": "Model Confidence", "type": "number" }, "risk_factors": { "items": { "type": "string" }, "title": "Risk Factors", "type": "array" }, "risk_score_breakdown": { "default": [], "items": { "additionalProperties": true, "type": "object" }, "title": "Risk Score Breakdown", "type": "array" }, "top_features": { "items": { "additionalProperties": true, "type": "object" }, "title": "Top Features", "type": "array" } }, "required": [ "alert_id", "top_features", "risk_factors", "historical_evidence", "model_confidence" ], "title": "ExplainabilityResponse", "type": "object" }, "FeatureContributionItem": { "properties": { "contribution": { "title": "Contribution", "type": "number" }, "feature": { "title": "Feature", "type": "string" } }, "required": [ "feature", "contribution" ], "title": "FeatureContributionItem", "type": "object" }, "FeatureDriftResponse": { "properties": { "feature_name": { "title": "Feature Name", "type": "string" }, "ks_p_value": { "title": "Ks P Value", "type": "number" }, "ks_statistic": { "title": "Ks Statistic", "type": "number" }, "psi": { "title": "Psi", "type": "number" }, "status": { "title": "Status", "type": "string" }, "wasserstein_distance": { "title": "Wasserstein Distance", "type": "number" } }, "required": [ "feature_name", "ks_statistic", "ks_p_value", "wasserstein_distance", "psi", "status" ], "title": "FeatureDriftResponse", "type": "object" }, "GNNEmbeddingClusterRequest": { "description": "Request body for embedding-based fraud clustering.", "properties": { "min_cluster_size": { "default": 3, "maximum": 50.0, "minimum": 2.0, "title": "Min Cluster Size", "type": "integer" }, "similarity_threshold": { "default": 0.75, "maximum": 1.0, "minimum": 0.0, "title": "Similarity Threshold", "type": "number" } }, "title": "GNNEmbeddingClusterRequest", "type": "object" }, "GNNExplanationResponse": { "properties": { "node_id": { "title": "Node Id", "type": "string" }, "primary_driver_text": { "default": "", "title": "Primary Driver Text", "type": "string" }, "subgraph_edges_count": { "title": "Subgraph Edges Count", "type": "integer" }, "subgraph_nodes_count": { "title": "Subgraph Nodes Count", "type": "integer" }, "target_risk_level": { "title": "Target Risk Level", "type": "string" }, "top_contributing_edges": { "default": [], "items": { "$ref": "#/components/schemas/EdgeContributionSchema" }, "title": "Top Contributing Edges", "type": "array" } }, "required": [ "node_id", "target_risk_level", "subgraph_nodes_count", "subgraph_edges_count" ], "title": "GNNExplanationResponse", "type": "object" }, "GNNSimilarityRequest": { "description": "Request body for embedding similarity search.", "properties": { "entity_id": { "title": "Entity Id", "type": "string" }, "threshold": { "default": 0.7, "maximum": 1.0, "minimum": 0.0, "title": "Threshold", "type": "number" }, "top_k": { "default": 10, "maximum": 100.0, "minimum": 1.0, "title": "Top K", "type": "integer" } }, "required": [ "entity_id" ], "title": "GNNSimilarityRequest", "type": "object" }, "GNNTrainRequest": { "description": "Request body for GNN training.", "properties": { "bank_id": { "default": "bank_a", "description": "Bank to train on", "title": "Bank Id", "type": "string" }, "epochs": { "default": 5, "maximum": 50.0, "minimum": 1.0, "title": "Epochs", "type": "integer" }, "learning_rate": { "default": 0.01, "exclusiveMinimum": 0.0, "maximum": 1.0, "title": "Learning Rate", "type": "number" } }, "title": "GNNTrainRequest", "type": "object" }, "GNNTrainResponse": { "description": "Response from GNN training.", "properties": { "bank_id": { "title": "Bank Id", "type": "string" }, "embedding_dim": { "title": "Embedding Dim", "type": "integer" }, "fraud_nodes": { "title": "Fraud Nodes", "type": "integer" }, "loss": { "title": "Loss", "type": "number" }, "model_parameters": { "title": "Model Parameters", "type": "integer" }, "num_edges": { "title": "Num Edges", "type": "integer" }, "num_nodes": { "title": "Num Nodes", "type": "integer" } }, "required": [ "bank_id", "loss", "num_nodes", "num_edges", "fraud_nodes", "embedding_dim", "model_parameters" ], "title": "GNNTrainResponse", "type": "object" }, "GraphResponse": { "properties": { "center_entity_id": { "default": "", "title": "Center Entity Id", "type": "string" }, "clusters": { "default": [], "items": { "items": { "type": "string" }, "type": "array" }, "title": "Clusters", "type": "array" }, "depth": { "default": 2, "title": "Depth", "type": "integer" }, "edges": { "items": { "additionalProperties": true, "type": "object" }, "title": "Edges", "type": "array" }, "nodes": { "items": { "additionalProperties": true, "type": "object" }, "title": "Nodes", "type": "array" } }, "required": [ "nodes", "edges" ], "title": "GraphResponse", "type": "object" }, "GraphStatsResponse": { "properties": { "cluster_count": { "title": "Cluster Count", "type": "integer" }, "database_backend": { "default": "Redis (in-memory)", "title": "Database Backend", "type": "string" }, "nodes_by_risk": { "additionalProperties": { "type": "integer" }, "title": "Nodes By Risk", "type": "object" }, "nodes_by_type": { "additionalProperties": { "type": "integer" }, "title": "Nodes By Type", "type": "object" }, "total_edges": { "title": "Total Edges", "type": "integer" }, "total_nodes": { "title": "Total Nodes", "type": "integer" } }, "required": [ "total_nodes", "total_edges", "nodes_by_type", "nodes_by_risk", "cluster_count" ], "title": "GraphStatsResponse", "type": "object" }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "title": "Detail", "type": "array" } }, "title": "HTTPValidationError", "type": "object" }, "HandshakeRequest": { "properties": { "bank_id": { "description": "Unique bank tenant ID", "title": "Bank Id", "type": "string" }, "device_count": { "default": 1, "description": "Number of available GPUs", "title": "Device Count", "type": "integer" }, "hardware_type": { "description": "Available accelerator e.g. cuda or cpu", "title": "Hardware Type", "type": "string" }, "python_version": { "description": "Python execution runtime version", "title": "Python Version", "type": "string" }, "pytorch_version": { "description": "PyTorch installation version", "title": "Pytorch Version", "type": "string" }, "ram_gb": { "description": "Installed RAM in gigabytes", "title": "Ram Gb", "type": "number" } }, "required": [ "bank_id", "pytorch_version", "python_version", "hardware_type", "ram_gb" ], "title": "HandshakeRequest", "type": "object" }, "HandshakeResponse": { "properties": { "client_profile": { "anyOf": [ {}, { "type": "null" } ], "title": "Client Profile" }, "reason": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Reason" }, "registered": { "title": "Registered", "type": "boolean" }, "registered_at": { "title": "Registered At", "type": "number" }, "status": { "title": "Status", "type": "string" } }, "required": [ "registered", "status", "registered_at" ], "title": "HandshakeResponse", "type": "object" }, "HeartbeatRequest": { "properties": { "bank_id": { "title": "Bank Id", "type": "string" } }, "required": [ "bank_id" ], "title": "HeartbeatRequest", "type": "object" }, "HeartbeatResponse": { "properties": { "status": { "title": "Status", "type": "string" }, "success": { "title": "Success", "type": "boolean" }, "timestamp": { "title": "Timestamp", "type": "number" } }, "required": [ "success", "status", "timestamp" ], "title": "HeartbeatResponse", "type": "object" }, "InferenceDecision": { "description": "Decision category for real-time transaction screening.", "enum": [ "ALLOW", "REVIEW", "BLOCK" ], "title": "InferenceDecision", "type": "string" }, "IntelligenceStatsResponse": { "properties": { "avg_risk_indicator": { "title": "Avg Risk Indicator", "type": "number" }, "items_by_bank": { "additionalProperties": { "type": "integer" }, "title": "Items By Bank", "type": "object" }, "items_by_type": { "additionalProperties": { "type": "integer" }, "title": "Items By Type", "type": "object" }, "total_items": { "title": "Total Items", "type": "integer" } }, "required": [ "total_items", "items_by_type", "items_by_bank", "avg_risk_indicator" ], "title": "IntelligenceStatsResponse", "type": "object" }, "InvestigatorAuditLogResponse": { "properties": { "action": { "title": "Action", "type": "string" }, "id": { "title": "Id", "type": "string" }, "investigator": { "title": "Investigator", "type": "string" }, "metadata": { "additionalProperties": true, "default": {}, "title": "Metadata", "type": "object" }, "session_duration_sec": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Session Duration Sec" }, "target_id": { "title": "Target Id", "type": "string" }, "timestamp": { "title": "Timestamp", "type": "string" } }, "required": [ "id", "investigator", "action", "target_id", "timestamp" ], "title": "InvestigatorAuditLogResponse", "type": "object" }, "MIAAuditRequest": { "properties": { "test_losses": { "description": "Loss values on non-member test set", "items": { "type": "number" }, "title": "Test Losses", "type": "array" }, "train_losses": { "description": "Loss values on training set members", "items": { "type": "number" }, "title": "Train Losses", "type": "array" } }, "required": [ "train_losses", "test_losses" ], "title": "MIAAuditRequest", "type": "object" }, "MetricsResponse": { "description": "Evaluation metrics for a model.", "properties": { "accuracy": { "title": "Accuracy", "type": "number" }, "adversarial_robustness_score": { "default": 1.0, "title": "Adversarial Robustness Score", "type": "number" }, "auc_roc": { "title": "Auc Roc", "type": "number" }, "clean_accuracy": { "default": 0.0, "title": "Clean Accuracy", "type": "number" }, "confusion_matrix": { "items": { "items": { "type": "integer" }, "type": "array" }, "title": "Confusion Matrix", "type": "array" }, "disparate_impact": { "default": 1.0, "title": "Disparate Impact", "type": "number" }, "equal_opportunity_diff": { "default": 0.0, "title": "Equal Opportunity Diff", "type": "number" }, "f1_score": { "title": "F1 Score", "type": "number" }, "feature_importance": { "additionalProperties": { "type": "number" }, "default": {}, "title": "Feature Importance", "type": "object" }, "fgsm_evasion_rate": { "default": 0.0, "title": "Fgsm Evasion Rate", "type": "number" }, "loss": { "title": "Loss", "type": "number" }, "pgd_evasion_rate": { "default": 0.0, "title": "Pgd Evasion Rate", "type": "number" }, "precision": { "title": "Precision", "type": "number" }, "protected_selection_rate": { "default": 1.0, "title": "Protected Selection Rate", "type": "number" }, "recall": { "title": "Recall", "type": "number" }, "reference_selection_rate": { "default": 1.0, "title": "Reference Selection Rate", "type": "number" }, "robust_accuracy": { "default": 0.0, "title": "Robust Accuracy", "type": "number" }, "roc_fpr": { "items": { "type": "number" }, "title": "Roc Fpr", "type": "array" }, "roc_thresholds": { "items": { "type": "number" }, "title": "Roc Thresholds", "type": "array" }, "roc_tpr": { "items": { "type": "number" }, "title": "Roc Tpr", "type": "array" } }, "required": [ "accuracy", "precision", "recall", "f1_score", "auc_roc", "loss", "confusion_matrix", "roc_fpr", "roc_tpr", "roc_thresholds" ], "title": "MetricsResponse", "type": "object" }, "ModelInversionAuditRequest": { "properties": { "gradient_norms": { "description": "Per-parameter gradient L2 norms from a training round", "items": { "type": "number" }, "title": "Gradient Norms", "type": "array" } }, "required": [ "gradient_norms" ], "title": "ModelInversionAuditRequest", "type": "object" }, "ModelSignOffRequest": { "properties": { "bias_metric": { "default": 0.0, "description": "Evaluated model bias metric", "title": "Bias Metric", "type": "number" }, "drift_divergence": { "default": 0.0, "description": "Evaluated dataset drift divergence", "title": "Drift Divergence", "type": "number" }, "fairness_score": { "default": 1.0, "description": "Evaluated model fairness score", "title": "Fairness Score", "type": "number" }, "role": { "description": "Role of the signer ('compliance' or 'ml_engineer')", "title": "Role", "type": "string" }, "signature": { "description": "Cryptographic signature string", "title": "Signature", "type": "string" }, "user": { "description": "Name/identifier of the user signing off", "title": "User", "type": "string" } }, "required": [ "role", "user", "signature" ], "title": "ModelSignOffRequest", "type": "object" }, "ModelWeightsSchema": { "properties": { "flat_weights": { "items": { "type": "number" }, "title": "Flat Weights", "type": "array" }, "layer_shapes": { "items": { "items": { "type": "integer" }, "type": "array" }, "title": "Layer Shapes", "type": "array" } }, "required": [ "layer_shapes", "flat_weights" ], "title": "ModelWeightsSchema", "type": "object" }, "NegotiatedResponse": { "properties": { "bank_id": { "title": "Bank Id", "type": "string" }, "batch_size": { "title": "Batch Size", "type": "integer" }, "gradient_accumulation_steps": { "title": "Gradient Accumulation Steps", "type": "integer" }, "local_epochs": { "title": "Local Epochs", "type": "integer" }, "status": { "title": "Status", "type": "string" }, "use_cuda": { "title": "Use Cuda", "type": "boolean" } }, "required": [ "bank_id", "batch_size", "local_epochs", "gradient_accumulation_steps", "use_cuda", "status" ], "title": "NegotiatedResponse", "type": "object" }, "PSIMatch": { "properties": { "display_label_a": { "title": "Display Label A", "type": "string" }, "display_label_b": { "title": "Display Label B", "type": "string" }, "entity_type": { "title": "Entity Type", "type": "string" }, "matched_attributes": { "default": [], "items": { "type": "string" }, "title": "Matched Attributes", "type": "array" }, "privacy_hash": { "title": "Privacy Hash", "type": "string" }, "risk_level_a": { "title": "Risk Level A", "type": "string" }, "risk_level_b": { "title": "Risk Level B", "type": "string" }, "similarity_score": { "default": 1.0, "title": "Similarity Score", "type": "number" } }, "required": [ "privacy_hash", "entity_type", "display_label_a", "display_label_b", "risk_level_a", "risk_level_b" ], "title": "PSIMatch", "type": "object" }, "PSIProtocolStats": { "properties": { "attestation_verified": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Attestation Verified" }, "computation_time_ms": { "title": "Computation Time Ms", "type": "number" }, "data_exchanged_bytes": { "title": "Data Exchanged Bytes", "type": "integer" }, "enclave_execution": { "default": false, "title": "Enclave Execution", "type": "boolean" }, "mrenclave": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Mrenclave" }, "mrsigner": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Mrsigner" }, "num_entities_a": { "title": "Num Entities A", "type": "integer" }, "num_entities_b": { "title": "Num Entities B", "type": "integer" }, "prime_bit_length": { "title": "Prime Bit Length", "type": "integer" } }, "required": [ "computation_time_ms", "data_exchanged_bytes", "num_entities_a", "num_entities_b", "prime_bit_length" ], "title": "PSIProtocolStats", "type": "object" }, "PSIRequest": { "properties": { "bank_a_id": { "title": "Bank A Id", "type": "string" }, "bank_b_id": { "title": "Bank B Id", "type": "string" }, "enable_fuzzy": { "default": false, "title": "Enable Fuzzy", "type": "boolean" }, "entity_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entity Type" }, "fuzzy_threshold": { "default": 3, "title": "Fuzzy Threshold", "type": "integer" } }, "required": [ "bank_a_id", "bank_b_id" ], "title": "PSIRequest", "type": "object" }, "PSIResponse": { "properties": { "matches": { "items": { "$ref": "#/components/schemas/PSIMatch" }, "title": "Matches", "type": "array" }, "stats": { "$ref": "#/components/schemas/PSIProtocolStats" } }, "required": [ "matches", "stats" ], "title": "PSIResponse", "type": "object" }, "PolicyRuleEvaluationSchema": { "properties": { "contribution": { "title": "Contribution", "type": "number" }, "normalized_score": { "title": "Normalized Score", "type": "number" }, "raw_value": { "title": "Raw Value", "type": "number" }, "rule_code": { "title": "Rule Code", "type": "string" }, "signal_name": { "title": "Signal Name", "type": "string" }, "triggered": { "title": "Triggered", "type": "boolean" }, "weight": { "title": "Weight", "type": "number" } }, "required": [ "rule_code", "signal_name", "weight", "raw_value", "normalized_score", "contribution", "triggered" ], "title": "PolicyRuleEvaluationSchema", "type": "object" }, "PrivacyMechanism": { "description": "Available privacy-enhancing mechanisms.", "enum": [ "none", "differential_privacy", "secure_aggregation", "both" ], "title": "PrivacyMechanism", "type": "string" }, "RealtimeInferenceRequest": { "description": "Schema for online transaction authorization requests.", "properties": { "amount": { "example": 1250.5, "minimum": 0.0, "title": "Amount", "type": "number" }, "currency": { "default": "USD", "example": "USD", "title": "Currency", "type": "string" }, "force_fallback": { "default": false, "description": "Simulate model timeout/failure to test fallback engine.", "title": "Force Fallback", "type": "boolean" }, "merchant_category": { "default": "general_retail", "example": "crypto_exchange", "title": "Merchant Category", "type": "string" }, "source_account": { "example": "acc_src_991", "title": "Source Account", "type": "string" }, "target_account": { "example": "acc_dst_002", "title": "Target Account", "type": "string" }, "transaction_id": { "example": "tx_88992211", "title": "Transaction Id", "type": "string" }, "velocity_1h": { "default": 1, "example": 3, "minimum": 0.0, "title": "Velocity 1H", "type": "integer" } }, "required": [ "transaction_id", "amount", "source_account", "target_account" ], "title": "RealtimeInferenceRequest", "type": "object" }, "RealtimeInferenceResponse": { "description": "Schema for online transaction authorization decision responses.", "properties": { "decision": { "$ref": "#/components/schemas/InferenceDecision" }, "evaluated_by": { "title": "Evaluated By", "type": "string" }, "explanation": { "title": "Explanation", "type": "string" }, "latency_ms": { "title": "Latency Ms", "type": "number" }, "risk_score": { "title": "Risk Score", "type": "number" }, "transaction_id": { "title": "Transaction Id", "type": "string" } }, "required": [ "transaction_id", "risk_score", "decision", "latency_ms", "evaluated_by", "explanation" ], "title": "RealtimeInferenceResponse", "type": "object" }, "RelatedEntityItem": { "properties": { "entity_type": { "title": "Entity Type", "type": "string" }, "risk": { "title": "Risk", "type": "string" } }, "required": [ "entity_type", "risk" ], "title": "RelatedEntityItem", "type": "object" }, "RetrainTriggerResponse": { "properties": { "new_simulation_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "New Simulation Id" }, "reason": { "title": "Reason", "type": "string" }, "triggered": { "title": "Triggered", "type": "boolean" }, "triggered_at": { "title": "Triggered At", "type": "string" } }, "required": [ "triggered", "reason", "triggered_at" ], "title": "RetrainTriggerResponse", "type": "object" }, "RiskPropagationRequest": { "properties": { "decay_factor": { "default": 0.85, "title": "Decay Factor", "type": "number" } }, "title": "RiskPropagationRequest", "type": "object" }, "RiskPropagationResponse": { "properties": { "avg_score_change": { "title": "Avg Score Change", "type": "number" }, "max_score": { "title": "Max Score", "type": "number" }, "updated_nodes_count": { "title": "Updated Nodes Count", "type": "integer" } }, "required": [ "updated_nodes_count", "max_score", "avg_score_change" ], "title": "RiskPropagationResponse", "type": "object" }, "RiskWeightsResponse": { "properties": { "behavior_anomaly": { "title": "Behavior Anomaly", "type": "number" }, "chargeback_history": { "title": "Chargeback History", "type": "number" }, "country_risk": { "title": "Country Risk", "type": "number" }, "customer_history": { "title": "Customer History", "type": "number" }, "device_anomaly": { "title": "Device Anomaly", "type": "number" }, "merchant_reputation": { "title": "Merchant Reputation", "type": "number" }, "ml_prediction": { "title": "Ml Prediction", "type": "number" }, "previous_alerts": { "title": "Previous Alerts", "type": "number" }, "velocity_rules": { "title": "Velocity Rules", "type": "number" } }, "required": [ "ml_prediction", "velocity_rules", "merchant_reputation", "country_risk", "device_anomaly", "customer_history", "previous_alerts", "chargeback_history", "behavior_anomaly" ], "title": "RiskWeightsResponse", "type": "object" }, "RiskWeightsUpdateRequest": { "properties": { "behavior_anomaly": { "default": 0.07, "title": "Behavior Anomaly", "type": "number" }, "chargeback_history": { "default": 0.07, "title": "Chargeback History", "type": "number" }, "country_risk": { "default": 0.1, "title": "Country Risk", "type": "number" }, "customer_history": { "default": 0.1, "title": "Customer History", "type": "number" }, "device_anomaly": { "default": 0.08, "title": "Device Anomaly", "type": "number" }, "merchant_reputation": { "default": 0.1, "title": "Merchant Reputation", "type": "number" }, "ml_prediction": { "default": 0.25, "title": "Ml Prediction", "type": "number" }, "previous_alerts": { "default": 0.08, "title": "Previous Alerts", "type": "number" }, "velocity_rules": { "default": 0.15, "title": "Velocity Rules", "type": "number" } }, "title": "RiskWeightsUpdateRequest", "type": "object" }, "RoundResponse": { "description": "Details of a single federated training round.", "properties": { "aggregation_time_ms": { "title": "Aggregation Time Ms", "type": "number" }, "dropped_banks": { "items": { "type": "string" }, "title": "Dropped Banks", "type": "array" }, "global_loss": { "title": "Global Loss", "type": "number" }, "participating_banks": { "items": { "type": "string" }, "title": "Participating Banks", "type": "array" }, "per_bank_loss": { "additionalProperties": { "type": "number" }, "title": "Per Bank Loss", "type": "object" }, "per_bank_samples": { "additionalProperties": { "type": "integer" }, "title": "Per Bank Samples", "type": "object" }, "privacy_budget_spent": { "default": 0.0, "title": "Privacy Budget Spent", "type": "number" }, "round_duration_ms": { "title": "Round Duration Ms", "type": "number" }, "round_number": { "title": "Round Number", "type": "integer" } }, "required": [ "round_number", "global_loss", "participating_banks", "dropped_banks", "per_bank_loss", "per_bank_samples", "aggregation_time_ms", "round_duration_ms" ], "title": "RoundResponse", "type": "object" }, "ScenarioInfoResponse": { "properties": { "banks_involved": { "items": { "type": "string" }, "title": "Banks Involved", "type": "array" }, "description": { "title": "Description", "type": "string" }, "estimated_duration_seconds": { "title": "Estimated Duration Seconds", "type": "number" }, "estimated_events": { "title": "Estimated Events", "type": "integer" }, "name": { "title": "Name", "type": "string" }, "type": { "title": "Type", "type": "string" } }, "required": [ "type", "name", "description", "banks_involved", "estimated_events", "estimated_duration_seconds" ], "title": "ScenarioInfoResponse", "type": "object" }, "ScenarioStartRequest": { "properties": { "scenario_type": { "title": "Scenario Type", "type": "string" }, "speed_multiplier": { "default": 1.0, "maximum": 10.0, "minimum": 0.1, "title": "Speed Multiplier", "type": "number" } }, "required": [ "scenario_type" ], "title": "ScenarioStartRequest", "type": "object" }, "ScenarioStartResponse": { "properties": { "name": { "title": "Name", "type": "string" }, "scenario_id": { "title": "Scenario Id", "type": "string" }, "scenario_type": { "title": "Scenario Type", "type": "string" }, "status": { "default": "running", "title": "Status", "type": "string" }, "total_events": { "title": "Total Events", "type": "integer" } }, "required": [ "scenario_id", "scenario_type", "name", "total_events" ], "title": "ScenarioStartResponse", "type": "object" }, "ScenarioStatusResponse": { "properties": { "delivered_events": { "title": "Delivered Events", "type": "integer" }, "scenario_id": { "title": "Scenario Id", "type": "string" }, "speed_multiplier": { "title": "Speed Multiplier", "type": "number" }, "started_at": { "title": "Started At", "type": "string" }, "status": { "title": "Status", "type": "string" }, "total_events": { "title": "Total Events", "type": "integer" } }, "required": [ "scenario_id", "status", "total_events", "delivered_events", "speed_multiplier", "started_at" ], "title": "ScenarioStatusResponse", "type": "object" }, "ScoreTransactionRequest": { "properties": { "account_id": { "description": "Source account identifier", "maxLength": 256, "title": "Account Id", "type": "string" }, "amount": { "description": "Transaction amount", "minimum": 0.0, "title": "Amount", "type": "number" }, "country": { "default": "EE", "description": "ISO 3166-1 alpha-2 origin country code", "maxLength": 16, "title": "Country", "type": "string" }, "currency": { "default": "EUR", "description": "ISO 4217 currency code", "maxLength": 16, "title": "Currency", "type": "string" }, "device_id": { "description": "Device fingerprint identifier", "maxLength": 256, "title": "Device Id", "type": "string" }, "merchant_id": { "description": "Target merchant identifier", "maxLength": 256, "title": "Merchant Id", "type": "string" }, "transaction_id": { "description": "Unique transaction identifier", "maxLength": 256, "title": "Transaction Id", "type": "string" } }, "required": [ "transaction_id", "account_id", "amount", "merchant_id", "device_id" ], "title": "ScoreTransactionRequest", "type": "object" }, "ScoreTransactionResponse": { "properties": { "decision": { "description": "Automated decision: ALLOW, REVIEW, or BLOCK", "title": "Decision", "type": "string" }, "explanations": { "items": { "$ref": "#/components/schemas/FeatureContributionItem" }, "title": "Explanations", "type": "array" }, "latency_ms": { "description": "Response latency in milliseconds", "title": "Latency Ms", "type": "number" }, "model_version": { "default": "v2.4.1", "description": "Active global model version", "title": "Model Version", "type": "string" }, "related_entities": { "items": { "$ref": "#/components/schemas/RelatedEntityItem" }, "title": "Related Entities", "type": "array" }, "risk_level": { "description": "LOW, MEDIUM, or HIGH risk classification", "title": "Risk Level", "type": "string" }, "risk_score": { "description": "Normalized risk score [0, 1000]", "maximum": 1000.0, "minimum": 0.0, "title": "Risk Score", "type": "integer" } }, "required": [ "risk_score", "risk_level", "decision", "latency_ms" ], "title": "ScoreTransactionResponse", "type": "object" }, "SecurityStatusResponse": { "properties": { "abac": { "additionalProperties": true, "title": "Abac", "type": "object" }, "audit_chain": { "additionalProperties": true, "title": "Audit Chain", "type": "object" }, "mtls": { "additionalProperties": true, "title": "Mtls", "type": "object" }, "oidc": { "additionalProperties": true, "title": "Oidc", "type": "object" }, "vault": { "additionalProperties": true, "title": "Vault", "type": "object" } }, "required": [ "mtls", "oidc", "abac", "vault", "audit_chain" ], "title": "SecurityStatusResponse", "type": "object" }, "SessionDurationRequest": { "properties": { "duration_seconds": { "title": "Duration Seconds", "type": "number" }, "investigator": { "title": "Investigator", "type": "string" }, "time_window_end": { "title": "Time Window End", "type": "string" } }, "required": [ "investigator", "duration_seconds", "time_window_end" ], "title": "SessionDurationRequest", "type": "object" }, "SettlementTriggerRequest": { "properties": { "audit_proof_hash": { "title": "Audit Proof Hash", "type": "string" }, "contributions": { "additionalProperties": { "type": "number" }, "title": "Contributions", "type": "object" }, "currency": { "default": "wCBDC", "title": "Currency", "type": "string" }, "epoch_id": { "title": "Epoch Id", "type": "string" }, "quarantine_statuses": { "additionalProperties": { "type": "boolean" }, "title": "Quarantine Statuses", "type": "object" }, "total_pool_usd": { "default": 100000.0, "title": "Total Pool Usd", "type": "number" } }, "required": [ "epoch_id", "contributions", "audit_proof_hash" ], "title": "SettlementTriggerRequest", "type": "object" }, "SharedIntelligenceResponse": { "properties": { "created_at": { "title": "Created At", "type": "string" }, "description": { "title": "Description", "type": "string" }, "entity_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entity Type" }, "id": { "title": "Id", "type": "string" }, "intelligence_type": { "title": "Intelligence Type", "type": "string" }, "privacy_hash": { "title": "Privacy Hash", "type": "string" }, "related_alert_count": { "default": 0, "title": "Related Alert Count", "type": "integer" }, "risk_indicator": { "title": "Risk Indicator", "type": "number" }, "source_bank_id": { "title": "Source Bank Id", "type": "string" } }, "required": [ "id", "source_bank_id", "intelligence_type", "privacy_hash", "risk_indicator", "description", "created_at" ], "title": "SharedIntelligenceResponse", "type": "object" }, "SignalBreakdown": { "properties": { "explanation": { "title": "Explanation", "type": "string" }, "normalized_score": { "title": "Normalized Score", "type": "number" }, "raw_value": { "title": "Raw Value", "type": "number" }, "signal_name": { "title": "Signal Name", "type": "string" }, "weight": { "title": "Weight", "type": "number" } }, "required": [ "signal_name", "weight", "raw_value", "normalized_score", "explanation" ], "title": "SignalBreakdown", "type": "object" }, "SimulationConfigRequest": { "description": "Request body for creating a new simulation.", "properties": { "adversarial_alpha": { "default": 0.01, "description": "PGD step size for multi-step attack", "maximum": 0.1, "minimum": 0.001, "title": "Adversarial Alpha", "type": "number" }, "adversarial_attack_type": { "default": "fgsm", "description": "Adversarial attack algorithm for training: fgsm, pgd", "title": "Adversarial Attack Type", "type": "string" }, "adversarial_epsilon": { "default": 0.05, "description": "Adversarial perturbation magnitude (L_inf ball)", "maximum": 0.3, "minimum": 0.0, "title": "Adversarial Epsilon", "type": "number" }, "adversarial_loss_weight": { "default": 0.5, "description": "Weight on clean loss vs adversarial loss", "maximum": 1.0, "minimum": 0.0, "title": "Adversarial Loss Weight", "type": "number" }, "adversarial_steps": { "default": 5, "description": "PGD iteration steps", "maximum": 20.0, "minimum": 1.0, "title": "Adversarial Steps", "type": "integer" }, "aggregation_method": { "default": "fed_avg_weighted", "description": "Aggregation algorithm: fed_avg_weighted, fed_avg, krum, coordinate_wise_median, trimmed_mean (Yin et al. 2018), bulyan (El Mhamdi et al. 2018)", "title": "Aggregation Method", "type": "string" }, "bank_a_transactions": { "default": 50000, "maximum": 200000.0, "minimum": 1000.0, "title": "Bank A Transactions", "type": "integer" }, "bank_b_transactions": { "default": 30000, "maximum": 200000.0, "minimum": 1000.0, "title": "Bank B Transactions", "type": "integer" }, "bank_c_transactions": { "default": 20000, "maximum": 200000.0, "minimum": 1000.0, "title": "Bank C Transactions", "type": "integer" }, "batch_size": { "default": 64, "maximum": 512.0, "minimum": 8.0, "title": "Batch Size", "type": "integer" }, "byzantine_defense": { "default": "none", "description": "Byzantine defense strategy: none, krum, coordinate_wise_median", "title": "Byzantine Defense", "type": "string" }, "dp_delta": { "default": 1e-05, "exclusiveMinimum": 0.0, "title": "Dp Delta", "type": "number" }, "dp_epsilon": { "default": 1.0, "exclusiveMinimum": 0.0, "title": "Dp Epsilon", "type": "number" }, "dp_epsilon_limit": { "default": 8.0, "description": "Strict cumulative privacy budget epsilon limit", "exclusiveMinimum": 0.0, "title": "Dp Epsilon Limit", "type": "number" }, "dp_max_grad_norm": { "default": 1.0, "exclusiveMinimum": 0.0, "title": "Dp Max Grad Norm", "type": "number" }, "dp_mode": { "default": "post_hoc", "description": "DP implementation mode: post_hoc (clip+noise after training) or opacus (per-sample gradient privacy)", "title": "Dp Mode", "type": "string" }, "dropout_probability": { "default": 0.2, "maximum": 0.8, "minimum": 0.0, "title": "Dropout Probability", "type": "number" }, "enable_adversarial_training": { "default": false, "description": "Enable active defense adversarial training against evasion attacks", "title": "Enable Adversarial Training", "type": "boolean" }, "enable_bias_mitigation": { "default": false, "title": "Enable Bias Mitigation", "type": "boolean" }, "enable_dropout_simulation": { "default": false, "title": "Enable Dropout Simulation", "type": "boolean" }, "enable_latency_simulation": { "default": false, "title": "Enable Latency Simulation", "type": "boolean" }, "enable_poisoning_simulation": { "default": false, "title": "Enable Poisoning Simulation", "type": "boolean" }, "enable_reconnect_simulation": { "default": true, "title": "Enable Reconnect Simulation", "type": "boolean" }, "enable_streaming_gnn": { "default": false, "description": "Enable real-time streaming GNN (Graph Attention Network) online training", "title": "Enable Streaming Gnn", "type": "boolean" }, "enable_web3_settlement": { "default": false, "description": "Enable Web3 & CBDC Smart Contract automated incentive settlement", "title": "Enable Web3 Settlement", "type": "boolean" }, "fairness_lambda": { "default": 0.5, "description": "Weight on covariance constraint for debiasing", "maximum": 2.0, "minimum": 0.0, "title": "Fairness Lambda", "type": "number" }, "fedopt_beta1": { "default": 0.9, "description": "FedOpt beta1 momentum parameter", "maximum": 1.0, "minimum": 0.0, "title": "Fedopt Beta1", "type": "number" }, "fedopt_beta2": { "default": 0.999, "description": "FedOpt beta2 momentum parameter", "maximum": 1.0, "minimum": 0.0, "title": "Fedopt Beta2", "type": "number" }, "fedopt_server_lr": { "default": 0.01, "description": "FedOpt server learning rate", "exclusiveMinimum": 0.0, "maximum": 1.0, "title": "Fedopt Server Lr", "type": "number" }, "fedopt_tau": { "default": 0.001, "description": "FedOpt server optimizer epsilon equivalent", "exclusiveMinimum": 0.0, "title": "Fedopt Tau", "type": "number" }, "fedprox_mu": { "default": 0.0, "description": "FedProx proximal coefficient", "maximum": 10.0, "minimum": 0.0, "title": "Fedprox Mu", "type": "number" }, "fl_engine_type": { "default": "custom", "description": "FL engine: custom (built-in simulator) or flower (Flower framework via Ray simulation)", "title": "Fl Engine Type", "type": "string" }, "hardware_isolation_mode": { "default": "none", "description": "Hardware isolation / Cryptographic mode: none, tee, fhe", "title": "Hardware Isolation Mode", "type": "string" }, "latency_max_ms": { "default": 500, "maximum": 5000.0, "minimum": 0.0, "title": "Latency Max Ms", "type": "integer" }, "latency_min_ms": { "default": 50, "maximum": 5000.0, "minimum": 0.0, "title": "Latency Min Ms", "type": "integer" }, "learning_rate": { "default": 0.001, "exclusiveMinimum": 0.0, "maximum": 1.0, "title": "Learning Rate", "type": "number" }, "local_epochs": { "default": 3, "description": "Local training epochs per round", "maximum": 20.0, "minimum": 1.0, "title": "Local Epochs", "type": "integer" }, "min_clients_per_round": { "default": 2, "maximum": 3.0, "minimum": 1.0, "title": "Min Clients Per Round", "type": "integer" }, "moon_mu": { "default": 0.0, "description": "MOON model-contrastive loss coefficient", "maximum": 10.0, "minimum": 0.0, "title": "Moon Mu", "type": "number" }, "moon_temperature": { "default": 0.5, "description": "MOON contrastive loss temperature", "exclusiveMinimum": 0.0, "maximum": 2.0, "title": "Moon Temperature", "type": "number" }, "num_rounds": { "default": 10, "description": "Number of federated rounds", "maximum": 100.0, "minimum": 1.0, "title": "Num Rounds", "type": "integer" }, "poisoning_bank_id": { "default": "bank_c", "description": "Bank to act as malicious client", "title": "Poisoning Bank Id", "type": "string" }, "poisoning_scale": { "default": 5.0, "description": "Poisoning noise magnitude", "maximum": 20.0, "minimum": 1.0, "title": "Poisoning Scale", "type": "number" }, "privacy_mechanism": { "$ref": "#/components/schemas/PrivacyMechanism", "default": "none" }, "settlement_currency": { "default": "wCBDC", "description": "Settlement currency: wCBDC, USDC, or e-TRY", "title": "Settlement Currency", "type": "string" }, "smart_contract_address": { "default": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F", "description": "Deployed Consortium Settlement Smart Contract Address", "title": "Smart Contract Address", "type": "string" } }, "title": "SimulationConfigRequest", "type": "object" }, "SimulationCreateResponse": { "description": "Response after initiating a simulation.", "properties": { "id": { "title": "Id", "type": "string" }, "message": { "title": "Message", "type": "string" }, "status": { "$ref": "#/components/schemas/SimulationStatus" } }, "required": [ "id", "status", "message" ], "title": "SimulationCreateResponse", "type": "object" }, "SimulationDetailResponse": { "description": "Full simulation details including per-bank metrics.", "properties": { "banks": { "default": [], "items": { "$ref": "#/components/schemas/BankResponse" }, "title": "Banks", "type": "array" }, "completed_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Completed At" }, "config": { "$ref": "#/components/schemas/SimulationConfigRequest" }, "created_at": { "format": "date-time", "title": "Created At", "type": "string" }, "current_round": { "title": "Current Round", "type": "integer" }, "duration_seconds": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Duration Seconds" }, "error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Error Message" }, "fhe_key_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fhe Key Id" }, "fhe_noise_bound": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fhe Noise Bound" }, "fhe_poly_degree": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Fhe Poly Degree" }, "id": { "title": "Id", "type": "string" }, "on_chain_payouts": { "default": [], "items": { "additionalProperties": true, "type": "object" }, "title": "On Chain Payouts", "type": "array" }, "progress_pct": { "title": "Progress Pct", "type": "number" }, "rounds": { "default": [], "items": { "$ref": "#/components/schemas/RoundResponse" }, "title": "Rounds", "type": "array" }, "settlement_block_number": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Settlement Block Number" }, "settlement_status": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Settlement Status" }, "settlement_tx_hash": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Settlement Tx Hash" }, "started_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Started At" }, "status": { "$ref": "#/components/schemas/SimulationStatus" }, "streaming_gnn_edge_count": { "default": 0, "title": "Streaming Gnn Edge Count", "type": "integer" }, "streaming_gnn_loss_history": { "default": [], "items": { "type": "number" }, "title": "Streaming Gnn Loss History", "type": "array" }, "streaming_gnn_node_count": { "default": 0, "title": "Streaming Gnn Node Count", "type": "integer" }, "tee_attestation_signature": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tee Attestation Signature" }, "tee_mrenclave": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tee Mrenclave" }, "tee_mrsigner": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tee Mrsigner" }, "total_rounds": { "title": "Total Rounds", "type": "integer" } }, "required": [ "id", "status", "config", "current_round", "total_rounds", "progress_pct", "created_at" ], "title": "SimulationDetailResponse", "type": "object" }, "SimulationStatus": { "description": "Lifecycle states of a simulation run.", "enum": [ "pending", "initializing_clients", "generating_data", "training_local", "training_federated", "evaluating", "completed", "failed" ], "title": "SimulationStatus", "type": "string" }, "SimulationSummaryResponse": { "description": "Abbreviated simulation info for list views.", "properties": { "completed_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Completed At" }, "created_at": { "format": "date-time", "title": "Created At", "type": "string" }, "current_round": { "title": "Current Round", "type": "integer" }, "duration_seconds": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Duration Seconds" }, "id": { "title": "Id", "type": "string" }, "progress_pct": { "title": "Progress Pct", "type": "number" }, "status": { "$ref": "#/components/schemas/SimulationStatus" }, "total_rounds": { "title": "Total Rounds", "type": "integer" } }, "required": [ "id", "status", "current_round", "total_rounds", "progress_pct", "created_at" ], "title": "SimulationSummaryResponse", "type": "object" }, "TemporalAnomalyResponse": { "properties": { "edges_count": { "title": "Edges Count", "type": "integer" }, "node_ids": { "items": { "type": "string" }, "title": "Node Ids", "type": "array" }, "subgraph_id": { "title": "Subgraph Id", "type": "integer" }, "time_window_start": { "title": "Time Window Start", "type": "string" }, "velocity_score": { "title": "Velocity Score", "type": "number" } }, "required": [ "subgraph_id", "node_ids", "edges_count", "velocity_score", "time_window_start" ], "title": "TemporalAnomalyResponse", "type": "object" }, "TransactionFeedbackRequest": { "properties": { "actual_label": { "description": "Actual outcome (0 for legitimate, 1 for fraud)", "maximum": 1.0, "minimum": 0.0, "title": "Actual Label", "type": "integer" }, "simulation_id": { "title": "Simulation Id", "type": "string" }, "transaction_id": { "title": "Transaction Id", "type": "string" } }, "required": [ "transaction_id", "actual_label", "simulation_id" ], "title": "TransactionFeedbackRequest", "type": "object" }, "TransactionPredictRequest": { "properties": { "account_age_days": { "default": 365, "description": "Age of the customer account in days", "minimum": 0.0, "title": "Account Age Days", "type": "integer" }, "bank_id": { "anyOf": [ { "maxLength": 256, "type": "string" }, { "type": "null" } ], "description": "Optional bank identifier. Defaults to gateway ID.", "title": "Bank Id" }, "chargeback_count": { "default": 0, "description": "Customer chargeback count", "minimum": 0.0, "title": "Chargeback Count", "type": "integer" }, "country_code": { "default": "US", "description": "Originating ISO country code (e.g. US, NG, TR)", "maxLength": 256, "title": "Country Code", "type": "string" }, "customer_history_score": { "default": 0.95, "description": "Trustworthiness score of the customer", "maximum": 1.0, "minimum": 0.0, "title": "Customer History Score", "type": "number" }, "device_type": { "default": "web_browser", "description": "Type of device (e.g. web_browser, mobile_app)", "maxLength": 256, "title": "Device Type", "type": "string" }, "hour_of_day": { "default": 12, "description": "Hour of the transaction", "maximum": 23.0, "minimum": 0.0, "title": "Hour Of Day", "type": "integer" }, "merchant_category": { "default": "grocery", "description": "Merchant category name (e.g. crypto, grocery, travel)", "maxLength": 256, "title": "Merchant Category", "type": "string" }, "merchant_risk_score": { "default": 0.05, "description": "Historical fraud rate of the merchant", "maximum": 1.0, "minimum": 0.0, "title": "Merchant Risk Score", "type": "number" }, "simulation_id": { "anyOf": [ { "maxLength": 256, "type": "string" }, { "type": "null" } ], "description": "Optional simulation run ID to resolve versioned models.", "title": "Simulation Id" }, "transaction_amount": { "description": "Amount of the transaction", "minimum": 0.0, "title": "Transaction Amount", "type": "number" }, "velocity": { "default": 1.0, "description": "Transaction velocity (txns/hr)", "minimum": 0.0, "title": "Velocity", "type": "number" } }, "required": [ "transaction_amount" ], "title": "TransactionPredictRequest", "type": "object" }, "TransactionPredictResponse": { "properties": { "alert_details": { "anyOf": [ { "$ref": "#/components/schemas/AlertDetails" }, { "type": "null" } ] }, "breakdown": { "items": { "$ref": "#/components/schemas/SignalBreakdown" }, "title": "Breakdown", "type": "array" }, "fraud_probability": { "title": "Fraud Probability", "type": "number" }, "is_fraud_suspected": { "title": "Is Fraud Suspected", "type": "boolean" }, "policy_action": { "default": "ALLOW", "description": "Evaluated action from dynamic policy engine", "title": "Policy Action", "type": "string" }, "risk_level": { "title": "Risk Level", "type": "string" }, "risk_score": { "title": "Risk Score", "type": "number" }, "triggered_rules": { "description": "List of triggered policy rules", "items": { "type": "string" }, "title": "Triggered Rules", "type": "array" } }, "required": [ "fraud_probability", "risk_score", "is_fraud_suspected", "risk_level", "breakdown" ], "title": "TransactionPredictResponse", "type": "object" }, "TransactionResponse": { "properties": { "amount": { "title": "Amount", "type": "number" }, "booking_date": { "title": "Booking Date", "type": "string" }, "creditor_name": { "title": "Creditor Name", "type": "string" }, "currency": { "title": "Currency", "type": "string" }, "debtor_name": { "title": "Debtor Name", "type": "string" }, "remittance_info": { "title": "Remittance Info", "type": "string" }, "transaction_id": { "title": "Transaction Id", "type": "string" } }, "required": [ "transaction_id", "amount", "currency", "booking_date", "debtor_name", "creditor_name", "remittance_info" ], "title": "TransactionResponse", "type": "object" }, "ValidationError": { "properties": { "ctx": { "title": "Context", "type": "object" }, "input": { "title": "Input" }, "loc": { "items": { "anyOf": [ { "type": "string" }, { "type": "integer" } ] }, "title": "Location", "type": "array" }, "msg": { "title": "Message", "type": "string" }, "type": { "title": "Error Type", "type": "string" } }, "required": [ "loc", "msg", "type" ], "title": "ValidationError", "type": "object" } } }, "info": { "description": "Privacy-preserving cross-institution fraud detection using Federated Learning. Simulates collaborative model training between three independent banks without sharing raw transaction data. Phase 2 adds collaborative alert intelligence, risk scoring, case management, entity resolution, and relationship graphs.", "title": "Collaborative Fraud Intelligence Simulator", "version": "0.2.0" }, "openapi": "3.1.0", "paths": { "/": { "get": { "description": "API root \u2014 returns basic service info.", "operationId": "root__get", "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Root Get", "type": "object" } } }, "description": "Successful Response" } }, "summary": "Root", "tags": [ "root" ] } }, "/api/v1/alerts": { "get": { "description": "List fraud alerts with optional filters.", "operationId": "list_alerts_api_v1_alerts_get", "parameters": [ { "in": "query", "name": "bank_id", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bank Id" } }, { "in": "query", "name": "severity", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Severity" } }, { "in": "query", "name": "status", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Status" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/AlertResponse" }, "title": "Response List Alerts Api V1 Alerts Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "List Alerts", "tags": [ "alerts" ] } }, "/api/v1/alerts/{alert_id}": { "get": { "description": "Get alert detail.", "operationId": "get_alert_api_v1_alerts__alert_id__get", "parameters": [ { "in": "path", "name": "alert_id", "required": true, "schema": { "title": "Alert Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AlertResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Alert", "tags": [ "alerts" ] } }, "/api/v1/alerts/{alert_id}/counterfactuals": { "get": { "description": "Get actionable counterfactual remediation paths for an alert.", "operationId": "get_alert_counterfactuals_api_v1_alerts__alert_id__counterfactuals_get", "parameters": [ { "in": "path", "name": "alert_id", "required": true, "schema": { "title": "Alert Id", "type": "string" } }, { "in": "query", "name": "target_score", "required": false, "schema": { "default": 350.0, "maximum": 800.0, "minimum": 50.0, "title": "Target Score", "type": "number" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CounterfactualExplanationResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Alert Counterfactuals", "tags": [ "alerts" ] } }, "/api/v1/alerts/{alert_id}/decision-replay": { "get": { "description": "Execute deterministic decision replay for regulatory inference audit.", "operationId": "replay_alert_decision_api_v1_alerts__alert_id__decision_replay_get", "parameters": [ { "in": "path", "name": "alert_id", "required": true, "schema": { "title": "Alert Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DecisionReplayResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Replay Alert Decision", "tags": [ "alerts" ] } }, "/api/v1/alerts/{alert_id}/explain": { "get": { "description": "Get explainability report for an alert.", "operationId": "explain_alert_api_v1_alerts__alert_id__explain_get", "parameters": [ { "in": "path", "name": "alert_id", "required": true, "schema": { "title": "Alert Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExplainabilityResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Explain Alert", "tags": [ "alerts" ] } }, "/api/v1/alerts/{alert_id}/gnn-explanation": { "get": { "description": "Compute GNNExplainer graph attribution for the entity associated with an alert.", "operationId": "get_alert_gnn_explanation_api_v1_alerts__alert_id__gnn_explanation_get", "parameters": [ { "in": "path", "name": "alert_id", "required": true, "schema": { "title": "Alert Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GNNExplanationResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Alert Gnn Explanation", "tags": [ "alerts" ] } }, "/api/v1/bank-client/evaluate": { "post": { "description": "Evaluate the global weights on this bank client local test partition.", "operationId": "evaluate_global_weights_api_v1_bank_client_evaluate_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankEvaluateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankEvaluateResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Evaluate Global Weights", "tags": [ "bank-client" ] } }, "/api/v1/bank-client/initialize": { "post": { "description": "Deterministically generate and cache the dataset partition for this bank client.", "operationId": "initialize_dataset_api_v1_bank_client_initialize_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankInitializeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Initialize Dataset Api V1 Bank Client Initialize Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Initialize Dataset", "tags": [ "bank-client" ] } }, "/api/v1/bank-client/train": { "post": { "description": "Train the model locally on the bank client cached dataset partition.", "operationId": "train_local_weights_api_v1_bank_client_train_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankTrainRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankTrainResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Train Local Weights", "tags": [ "bank-client" ] } }, "/api/v1/banks": { "get": { "description": "List all bank configurations (reference data).", "operationId": "list_banks_api_v1_banks_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response List Banks Api V1 Banks Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "List Banks", "tags": [ "banks" ] } }, "/api/v1/banks/distributions": { "get": { "description": "Get distribution data for all banks to visualize Non-IID data drift.\n\nGenerates a small sample (1000 txns/bank) and computes:\n- Transaction amount histograms (15 bins, log-scale)\n- Hourly fraud rate distributions (24h)\n- Merchant category risk profiles (top 8)\n- KS divergence statistics between bank pairs\n- PSI & JS Divergence for both Feature Drift and Concept Drift", "operationId": "get_bank_distributions_api_v1_banks_distributions_get", "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Get Bank Distributions Api V1 Banks Distributions Get", "type": "object" } } }, "description": "Successful Response" } }, "summary": "Get Bank Distributions", "tags": [ "banks" ] } }, "/api/v1/banks/{bank_id}": { "get": { "description": "Get details for a specific bank.", "operationId": "get_bank_api_v1_banks__bank_id__get", "parameters": [ { "in": "path", "name": "bank_id", "required": true, "schema": { "title": "Bank Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Get Bank Api V1 Banks Bank Id Get", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Bank", "tags": [ "banks" ] } }, "/api/v1/cases": { "get": { "description": "List investigation cases.", "operationId": "list_cases_api_v1_cases_get", "parameters": [ { "in": "query", "name": "status", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Status" } }, { "in": "query", "name": "priority", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Priority" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/CaseSummaryResponse" }, "title": "Response List Cases Api V1 Cases Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "List Cases", "tags": [ "cases" ] }, "post": { "description": "Create a new investigation case.\n\nSupports idempotent creation via the ``Idempotency-Key`` request header.\nIf a request with the same key was successfully processed within 24 hours,\nthe original response is returned without creating a duplicate case.", "operationId": "create_case_api_v1_cases_post", "parameters": [ { "in": "header", "name": "Idempotency-Key", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Idempotency-Key" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseCreateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Create Case", "tags": [ "cases" ] } }, "/api/v1/cases/audit/logs": { "get": { "description": "Retrieve investigator activity logs.", "operationId": "get_audit_logs_api_v1_cases_audit_logs_get", "parameters": [ { "in": "query", "name": "limit", "required": false, "schema": { "default": 100, "maximum": 500, "minimum": 1, "title": "Limit", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/InvestigatorAuditLogResponse" }, "title": "Response Get Audit Logs Api V1 Cases Audit Logs Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Audit Logs", "tags": [ "cases" ] } }, "/api/v1/cases/audit/session": { "post": { "description": "Log investigator session duration.", "operationId": "log_session_duration_api_v1_cases_audit_session_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionDurationRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Log Session Duration Api V1 Cases Audit Session Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Log Session Duration", "tags": [ "cases" ] } }, "/api/v1/cases/{case_id}": { "get": { "description": "Get case detail.", "operationId": "get_case_api_v1_cases__case_id__get", "parameters": [ { "in": "path", "name": "case_id", "required": true, "schema": { "title": "Case Id", "type": "string" } }, { "in": "query", "name": "actor", "required": false, "schema": { "default": "analyst", "title": "Actor", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Case", "tags": [ "cases" ] }, "patch": { "description": "Update case status.", "operationId": "update_case_status_api_v1_cases__case_id__patch", "parameters": [ { "in": "path", "name": "case_id", "required": true, "schema": { "title": "Case Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseStatusRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Update Case Status", "tags": [ "cases" ] } }, "/api/v1/cases/{case_id}/alerts": { "post": { "description": "Link an alert to a case.", "operationId": "link_alert_api_v1_cases__case_id__alerts_post", "parameters": [ { "in": "path", "name": "case_id", "required": true, "schema": { "title": "Case Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseLinkAlertRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Link Alert", "tags": [ "cases" ] } }, "/api/v1/cases/{case_id}/evidence": { "get": { "description": "Retrieve all evidence registered for a case.", "operationId": "get_case_evidence_api_v1_cases__case_id__evidence_get", "parameters": [ { "in": "path", "name": "case_id", "required": true, "schema": { "title": "Case Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/EvidenceResponse" }, "title": "Response Get Case Evidence Api V1 Cases Case Id Evidence Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Case Evidence", "tags": [ "cases" ] }, "post": { "description": "Register new case evidence with SHA-256 hash verification.", "operationId": "register_evidence_api_v1_cases__case_id__evidence_post", "parameters": [ { "in": "path", "name": "case_id", "required": true, "schema": { "title": "Case Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EvidenceRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EvidenceResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Register Evidence", "tags": [ "cases" ] } }, "/api/v1/cases/{case_id}/export": { "get": { "description": "Export investigation summary as markdown.", "operationId": "export_case_api_v1_cases__case_id__export_get", "parameters": [ { "in": "path", "name": "case_id", "required": true, "schema": { "title": "Case Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Export Case Api V1 Cases Case Id Export Get", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Export Case", "tags": [ "cases" ] } }, "/api/v1/cases/{case_id}/file-sar": { "post": { "description": "Generate and validate FinCEN BSA SAR XML payload for a confirmed fraud case.", "operationId": "file_sar_report_api_v1_cases__case_id__file_sar_post", "parameters": [ { "in": "path", "name": "case_id", "required": true, "schema": { "title": "Case Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response File Sar Report Api V1 Cases Case Id File Sar Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "File Sar Report", "tags": [ "cases" ] } }, "/api/v1/cases/{case_id}/notes": { "post": { "description": "Add an investigation note.", "operationId": "add_note_api_v1_cases__case_id__notes_post", "parameters": [ { "in": "path", "name": "case_id", "required": true, "schema": { "title": "Case Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseNoteRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CaseNoteResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Add Note", "tags": [ "cases" ] } }, "/api/v1/cases/{case_id}/sar-report": { "get": { "description": "Download generated FinCEN SAR XML report for the case.", "operationId": "download_sar_report_api_v1_cases__case_id__sar_report_get", "parameters": [ { "in": "path", "name": "case_id", "required": true, "schema": { "title": "Case Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Download Sar Report", "tags": [ "cases" ] } }, "/api/v1/cases/{case_id}/timeline": { "get": { "description": "Get investigation timeline.", "operationId": "get_timeline_api_v1_cases__case_id__timeline_get", "parameters": [ { "in": "path", "name": "case_id", "required": true, "schema": { "title": "Case Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/CaseEventResponse" }, "title": "Response Get Timeline Api V1 Cases Case Id Timeline Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Timeline", "tags": [ "cases" ] } }, "/api/v1/coordinator/clients": { "get": { "description": "Retrieve capability profiles of all dynamically registered banks.", "operationId": "list_registered_clients_api_v1_coordinator_clients_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ClientCapabilityResponse" }, "title": "Response List Registered Clients Api V1 Coordinator Clients Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "List Registered Clients", "tags": [ "coordinator" ] } }, "/api/v1/coordinator/handshake": { "post": { "description": "Register client capabilities dynamically to negotiate compatible execution params.", "operationId": "perform_handshake_api_v1_coordinator_handshake_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HandshakeRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HandshakeResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Perform Handshake", "tags": [ "coordinator" ] } }, "/api/v1/coordinator/heartbeat": { "post": { "description": "Post heartbeat check-in to remain in the active participant registry.", "operationId": "post_heartbeat_api_v1_coordinator_heartbeat_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HeartbeatRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HeartbeatResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Post Heartbeat", "tags": [ "coordinator" ] } }, "/api/v1/coordinator/negotiate": { "get": { "description": "Get training hyper-parameters customized for a bank client's runtime capability.", "operationId": "negotiate_training_params_api_v1_coordinator_negotiate_get", "parameters": [ { "in": "query", "name": "bank_id", "required": true, "schema": { "title": "Bank Id", "type": "string" } }, { "in": "query", "name": "base_batch_size", "required": false, "schema": { "default": 32, "title": "Base Batch Size", "type": "integer" } }, { "in": "query", "name": "base_epochs", "required": false, "schema": { "default": 5, "title": "Base Epochs", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NegotiatedResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Negotiate Training Params", "tags": [ "coordinator" ] } }, "/api/v1/dashboard/alerts-by-bank": { "get": { "description": "Alert count grouped by bank.", "operationId": "alerts_by_bank_api_v1_dashboard_alerts_by_bank_get", "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": { "type": "integer" }, "title": "Response Alerts By Bank Api V1 Dashboard Alerts By Bank Get", "type": "object" } } }, "description": "Successful Response" } }, "summary": "Alerts By Bank", "tags": [ "dashboard" ] } }, "/api/v1/dashboard/alerts-by-severity": { "get": { "description": "Alert count grouped by severity.", "operationId": "alerts_by_severity_api_v1_dashboard_alerts_by_severity_get", "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": { "type": "integer" }, "title": "Response Alerts By Severity Api V1 Dashboard Alerts By Severity Get", "type": "object" } } }, "description": "Successful Response" } }, "summary": "Alerts By Severity", "tags": [ "dashboard" ] } }, "/api/v1/dashboard/entities-by-risk": { "get": { "description": "Entity count grouped by risk level.", "operationId": "entities_by_risk_api_v1_dashboard_entities_by_risk_get", "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": { "type": "integer" }, "title": "Response Entities By Risk Api V1 Dashboard Entities By Risk Get", "type": "object" } } }, "description": "Successful Response" } }, "summary": "Entities By Risk", "tags": [ "dashboard" ] } }, "/api/v1/dashboard/risk-weights": { "get": { "description": "Get current risk scoring weights.", "operationId": "get_risk_weights_api_v1_dashboard_risk_weights_get", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RiskWeightsResponse" } } }, "description": "Successful Response" } }, "summary": "Get Risk Weights", "tags": [ "dashboard" ] }, "put": { "description": "Update risk scoring weights.", "operationId": "update_risk_weights_api_v1_dashboard_risk_weights_put", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RiskWeightsUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RiskWeightsResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Update Risk Weights", "tags": [ "dashboard" ] } }, "/api/v1/dashboard/stats": { "get": { "description": "Get aggregated dashboard statistics.", "operationId": "dashboard_stats_api_v1_dashboard_stats_get", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DashboardStatsResponse" } } }, "description": "Successful Response" } }, "summary": "Dashboard Stats", "tags": [ "dashboard" ] } }, "/api/v1/dashboard/top-risky-merchants": { "get": { "description": "Top merchants by alert involvement.", "operationId": "top_risky_merchants_api_v1_dashboard_top_risky_merchants_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response Top Risky Merchants Api V1 Dashboard Top Risky Merchants Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "Top Risky Merchants", "tags": [ "dashboard" ] } }, "/api/v1/entities": { "get": { "description": "List entities with optional filters.", "operationId": "list_entities_api_v1_entities_get", "parameters": [ { "in": "query", "name": "entity_type", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entity Type" } }, { "in": "query", "name": "bank_id", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Bank Id" } }, { "in": "query", "name": "risk_level", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Risk Level" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/EntityResponse" }, "title": "Response List Entities Api V1 Entities Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "List Entities", "tags": [ "entities" ] } }, "/api/v1/entities/fuzzy-resolve": { "post": { "description": "Find entities matching a raw name fuzzily using MinHash LSH similarities.", "operationId": "run_fuzzy_resolve_api_v1_entities_fuzzy_resolve_post", "parameters": [ { "in": "query", "name": "actor", "required": false, "schema": { "default": "analyst", "title": "Actor", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityFuzzyResolveRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityFuzzyResolveResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Run Fuzzy Resolve", "tags": [ "entities" ] } }, "/api/v1/entities/hmac-tokenize": { "post": { "description": "Tokenize raw identifier into tenant-salted HMAC token enforcing Zero Raw PII policy.", "operationId": "tokenize_raw_identifier_api_v1_entities_hmac_tokenize_post", "parameters": [ { "in": "query", "name": "identifier", "required": true, "schema": { "title": "Identifier", "type": "string" } }, { "in": "query", "name": "tenant_salt", "required": false, "schema": { "default": "default_consortium_salt", "title": "Tenant Salt", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": { "type": "string" }, "title": "Response Tokenize Raw Identifier Api V1 Entities Hmac Tokenize Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Tokenize Raw Identifier", "tags": [ "entities" ] } }, "/api/v1/entities/psi": { "post": { "description": "Run simulated Private Set Intersection (PSI) protocol between two banks.", "operationId": "run_entities_psi_api_v1_entities_psi_post", "parameters": [ { "in": "query", "name": "actor", "required": false, "schema": { "default": "analyst", "title": "Actor", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PSIRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PSIResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Run Entities Psi", "tags": [ "entities" ] } }, "/api/v1/entities/psi-match": { "post": { "description": "Execute Privacy-Preserving DH-PSI match between two bank entities without PII exposure.", "operationId": "run_dh_psi_match_api_v1_entities_psi_match_post", "parameters": [ { "in": "query", "name": "bank_a_id", "required": true, "schema": { "title": "Bank A Id", "type": "string" } }, { "in": "query", "name": "bank_b_id", "required": true, "schema": { "title": "Bank B Id", "type": "string" } }, { "in": "query", "name": "enable_fuzzy", "required": false, "schema": { "default": true, "title": "Enable Fuzzy", "type": "boolean" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Run Dh Psi Match Api V1 Entities Psi Match Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Run Dh Psi Match", "tags": [ "entities" ] } }, "/api/v1/entities/resolve": { "post": { "description": "Find entities matching a privacy hash across institutions.", "operationId": "resolve_entity_api_v1_entities_resolve_post", "parameters": [ { "in": "query", "name": "actor", "required": false, "schema": { "default": "analyst", "title": "Actor", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityResolveRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/EntityResponse" }, "title": "Response Resolve Entity Api V1 Entities Resolve Post", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Resolve Entity", "tags": [ "entities" ] } }, "/api/v1/entities/{entity_id}": { "get": { "description": "Get entity profile with cross-institution data.", "operationId": "get_entity_profile_api_v1_entities__entity_id__get", "parameters": [ { "in": "path", "name": "entity_id", "required": true, "schema": { "title": "Entity Id", "type": "string" } }, { "in": "query", "name": "actor", "required": false, "schema": { "default": "analyst", "title": "Actor", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EntityProfileResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Entity Profile", "tags": [ "entities" ] } }, "/api/v1/entities/{entity_id}/relationships": { "get": { "description": "Get direct relationships for an entity.", "operationId": "get_entity_relationships_api_v1_entities__entity_id__relationships_get", "parameters": [ { "in": "path", "name": "entity_id", "required": true, "schema": { "title": "Entity Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response Get Entity Relationships Api V1 Entities Entity Id Relationships Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Entity Relationships", "tags": [ "entities" ] } }, "/api/v1/explanation/{transaction_id}": { "get": { "description": "Get explainability report for an alert by transaction ID.", "operationId": "explain_transaction_api_v1_explanation__transaction_id__get", "parameters": [ { "in": "path", "name": "transaction_id", "required": true, "schema": { "title": "Transaction Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExplainabilityResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Explain Transaction", "tags": [ "alerts" ] } }, "/api/v1/graph/clusters/list": { "get": { "description": "Get suspicious entity clusters.", "operationId": "get_clusters_api_v1_graph_clusters_list_get", "parameters": [ { "in": "query", "name": "min_size", "required": false, "schema": { "default": 3, "maximum": 20, "minimum": 2, "title": "Min Size", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response Get Clusters Api V1 Graph Clusters List Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Clusters", "tags": [ "graph" ] } }, "/api/v1/graph/communities/analytics": { "get": { "description": "Get detailed community metrics sorted by fraud/risk density.", "operationId": "get_communities_analytics_api_v1_graph_communities_analytics_get", "parameters": [ { "in": "query", "name": "min_size", "required": false, "schema": { "default": 3, "maximum": 20, "minimum": 2, "title": "Min Size", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/CommunityAnalyticsResponse" }, "title": "Response Get Communities Analytics Api V1 Graph Communities Analytics Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Communities Analytics", "tags": [ "graph" ] } }, "/api/v1/graph/embeddings/clusters": { "post": { "description": "Cluster entities by embedding similarity for fraud ring detection.\n\nFinds groups of entities with similar structural patterns, even if\nthey are in different connected components of the graph. Detects\nfraud rings using the same techniques across different banks.", "operationId": "embedding_fraud_clusters_api_v1_graph_embeddings_clusters_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GNNEmbeddingClusterRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Embedding Fraud Clusters Api V1 Graph Embeddings Clusters Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Embedding Fraud Clusters", "tags": [ "graph" ] } }, "/api/v1/graph/embeddings/propagate-risk": { "post": { "description": "Propagate risk using learned embeddings instead of heuristic multipliers.\n\nUses cosine similarity between GNN embeddings to weight risk transfer\nbetween connected entities. More accurate than hardcoded relationship\nmultipliers because the weights are learned from labeled fraud data.", "operationId": "embedding_risk_propagation_api_v1_graph_embeddings_propagate_risk_post", "parameters": [ { "in": "query", "name": "decay_factor", "required": false, "schema": { "default": 0.85, "maximum": 1.0, "minimum": 0.0, "title": "Decay Factor", "type": "number" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Embedding Risk Propagation Api V1 Graph Embeddings Propagate Risk Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Embedding Risk Propagation", "tags": [ "graph" ] } }, "/api/v1/graph/embeddings/similar": { "post": { "description": "Find structurally similar entities via embedding cosine similarity.\n\nIdentifies entities with similar neighborhood patterns in the fraud\ngraph, even if they are not directly connected. Useful for finding\nfraud rings using the same modus operandi across banks.", "operationId": "find_similar_entities_api_v1_graph_embeddings_similar_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GNNSimilarityRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Find Similar Entities Api V1 Graph Embeddings Similar Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Find Similar Entities", "tags": [ "graph" ] } }, "/api/v1/graph/embeddings/stats": { "get": { "description": "Get summary statistics about the GNN embedding space.\n\nReturns the number of embedded nodes, embedding dimension, model\nparameter count, and pairwise similarity distribution statistics.", "operationId": "get_embedding_stats_api_v1_graph_embeddings_stats_get", "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Get Embedding Stats Api V1 Graph Embeddings Stats Get", "type": "object" } } }, "description": "Successful Response" } }, "summary": "Get Embedding Stats", "tags": [ "graph" ] } }, "/api/v1/graph/embeddings/train": { "post": { "description": "Train GraphSAGE model locally on a bank's entity graph.\n\nTrains a 2-layer GraphSAGE model on the entity-relationship graph,\nproducing 64-dimensional node embeddings that capture structural\nfraud patterns. Only model weights are federatable \u2014 raw graph\nstructure never leaves the bank.", "operationId": "train_graph_embeddings_api_v1_graph_embeddings_train_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GNNTrainRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GNNTrainResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Train Graph Embeddings", "tags": [ "graph" ] } }, "/api/v1/graph/embeddings/{entity_id}": { "get": { "description": "Get the embedding vector for a specific entity.\n\nReturns the 64-dimensional embedding vector learned by GraphSAGE.\nThe embedding encodes the entity's structural neighborhood patterns.", "operationId": "get_entity_embedding_api_v1_graph_embeddings__entity_id__get", "parameters": [ { "in": "path", "name": "entity_id", "required": true, "schema": { "title": "Entity Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Get Entity Embedding Api V1 Graph Embeddings Entity Id Get", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Entity Embedding", "tags": [ "graph" ] } }, "/api/v1/graph/propagate-risk": { "post": { "description": "Propagate risk scores along relationships using decay.", "operationId": "propagate_risk_api_v1_graph_propagate_risk_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RiskPropagationRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RiskPropagationResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Propagate Risk", "tags": [ "graph" ] } }, "/api/v1/graph/search/nodes": { "get": { "description": "Search entities in the graph.", "operationId": "search_nodes_api_v1_graph_search_nodes_get", "parameters": [ { "in": "query", "name": "q", "required": true, "schema": { "minLength": 1, "title": "Q", "type": "string" } }, { "in": "query", "name": "entity_type", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Entity Type" } }, { "in": "query", "name": "limit", "required": false, "schema": { "default": 20, "maximum": 100, "minimum": 1, "title": "Limit", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response Search Nodes Api V1 Graph Search Nodes Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Search Nodes", "tags": [ "graph" ] } }, "/api/v1/graph/stats/summary": { "get": { "description": "Get graph statistics.", "operationId": "graph_stats_api_v1_graph_stats_summary_get", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GraphStatsResponse" } } }, "description": "Successful Response" } }, "summary": "Graph Stats", "tags": [ "graph" ] } }, "/api/v1/graph/temporal-anomalies": { "get": { "description": "Get temporal edge velocity anomaly subgraphs.", "operationId": "get_temporal_anomalies_api_v1_graph_temporal_anomalies_get", "parameters": [ { "in": "query", "name": "window_minutes", "required": false, "schema": { "default": 5, "maximum": 60, "minimum": 1, "title": "Window Minutes", "type": "integer" } }, { "in": "query", "name": "min_edges", "required": false, "schema": { "default": 3, "maximum": 50, "minimum": 2, "title": "Min Edges", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/TemporalAnomalyResponse" }, "title": "Response Get Temporal Anomalies Api V1 Graph Temporal Anomalies Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Temporal Anomalies", "tags": [ "graph" ] } }, "/api/v1/graph/{entity_id}": { "get": { "description": "Get subgraph centered on an entity.", "operationId": "get_subgraph_api_v1_graph__entity_id__get", "parameters": [ { "in": "path", "name": "entity_id", "required": true, "schema": { "title": "Entity Id", "type": "string" } }, { "in": "query", "name": "depth", "required": false, "schema": { "default": 2, "maximum": 4, "minimum": 1, "title": "Depth", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GraphResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Subgraph", "tags": [ "graph" ] } }, "/api/v1/intelligence": { "get": { "description": "Get shared intelligence feed.", "operationId": "list_intelligence_api_v1_intelligence_get", "parameters": [ { "description": "Filter intelligence NOT from this bank", "in": "query", "name": "bank_id", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter intelligence NOT from this bank", "title": "Bank Id" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SharedIntelligenceResponse" }, "title": "Response List Intelligence Api V1 Intelligence Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "List Intelligence", "tags": [ "alerts" ] } }, "/api/v1/intelligence/stats": { "get": { "description": "Get shared intelligence statistics.", "operationId": "intelligence_stats_api_v1_intelligence_stats_get", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IntelligenceStatsResponse" } } }, "description": "Successful Response" } }, "summary": "Intelligence Stats", "tags": [ "alerts" ] } }, "/api/v1/monitoring/alerts": { "get": { "description": "Get active Prometheus Alertmanager alerts.", "operationId": "list_active_alerts_api_v1_monitoring_alerts_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ActiveAlertResponse" }, "title": "Response List Active Alerts Api V1 Monitoring Alerts Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "List Active Alerts", "tags": [ "monitoring" ] } }, "/api/v1/monitoring/calibration": { "get": { "description": "Get model probability calibration report and reliability curve points.", "operationId": "get_calibration_report_api_v1_monitoring_calibration_get", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CalibrationResponse" } } }, "description": "Successful Response" } }, "summary": "Get Calibration Report", "tags": [ "monitoring" ] } }, "/api/v1/monitoring/drift/analyze": { "get": { "description": "Execute statistical Feature Drift and Concept Drift analysis against reference baselines.", "operationId": "analyze_model_drift_api_v1_monitoring_drift_analyze_get", "parameters": [ { "in": "query", "name": "severe_drift", "required": false, "schema": { "default": false, "title": "Severe Drift", "type": "boolean" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DriftAnalysisResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Analyze Model Drift", "tags": [ "monitoring" ] } }, "/api/v1/monitoring/drift/trigger-retrain": { "post": { "description": "Trigger an automated federated re-training round in response to concept drift.", "operationId": "trigger_automated_retraining_api_v1_monitoring_drift_trigger_retrain_post", "parameters": [ { "in": "query", "name": "reason", "required": false, "schema": { "default": "Concept Drift PSI > 0.20 threshold exceeded", "title": "Reason", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrainTriggerResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Trigger Automated Retraining", "tags": [ "monitoring" ] } }, "/api/v1/predict": { "post": { "description": "Evaluate a transaction in real-time.\n\nLoads the currently active global model (or versioned model of a simulation),\nevaluates fraud probability, computes composite risk score, and\ngenerates alerts if fraud is suspected.", "operationId": "predict_transaction_api_v1_predict_post", "parameters": [ { "in": "header", "name": "X-API-Key", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransactionPredictRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransactionPredictResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Predict Transaction", "tags": [ "prediction" ] } }, "/api/v1/predict/feedback": { "post": { "description": "Ingest ground truth label feedback for evaluation of Champion/Challenger models.", "operationId": "submit_transaction_feedback_api_v1_predict_feedback_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransactionFeedbackRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Submit Transaction Feedback Api V1 Predict Feedback Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Submit Transaction Feedback", "tags": [ "prediction" ] } }, "/api/v1/privacy-defense/aggregation-methods": { "get": { "description": "Return the catalogue of supported aggregation methods including new Byzantine defenses.", "operationId": "list_aggregation_methods_api_v1_privacy_defense_aggregation_methods_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response List Aggregation Methods Api V1 Privacy Defense Aggregation Methods Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "List Aggregation Methods", "tags": [ "privacy-defense" ] } }, "/api/v1/privacy-defense/audit/dlg": { "post": { "description": "Run a Deep Leakage from Gradients (DLG) audit.\n\nMeasures Pearson correlation between original and received gradient vectors.\nHigh correlation indicates that local training data could be reconstructed.", "operationId": "audit_dlg_api_v1_privacy_defense_audit_dlg_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DLGAuditRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Audit Dlg Api V1 Privacy Defense Audit Dlg Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Audit Dlg", "tags": [ "privacy-defense" ] } }, "/api/v1/privacy-defense/audit/mia": { "post": { "description": "Run a Membership Inference Attack (MIA) audit.\n\nEvaluates whether an attacker can determine if a specific customer record\nwas included in the local training batch by analysing loss distribution gaps.", "operationId": "audit_mia_api_v1_privacy_defense_audit_mia_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MIAAuditRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Audit Mia Api V1 Privacy Defense Audit Mia Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Audit Mia", "tags": [ "privacy-defense" ] } }, "/api/v1/privacy-defense/audit/model-inversion": { "post": { "description": "Run a Model Inversion Attack audit on gradient norms.\n\nEvaluates whether high gradient norm variance exposes individual training\nsample features to reconstruction from shared updates.", "operationId": "audit_model_inversion_api_v1_privacy_defense_audit_model_inversion_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ModelInversionAuditRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Audit Model Inversion Api V1 Privacy Defense Audit Model Inversion Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Audit Model Inversion", "tags": [ "privacy-defense" ] } }, "/api/v1/privacy-defense/budget-log": { "get": { "description": "Return the multi-simulation privacy budget consumption log.\n\nLists cumulative epsilon expenditure across all tracked federated training sessions.\nUsed to detect budget exhaustion attack patterns.", "operationId": "get_budget_log_api_v1_privacy_defense_budget_log_get", "parameters": [ { "in": "query", "name": "epsilon_limit", "required": false, "schema": { "default": 8.0, "title": "Epsilon Limit", "type": "number" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response Get Budget Log Api V1 Privacy Defense Budget Log Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Budget Log", "tags": [ "privacy-defense" ] } }, "/api/v1/psd2/accounts": { "get": { "description": "Retrieve consented customer accounts using a valid consent header.", "operationId": "list_consented_accounts_api_v1_psd2_accounts_get", "parameters": [ { "in": "header", "name": "consent-id", "required": true, "schema": { "title": "Consent-Id", "type": "string" } }, { "in": "header", "name": "authorization", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Authorization" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/AccountResponse" }, "title": "Response List Consented Accounts Api V1 Psd2 Accounts Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "List Consented Accounts", "tags": [ "PSD2 Open Banking" ] } }, "/api/v1/psd2/accounts/{account_id}/transactions": { "get": { "description": "Retrieve transaction history for a consented account under PSD2 specifications.", "operationId": "list_account_transactions_api_v1_psd2_accounts__account_id__transactions_get", "parameters": [ { "in": "path", "name": "account_id", "required": true, "schema": { "title": "Account Id", "type": "string" } }, { "in": "header", "name": "consent-id", "required": true, "schema": { "title": "Consent-Id", "type": "string" } }, { "in": "header", "name": "authorization", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Authorization" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/TransactionResponse" }, "title": "Response List Account Transactions Api V1 Psd2 Accounts Account Id Transactions Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "List Account Transactions", "tags": [ "PSD2 Open Banking" ] } }, "/api/v1/psd2/consents": { "post": { "description": "Create a new PSD2 consent for a third-party provider.", "operationId": "create_consent_api_v1_psd2_consents_post", "parameters": [ { "in": "header", "name": "authorization", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Authorization" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConsentRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConsentResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Create Consent", "tags": [ "PSD2 Open Banking" ] } }, "/api/v1/registry/{simulation_id}/canary": { "get": { "description": "Retrieve the canary evaluation decisions history from simulation events.", "operationId": "get_canary_history_api_v1_registry__simulation_id__canary_get", "parameters": [ { "in": "path", "name": "simulation_id", "required": true, "schema": { "title": "Simulation Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response Get Canary History Api V1 Registry Simulation Id Canary Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Canary History", "tags": [ "registry" ] } }, "/api/v1/registry/{simulation_id}/rollback/{version}": { "post": { "description": "Rollback/promote a specific model version as active.", "operationId": "rollback_model_version_api_v1_registry__simulation_id__rollback__version__post", "parameters": [ { "in": "path", "name": "simulation_id", "required": true, "schema": { "title": "Simulation Id", "type": "string" } }, { "in": "path", "name": "version", "required": true, "schema": { "title": "Version", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Rollback Model Version Api V1 Registry Simulation Id Rollback Version Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Rollback Model Version", "tags": [ "registry" ] } }, "/api/v1/registry/{simulation_id}/shadow/metrics": { "get": { "description": "Get real-time shadowing deployment and evaluation metrics.", "operationId": "get_shadow_metrics_api_v1_registry__simulation_id__shadow_metrics_get", "parameters": [ { "in": "path", "name": "simulation_id", "required": true, "schema": { "title": "Simulation Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Get Shadow Metrics Api V1 Registry Simulation Id Shadow Metrics Get", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Shadow Metrics", "tags": [ "registry" ] } }, "/api/v1/registry/{simulation_id}/versions": { "get": { "description": "List all model versions tracked in the registry for this simulation.", "operationId": "list_model_versions_api_v1_registry__simulation_id__versions_get", "parameters": [ { "in": "path", "name": "simulation_id", "required": true, "schema": { "title": "Simulation Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response List Model Versions Api V1 Registry Simulation Id Versions Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "List Model Versions", "tags": [ "registry" ] } }, "/api/v1/registry/{simulation_id}/versions/{version}/signoff": { "post": { "description": "Approve and sign off on a new global model's metrics.", "operationId": "sign_off_model_api_v1_registry__simulation_id__versions__version__signoff_post", "parameters": [ { "in": "path", "name": "simulation_id", "required": true, "schema": { "title": "Simulation Id", "type": "string" } }, { "in": "path", "name": "version", "required": true, "schema": { "title": "Version", "type": "integer" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ModelSignOffRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Sign Off Model Api V1 Registry Simulation Id Versions Version Signoff Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Sign Off Model", "tags": [ "registry" ] } }, "/api/v1/rules": { "get": { "description": "Retrieve all business rules configured in the active tenant.", "operationId": "list_business_rules_api_v1_rules_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/BusinessRuleResponse" }, "title": "Response List Business Rules Api V1 Rules Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "List Business Rules", "tags": [ "rules" ] }, "post": { "description": "Create and hot-reload a new business logic transaction screening rule.", "operationId": "create_business_rule_api_v1_rules_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BusinessRuleCreateRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BusinessRuleResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Create Business Rule", "tags": [ "rules" ] } }, "/api/v1/rules/test": { "post": { "description": "Test a condition AST configuration against a mock transaction dry-run payload.", "operationId": "test_business_rule_api_v1_rules_test_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BusinessRuleTestRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BusinessRuleTestResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Test Business Rule", "tags": [ "rules" ] } }, "/api/v1/rules/{rule_id}": { "delete": { "description": "Delete a business rule permanently from the database.", "operationId": "delete_business_rule_api_v1_rules__rule_id__delete", "parameters": [ { "in": "path", "name": "rule_id", "required": true, "schema": { "title": "Rule Id", "type": "string" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Delete Business Rule", "tags": [ "rules" ] }, "put": { "description": "Update condition, action, or active state of an existing rule.", "operationId": "update_business_rule_api_v1_rules__rule_id__put", "parameters": [ { "in": "path", "name": "rule_id", "required": true, "schema": { "title": "Rule Id", "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BusinessRuleUpdateRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BusinessRuleResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Update Business Rule", "tags": [ "rules" ] } }, "/api/v1/scenarios": { "get": { "description": "List available scenario types.", "operationId": "list_scenarios_api_v1_scenarios_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ScenarioInfoResponse" }, "title": "Response List Scenarios Api V1 Scenarios Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "List Scenarios", "tags": [ "scenarios" ] } }, "/api/v1/scenarios/active/list": { "get": { "description": "List currently running scenarios.", "operationId": "active_scenarios_api_v1_scenarios_active_list_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response Active Scenarios Api V1 Scenarios Active List Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "Active Scenarios", "tags": [ "scenarios" ] } }, "/api/v1/scenarios/start": { "post": { "description": "Start a scenario replay.", "operationId": "start_scenario_api_v1_scenarios_start_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScenarioStartRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScenarioStartResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Start Scenario", "tags": [ "scenarios" ] } }, "/api/v1/scenarios/{scenario_id}/status": { "get": { "description": "Get scenario streaming status.", "operationId": "scenario_status_api_v1_scenarios__scenario_id__status_get", "parameters": [ { "in": "path", "name": "scenario_id", "required": true, "schema": { "title": "Scenario Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScenarioStatusResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Scenario Status", "tags": [ "scenarios" ] } }, "/api/v1/scenarios/{scenario_id}/stop": { "post": { "description": "Stop a running scenario.", "operationId": "stop_scenario_api_v1_scenarios__scenario_id__stop_post", "parameters": [ { "in": "path", "name": "scenario_id", "required": true, "schema": { "title": "Scenario Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Stop Scenario Api V1 Scenarios Scenario Id Stop Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Stop Scenario", "tags": [ "scenarios" ] } }, "/api/v1/security/abac/evaluate": { "post": { "description": "Test dynamic ABAC policy evaluation for arbitrary user and resource attributes.", "operationId": "evaluate_abac_policy_api_v1_security_abac_evaluate_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ABACEvalRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ABACEvalResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Evaluate Abac Policy", "tags": [ "security" ] } }, "/api/v1/security/audit-chain": { "get": { "description": "Get entries from the cryptographic SHA-256 audit chain ledger.", "operationId": "list_audit_chain_api_v1_security_audit_chain_get", "parameters": [ { "in": "query", "name": "limit", "required": false, "schema": { "default": 50, "maximum": 200, "minimum": 1, "title": "Limit", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/AuditChainEntryResponse" }, "title": "Response List Audit Chain Api V1 Security Audit Chain Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "List Audit Chain", "tags": [ "security" ] } }, "/api/v1/security/audit-chain/verify": { "post": { "description": "Execute 1-click retrospective SHA-256 chain verification to detect tampering.", "operationId": "verify_audit_chain_api_v1_security_audit_chain_verify_post", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuditChainVerifyResponse" } } }, "description": "Successful Response" } }, "summary": "Verify Audit Chain", "tags": [ "security" ] } }, "/api/v1/security/status": { "get": { "description": "Get Enterprise Security Suite status across mTLS, OIDC, ABAC, Vault, and Audit Chain.", "operationId": "get_security_status_api_v1_security_status_get", "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecurityStatusResponse" } } }, "description": "Successful Response" } }, "summary": "Get Security Status", "tags": [ "security" ] } }, "/api/v1/settlement/contract-info": { "get": { "description": "Returns metadata and ABI for the deployed Consortium Incentive Settlement Smart Contract.", "operationId": "get_contract_info_api_v1_settlement_contract_info_get", "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Get Contract Info Api V1 Settlement Contract Info Get", "type": "object" } } }, "description": "Successful Response" } }, "summary": "Get Contract Info", "tags": [ "settlement" ] } }, "/api/v1/settlement/history": { "get": { "description": "Returns the log of executed on-chain Web3 / CBDC settlement receipts.", "operationId": "get_settlement_history_api_v1_settlement_history_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response Get Settlement History Api V1 Settlement History Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "Get Settlement History", "tags": [ "settlement" ] } }, "/api/v1/settlement/trigger": { "post": { "description": "Manually triggers smart contract incentive settlement for a simulation epoch.", "operationId": "trigger_settlement_api_v1_settlement_trigger_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SettlementTriggerRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Trigger Settlement Api V1 Settlement Trigger Post", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Trigger Settlement", "tags": [ "settlement" ] } }, "/api/v1/simulations": { "get": { "description": "List all simulation runs.", "operationId": "list_simulations_api_v1_simulations_get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SimulationSummaryResponse" }, "title": "Response List Simulations Api V1 Simulations Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "List Simulations", "tags": [ "simulations" ] }, "post": { "description": "Start a new federated learning simulation.\n\nRuns the simulation in a background thread within the web process.\nPoll GET /simulations/{id} for progress.", "operationId": "create_simulation_api_v1_simulations_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SimulationConfigRequest" } } }, "required": true }, "responses": { "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SimulationCreateResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Create Simulation", "tags": [ "simulations" ] } }, "/api/v1/simulations/{simulation_id}": { "get": { "description": "Get full simulation details including metrics.", "operationId": "get_simulation_api_v1_simulations__simulation_id__get", "parameters": [ { "in": "path", "name": "simulation_id", "required": true, "schema": { "title": "Simulation Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SimulationDetailResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Simulation", "tags": [ "simulations" ] } }, "/api/v1/simulations/{simulation_id}/ai-act-report": { "get": { "description": "Retrieve the generated EU AI Act Compliance Report JSON log.", "operationId": "get_ai_act_report_api_v1_simulations__simulation_id__ai_act_report_get", "parameters": [ { "in": "path", "name": "simulation_id", "required": true, "schema": { "title": "Simulation Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Get Ai Act Report Api V1 Simulations Simulation Id Ai Act Report Get", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Ai Act Report", "tags": [ "simulations" ] } }, "/api/v1/simulations/{simulation_id}/comparison": { "get": { "description": "Get local vs federated comparison for all banks.", "operationId": "get_comparison_api_v1_simulations__simulation_id__comparison_get", "parameters": [ { "in": "path", "name": "simulation_id", "required": true, "schema": { "title": "Simulation Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ComparisonResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Comparison", "tags": [ "simulations" ] } }, "/api/v1/training/{simulation_id}/progress": { "get": { "description": "Get the latest progress update for a running simulation.", "operationId": "get_training_progress_api_v1_training__simulation_id__progress_get", "parameters": [ { "in": "path", "name": "simulation_id", "required": true, "schema": { "title": "Simulation Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Get Training Progress Api V1 Training Simulation Id Progress Get", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Training Progress", "tags": [ "training" ] } }, "/api/v1/training/{simulation_id}/rounds": { "get": { "description": "Get all training rounds for a simulation.\n\nReturns round-by-round metrics including loss, participants,\ndropouts, and timing data.", "operationId": "get_training_rounds_api_v1_training__simulation_id__rounds_get", "parameters": [ { "in": "path", "name": "simulation_id", "required": true, "schema": { "title": "Simulation Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "items": { "additionalProperties": true, "type": "object" }, "title": "Response Get Training Rounds Api V1 Training Simulation Id Rounds Get", "type": "array" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Training Rounds", "tags": [ "training" ] } }, "/api/v1/training/{simulation_id}/rounds/{round_number}": { "get": { "description": "Get details for a specific training round.", "operationId": "get_training_round_api_v1_training__simulation_id__rounds__round_number__get", "parameters": [ { "in": "path", "name": "simulation_id", "required": true, "schema": { "title": "Simulation Id", "type": "string" } }, { "in": "path", "name": "round_number", "required": true, "schema": { "title": "Round Number", "type": "integer" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Get Training Round Api V1 Training Simulation Id Rounds Round Number Get", "type": "object" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get Training Round", "tags": [ "training" ] } }, "/api/v1/transactions/score": { "post": { "description": "Low-Latency Real-Time Risk Decision API providing sub-10ms risk evaluation against the globally trained model.", "operationId": "score_transaction_api_v1_transactions_score_post", "parameters": [ { "in": "header", "name": "X-Bank-ID", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Bank-Id" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScoreTransactionRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScoreTransactionResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Score Transaction", "tags": [ "prediction" ] } }, "/api/v1/v1/transactions/score": { "post": { "description": "Low-Latency Real-Time Risk Decision API providing sub-10ms risk evaluation against the globally trained model.", "operationId": "score_transaction_api_v1_v1_transactions_score_post", "parameters": [ { "in": "header", "name": "X-Bank-ID", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Bank-Id" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScoreTransactionRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScoreTransactionResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Score Transaction", "tags": [ "prediction" ] } }, "/health": { "get": { "description": "Basic liveness probe. Returns 200 if the process is running.", "operationId": "health_health_get", "responses": { "200": { "content": { "application/json": { "schema": { "additionalProperties": true, "title": "Response Health Health Get", "type": "object" } } }, "description": "Successful Response" } }, "summary": "Health", "tags": [ "health" ] } }, "/health/ready": { "get": { "description": "Readiness probe. Checks downstream dependencies.\n\nReturns HTTP 200 when all dependencies are healthy.\nReturns HTTP 503 (Service Unavailable) when any dependency is degraded,\nas required by the Kubernetes readiness probe contract.", "operationId": "readiness_health_ready_get", "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" } }, "summary": "Readiness", "tags": [ "health" ] } }, "/v1/admin/banks/": { "get": { "description": "Return all bank node registrations.", "operationId": "list_banks_v1_admin_banks__get", "responses": { "200": { "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/BankStatusResponse" }, "title": "Response List Banks V1 Admin Banks Get", "type": "array" } } }, "description": "Successful Response" } }, "summary": "List all registered bank nodes", "tags": [ "Bank Onboarding" ] } }, "/v1/admin/banks/register": { "post": { "description": "Run full automated bank onboarding pipeline:\n\n1. Register bank record (PENDING_VERIFICATION)\n2. Issue mTLS certificate & key\n3. Provision tenant database schema\n4. Provision KMS key path\n5. Generate connector config YAML\n6. Activate bank node (ACTIVE)", "operationId": "register_bank_v1_admin_banks_register_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankRegisterRequest" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankOnboardingBundleResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Register a new bank node and receive the onboarding bundle", "tags": [ "Bank Onboarding" ] } }, "/v1/admin/banks/{bank_id}/rotate-cert": { "post": { "description": "Rotate mTLS certificate for an active bank node.", "operationId": "rotate_bank_cert_v1_admin_banks__bank_id__rotate_cert_post", "parameters": [ { "in": "path", "name": "bank_id", "required": true, "schema": { "title": "Bank Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CertRotationResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Rotate mTLS certificate for a bank node", "tags": [ "Bank Onboarding" ] } }, "/v1/admin/banks/{bank_id}/status": { "get": { "description": "Return detailed status for a specific bank node.", "operationId": "get_bank_status_v1_admin_banks__bank_id__status_get", "parameters": [ { "in": "path", "name": "bank_id", "required": true, "schema": { "title": "Bank Id", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BankStatusResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Get status of a single bank node", "tags": [ "Bank Onboarding" ] } }, "/v1/compliance/soc2-evidence": { "get": { "description": "Generates an automated SOC 2 Type II evidence collection report.", "operationId": "get_soc2_evidence_report_v1_compliance_soc2_evidence_get", "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" } }, "summary": "Get Soc2 Evidence Report", "tags": [ "Security & Compliance" ] }, "post": { "description": "Generates an automated SOC 2 Type II evidence collection report.", "operationId": "get_soc2_evidence_report_v1_compliance_soc2_evidence_post", "responses": { "200": { "content": { "application/json": { "schema": {} } }, "description": "Successful Response" } }, "summary": "Get Soc2 Evidence Report", "tags": [ "Security & Compliance" ] } }, "/v1/cron/cleanup-sessions": { "post": { "description": "Executes scheduled session, temporary artifact, and GDPR TTL retention cleanup.", "operationId": "execute_system_cleanup_v1_cron_cleanup_sessions_post", "parameters": [ { "in": "header", "name": "authorization", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Authorization" } }, { "in": "header", "name": "x-cron-secret", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Cron-Secret" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CronCleanupResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Execute System Cleanup", "tags": [ "Cron Maintenance" ] } }, "/v1/cron/health-check": { "get": { "description": "Executes scheduled cluster health check and subsystem diagnostics ping.", "operationId": "execute_scheduled_health_check_v1_cron_health_check_get", "parameters": [ { "in": "header", "name": "authorization", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Authorization" } }, { "in": "header", "name": "x-cron-secret", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Cron-Secret" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CronHealthStatusResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Execute Scheduled Health Check", "tags": [ "Cron Maintenance" ] } }, "/v1/inference/score": { "post": { "description": "Scores an incoming transaction in real time with JIT model, Redis cache hit, and circuit breaker.", "operationId": "score_transaction_realtime_v1_inference_score_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RealtimeInferenceRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RealtimeInferenceResponse" } } }, "description": "Successful Response" }, "422": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } }, "description": "Validation Error" } }, "summary": "Score Transaction Realtime", "tags": [ "Real-Time Inference" ] } } } }