app.didpic.actor.defs
Schema Diff
+86 -2
Compatibility Analysis
Breaking Changes Detected
4 breaking changes, 26 non-breaking changes.
Breaking Changes (4)
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.actor.defs#profileView.pronouns", sort: "maxLength", value: "640" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.actor.defs#profileView.pronouns", sort: "maxGraphemes", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.actor.defs#profileView.location", sort: "maxLength", value: "640" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.actor.defs#profileView.location", sort: "maxGraphemes", value: "64" }
Non-Breaking Changes (26)
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#composePrefs" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#composePrefs.requireAltText" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#feedFilters" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#feedFilters.hideNoAltText" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#feedPref" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#feedPref.value" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#labelPrefs" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#labelPrefs.labels" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.descriptionFacets" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.descriptionFacets:items" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.location" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.pronouns" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.viewerBlockedBy" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.viewerBlocking" }
- AddedVertex AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.viewerSubscription" }
- AddedEdge AddedEdge { src: "app.didpic.actor.defs#composePrefs", tgt: "app.didpic.actor.defs#composePrefs.requireAltText", kind: "prop", name: Some("requireAltText") }
- AddedEdge AddedEdge { src: "app.didpic.actor.defs#feedFilters", tgt: "app.didpic.actor.defs#feedFilters.hideNoAltText", kind: "prop", name: Some("hideNoAltText") }
- AddedEdge AddedEdge { src: "app.didpic.actor.defs#feedPref", tgt: "app.didpic.actor.defs#feedPref.value", kind: "prop", name: Some("value") }
- AddedEdge AddedEdge { src: "app.didpic.actor.defs#labelPrefs", tgt: "app.didpic.actor.defs#labelPrefs.labels", kind: "prop", name: Some("labels") }
- AddedEdge AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.descriptionFacets", kind: "prop", name: Some("descriptionFacets") }
- AddedEdge AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.location", kind: "prop", name: Some("location") }
- AddedEdge AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.pronouns", kind: "prop", name: Some("pronouns") }
- AddedEdge AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.viewerBlockedBy", kind: "prop", name: Some("viewerBlockedBy") }
- AddedEdge AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.viewerBlocking", kind: "prop", name: Some("viewerBlocking") }
- AddedEdge AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.viewerSubscription", kind: "prop", name: Some("viewerSubscription") }
- AddedEdge AddedEdge { src: "app.didpic.actor.defs#profileView.descriptionFacets", tgt: "app.didpic.actor.defs#profileView.descriptionFacets:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.didpic.actor.defs#composePrefs" }AddedVertex { vertex_id: "app.didpic.actor.defs#composePrefs.requireAltText" }AddedVertex { vertex_id: "app.didpic.actor.defs#feedFilters" }AddedVertex { vertex_id: "app.didpic.actor.defs#feedFilters.hideNoAltText" }AddedVertex { vertex_id: "app.didpic.actor.defs#feedPref" }AddedVertex { vertex_id: "app.didpic.actor.defs#feedPref.value" }AddedVertex { vertex_id: "app.didpic.actor.defs#labelPrefs" }AddedVertex { vertex_id: "app.didpic.actor.defs#labelPrefs.labels" }AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.descriptionFacets" }AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.descriptionFacets:items" }AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.location" }AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.pronouns" }AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.viewerBlockedBy" }AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.viewerBlocking" }AddedVertex { vertex_id: "app.didpic.actor.defs#profileView.viewerSubscription" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.actor.defs#profileView.location", sort: "maxLength", value: "640" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.actor.defs#profileView.location", sort: "maxGraphemes", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.actor.defs#profileView.pronouns", sort: "maxGraphemes", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.didpic.actor.defs#profileView.pronouns", sort: "maxLength", value: "640" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.didpic.actor.defs#composePrefs", tgt: "app.didpic.actor.defs#composePrefs.requireAltText", kind: "prop", name: Some("requireAltText") }
- Non-breaking: AddedEdge { src: "app.didpic.actor.defs#feedFilters", tgt: "app.didpic.actor.defs#feedFilters.hideNoAltText", kind: "prop", name: Some("hideNoAltText") }
- Non-breaking: AddedEdge { src: "app.didpic.actor.defs#feedPref", tgt: "app.didpic.actor.defs#feedPref.value", kind: "prop", name: Some("value") }
- Non-breaking: AddedEdge { src: "app.didpic.actor.defs#labelPrefs", tgt: "app.didpic.actor.defs#labelPrefs.labels", kind: "prop", name: Some("labels") }
- Non-breaking: AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.descriptionFacets", kind: "prop", name: Some("descriptionFacets") }
- Non-breaking: AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.location", kind: "prop", name: Some("location") }
- Non-breaking: AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.pronouns", kind: "prop", name: Some("pronouns") }
- Non-breaking: AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.viewerBlockedBy", kind: "prop", name: Some("viewerBlockedBy") }
- Non-breaking: AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.viewerBlocking", kind: "prop", name: Some("viewerBlocking") }
- Non-breaking: AddedEdge { src: "app.didpic.actor.defs#profileView", tgt: "app.didpic.actor.defs#profileView.viewerSubscription", kind: "prop", name: Some("viewerSubscription") }
- Non-breaking: AddedEdge { src: "app.didpic.actor.defs#profileView.descriptionFacets", tgt: "app.didpic.actor.defs#profileView.descriptionFacets:items", kind: "items", name: None }
1
1
{
2
2
"id": "app.didpic.actor.defs",
3
3
"defs": {
4
+
"feedPref": {
5
+
"type": "object",
6
+
"required": [
7
+
"value"
8
+
],
9
+
"properties": {
10
+
"value": {
11
+
"type": "string",
12
+
"knownValues": [
13
+
"home",
14
+
"discover"
15
+
]
16
+
}
17
+
},
18
+
"description": "Last-selected home feed."
19
+
},
20
+
"labelPrefs": {
21
+
"type": "object",
22
+
"required": [
23
+
"labels"
24
+
],
25
+
"properties": {
26
+
"labels": {
27
+
"type": "unknown",
28
+
"description": "Map of label id to action ('hide' | 'blur' | 'show')."
29
+
}
30
+
},
31
+
"description": "Per-label moderation preferences."
32
+
},
33
+
"feedFilters": {
34
+
"type": "object",
35
+
"required": [
36
+
"hideNoAltText"
37
+
],
38
+
"properties": {
39
+
"hideNoAltText": {
40
+
"type": "boolean"
41
+
}
42
+
},
43
+
"description": "Viewer-side feed filtering options."
44
+
},
4
45
"profileView": {
5
46
"type": "object",
6
47
"required": [
7
48
"did"
8
49
],
9
50
"properties": {
10
51
"did": {
11
52
"type": "string",
12
53
"format": "did"
13
54
},
14
55
"handle": {
15
56
"type": "string",
16
57
"format": "handle"
17
58
},
59
+
"location": {
60
+
"type": "string",
61
+
"maxLength": 640,
62
+
"maxGraphemes": 64
63
+
},
64
+
"pronouns": {
65
+
"type": "string",
66
+
"maxLength": 640,
67
+
"maxGraphemes": 64
68
+
},
18
69
"avatarCid": {
19
70
"type": "string",
20
71
"format": "cid"
21
72
},
22
73
"bannerCid": {
23
74
"type": "string",
24
75
"format": "cid"
25
76
},
26
77
"indexedAt": {
27
78
"type": "string",
28
79
"format": "datetime"
29
80
},
30
81
"likesCount": {
31
82
"type": "integer",
32
83
"minimum": 0
33
84
},
34
85
"postsCount": {
35
86
"type": "integer",
36
87
"minimum": 0
37
88
},
38
89
"description": {
39
90
"type": "string",
40
91
"maxLength": 2560,
41
92
"maxGraphemes": 256
42
93
},
43
94
"displayName": {
44
95
"type": "string",
45
96
"maxLength": 640,
46
97
"maxGraphemes": 64
47
98
},
48
99
"followsCount": {
49
100
"type": "integer",
50
101
"minimum": 0
51
102
},
52
103
"followersCount": {
53
104
"type": "integer",
54
105
"minimum": 0
55
106
},
107
+
"viewerBlocking": {
108
+
"type": "string",
109
+
"format": "at-uri",
110
+
"description": "URI of the viewer's block record for this actor, if any."
111
+
},
112
+
"viewerBlockedBy": {
113
+
"type": "boolean",
114
+
"description": "Whether this actor has blocked the viewer."
115
+
},
56
116
"viewerFollowing": {
57
117
"type": "string",
58
118
"format": "at-uri",
59
119
"description": "URI of the viewer's follow record for this actor, if any."
120
+
},
121
+
"descriptionFacets": {
122
+
"type": "array",
123
+
"items": {
124
+
"ref": "app.didpic.richtext.facet",
125
+
"type": "ref"
126
+
},
127
+
"description": "Facets within description (mentions, tags, links)."
128
+
},
129
+
"viewerSubscription": {
130
+
"type": "boolean",
131
+
"description": "Whether the viewer is subscribed to this actor's post alerts."
132
+
}
133
+
},
134
+
"description": "Full profile view."
135
+
},
136
+
"composePrefs": {
137
+
"type": "object",
138
+
"required": [
139
+
"requireAltText"
140
+
],
141
+
"properties": {
142
+
"requireAltText": {
143
+
"type": "boolean"
60
144
}
61
145
},
62
-
"description": "Full profile view returned by app.didpic.actor.getProfile."
146
+
"description": "Compose-time enforcement options."
63
147
},
64
148
"profileBasic": {
65
149
"type": "object",
66
150
"required": [
67
151
"did"
68
152
],
69
153
"properties": {
70
154
"did": {
71
155
"type": "string",
72
156
"format": "did"
73
157
},
74
158
"handle": {
75
159
"type": "string",
76
160
"format": "handle"
77
161
},
78
162
"avatarCid": {
79
163
"type": "string",
80
164
"format": "cid"
81
165
},
82
166
"displayName": {
83
167
"type": "string",
84
168
"maxLength": 640,
85
169
"maxGraphemes": 64
86
170
},
87
171
"viewerFollowing": {
88
172
"type": "string",
89
173
"format": "at-uri",
90
174
"description": "URI of the viewer's follow record for this actor, if any."
91
175
}
92
176
},
93
-
"description": "Minimal profile info embedded inside other views. `viewerFollowing` is populated where the calling endpoint can cheaply join viewer follow state (e.g. graph.getFollows/getFollowers); it may be absent elsewhere. `handle` comes from the user's DID document (kept in sync via jetstream identity events) and is absent only for DIDs we've never been able to resolve."
177
+
"description": "Minimal profile info embedded inside other views."
94
178
}
95
179
},
96
180
"$type": "com.atproto.lexicon.schema",
97
181
"lexicon": 1
98
182
}