One custom Observatory element — a button, note, quote, reminder, divider, spacer, heading or widget — as its own record, so it can be shared and saved ('learned') by other users, mirroring the spell architecture. Written by src/utils/observatoryElementService.js, which always writes exactly the payload key matching `type` and nothing for the others. The element's place and enabled state live in the separate ordering index at net.anisota.observatory.layout/self (entries: [{ rkey, enabled, order }]). Saved layouts (net.anisota.observatory.layout) embed snapshots of these elements rather than referencing them: a snapshot is this record's type, name, description and payload, without timestamps, attribution or $type.
any
Any valid record key
Properties
button
ref
#button
Optional
No description available.
createdAt
string
datetime
Required
When the element was first crafted; kept across edits.
createdBy
ref
#createdBy
RequiredNullable
The original crafter, carried across a learn. Null when the writer had no attribution to record.
description
string
Required
What the element is for, trimmed; may be empty.
divider
ref
#divider
Optional
No description available.
heading
ref
#heading
Optional
No description available.
name
string
Required
The element's name, trimmed; may be empty. A button with an empty label shows its name.
note
ref
#note
Optional
No description available.
quote
ref
#quote
Optional
No description available.
reminder
ref
#reminder
Optional
No description available.
source
ref
#source
Optional
No description available.
spacer
ref
#spacer
Optional
No description available.
type
string
Required
Which kind of element this is, and so which one payload key the record carries. A reader skips a type it does not know.
maxLength: 32 bytesbutton, note, quote, reminder, divider, spacer, heading, widgetupdatedAt
string
datetime
Required
When the element was last written.
widget
ref
#widget
Optional
No description available.
View raw schema
{
"description": "One custom Observatory element — a button, note, quote, reminder, divider, spacer, heading or widget — as its own record, so it can be shared and saved ('learned') by other users, mirroring the spell architecture. Written by src/utils/observatoryElementService.js, which always writes exactly the payload key matching `type` and nothing for the others. The element's place and enabled state live in the separate ordering index at net.anisota.observatory.layout/self (entries: [{ rkey, enabled, order }]). Saved layouts (net.anisota.observatory.layout) embed snapshots of these elements rather than referencing them: a snapshot is this record's type, name, description and payload, without timestamps, attribution or $type.",
"key": "any",
"record": {
"nullable": [
"createdBy"
],
"properties": {
"button": {
"ref": "#button",
"type": "ref"
},
"createdAt": {
"description": "When the element was first crafted; kept across edits.",
"format": "datetime",
"type": "string"
},
"createdBy": {
"description": "The original crafter, carried across a learn. Null when the writer had no attribution to record.",
"ref": "#createdBy",
"type": "ref"
},
"description": {
"description": "What the element is for, trimmed; may be empty.",
"type": "string"
},
"divider": {
"ref": "#divider",
"type": "ref"
},
"heading": {
"ref": "#heading",
"type": "ref"
},
"name": {
"description": "The element's name, trimmed; may be empty. A button with an empty label shows its name.",
"type": "string"
},
"note": {
"ref": "#note",
"type": "ref"
},
"quote": {
"ref": "#quote",
"type": "ref"
},
"reminder": {
"ref": "#reminder",
"type": "ref"
},
"source": {
"ref": "#source",
"type": "ref"
},
"spacer": {
"ref": "#spacer",
"type": "ref"
},
"type": {
"description": "Which kind of element this is, and so which one payload key the record carries. A reader skips a type it does not know.",
"knownValues": [
"button",
"note",
"quote",
"reminder",
"divider",
"spacer",
"heading",
"widget"
],
"maxLength": 32,
"type": "string"
},
"updatedAt": {
"description": "When the element was last written.",
"format": "datetime",
"type": "string"
},
"widget": {
"ref": "#widget",
"type": "ref"
}
},
"required": [
"type",
"name",
"description",
"createdBy",
"createdAt",
"updatedAt"
],
"type": "object"
},
"type": "record"
}