net.anisota.chronicle.achievement

anisota.net

Schema Diff

+1 -1

From

CID
bafyreiasrbaseo7...
Indexed At
2026-06-22 18:49 UTC
View this version

To

CID
bafyreianfyx3ua4...
Indexed At
2026-07-20 17:07 UTC
View this version

Compatibility Analysis

Backward Compatible

No changes detected.

1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "achievementContext": {
5 5
      "description": "Contextual data at the time of achievement unlock",
6 6
      "properties": {
7 7
        "followerCount": {
8 8
          "description": "Follower count when achievement was unlocked",
9 9
          "minimum": 0,
10 10
          "type": "integer"
11 11
        },
12 12
        "level": {
13 13
          "description": "Player level when achievement was unlocked",
14 14
          "minimum": 1,
15 15
          "type": "integer"
16 16
        },
17 17
        "postCount": {
18 18
          "description": "Post count when achievement was unlocked",
19 19
          "minimum": 0,
20 20
          "type": "integer"
21 21
        },
22 22
        "specimenCount": {
23 23
          "description": "Specimen count when achievement was unlocked",
24 24
          "minimum": 0,
25 25
          "type": "integer"
26 26
        },
27 27
        "totalXP": {
28 28
          "description": "Total XP when achievement was unlocked",
29 29
          "minimum": 0,
30 30
          "type": "integer"
31 31
        }
32 32
      },
33 33
      "type": "object"
34 34
    },
35 35
    "chronicleSignature": {
36 36
      "description": "ES256 cryptographic signature proving record authenticity. The signature itself proves legitimacy - no separate verification lexicons needed.",
37 37
      "properties": {
38 38
        "alg": {
39 39
          "description": "Signing algorithm (ES256)",
40 40
          "type": "string"
41 41
        },
42 42
        "kid": {
43 43
          "description": "Key identifier for the signing key",
44 44
          "type": "string"
45 45
        },
46 46
        "nonce": {
47 47
          "description": "Unique random nonce to prevent replay",
48 48
          "type": "string"
49 49
        },
50 50
        "sig": {
51 51
          "description": "Base64-encoded ES256 signature",
52 52
          "type": "string"
53 53
        },
54 54
        "signedAt": {
55 55
          "description": "When the record was signed",
56 56
          "format": "datetime",
57 57
          "type": "string"
58 58
        },
59 59
        "version": {
60 60
          "description": "Signature schema version",
61 61
          "type": "integer"
62 62
        }
63 63
      },
64 64
      "required": [
65 65
        "sig",
66 66
        "alg",
67 67
        "kid",
68 68
        "signedAt",
69 69
        "nonce",
70 70
        "version"
71 71
      ],
72 72
      "type": "object"
73 73
    },
74 74
    "main": {
75 -
      "description": "Consolidated achievement record. Replaces 30 beta achievement lexicons. rkey is the achievement ID (e.g. followers2500, level50). Created once with createRecord when achievement is unlocked. Immutable.",
75 +
      "description": "DEPRECATED - superseded by net.anisota.chronicle.milestone. No new records are written to this collection; the schema is kept because earlier records still exist on users' PDSes and remain readable. rkey is the achievement ID (e.g. followers2500, level50). Immutable.",
76 76
      "key": "any",
77 77
      "record": {
78 78
        "properties": {
79 79
          "achievementId": {
80 80
            "description": "Unique identifier for the achievement (e.g. 'followers2500', 'level50')",
81 81
            "maxLength": 100,
82 82
            "type": "string"
83 83
          },
84 84
          "category": {
85 85
            "description": "Category of the achievement",
86 86
            "enum": [
87 87
              "followers",
88 88
              "level",
89 89
              "social",
90 90
              "collection",
91 91
              "patterns",
92 92
              "special",
93 93
              "expedition"
94 94
            ],
95 95
            "type": "string"
96 96
          },
97 97
          "context": {
98 98
            "ref": "#achievementContext",
99 99
            "type": "ref"
100 100
          },
101 101
          "createdAt": {
102 102
            "description": "When the achievement record was created",
103 103
            "format": "datetime",
104 104
            "type": "string"
105 105
          },
106 106
          "dailyRecordRef": {
107 107
            "description": "AT URI of the daily record when the achievement was unlocked",
108 108
            "type": "string"
109 109
          },
110 110
          "description": {
111 111
            "description": "Description of what was accomplished",
112 112
            "maxLength": 500,
113 113
            "type": "string"
114 114
          },
115 115
          "name": {
116 116
            "description": "Display name of the achievement",
117 117
            "maxLength": 100,
118 118
            "type": "string"
119 119
          },
120 120
          "rarity": {
121 121
            "description": "Rarity tier of the achievement",
122 122
            "enum": [
123 123
              "common",
124 124
              "uncommon",
125 125
              "rare",
126 126
              "epic",
127 127
              "legendary"
128 128
            ],
129 129
            "type": "string"
130 130
          },
131 131
          "signature": {
132 132
            "ref": "#chronicleSignature",
133 133
            "type": "ref"
134 134
          },
135 135
          "tier": {
136 136
            "description": "Tier or milestone value (e.g. 2500 for followers2500)",
137 137
            "minimum": 0,
138 138
            "type": "integer"
139 139
          },
140 140
          "unlockedAt": {
141 141
            "description": "When the achievement was unlocked",
142 142
            "format": "datetime",
143 143
            "type": "string"
144 144
          },
145 145
          "xpReward": {
146 146
            "description": "XP awarded for this achievement",
147 147
            "minimum": 0,
148 148
            "type": "integer"
149 149
          }
150 150
        },
151 151
        "required": [
152 152
          "achievementId",
153 153
          "category",
154 154
          "unlockedAt",
155 155
          "signature",
156 156
          "createdAt"
157 157
        ],
158 158
        "type": "object"
159 159
      },
160 160
      "type": "record"
161 161
    }
162 162
  },
163 163
  "id": "net.anisota.chronicle.achievement",
164 164
  "lexicon": 1
165 165
}

Compare Other Versions

Lexicon Garden

@