app.certified.badge.definition

certified.app

Schema Diff

+14 -2

From

CID
bafyreidv6ovmhyh...
Indexed At
2026-03-19 20:24 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

2 breaking changes, 4 non-breaking changes.

Breaking Changes (2)
  • 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.badgeType", sort: "knownValues", value: "[\"endorsement\",\"verification\",\"participation\",\"certification\",\"affiliation\",\"recognition\"]" }
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\"]" }

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 15
            "maxLength": 100,
16 16
            "type": "array"
17 17
          },
18 18
          "badgeType": {
19 -
            "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 +
            ],
20 28
            "maxLength": 100,
21 29
            "type": "string"
22 30
          },
23 31
          "createdAt": {
24 32
            "description": "Client-declared timestamp when this record was originally created",
25 33
            "format": "datetime",
26 34
            "type": "string"
27 35
          },
28 36
          "description": {
29 37
            "description": "Optional short statement describing what the badge represents.",
30 38
            "maxGraphemes": 500,
31 39
            "maxLength": 5000,
32 40
            "type": "string"
33 41
          },
34 42
          "icon": {
35 43
            "accept": [
36 44
              "image/png",
37 45
              "image/jpeg",
38 46
              "image/webp",
39 47
              "image/svg+xml"
40 48
            ],
41 49
            "description": "Icon representing the badge, stored as a blob for compact visual display.",
42 50
            "maxSize": 1048576,
43 51
            "type": "blob"
44 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 +
          },
45 58
          "title": {
46 59
            "description": "Human-readable title of the badge.",
47 60
            "maxLength": 256,
48 61
            "type": "string"
49 62
          }
50 63
        },
51 64
        "required": [
52 65
          "title",
53 66
          "badgeType",
54 -
          "icon",
55 67
          "createdAt"
56 68
        ],
57 69
        "type": "object"
58 70
      },
59 71
      "type": "record"
60 72
    }
61 73
  },
62 74
  "id": "app.certified.badge.definition",
63 75
  "lexicon": 1
64 76
}

Compare Other Versions

Lexicon Garden

@