{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"format":{"type":"string","const":"ICTF"},"version":{"type":"string","const":"1.0"},"metadata":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":1000},"revision":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"description":{"type":"string","maxLength":1000000},"language":{"type":"string","maxLength":100},"source":{"type":"object","properties":{"format":{"type":"string","const":"h5p"},"title":{"type":"string","maxLength":1000000},"mainLibrary":{"type":"string","maxLength":300},"license":{"type":"string","maxLength":1000},"authors":{"maxItems":1000,"type":"array","items":{"type":"string","maxLength":1000}}},"required":["format","title","mainLibrary"],"additionalProperties":false}},"required":["id","title","revision","createdAt"],"additionalProperties":false},"requirements":{"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":300}},"bundles":{"maxItems":1000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"source":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"url"},"url":{"type":"string","maxLength":8192}},"required":["kind","url"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"file"},"path":{"type":"string","minLength":1,"maxLength":8192},"mount":{"type":"string","minLength":1,"maxLength":200}},"required":["kind","path"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"self"}},"required":["kind"],"additionalProperties":false}]}},"required":["id","source"],"additionalProperties":false}},"resources":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","enum":["video","image","audio","text","code","track","file"]},"source":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"url"},"url":{"type":"string","maxLength":8192}},"required":["kind","url"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"file"},"path":{"type":"string","minLength":1,"maxLength":8192},"mount":{"type":"string","minLength":1,"maxLength":200}},"required":["kind","path"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"bundle"},"bundleId":{"type":"string","minLength":1,"maxLength":200},"path":{"type":"string","minLength":1,"maxLength":8192}},"required":["kind","bundleId","path"],"additionalProperties":false}]},"mime":{"type":"string","maxLength":200},"name":{"type":"string","maxLength":1000}},"required":["id","type","source"],"additionalProperties":false}},"lesson":{"type":"object","properties":{"video":{"type":"object","properties":{"resourceIds":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"startAt":{"type":"number","minimum":0,"maximum":604800},"endAt":{"type":"number","minimum":0,"maximum":604800},"posterResourceId":{"type":"string","minLength":1,"maxLength":200},"tracks":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"resourceId":{"type":"string","minLength":1,"maxLength":200},"label":{"type":"string","maxLength":1000},"language":{"type":"string","maxLength":100}},"required":["resourceId","label","language"],"additionalProperties":false}}},"required":["resourceIds","startAt"],"additionalProperties":false},"timeline":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"start":{"type":"number","minimum":0,"maximum":604800},"end":{"type":"number","minimum":0,"maximum":604800},"pause":{"type":"boolean"},"label":{"type":"string","maxLength":1000000},"display":{"type":"string","enum":["button","poster"]},"position":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":100},"y":{"type":"number","minimum":0,"maximum":100},"width":{"type":"number","minimum":0,"maximum":100},"height":{"type":"number","minimum":0,"maximum":100}},"required":["x","y","width","height"],"additionalProperties":false},"content":{"maxItems":1000,"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"text"},"html":{"type":"string","maxLength":1000000}},"required":["id","type","html"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"text-resource"},"resourceId":{"type":"string","minLength":1,"maxLength":200},"format":{"type":"string","enum":["plain","html"]}},"required":["id","type","resourceId","format"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"image"},"resourceId":{"type":"string","minLength":1,"maxLength":200},"alt":{"type":"string","maxLength":1000000},"caption":{"type":"string","maxLength":1000000}},"required":["id","type","resourceId","alt"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"audio"},"resourceId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","type","resourceId"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"video"},"resourceIds":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}}},"required":["id","type","resourceIds"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"code"},"resourceId":{"type":"string","minLength":1,"maxLength":200},"language":{"type":"string","maxLength":100}},"required":["id","type","resourceId"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"link"},"text":{"type":"string","maxLength":1000000},"href":{"type":"string","maxLength":8192}},"required":["id","type","text","href"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"choice"},"questions":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","maxLength":1000000},"options":{"minItems":2,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","maxLength":1000000},"correct":{"type":"boolean"},"feedback":{"type":"string","maxLength":1000000}},"required":["id","text","correct"],"additionalProperties":false}},"multiple":{"type":"boolean"},"explanation":{"type":"string","maxLength":1000000}},"required":["id","prompt","options","multiple"],"additionalProperties":false}},"retry":{"type":"boolean"},"showSolution":{"type":"boolean"}},"required":["id","type","questions","retry","showSolution"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"blanks"},"title":{"type":"string","maxLength":1000000},"sentences":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","maxLength":1000000}},"caseSensitive":{"type":"boolean"},"retry":{"type":"boolean"},"showSolution":{"type":"boolean"}},"required":["id","type","title","sentences","caseSensitive","retry","showSolution"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"summary"},"title":{"type":"string","maxLength":1000000},"groups":{"minItems":1,"maxItems":1000,"type":"array","items":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","maxLength":1000000}}},"retry":{"type":"boolean"}},"required":["id","type","title","groups","retry"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"unsupported"},"library":{"type":"string","maxLength":300},"message":{"type":"string","maxLength":1000000},"originalParams":{}},"required":["id","type","library","message"],"additionalProperties":false}]}}},"required":["id","start","end","pause","label","display","content"],"additionalProperties":false}},"pages":{"maxItems":10000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","maxLength":1000000},"content":{"maxItems":1000,"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"text"},"html":{"type":"string","maxLength":1000000}},"required":["id","type","html"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"text-resource"},"resourceId":{"type":"string","minLength":1,"maxLength":200},"format":{"type":"string","enum":["plain","html"]}},"required":["id","type","resourceId","format"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"image"},"resourceId":{"type":"string","minLength":1,"maxLength":200},"alt":{"type":"string","maxLength":1000000},"caption":{"type":"string","maxLength":1000000}},"required":["id","type","resourceId","alt"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"audio"},"resourceId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","type","resourceId"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"video"},"resourceIds":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}}},"required":["id","type","resourceIds"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"code"},"resourceId":{"type":"string","minLength":1,"maxLength":200},"language":{"type":"string","maxLength":100}},"required":["id","type","resourceId"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"link"},"text":{"type":"string","maxLength":1000000},"href":{"type":"string","maxLength":8192}},"required":["id","type","text","href"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"choice"},"questions":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","maxLength":1000000},"options":{"minItems":2,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","maxLength":1000000},"correct":{"type":"boolean"},"feedback":{"type":"string","maxLength":1000000}},"required":["id","text","correct"],"additionalProperties":false}},"multiple":{"type":"boolean"},"explanation":{"type":"string","maxLength":1000000}},"required":["id","prompt","options","multiple"],"additionalProperties":false}},"retry":{"type":"boolean"},"showSolution":{"type":"boolean"}},"required":["id","type","questions","retry","showSolution"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"blanks"},"title":{"type":"string","maxLength":1000000},"sentences":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","maxLength":1000000}},"caseSensitive":{"type":"boolean"},"retry":{"type":"boolean"},"showSolution":{"type":"boolean"}},"required":["id","type","title","sentences","caseSensitive","retry","showSolution"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"summary"},"title":{"type":"string","maxLength":1000000},"groups":{"minItems":1,"maxItems":1000,"type":"array","items":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","maxLength":1000000}}},"retry":{"type":"boolean"}},"required":["id","type","title","groups","retry"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"type":{"type":"string","const":"unsupported"},"library":{"type":"string","maxLength":300},"message":{"type":"string","maxLength":1000000},"originalParams":{}},"required":["id","type","library","message"],"additionalProperties":false}]}}},"required":["id","title","content"],"additionalProperties":false}}},"required":["timeline","pages"],"additionalProperties":false},"extensions":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":300},"additionalProperties":{}}},"required":["format","version","metadata","requirements","bundles","resources","lesson"],"additionalProperties":false,"title":"Interactive Content Transfer Format","description":"ICTF 1.0. Cross-reference, path, and capability rules are additionally checked by POST /api/ictf/validate."}