{
"id": "org.hyperboards.board",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"subject",
"createdAt"
],
"properties": {
"config": {
"ref": "#boardConfig",
"type": "ref",
"description": "Board-level visual configuration (background, colors, aspect ratio)."
},
"subject": {
"ref": "com.atproto.repo.strongRef",
"type": "ref",
"description": "Reference to the org.hypercerts.claim.activity or org.hypercerts.claim.collection this board visualizes."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this record was originally created."
},
"contributorConfigs": {
"type": "array",
"items": {
"ref": "#contributorConfig",
"type": "ref"
},
"maxLength": 1000,
"description": "Per-contributor configuration entries for this board."
}
}
},
"description": "Configuration record for a hyperboard, wrapping an underlying activity or collection with visual presentation settings. Stored in the creator's PDS."
},
"boardConfig": {
"type": "object",
"properties": {
"imageShape": {
"type": "string",
"maxLength": 20,
"description": "Shape used to crop contributor images on this board.",
"knownValues": [
"circular",
"square"
]
},
"aspectRatio": {
"type": "string",
"maxLength": 10,
"description": "Display aspect ratio of the board.",
"knownValues": [
"16:9",
"4:3",
"1:1"
]
},
"borderColor": {
"type": "string",
"maxLength": 20,
"description": "Border color as a hex string (e.g. '#000000')."
},
"backgroundType": {
"type": "string",
"maxLength": 10,
"description": "Type of background content.",
"knownValues": [
"image",
"iframe"
]
},
"backgroundColor": {
"type": "string",
"maxLength": 20,
"description": "Background color as a hex string (e.g. '#ffffff')."
},
"backgroundImage": {
"refs": [
"org.hypercerts.defs#uri",
"org.hypercerts.defs#smallImage"
],
"type": "union",
"description": "Background image as a URI or image blob."
},
"grayscaleImages": {
"type": "boolean",
"description": "Whether contributor images are rendered in grayscale. Default: false."
},
"backgroundOpacity": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Background opacity as a percentage (0–100)."
},
"backgroundGrayscale": {
"type": "boolean",
"description": "Whether the background is rendered in grayscale. Default: true."
},
"backgroundIframeUrl": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "URI of the background iframe."
}
},
"description": "Visual configuration for a hyperboard's background, colors, and layout."
},
"contributorConfig": {
"type": "object",
"required": [
"contributor"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Click-through link URL for this contributor."
},
"image": {
"refs": [
"org.hypercerts.defs#uri",
"org.hypercerts.defs#smallImage"
],
"type": "union",
"description": "Avatar or face image for this contributor on this board, as a URI or image blob."
},
"video": {
"refs": [
"org.hypercerts.defs#uri",
"org.hypercerts.defs#smallVideo"
],
"type": "union",
"description": "Video for this contributor, as a URI (embed/direct link) or uploaded video blob."
},
"override": {
"type": "boolean",
"description": "When true, these values take precedence over the contributor's own profile and display settings. When false or omitted, they are only used as fallbacks if the contributor has not set their own settings."
},
"hoverImage": {
"refs": [
"org.hypercerts.defs#uri",
"org.hypercerts.defs#smallImage"
],
"type": "union",
"description": "Image overlay shown when hovering over this contributor, as a URI or image blob."
},
"contributor": {
"refs": [
"com.atproto.repo.strongRef",
"org.hypercerts.claim.activity#contributorIdentity"
],
"type": "union",
"description": "Identifies the contributor being styled. A strong reference to an org.hypercerts.claim.contributorInformation record, or a contributorIdentity (DID or identifier string) for contributors without a dedicated record."
},
"displayName": {
"type": "string",
"maxLength": 640,
"description": "Display name for this contributor on this board.",
"maxGraphemes": 64
},
"hoverIframeUrl": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Iframe overlay shown when hovering over this contributor."
}
},
"description": "Configuration for a specific contributor within a board. Values serve as fallbacks when the contributor has not defined them on their profile. It can also be used to override contributor settings on this board without changing their global profile."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}