{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "OpenDeck profile and synced preferences.",
"key": "literal:self",
"record": {
"properties": {
"accentColor": {
"description": "Hex accent color, e.g. #3b82f6.",
"maxGraphemes": 9,
"maxLength": 90,
"type": "string"
},
"bio": {
"maxGraphemes": 2000,
"maxLength": 20000,
"type": "string"
},
"breakReminders": {
"description": "Suggest breaks after long study sessions or days; absent means on.",
"type": "boolean"
},
"creditStyle": {
"description": "How shown credit roles look: theme styles the whole profile, badges only lists them; absent means theme.",
"enum": [
"theme",
"badges"
],
"type": "string"
},
"defaultVisibility": {
"enum": [
"public",
"private"
],
"type": "string"
},
"newCardsPerDay": {
"description": "How many new cards to introduce per deck each day; absent means no limit.",
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"publicStats": {
"description": "Summary of your study stats without deck or card details; only present while showStats is everyone.",
"ref": "space.opendeck.profile#publicStats",
"type": "ref"
},
"reminderDays": {
"description": "Weekdays 0-6 (Sun-Sat); absent means Monday to Friday.",
"items": {
"maximum": 6,
"minimum": 0,
"type": "integer"
},
"maxLength": 7,
"type": "array"
},
"reminderEnabled": {
"type": "boolean"
},
"reminderHour": {
"description": "Local hour (0-23) of the study reminder; absent means 19.",
"maximum": 23,
"minimum": 0,
"type": "integer"
},
"shortTermIntervals": {
"description": "Default short-term intervals preset; absent means auto.",
"enum": [
"auto",
"quick",
"balanced",
"relaxed",
"spaced"
],
"type": "string"
},
"showActivityOnProfile": {
"type": "boolean"
},
"showCredits": {
"description": "Who sees your OpenDeck credit roles on your profile; absent means everyone.",
"enum": [
"nobody",
"me",
"everyone"
],
"type": "string"
},
"showDecksOnProfile": {
"type": "boolean"
},
"showFollowsOnProfile": {
"type": "boolean"
},
"showMotivation": {
"description": "Who sees tier progress boxes: nobody hides them, me shows them on the home, study and profile pages, everyone also shows the profile box to visitors (only while showTier is everyone); absent means me.",
"enum": [
"nobody",
"me",
"everyone"
],
"type": "string"
},
"showProgressOnProfile": {
"type": "boolean"
},
"showStats": {
"description": "Who sees your study stats on your profile; absent means me.",
"enum": [
"nobody",
"me",
"everyone"
],
"type": "string"
},
"showTier": {
"description": "Who sees your study tier on your profile, and with everyone also in battles; absent means me.",
"enum": [
"nobody",
"me",
"everyone"
],
"type": "string"
},
"studyDays": {
"description": "Study sessions per day (capped at 3) for the 84 days up to studyDaysEnd, oldest first; only present while the motivation box is public.",
"items": {
"maximum": 3,
"minimum": 0,
"type": "integer"
},
"maxLength": 84,
"type": "array"
},
"studyDaysEnd": {
"description": "Local date (YYYY-MM-DD) of the last entry in studyDays.",
"maxGraphemes": 10,
"maxLength": 100,
"type": "string"
},
"studyTier": {
"description": "Study tier from the days studied in the last four weeks; only present while it is shown publicly.",
"enum": [
"bronze",
"silver",
"gold",
"platinum",
"diamond",
"champion",
"grandChampion",
"supernova"
],
"type": "string"
},
"studyTierAt": {
"description": "When studyTier was last computed.",
"format": "datetime",
"type": "string"
},
"tierStyle": {
"description": "How a shown tier looks: theme styles the whole profile, badge only adds a badge; absent means theme.",
"enum": [
"theme",
"badge"
],
"type": "string"
},
"uiLanguage": {
"description": "BCP-47 language tag for the OpenDeck interface.",
"maxGraphemes": 20,
"maxLength": 200,
"type": "string"
},
"updatedAt": {
"format": "datetime",
"type": "string"
}
},
"type": "object"
},
"type": "record"
},
"publicStats": {
"properties": {
"activity": {
"description": "Repetitions per day for the days up to activityEnd, oldest first.",
"items": {
"minimum": 0,
"type": "integer"
},
"maxLength": 371,
"type": "array"
},
"activityEnd": {
"description": "Local date (YYYY-MM-DD) of the last entry in activity.",
"maxGraphemes": 10,
"maxLength": 100,
"type": "string"
},
"firstStudiedOn": {
"description": "Local date (YYYY-MM-DD) of the first study day.",
"maxGraphemes": 10,
"maxLength": 100,
"type": "string"
},
"lastStudiedAt": {
"format": "datetime",
"type": "string"
},
"learned": {
"description": "Cards in review.",
"type": "integer"
},
"learning": {
"description": "Cards in learning or relearning.",
"type": "integer"
},
"repetitions": {
"description": "All ratings ever given.",
"type": "integer"
},
"retention": {
"description": "Percent of ratings in the last 30 days that were not again.",
"maximum": 100,
"minimum": 0,
"type": "integer"
},
"secondsStudied": {
"description": "Active study time in the last 365 days.",
"type": "integer"
},
"updatedAt": {
"format": "datetime",
"type": "string"
}
},
"required": [
"learned",
"learning",
"repetitions",
"secondsStudied",
"activity",
"activityEnd",
"updatedAt"
],
"type": "object"
}
},
"id": "space.opendeck.profile",
"lexicon": 1
}