Expense Type Analytics Tracker
API Contract
REST
/api/v1/analytics/expense-type-events
6 endpoints
GET
/api/v1/analytics/expense-type-events/api/v1/analytics/expense-type-events
List recorded analytics events for expense type interactions
Public
Response Example
{
"data": [
{
"id": "evt-001",
"event_type": "type_selected",
"expense_type": "kilometers",
"session_id": "sess-abc123",
"user_id": "usr-447",
"occurred_at": "2026-03-26T09:15:22Z",
"flushed": true
},
{
"id": "evt-002",
"event_type": "exclusion_triggered",
"trigger_type": "kilometers",
"disabled_types": [
"publicTransit"
],
"session_id": "sess-abc123",
"user_id": "usr-447",
"occurred_at": "2026-03-26T09:15:22Z",
"flushed": true
},
{
"id": "evt-003",
"event_type": "validation_error",
"error_message": "Cannot combine publicTransit with kilometers",
"session_id": "sess-abc124",
"user_id": "usr-448",
"occurred_at": "2026-03-26T10:05:00Z",
"flushed": false
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 3
}
}
GET
/api/v1/analytics/expense-type-events/api/v1/analytics/expense-type-events/:id
Get a specific analytics event by ID
Public
Response Example
{
"id": "evt-002",
"event_type": "exclusion_triggered",
"trigger_type": "kilometers",
"disabled_types": [
"publicTransit"
],
"session_id": "sess-abc123",
"user_id": "usr-447",
"occurred_at": "2026-03-26T09:15:22Z",
"flushed": true
}
POST
/api/v1/analytics/expense-type-events/api/v1/analytics/expense-type-events
Track a new expense type analytics event
Public
Request Example
{
"event_type": "type_selected",
"expense_type": "parking",
"session_id": "sess-abc125",
"user_id": "usr-449",
"occurred_at": "2026-03-26T14:00:00Z"
}
Response Example
{
"id": "evt-004",
"event_type": "type_selected",
"expense_type": "parking",
"session_id": "sess-abc125",
"user_id": "usr-449",
"occurred_at": "2026-03-26T14:00:00Z",
"flushed": false
}
PUT
/api/v1/analytics/expense-type-events/api/v1/analytics/expense-type-events/:id
Update or annotate an analytics event (e.g. mark flushed)
Public
Request Example
{
"flushed": true
}
Response Example
{
"id": "evt-004",
"event_type": "type_selected",
"expense_type": "parking",
"session_id": "sess-abc125",
"user_id": "usr-449",
"occurred_at": "2026-03-26T14:00:00Z",
"flushed": true,
"flushed_at": "2026-03-26T14:05:00Z"
}
DELETE
/api/v1/analytics/expense-type-events/api/v1/analytics/expense-type-events/:id
Delete an analytics event record
Public
Response Example
{
"success": true,
"deleted_id": "evt-004"
}
POST
/api/v1/analytics/expense-type-events/api/v1/analytics/expense-type-events/flush
Flush all pending (unflushed) events to the analytics pipeline
Public
Request Example
{
"session_id": "sess-abc125"
}
Response Example
{
"flushed_count": 3,
"failed_count": 0,
"flushed_event_ids": [
"evt-003",
"evt-004",
"evt-005"
],
"flushed_at": "2026-03-26T14:10:00Z"
}