# space.opendeck.profile

> Published by [opendeck.space](https://lexicon.garden/identity/did:plc:5xoilbawtptc3wha4zplgkwd)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:5xoilbawtptc3wha4zplgkwd/space.opendeck.profile)
- [Documentation](https://lexicon.garden/lexicon/did:plc:5xoilbawtptc3wha4zplgkwd/space.opendeck.profile/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:5xoilbawtptc3wha4zplgkwd/space.opendeck.profile/examples)

## Definitions

### `space.opendeck.profile`

**Type**: `record`

OpenDeck profile and synced preferences.

**Key**: `literal:self`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `accentColor` | `string` | No | Hex accent color, e.g. #3b82f6. |
| `bio` | `string` | No |  |
| `breakReminders` | `boolean` | No | Suggest breaks after long study sessions or days; absent means on. |
| `creditStyle` | `string` | No | How shown credit roles look: theme styles the whole profile, badges only lists them; absent means theme. |
| `defaultVisibility` | `string` | No |  |
| `newCardsPerDay` | `integer` | No | How many new cards to introduce per deck each day; absent means no limit. |
| `publicStats` | `ref` → `space.opendeck.profile#publicStats` | No | Summary of your study stats without deck or card details; only present while showStats is everyone. |
| `reminderDays` | `array` | No | Weekdays 0-6 (Sun-Sat); absent means Monday to Friday. |
| `reminderEnabled` | `boolean` | No |  |
| `reminderHour` | `integer` | No | Local hour (0-23) of the study reminder; absent means 19. |
| `shortTermIntervals` | `string` | No | Default short-term intervals preset; absent means auto. |
| `showActivityOnProfile` | `boolean` | No |  |
| `showCredits` | `string` | No | Who sees your OpenDeck credit roles on your profile; absent means everyone. |
| `showDecksOnProfile` | `boolean` | No |  |
| `showFollowsOnProfile` | `boolean` | No |  |
| `showMotivation` | `string` | No | 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. |
| `showProgressOnProfile` | `boolean` | No |  |
| `showStats` | `string` | No | Who sees your study stats on your profile; absent means me. |
| `showTier` | `string` | No | Who sees your study tier on your profile, and with everyone also in battles; absent means me. |
| `studyDays` | `array` | No | Study sessions per day (capped at 3) for the 84 days up to studyDaysEnd, oldest first; only present while the motivation box is public. |
| `studyDaysEnd` | `string` | No | Local date (YYYY-MM-DD) of the last entry in studyDays. |
| `studyTier` | `string` | No | Study tier from the days studied in the last four weeks; only present while it is shown publicly. |
| `studyTierAt` | `string` (datetime) | No | When studyTier was last computed. |
| `tierStyle` | `string` | No | How a shown tier looks: theme styles the whole profile, badge only adds a badge; absent means theme. |
| `uiLanguage` | `string` | No | BCP-47 language tag for the OpenDeck interface. |
| `updatedAt` | `string` (datetime) | No |  |

### `space.opendeck.profile#publicStats`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `activity` | `array` | Yes | Repetitions per day for the days up to activityEnd, oldest first. |
| `activityEnd` | `string` | Yes | Local date (YYYY-MM-DD) of the last entry in activity. |
| `firstStudiedOn` | `string` | No | Local date (YYYY-MM-DD) of the first study day. |
| `lastStudiedAt` | `string` (datetime) | No |  |
| `learned` | `integer` | Yes | Cards in review. |
| `learning` | `integer` | Yes | Cards in learning or relearning. |
| `repetitions` | `integer` | Yes | All ratings ever given. |
| `retention` | `integer` | No | Percent of ratings in the last 30 days that were not again. |
| `secondsStudied` | `integer` | Yes | Active study time in the last 365 days. |
| `updatedAt` | `string` (datetime) | Yes |  |

## Raw Schema

```json
{
  "$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
}
```
