zone.zephyra.screens.frame
Schema Diff
+12 -10
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 0 non-breaking changes.
Breaking Changes (1)
- ConstraintAdded ConstraintAdded { vertex_id: "zone.zephyra.screens.frame:body.subtitle", sort: "maxLength", value: "1024" }
Migration Guidance
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "zone.zephyra.screens.frame:body.subtitle", sort: "maxLength", value: "1024" }
1
1
{
2
2
"id": "zone.zephyra.screens.frame",
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
-
"season",
11
10
"episode",
11
+
"externalRecords",
12
12
"frame",
13
13
"frameRate",
14
+
"image",
14
15
"resolution",
15
-
"image",
16
+
"season",
16
17
"createdAt"
17
18
],
18
19
"properties": {
19
20
"frame": {
20
21
"type": "integer",
21
22
"maximum": 8388608,
22
23
"minimum": 0,
23
-
"description": "Frame index within the episode video."
24
+
"description": "Index of the frame within the episode video file."
24
25
},
25
26
"image": {
26
27
"type": "blob",
27
28
"accept": [
28
-
"image/png"
29
+
"image/*"
29
30
],
30
31
"maxSize": 10485760,
31
-
"description": "PNG render of the frame."
32
+
"description": "Image render of the frame."
32
33
},
33
34
"season": {
34
35
"type": "integer",
35
36
"maximum": 256,
36
37
"minimum": 1,
37
-
"description": "Season number."
38
+
"description": "Season number. 1-indexed."
38
39
},
39
40
"episode": {
40
41
"type": "integer",
41
42
"maximum": 256,
42
43
"minimum": 1,
43
-
"description": "Episode number within the season."
44
+
"description": "Episode number within the season. 1-indexed."
44
45
},
45
46
"subtitle": {
46
47
"type": "string",
48
+
"maxLength": 1024,
47
49
"description": "Subtitle text active at this frame, if any. Not all frames have subtitles."
48
50
},
49
51
"createdAt": {
50
52
"type": "string",
51
53
"format": "datetime",
52
54
"description": "Timestamp the frame was published."
53
55
},
54
56
"frameRate": {
55
57
"type": "string",
56
-
"description": "Frame rate of the source video as a rational number string (e.g. '24000/1001'). Combine with `frame` to derive the time offset."
58
+
"description": "Frame rate of the source video, probably as a rational number string (e.g. '24000/1001'). Combine with `frame` to derive the time offset."
57
59
},
58
60
"resolution": {
59
61
"ref": "#resolution",
60
62
"type": "ref",
61
63
"description": "Pixel dimensions of `image`."
62
64
},
63
65
"externalRecords": {
64
66
"type": "array",
65
67
"items": {
66
68
"ref": "#externalRecord",
67
69
"type": "ref"
68
70
},
69
71
"description": "Records on external services or other ATProto collections that disseminate this frame."
70
72
}
71
73
}
72
74
}
73
75
},
74
76
"resolution": {
75
77
"type": "object",
76
78
"required": [
77
-
"width",
78
-
"height"
79
+
"height",
80
+
"width"
79
81
],
80
82
"properties": {
81
83
"width": {
82
84
"type": "integer",
83
85
"minimum": 1
84
86
},
85
87
"height": {
86
88
"type": "integer",
87
89
"minimum": 1
88
90
}
89
91
}
90
92
},
91
93
"externalRecord": {
92
94
"type": "object",
93
95
"required": [
94
96
"collection",
95
97
"ref"
96
98
],
97
99
"properties": {
98
100
"ref": {
99
101
"ref": "com.atproto.repo.strongRef",
100
102
"type": "ref",
101
103
"description": "Strong reference to the ATProto record."
102
104
},
103
105
"collection": {
104
106
"type": "string",
105
107
"description": "Identifier of the collection the record belongs to."
106
108
}
107
109
}
108
110
}
109
111
},
110
112
"lexicon": 1,
111
113
"description": "A single frame extracted from a TV show, published alongside disseminated posts on external services."
112
114
}