{
	"lexicon": 1,
	"id": "pub.byline.profile",
	"defs": {
		"main": {
			"type": "record",
			"key": "literal:self",
			"description": "An author's byline.pub profile, signed by and stored in the author's own repository. The repo's DID is the author identity; this record is the byline.pub-specific public profile that extends it, independent of any venue's own profile record. One record per repo (key 'self').",
			"record": {
				"type": "object",
				"required": ["createdAt"],
				"properties": {
					"displayName": {
						"type": "string",
						"maxLength": 256,
						"maxGraphemes": 64,
						"description": "Public display name for the author's byline.pub page. Optional and byline-specific; not synced from any venue profile. Falls back to the repo handle if unset."
					},
					"bio": {
						"type": "string",
						"maxGraphemes": 2560,
						"maxLength": 10000,
						"description": "Author biography for the byline.pub page. Optional and byline-specific."
					},
					"avatar": {
						"type": "blob",
						"accept": ["image/png", "image/jpeg", "image/webp"],
						"maxSize": 1000000,
						"description": "Profile image, stored as a blob in the author's own repository."
					},
					"penNames": {
						"type": "array",
						"description": "Other names the author publishes under. A book directory may list one person under several bylines.",
						"items": {
							"type": "string",
							"maxLength": 256,
							"maxGraphemes": 256
						}
					},
					"genres": {
						"type": "array",
						"description": "Genres or categories this author writes in. Freeform, used for directory browse/filter.",
						"items": {
							"type": "string",
							"maxLength": 128,
							"maxGraphemes": 128
						}
					},
					"links": {
						"type": "array",
						"description": "Author-level links: website, social, retailer profile, etc.",
						"items": {
							"type": "ref",
							"ref": "pub.byline.defs#link"
						}
					},
					"createdAt": {
						"type": "string",
						"format": "datetime"
					},
					"updatedAt": {
						"type": "string",
						"format": "datetime"
					}
				}
			}
		}
	}
}
