+25
lexicons/social/scrumble/beta/account/join.json
+25
lexicons/social/scrumble/beta/account/join.json
···
1
1
+
{
2
2
+
"lexicon": 1,
3
3
+
"id": "social.scrumble.beta.account.join",
4
4
+
"defs": {
5
5
+
"main": {
6
6
+
"type": "record",
7
7
+
"description": "Indicates that an account (user) wants to to be part of a scene. The key must be the DID of the scene.",
8
8
+
"key": "any",
9
9
+
"record": {
10
10
+
"type": "object",
11
11
+
"required": [],
12
12
+
"properties": {
13
13
+
"scene": {
14
14
+
"type": "string",
15
15
+
"format": "did"
16
16
+
},
17
17
+
"createdAt": {
18
18
+
"type": "string",
19
19
+
"format": "datetime"
20
20
+
}
21
21
+
}
22
22
+
}
23
23
+
}
24
24
+
}
25
25
+
}
+29
lexicons/social/scrumble/beta/account/profile.json
+29
lexicons/social/scrumble/beta/account/profile.json
···
1
1
+
{
2
2
+
"lexicon": 1,
3
3
+
"id": "social.scrumble.beta.account.profile",
4
4
+
"defs": {
5
5
+
"main": {
6
6
+
"type": "record",
7
7
+
"description": "Scrumble user profile. Presence of this record indicates that the account is a scrumble user. Scene community accounts should also include this record.",
8
8
+
"key": "literal:self",
9
9
+
"record": {
10
10
+
"type": "object",
11
11
+
"required": [],
12
12
+
"properties": {
13
13
+
"avatar": {
14
14
+
"type": "blob",
15
15
+
"accept": [
16
16
+
"image/png",
17
17
+
"image/jpeg"
18
18
+
],
19
19
+
"maxSize": 2000000
20
20
+
},
21
21
+
"createdAt": {
22
22
+
"type": "string",
23
23
+
"format": "datetime"
24
24
+
}
25
25
+
}
26
26
+
}
27
27
+
}
28
28
+
}
29
29
+
}
+28
lexicons/social/scrumble/beta/collection/comment.json
+28
lexicons/social/scrumble/beta/collection/comment.json
···
1
1
+
{
2
2
+
"lexicon": 1,
3
3
+
"id": "social.scrumble.beta.collection.comment",
4
4
+
"defs": {
5
5
+
"main": {
6
6
+
"type": "record",
7
7
+
"description": "Threaded discussion comment on an item.",
8
8
+
"key": "tid",
9
9
+
"record": {
10
10
+
"type": "object",
11
11
+
"required": ["scene", "item", "createdAt", "text"],
12
12
+
"properties": {
13
13
+
"scene": { "type": "string", "format": "did" },
14
14
+
"item": { "type": "ref", "ref": "com.atproto.repo.strongRef" },
15
15
+
"parent": { "type": "ref", "ref": "com.atproto.repo.strongRef" },
16
16
+
"text": {
17
17
+
"type": "string",
18
18
+
"description": "TODO: length limit, and whether this is markdown (probably yes, but what subset)"
19
19
+
},
20
20
+
"createdAt": {
21
21
+
"type": "string",
22
22
+
"format": "datetime"
23
23
+
}
24
24
+
}
25
25
+
}
26
26
+
}
27
27
+
}
28
28
+
}
+27
lexicons/social/scrumble/beta/collection/feedback.json
+27
lexicons/social/scrumble/beta/collection/feedback.json
···
1
1
+
{
2
2
+
"lexicon": 1,
3
3
+
"id": "social.scrumble.beta.collection.feedback",
4
4
+
"defs": {
5
5
+
"main": {
6
6
+
"type": "record",
7
7
+
"description": "Up/Down feedback on an item of content in a scene, from an account. Aggregating services must check for duplicate feedback.",
8
8
+
"key": "tid",
9
9
+
"record": {
10
10
+
"type": "object",
11
11
+
"required": ["scene", "subject", "feedback", "createdAt"],
12
12
+
"properties": {
13
13
+
"scene": { "type": "string", "format": "did" },
14
14
+
"subject": { "type": "ref", "ref": "com.atproto.repo.strongRef" },
15
15
+
"feedback": {
16
16
+
"type": "string",
17
17
+
"enum": ["up", "down"]
18
18
+
},
19
19
+
"createdAt": {
20
20
+
"type": "string",
21
21
+
"format": "datetime"
22
22
+
}
23
23
+
}
24
24
+
}
25
25
+
}
26
26
+
}
27
27
+
}
+126
lexicons/social/scrumble/beta/collection/item.json
+126
lexicons/social/scrumble/beta/collection/item.json
···
1
1
+
{
2
2
+
"lexicon": 1,
3
3
+
"id": "social.scrumble.beta.collection.item",
4
4
+
"defs": {
5
5
+
"main": {
6
6
+
"type": "record",
7
7
+
"description": "Individual item submitted to a scene.",
8
8
+
"key": "tid",
9
9
+
"record": {
10
10
+
"type": "object",
11
11
+
"required": ["scene", "item", "createdAt"],
12
12
+
"properties": {
13
13
+
"scene": { "type": "string", "format": "did" },
14
14
+
"tags": {
15
15
+
"type": "array",
16
16
+
"items": {
17
17
+
"type": "string",
18
18
+
"description": "TODO: other hashtag restrictions",
19
19
+
"maxLength": 64
20
20
+
}
21
21
+
},
22
22
+
"item": {
23
23
+
"type": "union",
24
24
+
"refs": [
25
25
+
"#webItem",
26
26
+
"#atpItem",
27
27
+
"#textItem",
28
28
+
"#imageItem"
29
29
+
]
30
30
+
},
31
31
+
"createdAt": {
32
32
+
"type": "string",
33
33
+
"format": "datetime"
34
34
+
}
35
35
+
}
36
36
+
}
37
37
+
},
38
38
+
"webItem": {
39
39
+
"type": "object",
40
40
+
"required": ["url"],
41
41
+
"properties": {
42
42
+
"url": {
43
43
+
"type": "string",
44
44
+
"format": "uri"
45
45
+
},
46
46
+
"title": {
47
47
+
"type": "string"
48
48
+
},
49
49
+
"description": {
50
50
+
"type": "string"
51
51
+
},
52
52
+
"url": {
53
53
+
"type": "string",
54
54
+
"format": "uri"
55
55
+
},
56
56
+
"thumb": {
57
57
+
"type": "blob",
58
58
+
"accept": [
59
59
+
"image/*"
60
60
+
],
61
61
+
"maxSize": 2000000
62
62
+
}
63
63
+
}
64
64
+
},
65
65
+
"atpItem": {
66
66
+
"type": "object",
67
67
+
"required": ["uri"],
68
68
+
"properties": {
69
69
+
"uri": { "type": "string", "format": "at-uri" },
70
70
+
"cid": { "type": "string", "format": "cid" }
71
71
+
}
72
72
+
},
73
73
+
"textItem": {
74
74
+
"type": "object",
75
75
+
"required": ["text"],
76
76
+
"properties": {
77
77
+
"title": { "type": "string" },
78
78
+
"text": { "type": "string" }
79
79
+
}
80
80
+
},
81
81
+
"imageItem": {
82
82
+
"type": "object",
83
83
+
"required": ["images"],
84
84
+
"properties": {
85
85
+
"images": {
86
86
+
"type": "array",
87
87
+
"items": {
88
88
+
"type": "ref",
89
89
+
"ref": "#image"
90
90
+
}
91
91
+
}
92
92
+
}
93
93
+
},
94
94
+
"image": {
95
95
+
"type": "object",
96
96
+
"required": ["image"],
97
97
+
"properties": {
98
98
+
"image": {
99
99
+
"type": "blob",
100
100
+
"accept": [
101
101
+
"image/*"
102
102
+
],
103
103
+
"maxSize": 20000000
104
104
+
},
105
105
+
"alt": {
106
106
+
"type": "string",
107
107
+
"maxGraphemes": 2000,
108
108
+
"maxLength": 10000
109
109
+
},
110
110
+
"license": {
111
111
+
"type": "string",
112
112
+
"format": "uri"
113
113
+
},
114
114
+
"attribution": {
115
115
+
"type": "string",
116
116
+
"maxGraphemes": 300,
117
117
+
"maxLength": 3000
118
118
+
},
119
119
+
"aspectRatio": {
120
120
+
"type": "ref",
121
121
+
"ref": "#aspectRatio"
122
122
+
}
123
123
+
}
124
124
+
}
125
125
+
}
126
126
+
}
+28
lexicons/social/scrumble/beta/collection/reaction.json
+28
lexicons/social/scrumble/beta/collection/reaction.json
···
1
1
+
{
2
2
+
"lexicon": 1,
3
3
+
"id": "social.scrumble.beta.collection.reaction",
4
4
+
"defs": {
5
5
+
"main": {
6
6
+
"type": "record",
7
7
+
"description": "Emoji reaction. Aggregators need to de-duplicate.",
8
8
+
"key": "tid",
9
9
+
"record": {
10
10
+
"type": "object",
11
11
+
"required": ["scene", "subject", "emoji", "createdAt"],
12
12
+
"properties": {
13
13
+
"scene": { "type": "string", "format": "did" },
14
14
+
"subject": { "type": "ref", "ref": "com.atproto.repo.strongRef" },
15
15
+
"emoji": {
16
16
+
"type": "string",
17
17
+
"maxGraphemes": 1,
18
18
+
"maxLength": 64
19
19
+
},
20
20
+
"createdAt": {
21
21
+
"type": "string",
22
22
+
"format": "datetime"
23
23
+
}
24
24
+
}
25
25
+
}
26
26
+
}
27
27
+
}
28
28
+
}
+116
lexicons/social/scrumble/beta/scene/declaration.json
+116
lexicons/social/scrumble/beta/scene/declaration.json
···
1
1
+
{
2
2
+
"lexicon": 1,
3
3
+
"id": "social.scrumble.beta.scene.declaration",
4
4
+
"defs": {
5
5
+
"main": {
6
6
+
"type": "record",
7
7
+
"description": "Scene metadata and configuration. This record should live under the scene community account.",
8
8
+
"key": "literal:self",
9
9
+
"record": {
10
10
+
"type": "object",
11
11
+
"required": ["createdAt", "config", "guidelines"],
12
12
+
"properties": {
13
13
+
"avatar": {
14
14
+
"type": "blob",
15
15
+
"accept": [
16
16
+
"image/*"
17
17
+
],
18
18
+
"maxSize": 2000000
19
19
+
},
20
20
+
"createdAt": {
21
21
+
"type": "string",
22
22
+
"format": "datetime"
23
23
+
},
24
24
+
"displayName": {
25
25
+
"type": "string",
26
26
+
"maxGraphemes": 64,
27
27
+
"maxLength": 640
28
28
+
},
29
29
+
"description": {
30
30
+
"type": "string",
31
31
+
"maxGraphemes": 1000,
32
32
+
"maxLength": 10000
33
33
+
},
34
34
+
"descriptionFacets": {
35
35
+
"type": "array",
36
36
+
"items": {
37
37
+
"type": "ref",
38
38
+
"ref": "app.bsky.richtext.facet"
39
39
+
}
40
40
+
},
41
41
+
"guidelines": {
42
42
+
"type": "array",
43
43
+
"maxLength": 50,
44
44
+
"items": {
45
45
+
"type": "ref",
46
46
+
"ref": "#sceneGuideline"
47
47
+
}
48
48
+
},
49
49
+
"config": {
50
50
+
"type": "ref",
51
51
+
"ref": "#sceneConfig"
52
52
+
}
53
53
+
}
54
54
+
}
55
55
+
},
56
56
+
"sceneGuideline": {
57
57
+
"type": "object",
58
58
+
"description": "An individual criteria or rule describing sumbissions and behaviors in the scene",
59
59
+
"required": ["text"],
60
60
+
"properties": {
61
61
+
"text": {
62
62
+
"type": "string"
63
63
+
}
64
64
+
}
65
65
+
},
66
66
+
"sceneConfig": {
67
67
+
"type": "object",
68
68
+
"description": "Configuration parameters for the scene",
69
69
+
"required": [],
70
70
+
"properties": {
71
71
+
"items": {
72
72
+
"type": "ref",
73
73
+
"ref": "#configItems"
74
74
+
},
75
75
+
"labelers": {
76
76
+
"type": "array",
77
77
+
"maxLength": 50,
78
78
+
"items": {
79
79
+
"type": "ref",
80
80
+
"ref": "#configLabeler"
81
81
+
}
82
82
+
}
83
83
+
}
84
84
+
},
85
85
+
"configItems": {
86
86
+
"type": "object",
87
87
+
"description": "Configuration parameters for the scene (TODO)",
88
88
+
"required": [],
89
89
+
"properties": {
90
90
+
"types": {
91
91
+
"type": "array",
92
92
+
"items": {
93
93
+
"type": "string",
94
94
+
"knownValues": [
95
95
+
"social.scrumble.beta.collection.item#webItem",
96
96
+
"social.scrumble.beta.collection.item#atprotoItem",
97
97
+
"social.scrumble.beta.collection.item#textItem",
98
98
+
"social.scrumble.beta.collection.item#imageItem"
99
99
+
]
100
100
+
}
101
101
+
}
102
102
+
}
103
103
+
},
104
104
+
"configLabeler": {
105
105
+
"type": "object",
106
106
+
"description": "Configuration parameters for the scene (TODO)",
107
107
+
"required": ["did"],
108
108
+
"properties": {
109
109
+
"did": {
110
110
+
"type": "string",
111
111
+
"format": "did"
112
112
+
}
113
113
+
}
114
114
+
}
115
115
+
}
116
116
+
}
+33
lexicons/social/scrumble/beta/scene/member.json
+33
lexicons/social/scrumble/beta/scene/member.json
···
1
1
+
{
2
2
+
"lexicon": 1,
3
3
+
"id": "social.scrumble.beta.scene.member",
4
4
+
"defs": {
5
5
+
"main": {
6
6
+
"type": "record",
7
7
+
"description": "Indicates that an account is a member of the scene. This records gets written to the scene community account. The key should be the account's DID.",
8
8
+
"key": "any",
9
9
+
"record": {
10
10
+
"type": "object",
11
11
+
"required": ["did", "role", "createdAt"],
12
12
+
"properties": {
13
13
+
"did": {
14
14
+
"type": "string",
15
15
+
"format": "did"
16
16
+
},
17
17
+
"role": {
18
18
+
"type": "string",
19
19
+
"description": "TODO: make these refs to a defs file?",
20
20
+
"knownValues": [
21
21
+
"member",
22
22
+
"admin"
23
23
+
]
24
24
+
},
25
25
+
"createdAt": {
26
26
+
"type": "string",
27
27
+
"format": "datetime"
28
28
+
}
29
29
+
}
30
30
+
}
31
31
+
}
32
32
+
}
33
33
+
}