Update posted to one project. project.uri is a weak AT URI ref so it survives project edits.
tid
Timestamp-based ID
Properties
allowComments
boolean
Optional
When false, wips.social application/comment semantics reject new comments on this update. Omitted means true. Not a PDS-enforced lock.
createdAt
string
datetime
Required
Client-declared timestamp when the update was originally created.
facets
array
of
ref
app.bsky.richtext.facet
Optional
Rich-text annotations (mentions, links, tags) over text, using official app.bsky.richtext.facet. Application validators enforce UTF-8 codepoint-aligned byte ranges, per-facet feature caps, and http(s) link URIs. Ceiling is sized so max text + 50 media + 50 links + max facets stay under the explicit DAG-CBOR record budget.
maxLength: 20 itemslinks
array
of
ref
social.wips.defs#titledLink
Optional
Ordered user-authored links. App View may derive previews separately. Protocol ceiling is generous; operational UI limits belong in the app.
maxLength: 50 itemsmedia
array
of
union
Optional
Ordered media items. May freely mix images and videos using shared social.wips.defs media objects. Operational upload limits and safe MIME policy belong in the app, not as tiny product-shaped protocol caps.
maxLength: 50 itemsproject
ref
social.wips.defs#uriRef
Required
Stable AT URI of the social.wips.project record this update belongs to.
text
string
Optional
Optional caption / body text. Required by application semantics when facets are present.
maxLength: 80000 bytesmaxGraphemes: 8000 graphemesView raw schema
{
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"project",
"createdAt"
],
"properties": {
"text": {
"type": "string",
"maxLength": 80000,
"description": "Optional caption / body text. Required by application semantics when facets are present.",
"maxGraphemes": 8000
},
"links": {
"type": "array",
"items": {
"ref": "social.wips.defs#titledLink",
"type": "ref"
},
"maxLength": 50,
"description": "Ordered user-authored links. App View may derive previews separately. Protocol ceiling is generous; operational UI limits belong in the app."
},
"media": {
"type": "array",
"items": {
"refs": [
"social.wips.defs#image",
"social.wips.defs#video"
],
"type": "union"
},
"maxLength": 50,
"description": "Ordered media items. May freely mix images and videos using shared social.wips.defs media objects. Operational upload limits and safe MIME policy belong in the app, not as tiny product-shaped protocol caps."
},
"facets": {
"type": "array",
"items": {
"ref": "app.bsky.richtext.facet",
"type": "ref"
},
"maxLength": 20,
"description": "Rich-text annotations (mentions, links, tags) over text, using official app.bsky.richtext.facet. Application validators enforce UTF-8 codepoint-aligned byte ranges, per-facet feature caps, and http(s) link URIs. Ceiling is sized so max text + 50 media + 50 links + max facets stay under the explicit DAG-CBOR record budget."
},
"project": {
"ref": "social.wips.defs#uriRef",
"type": "ref",
"description": "Stable AT URI of the social.wips.project record this update belongs to."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when the update was originally created."
},
"allowComments": {
"type": "boolean",
"description": "When false, wips.social application/comment semantics reject new comments on this update. Omitted means true. Not a PDS-enforced lock."
}
}
},
"description": "Update posted to one project. project.uri is a weak AT URI ref so it survives project edits."
}