A saved Observatory grid layout. Each record is a complete, self-contained snapshot of a layout — built-in button configuration, unified tile order, and embedded element snapshots — so it can be shared by URL and saved ('learned') into another user's PDS without depending on the original author's element records, mirroring the spell architecture. tileOrder entries are 'builtin:<key>' for built-in tiles or 'element:<index>' pointing into the embedded elements array. An optional schedule makes the layout activate automatically during a daily time window.
any
Any valid record key
Properties
createdAt
string
datetime
Required
When this layout was first saved
createdBy
ref
#createdBy
Optional
No description available.
description
string
Optional
Optional description of what this layout is for
maxLength: 500 byteselements
array
of
unknown
Optional
Embedded snapshots of the custom elements this layout uses. Each entry mirrors the shape of a net.anisota.observatory.element record body (type, name, description, plus the type-specific payload: button, note, quote, reminder, divider, spacer, heading, or widget).
layout
ref
#layout
Optional
No description available.
name
string
Required
Display name for this layout
maxLength: 80 bytesschedule
ref
#schedule
Optional
No description available.
source
ref
#source
Optional
No description available.
updatedAt
string
datetime
Required
When this layout was last modified
View raw schema
{
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"name",
"createdAt",
"updatedAt"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"description": "Display name for this layout"
},
"layout": {
"ref": "#layout",
"type": "ref"
},
"source": {
"ref": "#source",
"type": "ref"
},
"elements": {
"type": "array",
"items": {
"type": "unknown"
},
"description": "Embedded snapshots of the custom elements this layout uses. Each entry mirrors the shape of a net.anisota.observatory.element record body (type, name, description, plus the type-specific payload: button, note, quote, reminder, divider, spacer, heading, or widget)."
},
"schedule": {
"ref": "#schedule",
"type": "ref"
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "When this layout was first saved"
},
"createdBy": {
"ref": "#createdBy",
"type": "ref"
},
"updatedAt": {
"type": "string",
"format": "datetime",
"description": "When this layout was last modified"
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Optional description of what this layout is for"
}
}
},
"description": "A saved Observatory grid layout. Each record is a complete, self-contained snapshot of a layout — built-in button configuration, unified tile order, and embedded element snapshots — so it can be shared by URL and saved ('learned') into another user's PDS without depending on the original author's element records, mirroring the spell architecture. tileOrder entries are 'builtin:<key>' for built-in tiles or 'element:<index>' pointing into the embedded elements array. An optional schedule makes the layout activate automatically during a daily time window."
}