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