org.ballotready.constituent.profile

ballotready.org

Schema Diff

+52 -4

From

CID
bafyreidbqf2hhmi...
Indexed At
2026-06-26 14:53 UTC
View this version

To

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

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
}

Compare Other Versions

Lexicon Garden

@