A public note on a listing — appreciation, a question, a joke; the front porch. Thread-native: root is ALWAYS the listing; parent is the listing for top-level notes or another reply once threaded rendering exists. Mirrors app.bsky.feed.post's reply-ref semantics. Public, like the interest record.
tid
Timestamp-based ID
Properties
createdAt
string
datetime
Required
An RFC 3339 formatted timestamp.
facets
array
of
ref
app.bsky.richtext.facet
Optional
Annotations over `text` (mentions, links) keyed by UTF-8 byte range. Reuses app.bsky.richtext.facet. Author-asserted display hints; clients re-validate ranges. Addresses and phone numbers are deliberately NOT faceted here.
labels
union
Optional
Self-labels set by the author (e.g. the global 'sexual' value), gated by the AppView like listing self-labels.
langs
array
of
string
language
Optional
No description available.
maxLength: 3 itemsparent
ref
com.atproto.repo.strongRef
Required
What this note replies to: the listing itself for top-level notes, or another reply. parent's root MUST equal this record's root; indexers enforce that at read time.
root
ref
com.atproto.repo.strongRef
Required
Strong reference (URI + CID) to the listing this note belongs to. Always the listing — one query on root fetches a whole thread family.
text
string
Required
The note. Keep pickup logistics in private messages.
maxLength: 600 bytesminLength: 1 bytesmaxGraphemes: 300 graphemesminGraphemes: 1 graphemesView raw schema
{
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"root",
"parent",
"text",
"createdAt"
],
"properties": {
"root": {
"ref": "com.atproto.repo.strongRef",
"type": "ref",
"description": "Strong reference (URI + CID) to the listing this note belongs to. Always the listing — one query on root fetches a whole thread family."
},
"text": {
"type": "string",
"maxLength": 600,
"minLength": 1,
"description": "The note. Keep pickup logistics in private messages.",
"maxGraphemes": 300,
"minGraphemes": 1
},
"langs": {
"type": "array",
"items": {
"type": "string",
"format": "language"
},
"maxLength": 3
},
"facets": {
"type": "array",
"items": {
"ref": "app.bsky.richtext.facet",
"type": "ref"
},
"description": "Annotations over `text` (mentions, links) keyed by UTF-8 byte range. Reuses app.bsky.richtext.facet. Author-asserted display hints; clients re-validate ranges. Addresses and phone numbers are deliberately NOT faceted here."
},
"labels": {
"refs": [
"com.atproto.label.defs#selfLabels"
],
"type": "union",
"description": "Self-labels set by the author (e.g. the global 'sexual' value), gated by the AppView like listing self-labels."
},
"parent": {
"ref": "com.atproto.repo.strongRef",
"type": "ref",
"description": "What this note replies to: the listing itself for top-level notes, or another reply. parent's root MUST equal this record's root; indexers enforce that at read time."
},
"createdAt": {
"type": "string",
"format": "datetime"
}
}
},
"description": "A public note on a listing — appreciation, a question, a joke; the front porch. Thread-native: root is ALWAYS the listing; parent is the listing for top-level notes or another reply once threaded rendering exists. Mirrors app.bsky.feed.post's reply-ref semantics. Public, like the interest record."
}