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

Compare Other Versions

Lexicon Garden

@