Build and manage case timelines. Automatically reconstruct event sequences from evidence, or manually add events. Timelines sync across all evidence in a case.
/api/v1/timeline/:caseIdGet the complete timeline for a case. Returns all events from all evidence sources, automatically sorted chronologically with source attribution.
| Name | Type | Required | Description |
|---|---|---|---|
caseId | string | Required | The case ID to retrieve the timeline for. |
startTime | string | Optional | Filter events after this ISO 8601 timestamp. |
endTime | string | Optional | Filter events before this ISO 8601 timestamp. |
sources | string | Optional | Comma-separated evidence IDs to filter by source. |
{
"caseId": "case-2024-00142",
"events": [
{
"eventId": "evt-001",
"timestamp": "2024-03-15T22:14:30Z",
"description": "Traffic stop initiated",
"source": {
"type": "auto",
"evidenceId": "ev-a1b2c3d4",
"videoTimestamp": 0.0
},
"tags": ["traffic-stop", "initial-contact"],
"confidence": 0.95
},
{
"eventId": "evt-002",
"timestamp": "2024-03-15T22:15:45Z",
"description": "Officer approaches vehicle",
"source": {
"type": "auto",
"evidenceId": "ev-a1b2c3d4",
"videoTimestamp": 75.0
},
"tags": ["approach"],
"confidence": 0.92
}
],
"totalEvents": 47,
"timespan": {
"start": "2024-03-15T22:14:30Z",
"end": "2024-03-15T23:02:15Z"
},
"gaps": [
{
"start": "2024-03-15T22:32:00Z",
"end": "2024-03-15T22:35:30Z",
"duration": 210,
"note": "No video coverage - potential bodycam gap"
}
]
}| Code | Description |
|---|---|
404 | Case not found with the specified ID. |
500 | Internal server error. |
/api/v1/timeline/:caseId/eventsAdd a manual event to a case timeline. Manual events are useful for adding context from police reports, witness statements, or attorney notes that supplement the auto-generated timeline.
| Name | Type | Required | Description |
|---|---|---|---|
caseId | string | Required | The case ID to add the event to. |
{
"timestamp": "2024-03-15T22:20:00Z",
"description": "Officer requests backup (per police report)",
"source": {
"type": "manual",
"reference": "Police Report p.3, paragraph 2"
},
"tags": ["backup-request", "police-report"],
"notes": "Report states backup requested at 10:20 PM, but bodycam shows no radio call at this time."
}{
"eventId": "evt-048",
"caseId": "case-2024-00142",
"timestamp": "2024-03-15T22:20:00Z",
"description": "Officer requests backup (per police report)",
"source": {
"type": "manual",
"reference": "Police Report p.3, paragraph 2"
},
"tags": ["backup-request", "police-report"],
"notes": "Report states backup requested at 10:20 PM, but bodycam shows no radio call at this time.",
"createdAt": "2024-03-21T11:00:00Z"
}| Code | Description |
|---|---|
400 | Invalid event data or missing required fields. |
404 | Case not found with the specified ID. |
500 | Internal server error. |
/api/v1/timeline/:caseId/events/:eventIdUpdate an existing timeline event. Only manual events can be fully edited. Auto-generated events can have tags and notes modified but timestamps and descriptions are read-only.
| Name | Type | Required | Description |
|---|---|---|---|
caseId | string | Required | The case ID containing the event. |
eventId | string | Required | The event ID to update. |
{
"description": "Officer requests backup (per police report - CONTRADICTED by bodycam)",
"tags": ["backup-request", "police-report", "contradiction"],
"notes": "Updated: Bodycam analysis confirms no radio call between 10:18-10:25 PM. This contradicts the officer's report."
}{
"eventId": "evt-048",
"caseId": "case-2024-00142",
"timestamp": "2024-03-15T22:20:00Z",
"description": "Officer requests backup (per police report - CONTRADICTED by bodycam)",
"source": {
"type": "manual",
"reference": "Police Report p.3, paragraph 2"
},
"tags": ["backup-request", "police-report", "contradiction"],
"notes": "Updated: Bodycam analysis confirms no radio call between 10:18-10:25 PM. This contradicts the officer's report.",
"updatedAt": "2024-03-21T11:30:00Z"
}| Code | Description |
|---|---|
400 | Invalid event data. |
403 | Cannot modify auto-generated event fields (timestamp, description). |
404 | Case or event not found. |
500 | Internal server error. |