@imferno/schema 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -0
- package/index.d.ts +26 -0
- package/index.js +34 -0
- package/package.json +40 -0
- package/schemas/asset-map.json +136 -0
- package/schemas/composition-playlist.json +2748 -0
- package/schemas/delivery-comparison.json +131 -0
- package/schemas/delivery-request.json +76 -0
- package/schemas/imf-report.json +804 -0
- package/schemas/packing-list.json +202 -0
- package/schemas/rules-config.json +51 -0
- package/schemas/source-asset.json +478 -0
- package/schemas/validation-report.json +348 -0
- package/schemas/volume-index.json +17 -0
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "ValidationReport",
|
|
4
|
+
"description": "Comprehensive validation report",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"critical",
|
|
8
|
+
"errors",
|
|
9
|
+
"info",
|
|
10
|
+
"is_compliant",
|
|
11
|
+
"is_playable",
|
|
12
|
+
"profile",
|
|
13
|
+
"timestamp",
|
|
14
|
+
"warnings"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"critical": {
|
|
18
|
+
"description": "Critical issues that prevent usage",
|
|
19
|
+
"type": "array",
|
|
20
|
+
"items": {
|
|
21
|
+
"$ref": "#/definitions/ValidationIssue"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"errors": {
|
|
25
|
+
"description": "Errors that must be fixed for compliance",
|
|
26
|
+
"type": "array",
|
|
27
|
+
"items": {
|
|
28
|
+
"$ref": "#/definitions/ValidationIssue"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"info": {
|
|
32
|
+
"description": "Informational issues",
|
|
33
|
+
"type": "array",
|
|
34
|
+
"items": {
|
|
35
|
+
"$ref": "#/definitions/ValidationIssue"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"is_compliant": {
|
|
39
|
+
"description": "Whether the package is compliant with base SMPTE standards",
|
|
40
|
+
"type": "boolean"
|
|
41
|
+
},
|
|
42
|
+
"is_playable": {
|
|
43
|
+
"description": "Whether the package is playable despite issues",
|
|
44
|
+
"type": "boolean"
|
|
45
|
+
},
|
|
46
|
+
"profile": {
|
|
47
|
+
"description": "Validation profile used",
|
|
48
|
+
"allOf": [
|
|
49
|
+
{
|
|
50
|
+
"$ref": "#/definitions/ValidationProfile"
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"timestamp": {
|
|
55
|
+
"description": "Timestamp of validation",
|
|
56
|
+
"type": "string"
|
|
57
|
+
},
|
|
58
|
+
"warnings": {
|
|
59
|
+
"description": "Warnings that should be addressed",
|
|
60
|
+
"type": "array",
|
|
61
|
+
"items": {
|
|
62
|
+
"$ref": "#/definitions/ValidationIssue"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"definitions": {
|
|
67
|
+
"Category": {
|
|
68
|
+
"description": "Category of validation issue",
|
|
69
|
+
"oneOf": [
|
|
70
|
+
{
|
|
71
|
+
"description": "XML structure and syntax issues",
|
|
72
|
+
"type": "string",
|
|
73
|
+
"enum": [
|
|
74
|
+
"Structure"
|
|
75
|
+
]
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"description": "SMPTE schema compliance",
|
|
79
|
+
"type": "string",
|
|
80
|
+
"enum": [
|
|
81
|
+
"Schema"
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"description": "UUID and reference resolution",
|
|
86
|
+
"type": "string",
|
|
87
|
+
"enum": [
|
|
88
|
+
"Reference"
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"description": "Asset file availability and integrity",
|
|
93
|
+
"type": "string",
|
|
94
|
+
"enum": [
|
|
95
|
+
"Asset"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"description": "Timing, frame rate, and duration issues",
|
|
100
|
+
"type": "string",
|
|
101
|
+
"enum": [
|
|
102
|
+
"Timing"
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"description": "Encoding and codec issues",
|
|
107
|
+
"type": "string",
|
|
108
|
+
"enum": [
|
|
109
|
+
"Encoding"
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"description": "Audio configuration issues",
|
|
114
|
+
"type": "string",
|
|
115
|
+
"enum": [
|
|
116
|
+
"Audio"
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"description": "Video configuration issues",
|
|
121
|
+
"type": "string",
|
|
122
|
+
"enum": [
|
|
123
|
+
"Video"
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"description": "Subtitle and caption issues",
|
|
128
|
+
"type": "string",
|
|
129
|
+
"enum": [
|
|
130
|
+
"Subtitle"
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"description": "Metadata and labeling issues",
|
|
135
|
+
"type": "string",
|
|
136
|
+
"enum": [
|
|
137
|
+
"Metadata"
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"description": "Security and DRM issues",
|
|
142
|
+
"type": "string",
|
|
143
|
+
"enum": [
|
|
144
|
+
"Security"
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"description": "Studio-specific requirements",
|
|
149
|
+
"type": "object",
|
|
150
|
+
"required": [
|
|
151
|
+
"StudioSpecific"
|
|
152
|
+
],
|
|
153
|
+
"properties": {
|
|
154
|
+
"StudioSpecific": {
|
|
155
|
+
"type": "string"
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"additionalProperties": false
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
},
|
|
162
|
+
"Location": {
|
|
163
|
+
"description": "Location where the issue was found",
|
|
164
|
+
"type": "object",
|
|
165
|
+
"properties": {
|
|
166
|
+
"cpl_id": {
|
|
167
|
+
"description": "CPL UUID if applicable",
|
|
168
|
+
"type": [
|
|
169
|
+
"string",
|
|
170
|
+
"null"
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
"file": {
|
|
174
|
+
"description": "File path if applicable",
|
|
175
|
+
"type": [
|
|
176
|
+
"string",
|
|
177
|
+
"null"
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
"line": {
|
|
181
|
+
"description": "Line number in XML file",
|
|
182
|
+
"type": [
|
|
183
|
+
"integer",
|
|
184
|
+
"null"
|
|
185
|
+
],
|
|
186
|
+
"format": "uint",
|
|
187
|
+
"minimum": 0.0
|
|
188
|
+
},
|
|
189
|
+
"path": {
|
|
190
|
+
"description": "XPath or field path",
|
|
191
|
+
"type": [
|
|
192
|
+
"string",
|
|
193
|
+
"null"
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
"resource_id": {
|
|
197
|
+
"description": "Resource UUID if applicable",
|
|
198
|
+
"type": [
|
|
199
|
+
"string",
|
|
200
|
+
"null"
|
|
201
|
+
]
|
|
202
|
+
},
|
|
203
|
+
"segment": {
|
|
204
|
+
"description": "Segment index (0-based)",
|
|
205
|
+
"type": [
|
|
206
|
+
"integer",
|
|
207
|
+
"null"
|
|
208
|
+
],
|
|
209
|
+
"format": "uint",
|
|
210
|
+
"minimum": 0.0
|
|
211
|
+
},
|
|
212
|
+
"sequence_id": {
|
|
213
|
+
"description": "Sequence UUID if applicable",
|
|
214
|
+
"type": [
|
|
215
|
+
"string",
|
|
216
|
+
"null"
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
"timecode": {
|
|
220
|
+
"description": "Timecode if applicable",
|
|
221
|
+
"type": [
|
|
222
|
+
"string",
|
|
223
|
+
"null"
|
|
224
|
+
]
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
"Severity": {
|
|
229
|
+
"description": "Severity level of validation issues",
|
|
230
|
+
"oneOf": [
|
|
231
|
+
{
|
|
232
|
+
"description": "Informational - Best practice suggestions",
|
|
233
|
+
"type": "string",
|
|
234
|
+
"enum": [
|
|
235
|
+
"Info"
|
|
236
|
+
]
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"description": "Warning - Should fix but not critical",
|
|
240
|
+
"type": "string",
|
|
241
|
+
"enum": [
|
|
242
|
+
"Warning"
|
|
243
|
+
]
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"description": "Error - Must fix for compliance",
|
|
247
|
+
"type": "string",
|
|
248
|
+
"enum": [
|
|
249
|
+
"Error"
|
|
250
|
+
]
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"description": "Critical - Prevents package from being usable",
|
|
254
|
+
"type": "string",
|
|
255
|
+
"enum": [
|
|
256
|
+
"Critical"
|
|
257
|
+
]
|
|
258
|
+
}
|
|
259
|
+
]
|
|
260
|
+
},
|
|
261
|
+
"ValidationIssue": {
|
|
262
|
+
"description": "A single validation issue",
|
|
263
|
+
"type": "object",
|
|
264
|
+
"required": [
|
|
265
|
+
"category",
|
|
266
|
+
"code",
|
|
267
|
+
"context",
|
|
268
|
+
"location",
|
|
269
|
+
"message",
|
|
270
|
+
"severity"
|
|
271
|
+
],
|
|
272
|
+
"properties": {
|
|
273
|
+
"category": {
|
|
274
|
+
"description": "Category of issue",
|
|
275
|
+
"allOf": [
|
|
276
|
+
{
|
|
277
|
+
"$ref": "#/definitions/Category"
|
|
278
|
+
}
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
"code": {
|
|
282
|
+
"description": "Error code (e.g., \"SMPTE-429-7-2006-4.3.2\")",
|
|
283
|
+
"type": "string"
|
|
284
|
+
},
|
|
285
|
+
"context": {
|
|
286
|
+
"description": "Additional context",
|
|
287
|
+
"type": "object",
|
|
288
|
+
"additionalProperties": {
|
|
289
|
+
"type": "string"
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
"location": {
|
|
293
|
+
"description": "Location where issue was found",
|
|
294
|
+
"allOf": [
|
|
295
|
+
{
|
|
296
|
+
"$ref": "#/definitions/Location"
|
|
297
|
+
}
|
|
298
|
+
]
|
|
299
|
+
},
|
|
300
|
+
"message": {
|
|
301
|
+
"description": "Human-readable message",
|
|
302
|
+
"type": "string"
|
|
303
|
+
},
|
|
304
|
+
"severity": {
|
|
305
|
+
"description": "Severity level",
|
|
306
|
+
"allOf": [
|
|
307
|
+
{
|
|
308
|
+
"$ref": "#/definitions/Severity"
|
|
309
|
+
}
|
|
310
|
+
]
|
|
311
|
+
},
|
|
312
|
+
"suggestion": {
|
|
313
|
+
"description": "Suggestion for how to fix",
|
|
314
|
+
"type": [
|
|
315
|
+
"string",
|
|
316
|
+
"null"
|
|
317
|
+
]
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
"ValidationProfile": {
|
|
322
|
+
"description": "Validation profile determining strictness",
|
|
323
|
+
"oneOf": [
|
|
324
|
+
{
|
|
325
|
+
"description": "Minimal validation - just check if playable",
|
|
326
|
+
"type": "string",
|
|
327
|
+
"enum": [
|
|
328
|
+
"Minimal"
|
|
329
|
+
]
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"description": "Standard SMPTE compliance",
|
|
333
|
+
"type": "string",
|
|
334
|
+
"enum": [
|
|
335
|
+
"SMPTE"
|
|
336
|
+
]
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
"description": "Custom profile with specific rules",
|
|
340
|
+
"type": "string",
|
|
341
|
+
"enum": [
|
|
342
|
+
"Custom"
|
|
343
|
+
]
|
|
344
|
+
}
|
|
345
|
+
]
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "VolumeIndex",
|
|
4
|
+
"description": "VOLINDEX document (SMPTE ST 2067-9 §5 / ST 429-9:2014).\n\nIn practice this is always `<Index>1</Index>` for single-volume IMF packages. The spec allows multi-volume packages but they are rarely used.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"Index"
|
|
8
|
+
],
|
|
9
|
+
"properties": {
|
|
10
|
+
"Index": {
|
|
11
|
+
"description": "The volume count. Almost always `1`.",
|
|
12
|
+
"type": "integer",
|
|
13
|
+
"format": "uint32",
|
|
14
|
+
"minimum": 0.0
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|