Skip to content

Activity

Type Parameter Default type
TCustom Record<string, unknown>
actor: string;

actor_user:
| {
custom: Record<string, unknown>;
id: string;
}
| null;

custom: TCustom;

edited_at: string | null;

Null until the activity has been patched.


foreign_id: string | null;

id: string;

object: string;

origin_feed: string;

optional own_reactions?: string[];

reaction_counts: Record<string, number>;

refs: string[];

Objects this activity points at, as type:id. Look them up in FeedPage.objects.


target: string | null;

time: string;

verb: string;

version: number;

Row version. Starts at 1 and increments on ANY change to this activity — a patch, a reaction count moving, a soft delete. This is the field to compare when deciding whether a copy you hold is stale; edited_at marks patches only, so it misses the field that changes most.


optional warnings?: string[];

Non-fatal problems the API noticed about the activity you just WROTE. Present only on the response to a create — a feed read never carries it. Today the only value is "actor_user_unresolved": the write succeeded, but actor names a user: id that has never been through upsertUser, so actor_user is null and every card renders with no name and no avatar until that user is upserted. Upsert the user, then re-read.