social.showcase.collection.collection
Schema Diff
+13 -22
1
1
{
2
2
"id": "social.showcase.collection.collection",
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
"name",
11
11
"tags",
12
12
"type",
13
13
"items",
14
14
"visibility",
15
15
"createdAt"
16
16
],
17
17
"properties": {
18
18
"name": {
19
19
"type": "string",
20
20
"maxLength": 200,
21
21
"description": "Collection name"
22
22
},
23
23
"tags": {
24
24
"type": "array",
25
25
"items": {
26
26
"type": "string",
27
27
"maxLength": 64
28
28
},
29
29
"maxLength": 10,
30
30
"description": "Tags for discovery (max 10)"
31
31
},
32
32
"type": {
33
33
"type": "string",
34
34
"maxLength": 20,
35
-
"description": "Collection type (bookmark is special/hardcoded)",
35
+
"description": "Collection type: 'custom' = regular collection (user's owned items only), 'bookmark' = bookmark collection (can include other users' items as references)",
36
36
"knownValues": [
37
37
"custom",
38
38
"bookmark"
39
39
]
40
40
},
41
41
"items": {
42
42
"type": "array",
43
43
"items": {
44
-
"type": "object",
45
-
"required": [
46
-
"uri",
47
-
"addedAt",
48
-
"order"
49
-
],
50
-
"properties": {
51
-
"uri": {
52
-
"type": "string",
53
-
"maxLength": 8192,
54
-
"description": "AT-URI reference to item (always shows latest version)"
55
-
},
56
-
"order": {
57
-
"type": "integer",
58
-
"description": "For custom sorting"
59
-
},
60
-
"addedAt": {
61
-
"type": "string",
62
-
"format": "datetime"
63
-
}
64
-
}
44
+
"ref": "social.showcase.defs#collectionItem",
45
+
"type": "ref"
65
46
},
66
47
"maxLength": 500,
67
48
"description": "Ordered list of items (max 500)"
68
49
},
50
+
"notes": {
51
+
"type": "string",
52
+
"maxLength": 2000,
53
+
"description": "Personal notes about the collection"
54
+
},
69
55
"createdAt": {
70
56
"type": "string",
71
57
"format": "datetime"
72
58
},
73
59
"updatedAt": {
74
60
"type": "string",
75
61
"format": "datetime"
76
62
},
77
63
"coverImage": {
78
64
"type": "blob",
79
65
"accept": [
80
66
"image/png",
81
67
"image/jpeg",
82
68
"image/webp"
83
69
],
84
70
"maxSize": 5000000,
85
71
"description": "Optional custom cover image (1600x900px max, auto-generated if not provided)"
86
72
},
87
73
"visibility": {
88
74
"type": "string",
89
75
"maxLength": 10,
90
76
"knownValues": [
91
77
"public",
92
78
"private"
93
79
]
94
80
},
95
81
"description": {
96
82
"type": "string",
97
83
"maxLength": 1000,
98
84
"description": "Collection description"
85
+
},
86
+
"schemaVersion": {
87
+
"type": "integer",
88
+
"default": 1,
89
+
"description": "Schema version for migrations (defaults to 1 if missing)"
99
90
}
100
91
}
101
92
},
102
93
"description": "Collection record"
103
94
}
104
95
},
105
96
"$type": "com.atproto.lexicon.schema",
106
97
"lexicon": 1
107
98
}