{
"id": "me.linkna.linkinbio",
"defs": {
"card": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the card."
},
"url": {
"type": "string",
"format": "uri",
"description": "URL the card links to."
},
"text": {
"type": "string",
"maxLength": 100,
"description": "Display text for the card."
},
"type": {
"type": "string",
"description": "Card type discriminator. Omitted or \"link\" for link cards."
},
"enabled": {
"type": "boolean",
"description": "Whether the card is visible on the public page."
},
"highlighted": {
"type": "boolean",
"description": "Whether the card is highlighted."
}
},
"description": "A single link card on the page."
},
"main": {
"key": "literal:self",
"type": "record",
"record": {
"type": "object",
"required": [
"cards"
],
"properties": {
"cards": {
"type": "array",
"items": {
"refs": [
"#card",
"#widgetGoodreads"
],
"type": "union"
},
"description": "Ordered list of cards on the page. Can be link cards or widget cards."
},
"theme": {
"type": "string",
"description": "Theme identifier for page styling."
},
"socialIcons": {
"type": "array",
"items": {
"ref": "#socialIcon",
"type": "ref"
},
"description": "Social media icon links shown on the profile."
}
}
},
"description": "A user's link-in-bio page containing cards."
},
"socialIcon": {
"type": "object",
"required": [
"id",
"platform",
"url"
],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier."
},
"url": {
"type": "string",
"format": "uri",
"description": "URL to the social profile."
},
"platform": {
"type": "string",
"description": "Social platform identifier."
}
},
"description": "A social media icon link."
},
"goodreadsBook": {
"type": "object",
"required": [
"title",
"author"
],
"properties": {
"link": {
"type": "string",
"description": "Link to the book on Goodreads."
},
"title": {
"type": "string",
"description": "Book title."
},
"author": {
"type": "string",
"description": "Book author."
},
"rating": {
"type": "number",
"description": "User rating (0-5)."
},
"coverUrl": {
"type": "string",
"description": "URL to the book cover image."
}
},
"description": "A book from a Goodreads shelf."
},
"widgetGoodreads": {
"type": "object",
"required": [
"id",
"type",
"goodreadsUserId",
"shelf",
"books"
],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the card."
},
"type": {
"type": "string",
"const": "goodreads",
"description": "Card type discriminator."
},
"books": {
"type": "array",
"items": {
"ref": "#goodreadsBook",
"type": "ref"
},
"maxLength": 20,
"description": "Cached books from the shelf (max 20)."
},
"shelf": {
"type": "string",
"description": "Goodreads shelf name (currently-reading, read, to-read)."
},
"enabled": {
"type": "boolean",
"description": "Whether the card is visible on the public page."
},
"lastSyncedAt": {
"type": "string",
"format": "datetime",
"description": "When the books were last fetched from Goodreads."
},
"goodreadsUserId": {
"type": "string",
"description": "Goodreads user ID."
}
},
"description": "A Goodreads shelf widget."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}