org.ballotready.constituent.endorsement

ballotready.org

Schema Diff

+21 -1

From

CID
bafyreibwyw5c4dm...
Indexed At
2026-10-16 01:33 UTC
View this version

To

CID
bafyreihamdat66t...
Indexed At
2026-10-16 02:11 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@