Skip to main content
Version: Latest

6.7 WhatsAppTimelineController

Route: api/v{version:apiVersion}/whatsapp/timeline · Class attributes: [Authorize] · 1 endpoint — a full audit trail of every lifecycle event on a conversation (assignment, transfer, close/reopen, archive/pin, tag add/remove, note add), used for the conversation's "Activity" tab.


GET GetTimeline/{conversationId}

Purpose: the full event history for a conversation, newest first. Permission: WhatsAppInbox.Timeline · Request: route conversationId:Guid

Response data:

[
{ "id": "e1...", "conversationId": "c1...", "eventType": 3, "eventTypeName": "ConversationAssigned",
"description": "Assigned to Sara Al-Harbi", "triggeredByUserId": "...", "triggeredByUserName": "Ahmed (Admin)",
"triggeredOn": "2026-07-05T10:15:00Z", "jsonMetadata": "{\"assignedToUserId\":\"...\"}" },
{ "id": "e2...", "conversationId": "c1...", "eventType": 7, "eventTypeName": "TagAdded",
"description": "Tag 'VIP' added", "triggeredByUserId": "...", "triggeredByUserName": "Sara Al-Harbi",
"triggeredOn": "2026-07-05T10:16:00Z", "jsonMetadata": "{\"tagId\":\"t1...\"}" }
]

Backend: WhatsAppTimelineService.GetTimelineAsync — reads events written as side effects by WhatsAppInboxController's assign/transfer/close/reopen/archive/pin actions, WhatsAppNoteController.AddNote, and WhatsAppTagController.AssignTag/RemoveTag. See §16 Appendix for the full WhatsAppConversationEventType enum. Calls Meta API: No. Angular/Flutter: the conversation's "Activity"/"History" tab, rendered as a vertical timeline.