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