rip.pds.admin.defs

pds.rip

Schema Diff

+8 -3

From

CID
bafyreiatzdok5vu...
Indexed At
2026-09-24 02:27 UTC
View this version

To

CID
bafyreignvwubwh4...
Indexed At
2026-09-24 02:56 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 2 non-breaking changes.

Breaking Changes (2)
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "rip.pds.admin.defs#ownerView", src: "rip.pds.admin.defs#ownerView", tgt: "rip.pds.admin.defs#ownerView.lastCreatedAt", kind: "prop", name: Some("lastCreatedAt") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "rip.pds.admin.defs#ownerView", src: "rip.pds.admin.defs#ownerView", tgt: "rip.pds.admin.defs#ownerView.firstSeenAt", kind: "prop", name: Some("firstSeenAt") }
Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "rip.pds.admin.defs#ownerView.lastSeenAt" }
  • AddedEdge AddedEdge { src: "rip.pds.admin.defs#ownerView", tgt: "rip.pds.admin.defs#ownerView.lastSeenAt", kind: "prop", name: Some("lastSeenAt") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "rip.pds.admin.defs#ownerView.lastSeenAt" }

Additional Notes

  • Breaking: RequiredEdgeRemoved { vertex_id: "rip.pds.admin.defs#ownerView", src: "rip.pds.admin.defs#ownerView", tgt: "rip.pds.admin.defs#ownerView.lastCreatedAt", kind: "prop", name: Some("lastCreatedAt") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "rip.pds.admin.defs#ownerView", src: "rip.pds.admin.defs#ownerView", tgt: "rip.pds.admin.defs#ownerView.firstSeenAt", kind: "prop", name: Some("firstSeenAt") }
  • Non-breaking: AddedEdge { src: "rip.pds.admin.defs#ownerView", tgt: "rip.pds.admin.defs#ownerView.lastSeenAt", kind: "prop", name: Some("lastSeenAt") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "accountView": {
5 5
      "description": "An account as an operator sees it, which is an accountView plus who holds it.",
6 6
      "properties": {
7 7
        "createdAt": {
8 8
          "format": "datetime",
9 9
          "type": "string"
10 10
        },
11 11
        "deletedAt": {
12 12
          "format": "datetime",
13 13
          "type": "string"
14 14
        },
15 15
        "did": {
16 16
          "format": "did",
17 17
          "type": "string"
18 18
        },
19 19
        "didMethod": {
20 20
          "knownValues": [
21 21
            "plc",
22 22
            "web"
23 23
          ],
24 24
          "type": "string"
25 25
        },
26 26
        "expiresAt": {
27 27
          "description": "Absent when the account never expires.",
28 28
          "format": "datetime",
29 29
          "type": "string"
30 30
        },
31 31
        "extensions": {
32 32
          "type": "integer"
33 33
        },
34 34
        "handle": {
35 35
          "format": "handle",
36 36
          "type": "string"
37 37
        },
38 38
        "handleDomain": {
39 39
          "type": "string"
40 40
        },
41 41
        "origin": {
42 42
          "description": "Whether this server minted the identity or it arrived by migration.",
43 43
          "knownValues": [
44 44
            "minted",
45 45
            "imported"
46 46
          ],
47 47
          "type": "string"
48 48
        },
49 49
        "ownerDid": {
50 50
          "description": "Who asked for this account. Absent for anything created before the invite gate.",
51 51
          "format": "did",
52 52
          "type": "string"
53 53
        },
54 54
        "protected": {
55 55
          "type": "boolean"
56 56
        },
57 57
        "retiredAt": {
58 58
          "description": "When the identity was tombstoned or unpublished.",
59 59
          "format": "datetime",
60 60
          "type": "string"
61 61
        },
62 62
        "status": {
63 63
          "type": "string"
64 64
        }
65 65
      },
66 66
      "required": [
67 67
        "did",
68 68
        "handle",
69 69
        "didMethod",
70 70
        "origin",
71 71
        "createdAt"
72 72
      ],
73 73
      "type": "object"
74 74
    },
75 75
    "eventView": {
76 76
      "description": "One recorded lifecycle fact.",
77 77
      "properties": {
78 78
        "createdAt": {
79 79
          "format": "datetime",
80 80
          "type": "string"
81 81
        },
82 82
        "detail": {
83 83
          "description": "The event's payload as JSON, for anything the fields above do not carry.",
84 84
          "type": "string"
85 85
        },
86 86
        "did": {
87 87
          "format": "did",
88 88
          "type": "string"
89 89
        },
90 90
        "handle": {
91 91
          "description": "The handle that DID held, when it is still known.",
92 92
          "type": "string"
93 93
        },
94 94
        "id": {
95 95
          "type": "integer"
96 96
        },
97 97
        "source": {
98 98
          "description": "What observed it.",
99 99
          "knownValues": [
100 100
            "proxy",
101 101
            "firehose",
102 102
            "scheduler",
103 103
            "admin",
104 104
            "labeler"
105 105
          ],
106 106
          "type": "string"
107 107
        },
108 108
        "type": {
109 109
          "knownValues": [
110 110
            "account.created",
111 111
            "account.deleted",
112 112
            "account.takedown",
113 113
            "account.restored",
114 114
            "account.labeled",
115 115
            "handle.changed",
116 116
            "identity.retired"
117 117
          ],
118 118
          "type": "string"
119 119
        }
120 120
      },
121 121
      "required": [
122 122
        "id",
123 123
        "type",
124 124
        "source",
125 125
        "createdAt"
126 126
      ],
127 127
      "type": "object"
128 128
    },
129 129
    "limitsView": {
130 130
      "description": "An operator's exception to the configured limits for one person.",
131 131
      "properties": {
132 132
        "createdAt": {
133 133
          "format": "datetime",
134 134
          "type": "string"
135 135
        },
136 136
        "lifetimeDaysOverride": {
137 137
          "description": "Maximum lifetime in days. Absent means the configured default.",
138 138
          "type": "integer"
139 139
        },
140 140
        "note": {
141 141
          "description": "Why, in the operator's own words.",
142 142
          "maxLength": 500,
143 143
          "type": "string"
144 144
        },
145 145
        "quotaOverride": {
146 146
          "description": "Live accounts they may hold. Absent means the configured default.",
147 147
          "type": "integer"
148 148
        },
149 149
        "updatedAt": {
150 150
          "format": "datetime",
151 151
          "type": "string"
152 152
        },
153 153
        "updatedBy": {
154 154
          "format": "did",
155 155
          "type": "string"
156 156
        }
157 157
      },
158 158
      "required": [
159 159
        "createdAt",
160 160
        "updatedAt"
161 161
      ],
162 162
      "type": "object"
163 163
    },
164 164
    "ownerView": {
165 165
      "description": "Someone who holds or has held accounts on this server, as an operator sees them.",
166 166
      "properties": {
167 167
        "deleted": {
168 168
          "description": "Accounts of theirs that are gone, however they went.",
169 169
          "type": "integer"
170 170
        },
171 171
        "did": {
172 172
          "format": "did",
173 173
          "type": "string"
174 174
        },
175 175
        "firstSeenAt": {
176 +
          "description": "Earliest of their first account and their first authenticated request. Absent when neither is known.",
176 177
          "format": "datetime",
177 178
          "type": "string"
178 179
        },
179 180
        "handle": {
180 181
          "description": "The holder's own handle, resolved from their DID document. Not a handle they minted here. Absent when their identity could not be resolved, in which case the DID is the name.",
181 182
          "format": "handle",
182 183
          "type": "string"
183 184
        },
184 185
        "lastCreatedAt": {
186 +
          "description": "When they last created an account. Absent when they hold none and never have.",
185 187
          "format": "datetime",
186 188
          "type": "string"
187 189
        },
190 +
        "lastSeenAt": {
191 +
          "description": "Their last authenticated request. Absent for anyone last seen before this was recorded.",
192 +
          "format": "datetime",
193 +
          "type": "string"
194 +
        },
188 195
        "limits": {
189 -
          "description": "The override itself. Absent when the configured defaults apply untouched.",
196 +
          "description": "The override itself. Absent when the configured defaults apply untouched, which is the common case: a record exists for everyone who has used this server, not only for exceptions.",
190 197
          "ref": "#limitsView",
191 198
          "type": "ref"
192 199
        },
193 200
        "live": {
194 201
          "description": "Accounts they hold right now.",
195 202
          "type": "integer"
196 203
        },
197 204
        "maxLifetimeDays": {
198 205
          "description": "How far an account of theirs may be extended, after any override.",
199 206
          "type": "integer"
200 207
        },
201 208
        "quota": {
202 209
          "description": "Live accounts they may hold at once, after any override. Zero means they may create nothing further.",
203 210
          "type": "integer"
204 211
        },
205 212
        "takenDown": {
206 213
          "description": "Accounts of theirs the PDS currently considers taken down.",
207 214
          "type": "integer"
208 215
        }
209 216
      },
210 217
      "required": [
211 218
        "did",
212 219
        "live",
213 220
        "deleted",
214 221
        "takenDown",
215 -
        "firstSeenAt",
216 -
        "lastCreatedAt",
217 222
        "quota",
218 223
        "maxLifetimeDays"
219 224
      ],
220 225
      "type": "object"
221 226
    }
222 227
  },
223 228
  "id": "rip.pds.admin.defs",
224 229
  "lexicon": 1
225 230
}

Compare Other Versions

Lexicon Garden

@