app.lovesky.actor.defs
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"aspectRatio": {
"properties": {
"height": {
"minimum": 1,
"type": "integer"
},
"width": {
"minimum": 1,
"type": "integer"
}
},
"required": [
"width",
"height"
],
"type": "object"
},
"photo": {
"description": "A public card photo. Blobs are world-readable and may be cached by any relay or mirror; users should be told this before upload.",
"properties": {
"alt": {
"maxGraphemes": 300,
"maxLength": 3000,
"type": "string"
},
"aspectRatio": {
"ref": "#aspectRatio",
"type": "ref"
},
"image": {
"accept": [
"image/jpeg",
"image/png",
"image/webp"
],
"maxSize": 2000000,
"type": "blob"
}
},
"required": [
"image"
],
"type": "object"
},
"photoView": {
"properties": {
"alt": {
"type": "string"
},
"aspectRatio": {
"ref": "#aspectRatio",
"type": "ref"
},
"fullsize": {
"format": "uri",
"type": "string"
},
"thumb": {
"format": "uri",
"type": "string"
}
},
"required": [
"thumb",
"fullsize"
],
"type": "object"
},
"preferences": {
"description": "PRIVATE. Matching preferences held only by the Lovesky AppView, encrypted at rest. This object is an XRPC payload, never a repo record. It holds everything a public card must not: gender, who the user is seeking, birthdate, location.",
"properties": {
"ageMax": {
"maximum": 120,
"minimum": 18,
"type": "integer"
},
"ageMin": {
"maximum": 120,
"minimum": 18,
"type": "integer"
},
"birthDate": {
"description": "Used to enforce 18+ and to compute the age shown in-app. Never published.",
"format": "datetime",
"type": "string"
},
"discoverable": {
"description": "False pauses the account: the card stays published but is hidden from discovery.",
"type": "boolean"
},
"gender": {
"knownValues": [
"woman",
"man",
"non-binary"
],
"maxLength": 64,
"type": "string"
},
"geohash": {
"description": "Client truncates to 6 characters (about 1.2 km cells) before sending. The AppView never stores anything finer.",
"maxLength": 12,
"type": "string"
},
"maxDistanceKm": {
"maximum": 20000,
"minimum": 1,
"type": "integer"
},
"seeking": {
"items": {
"knownValues": [
"women",
"men",
"non-binary",
"everyone"
],
"maxLength": 64,
"type": "string"
},
"maxLength": 8,
"type": "array"
}
},
"required": [
"birthDate",
"gender",
"seeking"
],
"type": "object"
},
"profileView": {
"description": "A card hydrated by the AppView for an authenticated viewer. Combines the public record with private, per-viewer state.",
"properties": {
"age": {
"description": "Computed at request time from private birthDate. Shown in-app only.",
"type": "integer"
},
"bio": {
"maxGraphemes": 500,
"maxLength": 5000,
"type": "string"
},
"did": {
"format": "did",
"type": "string"
},
"displayName": {
"maxGraphemes": 64,
"maxLength": 640,
"type": "string"
},
"handle": {
"format": "handle",
"type": "string"
},
"indexedAt": {
"format": "datetime",
"type": "string"
},
"intent": {
"items": {
"maxLength": 64,
"type": "string"
},
"type": "array"
},
"interests": {
"items": {
"maxGraphemes": 32,
"maxLength": 320,
"type": "string"
},
"type": "array"
},
"labels": {
"items": {
"ref": "com.atproto.label.defs#label",
"type": "ref"
},
"type": "array"
},
"languages": {
"items": {
"format": "language",
"type": "string"
},
"type": "array"
},
"mutuals": {
"description": "Number of accounts followed by both the viewer and this profile, from the public Bluesky graph.",
"type": "integer"
},
"photos": {
"items": {
"ref": "#photoView",
"type": "ref"
},
"type": "array"
},
"prompts": {
"items": {
"ref": "#prompt",
"type": "ref"
},
"type": "array"
},
"pronouns": {
"maxGraphemes": 24,
"maxLength": 240,
"type": "string"
},
"region": {
"maxGraphemes": 64,
"maxLength": 640,
"type": "string"
},
"sharedInterests": {
"items": {
"type": "string"
},
"type": "array"
},
"tagline": {
"maxGraphemes": 120,
"maxLength": 1200,
"type": "string"
},
"viewer": {
"ref": "#viewerState",
"type": "ref"
}
},
"required": [
"did",
"handle",
"indexedAt"
],
"type": "object"
},
"prompt": {
"description": "A short question-and-answer pair shown on the public card.",
"properties": {
"answer": {
"maxGraphemes": 300,
"maxLength": 3000,
"type": "string"
},
"question": {
"maxGraphemes": 120,
"maxLength": 1200,
"type": "string"
}
},
"required": [
"question",
"answer"
],
"type": "object"
},
"viewerState": {
"description": "Per-viewer relationship state. Deliberately omits likedBy and blockedBy so one-sided likes and blocks never leak. following/followedBy come from the public Bluesky graph.",
"properties": {
"blocking": {
"type": "boolean"
},
"followedBy": {
"description": "This account follows the viewer on Bluesky.",
"type": "boolean"
},
"following": {
"description": "The viewer follows this account on Bluesky.",
"type": "boolean"
},
"liked": {
"type": "boolean"
},
"matched": {
"type": "boolean"
}
},
"type": "object"
}
},
"id": "app.lovesky.actor.defs",
"lexicon": 1
}
Metadata
- DID
-
did:plc:r5pj64joaywqnvk2obembpt7 - CID
-
bafyreidf2ahsgktuldbr7ccquooe46kjbt2be6oiagspdwyjktr4m7nr3q - Indexed At
- 2026-10-14 09:27 UTC
- AT-URI
-
at://did:plc:r5pj64joaywqnvk2obembpt7/com.atproto.lexicon.schema/app.lovesky.actor.defs
Referenced Schemas (1)
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
The public Lovesky dating card. Creating this record is the act of opting in; deleting it is the act of opting out. It is replicated to every relay and readable by anyone, so it must never contain sexual orientation, ge…
-
Record of the user confirming they're 18 or over. Required before flipping any adult-content label (nsfw, etc.) from 'hide' to 'blur' or 'show'. Once present, persists indefinitely — set at first opt-in, cleared only …
-
The viewer's home browse area and search radius.