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