{
"id": "fm.freemix.actor.profile",
"defs": {
"link": {
"type": "object",
"required": [
"label",
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 3000,
"description": "Link URL"
},
"label": {
"type": "string",
"maxLength": 50,
"description": "Link display label (e.g., 'Spotify', 'SoundCloud')"
}
}
},
"main": {
"key": "literal:self",
"type": "record",
"record": {
"type": "object",
"required": [
"createdAt"
],
"properties": {
"bio": {
"type": "string",
"maxLength": 1000,
"description": "Artist bio (overrides Bluesky bio on FreeMix)"
},
"label": {
"type": "string",
"maxLength": 200,
"description": "Record label affiliation"
},
"links": {
"type": "array",
"items": {
"ref": "#link",
"type": "ref"
},
"maxLength": 10,
"description": "External links (Spotify, SoundCloud, Bandcamp, etc.)"
},
"roles": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50
},
"maxLength": 10,
"description": "Artist roles (e.g., producer, DJ, vocalist)"
},
"genres": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50
},
"maxLength": 10,
"description": "Artist's primary genres"
},
"avatarUrl": {
"type": "string",
"format": "uri",
"maxLength": 3000,
"description": "Avatar URL (overrides Bluesky avatar on FreeMix)"
},
"createdAt": {
"type": "string",
"format": "datetime",
"maxLength": 100,
"description": "Record creation timestamp"
},
"updatedAt": {
"type": "string",
"format": "datetime",
"maxLength": 100,
"description": "Last update timestamp"
},
"displayName": {
"type": "string",
"maxLength": 100,
"description": "Display name (overrides Bluesky display name on FreeMix)"
},
"proAffiliation": {
"type": "string",
"maxLength": 100,
"description": "PRO affiliation (e.g., BMI, ASCAP, PRS, GEMA)"
}
}
},
"description": "FreeMix-specific profile data that overlays the user's Bluesky profile"
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}