Spaces:
Running on Zero
Running on Zero
File size: 5,735 Bytes
10ec54c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | # RazorShield API Contract & Integration Reference
This document defines the official Gradio API contract exposed by the Hugging Face Space backend (`vedantjadhav701/razorshield-api`) for integration with the Vercel Next.js frontend.
---
## 1. Overview
The backend exposes 5 logical API operations via Gradio HTTP / Client routes:
| Operation | Gradio `api_name` | Primary Function |
| :--- | :--- | :--- |
| **`analyze_transaction`** | `"analyze_transaction"` | Real-time transaction fraud & merchant incident risk analysis |
| **`analyze_merchant`** | `"analyze_merchant"` | Query live merchant temporal rolling state & active campaign info |
| **`run_scenario`** | `"run_scenario"` | Chronologically replay test scenarios for interactive demo |
| **`explain_evidence`** | `"explain_evidence"` | Direct structured evidence to zero-shot SLM explanation conversion |
| **`reset_demo_state`** | `"reset_demo_state"` | Reset all merchant temporal state, incident counters, & campaigns |
---
## 2. API Endpoint Specification
### Endpoint 1: `analyze_transaction`
Evaluates transaction fraud probability, merchant rolling temporal state, deployable spike model, persistent incident detection, and outputs grounded SLM explanations for elevated risk levels.
#### Request Inputs (Ordered Arguments for Gradio Client)
| Argument Index | Parameter | Type | Required | Default | Description |
| :---: | :--- | :--- | :---: | :--- | :--- |
| `0` | `merchant_id` | `str` | Yes | `"M_101"` | Unique merchant identifier |
| `1` | `transaction_id` | `str` | Yes | `"TX_994182"` | Unique transaction identifier |
| `2` | `customer_id` | `str` | No | `"C_1048"` | Customer identifier |
| `3` | `device_id` | `str` | No | `"D_882"` | Device identifier |
| `4` | `event_time` | `str` | Yes | `ISO timestamp` | Timestamp (e.g. `"2026-08-22T01:30:00"`) |
| `5` | `amount` | `float` | Yes | `125.50` | Transaction amount in USD |
| `6` | `payment_method` | `str` | No | `"card"` | `"card"`, `"ach"`, `"crypto"`, `"paypal"` |
| `7` | `transaction_type` | `str` | No | `"sale"` | `"sale"`, `"transfer"`, `"refund"` |
| `8` | `policy_mode` | `str` | No | `"BALANCED"` | `"CONSERVATIVE"`, `"BALANCED"`, `"HIGH_SENSITIVITY"` |
#### Response Schema (`AnalyzeTransactionResponse`)
```json
{
"transaction_id": "TX_994182",
"merchant_id": "M_101",
"transaction_risk": {
"fraud_probability": 0.8124
},
"merchant_risk": {
"spike_probability": 0.8841,
"fraud_excess_ratio": 8.24,
"velocity_ratio": 4.10,
"incident_state": "ALERT",
"severity": "HIGH",
"incident_score": 0.8483,
"suspicious_windows": 3
},
"campaign": {
"active": true,
"campaign_name": "PROMOTIONAL_SALE"
},
"decision": {
"action": "ALERT",
"policy_mode": "BALANCED"
},
"explanation": {
"title": "RazorShield Defensive Risk Assessment: ALERT (HIGH Severity)",
"summary": "RazorShield classified merchant M_101 activity as ALERT (HIGH severity) because a fraud anomaly persisted across 3 consecutive monitoring windows. Estimated fraud excess ratio is 8.2x baseline with volume velocity 4.1x baseline.",
"key_signals": [
"Policy Incident Score: 0.85",
"Fraud Excess Ratio: 8.2x baseline",
"Volume Velocity Ratio: 4.1x baseline",
"Consecutive Suspicious Windows: 3"
],
"campaign_context": "A promotional campaign is currently active for merchant M_101. Volume velocity (4.1x baseline) is normalized, but fraud excess (8.2x baseline) remains actionable.",
"recommended_action": "Initiate immediate merchant review, enforce step-up authentication, and review high-risk transaction batches.",
"confidence_note": "Decision (ALERT) is authoritatively determined by RazorShield policy engine."
},
"performance": {
"risk_engine_latency_ms": 0.619,
"slm_latency_ms": 472.03,
"total_latency_ms": 472.65
}
}
```
---
### Endpoint 2: `analyze_merchant`
#### Request Input: `merchant_id` (str)
#### Response:
```json
{
"merchant_id": "M_101",
"rolling_window": {
"rolling_txn_count_15m": 45,
"baseline_txn_count_15m": 10,
"velocity_ratio": 4.5,
"estimated_fraud_count": 0.85,
"expected_fraud_count": 0.10,
"fraud_excess_ratio": 8.5
},
"incident_state": {
"merchant_id": "M_101",
"current_spike_probability": 0.88,
"current_fraud_excess_ratio": 8.5,
"current_velocity_ratio": 4.5,
"suspicious_transaction_count": 3,
"consecutive_suspicious_windows": 3,
"campaign_active": true
}
}
```
---
### Endpoint 3: `run_scenario`
#### Request Inputs: `scenario_name` (str), `policy_mode` (str)
- Options: `"NORMAL"`, `"VOLUME_ONLY_SPIKE"`, `"AMOUNT_SHIFT"`, `"FRAUD_SPIKE"`, `"FRAUD_DURING_FLASH_SALE"`
---
### Endpoint 4: `explain_evidence`
#### Request Input: `evidence_json` (str)
Converts raw evidence JSON into grounded SLM output with validation report.
---
### Endpoint 5: `reset_demo_state`
#### Request Input: None
#### Response:
```json
{
"status": "SUCCESS",
"message": "All merchant states and campaigns reset."
}
```
---
## 3. Vercel / Client Integration Code Snippet (JS / TS)
```typescript
import { client } from "@gradio/client";
const spaceUrl = "vedantjadhav701/razorshield-api";
export async function analyzeTransaction(payload: any) {
const app = await client(spaceUrl);
const result = await app.predict("analyze_transaction", [
payload.merchant_id,
payload.transaction_id,
payload.customer_id || "C_UNKNOWN",
payload.device_id || "D_UNKNOWN",
payload.event_time,
payload.amount,
payload.payment_method || "card",
payload.transaction_type || "sale",
payload.policy_mode || "BALANCED"
]);
return JSON.parse(result.data[0]);
}
```
|