app.certified.badge.definition
Schema Diff
+14 -2
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
}