Something a visitor made, saved or configured on a site at minomobi.com. Written to the VISITOR'S OWN repository, never to a server the lab controls: the lab factory stores nothing and the visitor keeps, moves and deletes their own work. One collection serves every site in the factory because ATProto OAuth scopes cannot be granted by prefix — `site` is what separates them, and the record key must begin with the site's slug so two sites cannot overwrite each other's slot.
any
Any valid record key
Properties
createdAt
string
datetime
Required
An RFC 3339 formatted timestamp.
data
string
Optional
Machine payload, JSON-encoded as a string. A string rather than an open object on purpose: it keeps a hard size bound, and it makes explicit that only the writing site knows the shape.
maxLength: 200000 byteskind
string
Optional
The site's own name for what this record is: 'save', 'drawing', 'settings', 'entry'. Sites define their own vocabulary here; this is where a per-site type lives when a per-site NSID cannot be authorised.
maxLength: 64 bytessite
string
Required
The lab site's slug — the path segment under minomobi.com that wrote this. A reader lists the collection and filters on this field.
maxLength: 32 bytestext
string
Optional
Human-readable content, if this record has any. Prose belongs here rather than inside `data`, so that a generic reader can show something useful without knowing the site's format.
maxLength: 100000 bytesmaxGraphemes: 10000 graphemestitle
string
Optional
Short human-readable label, for a list of saved things.
maxLength: 1000 bytesmaxGraphemes: 100 graphemesupdatedAt
string
datetime
Optional
An RFC 3339 formatted timestamp.
View raw schema
{
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"site",
"createdAt"
],
"properties": {
"data": {
"type": "string",
"maxLength": 200000,
"description": "Machine payload, JSON-encoded as a string. A string rather than an open object on purpose: it keeps a hard size bound, and it makes explicit that only the writing site knows the shape."
},
"kind": {
"type": "string",
"maxLength": 64,
"description": "The site's own name for what this record is: 'save', 'drawing', 'settings', 'entry'. Sites define their own vocabulary here; this is where a per-site type lives when a per-site NSID cannot be authorised."
},
"site": {
"type": "string",
"maxLength": 32,
"description": "The lab site's slug — the path segment under minomobi.com that wrote this. A reader lists the collection and filters on this field."
},
"text": {
"type": "string",
"maxLength": 100000,
"description": "Human-readable content, if this record has any. Prose belongs here rather than inside `data`, so that a generic reader can show something useful without knowing the site's format.",
"maxGraphemes": 10000
},
"title": {
"type": "string",
"maxLength": 1000,
"description": "Short human-readable label, for a list of saved things.",
"maxGraphemes": 100
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"updatedAt": {
"type": "string",
"format": "datetime"
}
}
},
"description": "Something a visitor made, saved or configured on a site at minomobi.com. Written to the VISITOR'S OWN repository, never to a server the lab controls: the lab factory stores nothing and the visitor keeps, moves and deletes their own work. One collection serves every site in the factory because ATProto OAuth scopes cannot be granted by prefix — `site` is what separates them, and the record key must begin with the site's slug so two sites cannot overwrite each other's slot."
}