โจ Automatic SLA Assignment
Good News! SLA is automatically assigned when you create a case.
# Create case โ SLA auto-assigned based on priority
curl -X POST "/api/cases/" -d '{"title":"Issue","priority":"high","finding_ids":[]}'
๐ Default Policies
| Priority | Response | Resolution | Coverage |
|---|---|---|---|
| Critical | 1h | 4h | 24/7 |
| High | 2h | 8h | 24/7 |
| Medium | 4h | 24h | Business hours |
| Low | 8h | 72h | Business hours |
๐ง Common Operations
Check SLA Status
GET /api/cases/{case_id}/sla
Assign/Override SLA
POST /api/cases/{case_id}/sla
{"sla_policy_id": "sla-vip-critical"} # or {} for default
Pause SLA
POST /api/cases/{case_id}/sla/pause
Resume SLA
POST /api/cases/{case_id}/sla/resume
๐๏ธ Policy Management
List Policies
GET /api/sla-policies/
GET /api/sla-policies/?active_only=true
GET /api/sla-policies/?priority_level=high&default_only=true
Create Policy
POST /api/sla-policies/
{
"policy_id": "sla-custom",
"name": "Custom Policy",
"priority_level": "high",
"response_time_hours": 1.5,
"resolution_time_hours": 6.0,
"business_hours_only": false
}
Update Policy
PUT /api/sla-policies/{policy_id}
{"response_time_hours": 2.0}
Delete Policy
DELETE /api/sla-policies/{policy_id}
DELETE /api/sla-policies/{policy_id}?force=true # Force delete
Set as Default
POST /api/sla-policies/{policy_id}/set-default
Get Usage Stats
GET /api/sla-policies/{policy_id}/usage
๐ป Frontend (TypeScript)
Import
import { casesApi, slaPoliciesApi } from '@/services/api'
Check SLA
const sla = await casesApi.getSLA(caseId)
console.log(sla.data.health_status) // healthy, warning, critical, breached
Assign SLA
await casesApi.assignSLA(caseId, { sla_policy_id: 'sla-vip-high' })
Pause/Resume
await casesApi.pauseSLA(caseId)
await casesApi.resumeSLA(caseId)
Manage Policies
// List
const policies = await slaPoliciesApi.getAll({ active_only: true })
// Create
await slaPoliciesApi.create({
policy_id: 'sla-custom',
name: 'Custom',
priority_level: 'high',
response_time_hours: 1,
resolution_time_hours: 4
})
// Update
await slaPoliciesApi.update('sla-custom', { response_time_hours: 2 })
// Usage
const usage = await slaPoliciesApi.getUsage('sla-high-default')
Use Component
import CaseSLA from '@/components/cases/CaseSLA'
<CaseSLA caseId={caseId} />
๐ฆ Health Status
- ๐ข healthy: < 75% elapsed
- ๐ก warning: 75-89% elapsed
- ๐ critical: 90-99% elapsed
- ๐ด breached: 100%+ elapsed
๐งช Testing
# Run test suite
python scripts/test_sla_assignment.py
# Test API
curl http://localhost:6987/api/sla-policies/
๐ Full Documentation
- Usage Guide:
docs/SLA_USAGE_GUIDE.md - API Reference:
docs/SLA_POLICY_API_GUIDE.md - Assessment:
docs/SLA_SYSTEM_ASSESSMENT.md - Enhancement Plan:
docs/SLA_SYSTEM_ENHANCEMENT_PLAN.md
๐ Troubleshooting
SLA not assigned?
# Check default policies exist
curl http://localhost:6987/api/sla-policies/?default_only=true
Check logs:
tail -f logs/backend.log | grep SLA
| Version: 1.0.0 | Updated: 2026-01-21 |