app.certified.badge.definition

certified.app

Schema Diff

+19 -2

From

CID
bafyreidbmjx5j3o...
Indexed At
2026-02-18 18:01 UTC
View this version

To

CID
bafyreihn2uiblsg...
Indexed At
2026-07-26 20:06 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

6 breaking changes, 4 non-breaking changes.

Breaking Changes (6)
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "app.certified.badge.definition:body", src: "app.certified.badge.definition:body", tgt: "app.certified.badge.definition:body.icon", kind: "prop", name: Some("icon") }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.certified.badge.definition:body.title", sort: "maxLength", value: "256" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.certified.badge.definition:body.badgeType", sort: "knownValues", value: "[\"endorsement\",\"verification\",\"participation\",\"certification\",\"affiliation\",\"recognition\"]" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.certified.badge.definition:body.badgeType", sort: "maxLength", value: "100" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.certified.badge.definition:body.description", sort: "maxGraphemes", value: "500" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.certified.badge.definition:body.description", sort: "maxLength", value: "5000" }
Non-Breaking Changes (4)
  • AddedVertex AddedVertex { vertex_id: "app.certified.badge.definition:body.signatures" }
  • AddedVertex AddedVertex { vertex_id: "app.certified.signature.defs#list" }
  • AddedEdge AddedEdge { src: "app.certified.badge.definition:body", tgt: "app.certified.badge.definition:body.signatures", kind: "prop", name: Some("signatures") }
  • AddedEdge AddedEdge { src: "app.certified.badge.definition:body.signatures", tgt: "app.certified.signature.defs#list", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.certified.badge.definition:body.signatures" }
  • AddedVertex { vertex_id: "app.certified.signature.defs#list" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "app.certified.badge.definition:body.badgeType", sort: "knownValues", value: "[\"endorsement\",\"verification\",\"participation\",\"certification\",\"affiliation\",\"recognition\"]" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.certified.badge.definition:body.badgeType", sort: "maxLength", value: "100" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.certified.badge.definition:body.description", sort: "maxLength", value: "5000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.certified.badge.definition:body.description", sort: "maxGraphemes", value: "500" }
  • ConstraintAdded ConstraintAdded { vertex_id: "app.certified.badge.definition:body.title", sort: "maxLength", value: "256" }

Additional Notes

  • Breaking: RequiredEdgeRemoved { vertex_id: "app.certified.badge.definition:body", src: "app.certified.badge.definition:body", tgt: "app.certified.badge.definition:body.icon", kind: "prop", name: Some("icon") }
  • Non-breaking: AddedEdge { src: "app.certified.badge.definition:body", tgt: "app.certified.badge.definition:body.signatures", kind: "prop", name: Some("signatures") }
  • Non-breaking: AddedEdge { src: "app.certified.badge.definition:body.signatures", tgt: "app.certified.signature.defs#list", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "Defines a badge that can be awarded via badge award records to users, projects, or activity claims.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "allowedIssuers": {
10 10
            "description": "Optional allowlist of DIDs allowed to issue this badge. If omitted, anyone may issue it.",
11 11
            "items": {
12 12
              "ref": "app.certified.defs#did",
13 13
              "type": "ref"
14 14
            },
15 +
            "maxLength": 100,
15 16
            "type": "array"
16 17
          },
17 18
          "badgeType": {
18 -
            "description": "Category of the badge (e.g. endorsement, participation, affiliation).",
19 +
            "description": "Category of the badge. Values beyond the known set are permitted.",
20 +
            "knownValues": [
21 +
              "endorsement",
22 +
              "verification",
23 +
              "participation",
24 +
              "certification",
25 +
              "affiliation",
26 +
              "recognition"
27 +
            ],
28 +
            "maxLength": 100,
19 29
            "type": "string"
20 30
          },
21 31
          "createdAt": {
22 32
            "description": "Client-declared timestamp when this record was originally created",
23 33
            "format": "datetime",
24 34
            "type": "string"
25 35
          },
26 36
          "description": {
27 37
            "description": "Optional short statement describing what the badge represents.",
38 +
            "maxGraphemes": 500,
39 +
            "maxLength": 5000,
28 40
            "type": "string"
29 41
          },
30 42
          "icon": {
31 43
            "accept": [
32 44
              "image/png",
33 45
              "image/jpeg",
34 46
              "image/webp",
35 47
              "image/svg+xml"
36 48
            ],
37 49
            "description": "Icon representing the badge, stored as a blob for compact visual display.",
38 50
            "maxSize": 1048576,
39 51
            "type": "blob"
40 52
          },
53 +
          "signatures": {
54 +
            "description": "Optional cryptographic signatures attesting to this record's content.",
55 +
            "ref": "app.certified.signature.defs#list",
56 +
            "type": "ref"
57 +
          },
41 58
          "title": {
42 59
            "description": "Human-readable title of the badge.",
60 +
            "maxLength": 256,
43 61
            "type": "string"
44 62
          }
45 63
        },
46 64
        "required": [
47 65
          "title",
48 66
          "badgeType",
49 -
          "icon",
50 67
          "createdAt"
51 68
        ],
52 69
        "type": "object"
53 70
      },
54 71
      "type": "record"
55 72
    }
56 73
  },
57 74
  "id": "app.certified.badge.definition",
58 75
  "lexicon": 1
59 76
}

Compare Other Versions

Lexicon Garden

@