org.ballotready.constituent.profile

ballotready.org

Schema Diff

+59 -6

From

CID
bafyreiekbow547z...
Indexed At
2026-06-25 18:13 UTC
View this version

To

CID
bafyreiexe5s5ipu...
Indexed At
2026-10-16 01:34 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

8 breaking changes, 19 non-breaking changes.

Breaking Changes (8)
  • 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") }
  • RemovedVertex RemovedVertex { vertex_id: "org.ballotready.constituent.profile:body.bskyProfileFallbacks" }
  • RemovedVertex RemovedVertex { vertex_id: "org.ballotready.constituent.profile:body.bskyProfileFallbacks:items" }
  • RemovedVertex RemovedVertex { vertex_id: "org.ballotready.constituent.profile:body.usState" }
  • RemovedEdge RemovedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.bskyProfileFallbacks", kind: "prop", name: Some("bskyProfileFallbacks") }
  • RemovedEdge RemovedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.usState", kind: "prop", name: Some("usState") }
  • RemovedEdge RemovedEdge { src: "org.ballotready.constituent.profile:body.bskyProfileFallbacks", tgt: "org.ballotready.constituent.profile:body.bskyProfileFallbacks:items", kind: "items", name: None }
Non-Breaking Changes (19)
  • 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.bskyProfileProperties" }
  • AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.bskyProfileProperties:items" }
  • AddedVertex AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.constituentOf" }
  • 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.bskyProfileProperties", kind: "prop", name: Some("bskyProfileProperties") }
  • AddedEdge AddedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.constituentOf", kind: "prop", name: Some("constituentOf") }
  • 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.bskyProfileProperties", tgt: "org.ballotready.constituent.profile:body.bskyProfileProperties:items", kind: "items", name: None }
  • 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

Removed Elements

  • RemovedVertex { vertex_id: "org.ballotready.constituent.profile:body.bskyProfileFallbacks" }
  • RemovedVertex { vertex_id: "org.ballotready.constituent.profile:body.bskyProfileFallbacks:items" }
  • RemovedVertex { vertex_id: "org.ballotready.constituent.profile:body.usState" }

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.bskyProfileProperties" }
  • AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.bskyProfileProperties:items" }
  • AddedVertex { vertex_id: "org.ballotready.constituent.profile:body.constituentOf" }
  • 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") }
  • Breaking: RemovedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.bskyProfileFallbacks", kind: "prop", name: Some("bskyProfileFallbacks") }
  • Breaking: RemovedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.usState", kind: "prop", name: Some("usState") }
  • Breaking: RemovedEdge { src: "org.ballotready.constituent.profile:body.bskyProfileFallbacks", tgt: "org.ballotready.constituent.profile:body.bskyProfileFallbacks:items", kind: "items", name: None }
  • 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.bskyProfileProperties", kind: "prop", name: Some("bskyProfileProperties") }
  • Non-breaking: AddedEdge { src: "org.ballotready.constituent.profile:body", tgt: "org.ballotready.constituent.profile:body.constituentOf", kind: "prop", name: Some("constituentOf") }
  • 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.bskyProfileProperties", tgt: "org.ballotready.constituent.profile:body.bskyProfileProperties:items", kind: "items", name: None }
  • 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": {
9 -
          "bskyProfileFallbacks": {
10 -
            "description": "List of properties to pull from the user's Bluesky profile",
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 +
          },
44 +
          "bskyProfileProperties": {
45 +
            "description": "List of properties to inherit from the user's Bluesky profile (app.bsky.actor.profile).",
11 46
            "items": {
12 47
              "enum": [
48 +
                "avatar",
49 +
                "banner",
13 50
                "displayName",
14 51
                "description"
15 52
              ],
16 53
              "type": "string"
17 54
            },
18 55
            "type": "array"
19 56
          },
57 +
          "constituentOf": {
58 +
            "description": "Self-declared constituency group, e.g. \"Michigan\" or \"United States\".",
59 +
            "maxGraphemes": 64,
60 +
            "maxLength": 640,
61 +
            "type": "string"
62 +
          },
20 63
          "createdAt": {
64 +
            "description": "Timestamp when this record was originally created.",
21 65
            "format": "datetime",
22 66
            "type": "string"
23 67
          },
24 68
          "description": {
25 -
            "description": "Free-form profile description text.",
69 +
            "description": "The constituent's bio/description.",
26 70
            "maxGraphemes": 256,
27 71
            "maxLength": 2560,
28 72
            "type": "string"
29 73
          },
30 74
          "displayName": {
75 +
            "description": "The constituent's display name.",
31 76
            "maxGraphemes": 64,
32 77
            "maxLength": 640,
33 78
            "type": "string"
34 79
          },
35 -
          "usState": {
36 -
            "description": "Two-letter abbreviation for your current U.S. state or territory",
37 -
            "type": "string"
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"
38 88
          }
39 89
        },
90 +
        "required": [
91 +
          "createdAt"
92 +
        ],
40 93
        "type": "object"
41 94
      },
42 95
      "type": "record"
43 96
    }
44 97
  },
45 98
  "id": "org.ballotready.constituent.profile",
46 99
  "lexicon": 1
47 100
}

Compare Other Versions

Lexicon Garden

@