org.hypercerts.collection
Schema Diff
+15 -1
Compatibility Analysis
Backward Compatible
Backward compatible. 9 non-breaking changes.
Non-Breaking Changes (9)
- AddedVertex AddedVertex { vertex_id: "app.certified.signature.defs#list" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.collection:body.signatures" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.collection:body.tags" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.collection:body.tags:items" }
- AddedEdge AddedEdge { src: "org.hypercerts.collection:body", tgt: "org.hypercerts.collection:body.signatures", kind: "prop", name: Some("signatures") }
- AddedEdge AddedEdge { src: "org.hypercerts.collection:body", tgt: "org.hypercerts.collection:body.tags", kind: "prop", name: Some("tags") }
- AddedEdge AddedEdge { src: "org.hypercerts.collection:body.signatures", tgt: "app.certified.signature.defs#list", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "org.hypercerts.collection:body.tags", tgt: "org.hypercerts.collection:body.tags:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "org.hypercerts.collection:body.tags:items", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.certified.signature.defs#list" }AddedVertex { vertex_id: "org.hypercerts.collection:body.signatures" }AddedVertex { vertex_id: "org.hypercerts.collection:body.tags" }AddedVertex { vertex_id: "org.hypercerts.collection:body.tags:items" }
Additional Notes
- Non-breaking: AddedEdge { src: "org.hypercerts.collection:body", tgt: "org.hypercerts.collection:body.signatures", kind: "prop", name: Some("signatures") }
- Non-breaking: AddedEdge { src: "org.hypercerts.collection:body", tgt: "org.hypercerts.collection:body.tags", kind: "prop", name: Some("tags") }
- Non-breaking: AddedEdge { src: "org.hypercerts.collection:body.signatures", tgt: "app.certified.signature.defs#list", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "org.hypercerts.collection:body.tags", tgt: "org.hypercerts.collection:body.tags:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "org.hypercerts.collection:body.tags:items", tgt: "com.atproto.repo.strongRef", kind: "ref", 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
-
"description": "Strong reference to an item in this collection. Items can be activities (org.hypercerts.claim.activity) and/or other collections (org.hypercerts.collection)."
18
+
"description": "Strong reference to an item in this collection. Items can be activities (org.hypercerts.claim.activity), features (org.hypercerts.entity.feature), and/or other collections (org.hypercerts.collection)."
19
19
}
20
20
},
21
21
"description": "An item in a collection, with an identifier and optional weight."
22
22
},
23
23
"main": {
24
24
"key": "tid",
25
25
"type": "record",
26
26
"record": {
27
27
"type": "object",
28
28
"required": [
29
29
"title",
30
30
"createdAt"
31
31
],
32
32
"properties": {
33
+
"tags": {
34
+
"type": "array",
35
+
"items": {
36
+
"ref": "com.atproto.repo.strongRef",
37
+
"type": "ref"
38
+
},
39
+
"maxLength": 20,
40
+
"description": "References to org.hypercerts.vocab.tag records classifying this record. All listed tags apply simultaneously (logical AND); the array carries no ordering, weighting, negation, inheritance, or rule logic, and never will — any future expression logic must arrive as a new field and must never reinterpret this one."
41
+
},
33
42
"type": {
34
43
"type": "string",
35
44
"maxLength": 64,
36
45
"description": "The type of this collection. Values beyond the known set are permitted.",
37
46
"knownValues": [
38
47
"favorites",
39
48
"project",
40
49
"portfolio",
41
50
"program"
42
51
]
43
52
},
44
53
"items": {
45
54
"type": "array",
46
55
"items": {
47
56
"ref": "#item",
48
57
"type": "ref"
49
58
},
50
59
"maxLength": 1000,
51
60
"description": "Array of items in this collection with optional weights."
52
61
},
53
62
"title": {
54
63
"type": "string",
55
64
"maxLength": 800,
56
65
"description": "Display name for this collection (e.g. 'Q1 2025 Impact Projects')",
57
66
"maxGraphemes": 80
58
67
},
59
68
"avatar": {
60
69
"refs": [
61
70
"org.hypercerts.defs#uri",
62
71
"org.hypercerts.defs#smallImage"
63
72
],
64
73
"type": "union",
65
74
"description": "The collection's avatar/profile image as a URI or image blob."
66
75
},
67
76
"banner": {
68
77
"refs": [
69
78
"org.hypercerts.defs#uri",
70
79
"org.hypercerts.defs#largeImage"
71
80
],
72
81
"type": "union",
73
82
"description": "Larger horizontal image to display behind the collection view."
74
83
},
75
84
"location": {
76
85
"ref": "com.atproto.repo.strongRef",
77
86
"type": "ref",
78
87
"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."
79
88
},
80
89
"createdAt": {
81
90
"type": "string",
82
91
"format": "datetime",
83
92
"description": "Client-declared timestamp when this record was originally created"
84
93
},
94
+
"signatures": {
95
+
"ref": "app.certified.signature.defs#list",
96
+
"type": "ref",
97
+
"description": "Optional cryptographic signatures attesting to this record's content."
98
+
},
85
99
"description": {
86
100
"refs": [
87
101
"org.hypercerts.defs#descriptionString",
88
102
"pub.leaflet.pages.linearDocument",
89
103
"com.atproto.repo.strongRef"
90
104
],
91
105
"type": "union",
92
106
"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."
93
107
},
94
108
"shortDescription": {
95
109
"type": "string",
96
110
"maxLength": 3000,
97
111
"description": "Short summary of this collection, suitable for previews and list views. Rich text annotations may be provided via `shortDescriptionFacets`.",
98
112
"maxGraphemes": 300
99
113
},
100
114
"shortDescriptionFacets": {
101
115
"type": "array",
102
116
"items": {
103
117
"ref": "app.bsky.richtext.facet",
104
118
"type": "ref"
105
119
},
106
120
"description": "Rich text annotations for `shortDescription` (mentions, URLs, hashtags, etc)."
107
121
}
108
122
}
109
123
},
110
124
"description": "A collection/group of items (activities and/or other collections). Collections support recursive nesting."
111
125
}
112
126
},
113
127
"$type": "com.atproto.lexicon.schema",
114
128
"lexicon": 1
115
129
}