rip.pds.admin.defs
Schema Diff
+13 -7
Compatibility Analysis
Breaking Changes Detected
4 breaking changes, 4 non-breaking changes.
Breaking Changes (4)
- 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") }
- RemovedVertex RemovedVertex { vertex_id: "rip.pds.admin.defs#ownerView.recentHandle" }
- RemovedEdge RemovedEdge { src: "rip.pds.admin.defs#ownerView", tgt: "rip.pds.admin.defs#ownerView.recentHandle", kind: "prop", name: Some("recentHandle") }
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "rip.pds.admin.defs#ownerView.handle" }
- AddedVertex AddedVertex { vertex_id: "rip.pds.admin.defs#ownerView.lastSeenAt" }
- AddedEdge AddedEdge { src: "rip.pds.admin.defs#ownerView", tgt: "rip.pds.admin.defs#ownerView.handle", kind: "prop", name: Some("handle") }
- AddedEdge AddedEdge { src: "rip.pds.admin.defs#ownerView", tgt: "rip.pds.admin.defs#ownerView.lastSeenAt", kind: "prop", name: Some("lastSeenAt") }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "rip.pds.admin.defs#ownerView.recentHandle" }
Added Elements
AddedVertex { vertex_id: "rip.pds.admin.defs#ownerView.handle" }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") }
- Breaking: RemovedEdge { src: "rip.pds.admin.defs#ownerView", tgt: "rip.pds.admin.defs#ownerView.recentHandle", kind: "prop", name: Some("recentHandle") }
- Non-breaking: AddedEdge { src: "rip.pds.admin.defs#ownerView", tgt: "rip.pds.admin.defs#ownerView.handle", kind: "prop", name: Some("handle") }
- 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
},
180
+
"handle": {
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.",
182
+
"format": "handle",
183
+
"type": "string"
184
+
},
179
185
"lastCreatedAt": {
186
+
"description": "When they last created an account. Absent when they hold none and never have.",
187
+
"format": "datetime",
188
+
"type": "string"
189
+
},
190
+
"lastSeenAt": {
191
+
"description": "Their last authenticated request. Absent for anyone last seen before this was recorded.",
180
192
"format": "datetime",
181
193
"type": "string"
182
194
},
183
195
"limits": {
184
-
"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.",
185
197
"ref": "#limitsView",
186
198
"type": "ref"
187
199
},
188
200
"live": {
189
201
"description": "Accounts they hold right now.",
190
202
"type": "integer"
191
203
},
192
204
"maxLifetimeDays": {
193
205
"description": "How far an account of theirs may be extended, after any override.",
194
206
"type": "integer"
195
207
},
196
208
"quota": {
197
209
"description": "Live accounts they may hold at once, after any override. Zero means they may create nothing further.",
198
210
"type": "integer"
199
211
},
200
-
"recentHandle": {
201
-
"description": "A handle of theirs, so the row is recognisable. Not an identity: handles are recycled.",
202
-
"type": "string"
203
-
},
204
212
"takenDown": {
205
213
"description": "Accounts of theirs the PDS currently considers taken down.",
206
214
"type": "integer"
207
215
}
208
216
},
209
217
"required": [
210
218
"did",
211
219
"live",
212
220
"deleted",
213
221
"takenDown",
214
-
"firstSeenAt",
215
-
"lastCreatedAt",
216
222
"quota",
217
223
"maxLifetimeDays"
218
224
],
219
225
"type": "object"
220
226
}
221
227
},
222
228
"id": "rip.pds.admin.defs",
223
229
"lexicon": 1
224
230
}