org.hypercerts.collection
Schema Diff
+25 -6
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 10 non-breaking changes.
Breaking Changes (1)
- KindChanged KindChanged { vertex_id: "org.hypercerts.collection:body.description", old_kind: "ref", new_kind: "union" }
Non-Breaking Changes (10)
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.collection:body.description:variant0" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.collection:body.description:variant1" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.collection:body.description:variant2" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.collection:body.shortDescriptionFacets" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.collection:body.shortDescriptionFacets:items" }
- AddedEdge AddedEdge { src: "org.hypercerts.collection:body", tgt: "org.hypercerts.collection:body.shortDescriptionFacets", kind: "prop", name: Some("shortDescriptionFacets") }
- AddedEdge AddedEdge { src: "org.hypercerts.collection:body.description", tgt: "org.hypercerts.collection:body.description:variant0", kind: "variant", name: Some("org.hypercerts.defs#descriptionString") }
- AddedEdge AddedEdge { src: "org.hypercerts.collection:body.description", tgt: "org.hypercerts.collection:body.description:variant1", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
- AddedEdge AddedEdge { src: "org.hypercerts.collection:body.description", tgt: "org.hypercerts.collection:body.description:variant2", kind: "variant", name: Some("com.atproto.repo.strongRef") }
- AddedEdge AddedEdge { src: "org.hypercerts.collection:body.shortDescriptionFacets", tgt: "org.hypercerts.collection:body.shortDescriptionFacets:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "org.hypercerts.collection:body.description:variant0" }AddedVertex { vertex_id: "org.hypercerts.collection:body.description:variant1" }AddedVertex { vertex_id: "org.hypercerts.collection:body.description:variant2" }AddedVertex { vertex_id: "org.hypercerts.collection:body.shortDescriptionFacets" }AddedVertex { vertex_id: "org.hypercerts.collection:body.shortDescriptionFacets:items" }
Additional Notes
- Breaking: KindChanged { vertex_id: "org.hypercerts.collection:body.description", old_kind: "ref", new_kind: "union" }
- Non-breaking: AddedEdge { src: "org.hypercerts.collection:body", tgt: "org.hypercerts.collection:body.shortDescriptionFacets", kind: "prop", name: Some("shortDescriptionFacets") }
- Non-breaking: AddedEdge { src: "org.hypercerts.collection:body.description", tgt: "org.hypercerts.collection:body.description:variant0", kind: "variant", name: Some("org.hypercerts.defs#descriptionString") }
- Non-breaking: AddedEdge { src: "org.hypercerts.collection:body.description", tgt: "org.hypercerts.collection:body.description:variant1", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
- Non-breaking: AddedEdge { src: "org.hypercerts.collection:body.description", tgt: "org.hypercerts.collection:body.description:variant2", kind: "variant", name: Some("com.atproto.repo.strongRef") }
- Non-breaking: AddedEdge { src: "org.hypercerts.collection:body.shortDescriptionFacets", tgt: "org.hypercerts.collection:body.shortDescriptionFacets:items", kind: "items", name: None }
1
1
{
2
2
"id": "org.hypercerts.collection",
3
3
"defs": {
4
4
"item": {
5
5
"type": "object",
6
6
"required": [
7
7
"itemIdentifier"
8
8
],
9
9
"properties": {
10
10
"itemWeight": {
11
11
"type": "string",
12
12
"maxLength": 100,
13
13
"description": "Optional weight for this item (positive numeric value stored as string). Weights do not need to sum to a specific total; normalization can be performed by the consuming application as needed."
14
14
},
15
15
"itemIdentifier": {
16
16
"ref": "com.atproto.repo.strongRef",
17
17
"type": "ref",
18
18
"description": "Strong reference to an item in this collection. Items can be activities (org.hypercerts.claim.activity) and/or other collections (org.hypercerts.collection)."
19
19
}
20
-
}
20
+
},
21
+
"description": "An item in a collection, with an identifier and optional weight."
21
22
},
22
23
"main": {
23
24
"key": "tid",
24
25
"type": "record",
25
26
"record": {
26
27
"type": "object",
27
28
"required": [
28
29
"title",
29
30
"createdAt"
30
31
],
31
32
"properties": {
32
33
"type": {
33
34
"type": "string",
34
35
"maxLength": 64,
35
-
"description": "The type of this collection. Possible fields can be 'favorites', 'project', or any other type of collection."
36
+
"description": "The type of this collection. Values beyond the known set are permitted.",
37
+
"knownValues": [
38
+
"favorites",
39
+
"project",
40
+
"portfolio",
41
+
"program"
42
+
]
36
43
},
37
44
"items": {
38
45
"type": "array",
39
46
"items": {
40
47
"ref": "#item",
41
48
"type": "ref"
42
49
},
43
50
"maxLength": 1000,
44
51
"description": "Array of items in this collection with optional weights."
45
52
},
46
53
"title": {
47
54
"type": "string",
48
55
"maxLength": 800,
49
56
"description": "Display name for this collection (e.g. 'Q1 2025 Impact Projects')",
50
57
"maxGraphemes": 80
51
58
},
52
59
"avatar": {
53
60
"refs": [
54
61
"org.hypercerts.defs#uri",
55
62
"org.hypercerts.defs#smallImage"
56
63
],
57
64
"type": "union",
58
65
"description": "The collection's avatar/profile image as a URI or image blob."
59
66
},
60
67
"banner": {
61
68
"refs": [
62
69
"org.hypercerts.defs#uri",
63
70
"org.hypercerts.defs#largeImage"
64
71
],
65
72
"type": "union",
66
73
"description": "Larger horizontal image to display behind the collection view."
67
74
},
68
75
"location": {
69
76
"ref": "com.atproto.repo.strongRef",
70
77
"type": "ref",
71
78
"description": "A strong reference to the location where this collection's activities were performed. The record referenced must conform with the lexicon app.certified.location."
72
79
},
73
80
"createdAt": {
74
81
"type": "string",
75
82
"format": "datetime",
76
83
"description": "Client-declared timestamp when this record was originally created"
77
84
},
78
85
"description": {
79
-
"ref": "pub.leaflet.pages.linearDocument#main",
80
-
"type": "ref",
81
-
"description": "Rich-text description, represented as a Leaflet linear document."
86
+
"refs": [
87
+
"org.hypercerts.defs#descriptionString",
88
+
"pub.leaflet.pages.linearDocument",
89
+
"com.atproto.repo.strongRef"
90
+
],
91
+
"type": "union",
92
+
"description": "Long-form description of the collection. An inline string for plain text or markdown, a Leaflet linear document for rich-text content, or a strong reference to an external description record."
82
93
},
83
94
"shortDescription": {
84
95
"type": "string",
85
96
"maxLength": 3000,
86
-
"description": "Short summary of this collection, suitable for previews and list views",
97
+
"description": "Short summary of this collection, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.",
87
98
"maxGraphemes": 300
99
+
},
100
+
"shortDescriptionFacets": {
101
+
"type": "array",
102
+
"items": {
103
+
"ref": "app.bsky.richtext.facet",
104
+
"type": "ref"
105
+
},
106
+
"description": "Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc)."
88
107
}
89
108
}
90
109
},
91
110
"description": "A collection/group of items (activities and/or other collections). Collections support recursive nesting."
92
111
}
93
112
},
94
113
"$type": "com.atproto.lexicon.schema",
95
114
"lexicon": 1
96
115
}