REST API Reference¶
Prerequisites: API (core endpoints).
Comprehensive reference for all REST API endpoints.
Request/Response Format¶
All requests use Content-Type: application/json.
All responses include:
- fired_rules - List of matched rule IDs
- actions - List of triggered actions
- latency_ms - Evaluation time in milliseconds
Endpoints¶
POST /api/v1/evaluate¶
Evaluate facts against rules.
Request:
{
"facts": {
"amount": 5000,
"country": "US",
"ip_risk_score": 45
},
"domain": "fraud_detection"
}
Response:
{
"fired_rules": [1, 2],
"actions": ["flag_for_review", "notify_analyst"],
"latency_ms": 2.1
}
POST /api/v1/evaluate/bulk¶
Evaluate multiple facts in batch.
Request:
{
"facts": [
{"amount": 1000, "country": "US"},
{"amount": 50000, "country": "NG"}
],
"domain": "fraud_detection"
}
Response:
{
"results": [
{"fired_rules": [1], "actions": ["proceed"], "latency_ms": 1.2},
{"fired_rules": [1, 3], "actions": ["block"], "latency_ms": 1.5}
]
}
POST /api/v1/explain¶
Get detailed explanation of rule matching.
Request:
{
"rule_id": 1,
"facts": {"amount": 7500, "country": "NG"}
}
Response:
{
"rule_id": 1,
"rule_name": "high_value_transaction",
"condition_dsl": {...},
"matched": true,
"matching_conditions": ["amount > 5000"],
"explanation": "Amount exceeds threshold"
}
POST /api/v1/simulate¶
Simulate rule changes without persisting.
Request:
{
"rules": [
{
"name": "test_rule",
"condition_dsl": {...},
"action": "flag"
}
],
"facts": {"amount": 5000}
}
Response:
{
"fired_rules": [999],
"actions": ["flag"],
"latency_ms": 1.8
}
POST /api/v1/validate¶
Validate DSL syntax.
Request:
{
"condition_dsl": {
"type": "condition",
"field": "amount",
"op": ">",
"value": 5000
}
}
Response:
{
"valid": true,
"errors": []
}
GET /health¶
Health check endpoint.
Response:
{
"status": "healthy",
"version": "0.1.0"
}
Optional Endpoints (with extras)¶
POST /api/v1/rules (requires [sql])¶
Create a new rule.
Request:
{
"name": "new_rule",
"domain": "fraud_detection",
"condition_dsl": {...},
"action": "flag"
}
GET /api/v1/rules (requires [sql])¶
List all rules.
POST /api/v1/sessions (requires [sql])¶
Create a new evaluation session.
Request:
{
"ruleset_id": 1
}
POST /api/v1/sessions/{id}/facts (requires [sql])¶
Add facts to a session.
Request:
{
"fact_id": "txn_123",
"event": {"amount": 5000, "country": "US"}
}
Error Responses¶
All errors follow this format:
{
"detail": "Error message",
"error_code": "VALIDATION_ERROR"
}
Common error codes:
- VALIDATION_ERROR - Invalid request format
- DSL_ERROR - Invalid DSL syntax
- RULE_NOT_FOUND - Rule ID does not exist
- INTERNAL_ERROR - Server error
Next Steps¶
- API Overview - See API for quick start
- Example - See Example 12: API Usage for working client code