One row of the viewer's activity feed: an outgoing interest the viewer raised on someone's listing, an incoming raised hand on the viewer's own listing, or a neighbor who followed the viewer (carries 'followers' instead of 'listing').
Properties
createdAt
string
datetime
Required
When this activity event was created — the newest-first merge/sort key across all activity kinds (interest, hand, follow).
followers
array
of refcommunity.gifthood.actor.defs#profileView
Optional
The neighbor(s) who followed the viewer. Present only on 'follow' rows; followers[0] is the primary actor, length > 1 is a grouped card. Each row carries its own viewer state (the inline follow-back button reads viewer.following).
isFollowBack
boolean
Optional
Order-sensitive reciprocity: true when the viewer followed this actor first and they reciprocated. Server-computed; meaningful only on single (ungrouped) 'follow' rows.
kind
string
Required
Row kind — 'interest' = the viewer raised their hand on someone's listing (outgoing); 'hand' = a neighbor raised their hand on the viewer's listing (incoming). Open set (knownValues, not a closed enum): future kinds extend without a breaking change. 'follow' = a neighbor followed the viewer (incoming social signal; carries 'followers' instead of 'listing'). Exchange kinds (all carry 'listing' + 'neighbor' = the other party): 'exchangeChosen'/'exchangeCompleted' for the counterparty, 'exchangeConfirmed'/'exchangeDeclined' for the listing owner. 'exchangeReturned' = the owner marked the item the viewer borrowed as returned (incoming). 'reply' = a neighbor left a note on the viewer's listing (incoming; carries 'listing' + 'neighbor' + 'note'; hidden notes and the note author's own listing never produce a row).
interest, hand, follow, exchangeChosen, exchangeCompleted, exchangeConfirmed, exchangeDeclined, exchangeReturned, replylisting
ref
#listingView
Optional
The listing this activity is about (full listingView; carries the moderation signal the outgoing-row gate reads). Absent on 'follow' rows.
neighbor
ref
community.gifthood.actor.defs#profileViewBasic
Optional
The other member this row is about. Present on 'hand' rows (the neighbor who raised their hand), 'reply' rows (the note's author), and on exchange rows (the other party of the exchange); absent on 'interest' rows.
note
string
Optional
The interest's note/message — the viewer's own on an 'interest' row, the neighbor's on a 'hand' row (the same underlying interests.message field), or the note's text on a 'reply' row (replies.text). Absent when none left.
View raw schema
{
"type": "object",
"required": [
"kind",
"createdAt"
],
"properties": {
"kind": {
"type": "string",
"description": "Row kind — 'interest' = the viewer raised their hand on someone's listing (outgoing); 'hand' = a neighbor raised their hand on the viewer's listing (incoming). Open set (knownValues, not a closed enum): future kinds extend without a breaking change. 'follow' = a neighbor followed the viewer (incoming social signal; carries 'followers' instead of 'listing'). Exchange kinds (all carry 'listing' + 'neighbor' = the other party): 'exchangeChosen'/'exchangeCompleted' for the counterparty, 'exchangeConfirmed'/'exchangeDeclined' for the listing owner. 'exchangeReturned' = the owner marked the item the viewer borrowed as returned (incoming). 'reply' = a neighbor left a note on the viewer's listing (incoming; carries 'listing' + 'neighbor' + 'note'; hidden notes and the note author's own listing never produce a row).",
"knownValues": [
"interest",
"hand",
"follow",
"exchangeChosen",
"exchangeCompleted",
"exchangeConfirmed",
"exchangeDeclined",
"exchangeReturned",
"reply"
]
},
"note": {
"type": "string",
"description": "The interest's note/message — the viewer's own on an 'interest' row, the neighbor's on a 'hand' row (the same underlying interests.message field), or the note's text on a 'reply' row (replies.text). Absent when none left."
},
"listing": {
"ref": "#listingView",
"type": "ref",
"description": "The listing this activity is about (full listingView; carries the moderation signal the outgoing-row gate reads). Absent on 'follow' rows."
},
"neighbor": {
"ref": "community.gifthood.actor.defs#profileViewBasic",
"type": "ref",
"description": "The other member this row is about. Present on 'hand' rows (the neighbor who raised their hand), 'reply' rows (the note's author), and on exchange rows (the other party of the exchange); absent on 'interest' rows."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "When this activity event was created — the newest-first merge/sort key across all activity kinds (interest, hand, follow)."
},
"followers": {
"type": "array",
"items": {
"ref": "community.gifthood.actor.defs#profileView",
"type": "ref"
},
"description": "The neighbor(s) who followed the viewer. Present only on 'follow' rows; followers[0] is the primary actor, length > 1 is a grouped card. Each row carries its own viewer state (the inline follow-back button reads viewer.following)."
},
"isFollowBack": {
"type": "boolean",
"description": "Order-sensitive reciprocity: true when the viewer followed this actor first and they reciprocated. Server-computed; meaningful only on single (ungrouped) 'follow' rows."
}
},
"description": "One row of the viewer's activity feed: an outgoing interest the viewer raised on someone's listing, an incoming raised hand on the viewer's own listing, or a neighbor who followed the viewer (carries 'followers' instead of 'listing')."
}