org.ballotready.constituent.endorsement
Schema Diff
+21 -1
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 7 non-breaking changes.
Breaking Changes (2)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.ballotready.constituent.endorsement#organization", src: "org.ballotready.constituent.endorsement#organization", tgt: "org.ballotready.constituent.endorsement#organization.civicEngineId", kind: "prop", name: Some("civicEngineId") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "org.ballotready.constituent.endorsement:body", src: "org.ballotready.constituent.endorsement:body", tgt: "org.ballotready.constituent.endorsement:body.candidacy", kind: "prop", name: Some("candidacy") }
Non-Breaking Changes (7)
- AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.endorsement#organization" }
- AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.endorsement#organization.civicEngineId" }
- AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.endorsement#organization.name" }
- AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.endorsement:body.organization" }
- AddedEdge AddedEdge { src: "org.ballotready.constituent.endorsement#organization", tgt: "org.ballotready.constituent.endorsement#organization.name", kind: "prop", name: Some("name") }
- AddedEdge AddedEdge { src: "org.ballotready.constituent.endorsement:body", tgt: "org.ballotready.constituent.endorsement:body.organization", kind: "prop", name: Some("organization") }
- AddedEdge AddedEdge { src: "org.ballotready.constituent.endorsement:body.organization", tgt: "org.ballotready.constituent.endorsement#organization", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "org.ballotready.constituent.endorsement#organization" }AddedVertex { vertex_id: "org.ballotready.constituent.endorsement#organization.civicEngineId" }AddedVertex { vertex_id: "org.ballotready.constituent.endorsement#organization.name" }AddedVertex { vertex_id: "org.ballotready.constituent.endorsement:body.organization" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "org.ballotready.constituent.endorsement#organization", src: "org.ballotready.constituent.endorsement#organization", tgt: "org.ballotready.constituent.endorsement#organization.civicEngineId", kind: "prop", name: Some("civicEngineId") }
- Breaking: RequiredEdgeRemoved { vertex_id: "org.ballotready.constituent.endorsement:body", src: "org.ballotready.constituent.endorsement:body", tgt: "org.ballotready.constituent.endorsement:body.candidacy", kind: "prop", name: Some("candidacy") }
- Non-breaking: AddedEdge { src: "org.ballotready.constituent.endorsement#organization", tgt: "org.ballotready.constituent.endorsement#organization.name", kind: "prop", name: Some("name") }
- Non-breaking: AddedEdge { src: "org.ballotready.constituent.endorsement:body", tgt: "org.ballotready.constituent.endorsement:body.organization", kind: "prop", name: Some("organization") }
- Non-breaking: AddedEdge { src: "org.ballotready.constituent.endorsement:body.organization", tgt: "org.ballotready.constituent.endorsement#organization", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"candidacy": {
5
5
"description": "A candidate in the running for a specific office in a specific election.",
6
6
"properties": {
7
7
"civicEngineId": {
8
8
"description": "CivicEngine API identifier for the candidacy.",
9
9
"type": "string"
10
10
},
11
11
"election": {
12
12
"description": "Election name.",
13
13
"type": "string"
14
14
},
15
15
"name": {
16
16
"description": "Candidate name.",
17
17
"type": "string"
18
18
},
19
19
"position": {
20
20
"description": "Position name.",
21
21
"type": "string"
22
22
}
23
23
},
24
24
"required": [
25
25
"civicEngineId"
26
26
],
27
27
"type": "object"
28
28
},
29
29
"main": {
30
30
"description": "An endorsement of a candidate for office declared by a constituent.",
31
31
"key": "tid",
32
32
"record": {
33
33
"properties": {
34
34
"candidacy": {
35
35
"ref": "#candidacy",
36
36
"type": "ref"
37
37
},
38
38
"comment": {
39
39
"description": "Custom comment regarding this endorsement.",
40
40
"maxGraphemes": 256,
41
41
"maxLength": 2560,
42
42
"type": "string"
43
43
},
44
44
"createdAt": {
45
45
"description": "Timestamp when this record was originally created.",
46
46
"format": "datetime",
47
47
"type": "string"
48
+
},
49
+
"organization": {
50
+
"ref": "#organization",
51
+
"type": "ref"
48
52
}
49
53
},
50
54
"required": [
51
-
"candidacy",
52
55
"createdAt"
53
56
],
54
57
"type": "object"
55
58
},
56
59
"type": "record"
60
+
},
61
+
"organization": {
62
+
"description": "An organization with verified endorsements.",
63
+
"properties": {
64
+
"civicEngineId": {
65
+
"description": "CivicEngine API identifier for the candidacy.",
66
+
"type": "string"
67
+
},
68
+
"name": {
69
+
"description": "Organization name.",
70
+
"type": "string"
71
+
}
72
+
},
73
+
"required": [
74
+
"civicEngineId"
75
+
],
76
+
"type": "object"
57
77
}
58
78
},
59
79
"id": "org.ballotready.constituent.endorsement",
60
80
"lexicon": 1
61
81
}