org.ballotready.constituent.profile
Schema Diff
+52 -4
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 13 non-breaking changes.
Breaking Changes (2)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.ballotready.constituent.profile:body", src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.createdAt", kind: "prop", name: Some("createdAt") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.ballotready.constituent.profile#issue", src: "org.ballotready.constituent.profile#issue", tgt: "org.ballotready.constituent.profile#issue.civicEngineId", kind: "prop", name: Some("civicEngineId") }
Non-Breaking Changes (13)
- AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.profile#issue" }
- AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.profile#issue.civicEngineId" }
- AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.profile#issue.name" }
- AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.avatar" }
- AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.banner" }
- AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.topIssues" }
- AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.topIssues:items" }
- AddedEdge AddedEdge { src: "org.ballotready.constituent.profile#issue", tgt: "org.ballotready.constituent.profile#issue.name", kind: "prop", name: Some("name") }
- AddedEdge AddedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.avatar", kind: "prop", name: Some("avatar") }
- AddedEdge AddedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.banner", kind: "prop", name: Some("banner") }
- AddedEdge AddedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.topIssues", kind: "prop", name: Some("topIssues") }
- AddedEdge AddedEdge { src: "org.ballotready.constituent.profile:body.topIssues", tgt: "org.ballotready.constituent.profile:body.topIssues:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "org.ballotready.constituent.profile:body.topIssues:items", tgt: "org.ballotready.constituent.profile#issue", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "org.ballotready.constituent.profile#issue" }AddedVertex { vertex_id: "org.ballotready.constituent.profile#issue.civicEngineId" }AddedVertex { vertex_id: "org.ballotready.constituent.profile#issue.name" }AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.avatar" }AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.banner" }AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.topIssues" }AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.topIssues:items" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "org.ballotready.constituent.profile#issue", src: "org.ballotready.constituent.profile#issue", tgt: "org.ballotready.constituent.profile#issue.civicEngineId", kind: "prop", name: Some("civicEngineId") }
- Breaking: RequiredEdgeAdded { vertex_id: "org.ballotready.constituent.profile:body", src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.createdAt", kind: "prop", name: Some("createdAt") }
- Non-breaking: AddedEdge { src: "org.ballotready.constituent.profile#issue", tgt: "org.ballotready.constituent.profile#issue.name", kind: "prop", name: Some("name") }
- Non-breaking: AddedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.avatar", kind: "prop", name: Some("avatar") }
- Non-breaking: AddedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.banner", kind: "prop", name: Some("banner") }
- Non-breaking: AddedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.topIssues", kind: "prop", name: Some("topIssues") }
- Non-breaking: AddedEdge { src: "org.ballotready.constituent.profile:body.topIssues", tgt: "org.ballotready.constituent.profile:body.topIssues:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "org.ballotready.constituent.profile:body.topIssues:items", tgt: "org.ballotready.constituent.profile#issue", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
+
"issue": {
5
+
"description": "An issue or topic of concern.",
6
+
"properties": {
7
+
"civicEngineId": {
8
+
"description": "CivicEngine API identifier for the issue.",
9
+
"type": "string"
10
+
},
11
+
"name": {
12
+
"description": "Name of the issue.",
13
+
"type": "string"
14
+
}
15
+
},
16
+
"required": [
17
+
"civicEngineId"
18
+
],
19
+
"type": "object"
20
+
},
4
21
"main": {
5
22
"description": "A declaration of a BallotReady constituent profile.",
6
23
"key": "literal:self",
7
24
"record": {
8
25
"properties": {
26
+
"avatar": {
27
+
"accept": [
28
+
"image/png",
29
+
"image/jpeg"
30
+
],
31
+
"description": "Small image to be displayed next to posts from account. AKA, 'profile picture'",
32
+
"maxSize": 1000000,
33
+
"type": "blob"
34
+
},
35
+
"banner": {
36
+
"accept": [
37
+
"image/png",
38
+
"image/jpeg"
39
+
],
40
+
"description": "Larger horizontal image to display behind profile view.",
41
+
"maxSize": 1000000,
42
+
"type": "blob"
43
+
},
9
44
"bskyProfileProperties": {
10
-
"description": "List of properties to inherit from the user's app.bsky.actor.profile record.",
45
+
"description": "List of properties to inherit from the user's Bluesky profile (app.bsky.actor.profile).",
11
46
"items": {
12
47
"enum": [
13
48
"avatar",
14
49
"banner",
15
50
"displayName",
16
51
"description"
17
52
],
18
53
"type": "string"
19
54
},
20
55
"type": "array"
21
56
},
22
57
"constituentOf": {
23
-
"description": "Self-declared constituency, e.g. \"Michigan\" or \"United States\".",
58
+
"description": "Self-declared constituency group, e.g. \"Michigan\" or \"United States\".",
24
59
"maxGraphemes": 64,
25
60
"maxLength": 640,
26
61
"type": "string"
27
62
},
28
63
"createdAt": {
64
+
"description": "Timestamp when this record was originally created.",
29
65
"format": "datetime",
30
66
"type": "string"
31
67
},
32
68
"description": {
33
-
"description": "Free-form consituent profile description text.",
69
+
"description": "The constituent's bio/description.",
34
70
"maxGraphemes": 256,
35
71
"maxLength": 2560,
36
72
"type": "string"
37
73
},
38
74
"displayName": {
39
-
"description": "Display name for the constituent.",
75
+
"description": "The constituent's display name.",
40
76
"maxGraphemes": 64,
41
77
"maxLength": 640,
42
78
"type": "string"
79
+
},
80
+
"topIssues": {
81
+
"description": "Ranked list of the constituent's highest priority issues.",
82
+
"items": {
83
+
"ref": "#issue",
84
+
"type": "ref"
85
+
},
86
+
"maxLength": 10,
87
+
"type": "array"
43
88
}
44
89
},
90
+
"required": [
91
+
"createdAt"
92
+
],
45
93
"type": "object"
46
94
},
47
95
"type": "record"
48
96
}
49
97
},
50
98
"id": "org.ballotready.constituent.profile",
51
99
"lexicon": 1
52
100
}