{
"id": "com.babesky.actor.profile",
"defs": {
"main": {
"key": "literal:self",
"type": "record",
"record": {
"type": "object",
"required": [
"createdAt"
],
"properties": {
"avatar": {
"type": "blob",
"accept": [
"image/png",
"image/jpeg",
"image/webp"
],
"maxSize": 1000000,
"description": "Optional avatar override. Must be a blob already present in the actor's PDS."
},
"niches": {
"type": "array",
"items": {
"type": "string",
"maxGraphemes": 32
},
"maxLength": 10,
"description": "Free-text content category tags chosen by the creator."
},
"customs": {
"ref": "#customsAvailability",
"type": "ref"
},
"tagline": {
"type": "string",
"description": "Short creator bio for Atmosphere apps.",
"maxGraphemes": 280
},
"bookings": {
"ref": "#bookingsAvailability",
"type": "ref"
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"collabBrand": {
"type": "boolean",
"description": "Creator is open to brand partnerships."
},
"taglineMode": {
"type": "string",
"description": "Whether the tagline supplements or replaces the Bluesky bio on Atmosphere apps.",
"knownValues": [
"addition",
"override"
]
},
"collabContent": {
"type": "boolean",
"description": "Creator is open to content collaborations."
},
"contentRating": {
"type": "string",
"description": "Self-declared content rating. Metadata only. Does not trigger any Bluesky labels.",
"knownValues": [
"none",
"nudity",
"sexual",
"porn",
"graphic-media"
]
},
"preferredContact": {
"ref": "#contactMethod",
"type": "ref",
"description": "How fans should reach out."
}
}
},
"description": "A creator's extended Atmosphere profile. Stored in the creator's own AT Protocol repository. Only affects Babesky and apps that read this lexicon."
},
"contactMethod": {
"type": "object",
"required": [
"kind"
],
"properties": {
"kind": {
"type": "string",
"knownValues": [
"platform",
"email",
"signal",
"whatsapp",
"telegram",
"germ",
"discord",
"phone",
"other"
]
},
"value": {
"type": "string",
"description": "Contact address (email, handle, phone number, etc.). Not used when kind=platform.",
"maxGraphemes": 200
},
"platformSlug": {
"type": "string",
"description": "When kind=platform, references one of the creator's saved com.babesky.actor.links entries by slug."
}
}
},
"customsAvailability": {
"type": "object",
"required": [
"enabled"
],
"properties": {
"details": {
"type": "string",
"description": "Free text: pricing, turnaround, do-not-do list, etc.",
"maxGraphemes": 500
},
"enabled": {
"type": "boolean"
},
"expiresAt": {
"type": "string",
"format": "datetime",
"description": "When this availability window closes. Maximum 30 days from publish time."
},
"contentTypes": {
"type": "array",
"items": {
"type": "string",
"knownValues": [
"photo",
"video",
"audio",
"physical",
"other"
]
}
}
}
},
"bookingsAvailability": {
"type": "object",
"required": [
"enabled"
],
"properties": {
"details": {
"type": "string",
"maxGraphemes": 500
},
"enabled": {
"type": "boolean"
},
"location": {
"type": "string",
"description": "City, region, or travel note.",
"maxGraphemes": 120
},
"expiresAt": {
"type": "string",
"format": "datetime",
"description": "When this availability window closes. Maximum 30 days from publish time."
}
}
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}