The person timeline (cross-company)
Every event stamped with this human, newest first, INTERLEAVED across every company they have ever been affiliated with — the query that answers "have we talked to Elly?" once instead of N times. Backed by the partial (person_id, timestamp DESC) index. Source events appear as <source>_<event_type> (emails_message.sent); ackDB's own lifecycle events are BARE (contact.created, contact.ended, historical person.merged, new person.identity.merged) with source: system. Independent personal events have null company/contact IDs and remain on the human even after an affiliation is added. Includes independent personal events. Filters apply before pagination; personal ownership with entityId is invalid.
Request
- Base URLhttp://localhost:3009
- AuthHTTP bearer
Path parameters
Person id (ULID = persons.person_id). A merged (tombstoned) id resolves to its survivor.
Query parameters
CSV include list — only these sources. Mutually exclusive with source/excludeSources (400).
CSV exclude list — drop these sources (e.g. ackDB bookkeeping events). Mutually exclusive with source/sources (400).
person selects sole-person events; company selects company-associated events; omit for both. Filters before pagination/counts. Personal ownership conflicts with entityId/company graph.
Company filter before pagination/counts.
Response
{ data: EntityEvent[], total, limit, offset, personId }.
Example response
{
"data": [
{
"id": "01HXYZ123456789ABCDEFGH",
"source": "slack",
"eventType": "message",
"summary": "Customer asked about pricing in #acme-corp"
}
]
}Changes
No recorded changes to this operation across all 1 revision of this API.