madoo.caption-block/v2
Madoo duration-aware caption block — One pending cue with original context and measured feedback for bounded spoken adaptation.
| Reference | madoo.caption-block/v2 |
| Schema id | urn:madoo:schema:caption-block:v2 |
| Version | 2.0.0 |
| Served at | GET /api/v1/json-schemas/madoo.caption-block/v2 · MCP get_json_schema |
Where it appears
Section titled “Where it appears”One of the two forms of madoo.caption-block-family/v1, the contract on the ports.
Fields
Section titled “Fields”| Field | Type | Required | Rules | Description |
|---|---|---|---|---|
schema |
"madoo.caption-block/v2" |
yes | ||
track_id |
string | yes | min length 1; max length 256 | |
block_id |
string | yes | min length 1; max length 256 | |
block_index |
integer | yes | ≥ 0; ≤ 9999 | |
source_language |
string or null | yes | max length 35 | |
cues |
array of objects | yes | min items 1; max items 1 | |
cues[].id |
string | yes | min length 1; max length 128 | |
cues[].text |
string | yes | min length 1; max length 20000 | |
cues[].speaker |
string or null | yes | max length 128 | |
cues[].kind |
"speech" |
yes | ||
context_before |
string or null | yes | max length 20000 | |
context_after |
string or null | yes | max length 20000 | |
timing |
object | yes | no other fields | |
timing.planId |
string | yes | pattern “^[a-f0-9]{64}$” | |
timing.cueId |
string | yes | min length 1; max length 128 | |
timing.round |
integer | yes | ≥ 1; ≤ 3 | |
timing.originalIndex |
integer | yes | ≥ 0; ≤ 9999 | |
timing.slotMilliseconds |
integer | yes | ≥ 50; ≤ 21600000 | |
timing.targetLanguage |
string | yes | min length 1; max length 35 | |
timing.initialTranslation |
string | yes | min length 1; max length 20000 | |
timing.previousText |
string or null | yes | max length 20000 | |
timing.previousDurationMilliseconds |
integer or null | yes | ≥ 1; ≤ 21600000 | |
timing.previousSpeakingRate |
number or null | yes | > 0 | |
timing.maximumFitRate |
number | yes | ≥ 1; ≤ 2 | |
timing.previousHasAudibleSignal |
boolean | |||
timing.maximumCombinedRate |
number | yes | ≥ 1; ≤ 2 | |
timing.targetMaximumCharacters |
integer | ≥ 1; ≤ 20000 |
Example
Section titled “Example”{ "schema": "madoo.caption-block/v2", "track_id": "source-track", "block_id": "timed-block-a", "block_index": 0, "source_language": "en", "cues": [ { "id": "cue-a", "text": "Welcome to Madoo.", "speaker": "speaker-1", "kind": "speech" } ], "context_before": null, "context_after": "Let's begin.", "timing": { "planId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "cueId": "cue-a", "round": 1, "originalIndex": 0, "slotMilliseconds": 2000, "targetLanguage": "it", "initialTranslation": "Benvenuti in Madoo.", "previousText": null, "previousDurationMilliseconds": null, "previousSpeakingRate": null, "maximumFitRate": 1.1, "maximumCombinedRate": 1.15 }}The complete schema
Section titled “The complete schema”madoo.caption-block/v2 (JSON Schema)
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "urn:madoo:schema:caption-block:v2", "title": "Duration-aware caption block", "type": "object", "additionalProperties": false, "properties": { "schema": { "const": "madoo.caption-block/v2" }, "track_id": { "type": "string", "minLength": 1, "maxLength": 256 }, "block_id": { "type": "string", "minLength": 1, "maxLength": 256 }, "block_index": { "type": "integer", "minimum": 0, "maximum": 9999 }, "source_language": { "type": [ "string", "null" ], "maxLength": 35 }, "cues": { "type": "array", "minItems": 1, "maxItems": 1, "items": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "minLength": 1, "maxLength": 128 }, "text": { "type": "string", "minLength": 1, "maxLength": 20000 }, "speaker": { "type": [ "string", "null" ], "maxLength": 128 }, "kind": { "const": "speech" } }, "required": [ "id", "text", "speaker", "kind" ] } }, "context_before": { "type": [ "string", "null" ], "maxLength": 20000 }, "context_after": { "type": [ "string", "null" ], "maxLength": 20000 }, "timing": { "type": "object", "additionalProperties": false, "properties": { "planId": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "cueId": { "type": "string", "minLength": 1, "maxLength": 128 }, "round": { "type": "integer", "minimum": 1, "maximum": 3 }, "originalIndex": { "type": "integer", "minimum": 0, "maximum": 9999 }, "slotMilliseconds": { "type": "integer", "minimum": 50, "maximum": 21600000 }, "targetLanguage": { "type": "string", "minLength": 1, "maxLength": 35 }, "initialTranslation": { "type": "string", "minLength": 1, "maxLength": 20000 }, "previousText": { "type": [ "string", "null" ], "maxLength": 20000 }, "previousDurationMilliseconds": { "type": [ "integer", "null" ], "minimum": 1, "maximum": 21600000 }, "previousSpeakingRate": { "type": [ "number", "null" ], "exclusiveMinimum": 0 }, "maximumFitRate": { "type": "number", "minimum": 1, "maximum": 2 }, "previousHasAudibleSignal": { "type": "boolean" }, "maximumCombinedRate": { "type": "number", "minimum": 1, "maximum": 2 }, "targetMaximumCharacters": { "type": "integer", "minimum": 1, "maximum": 20000 } }, "required": [ "planId", "cueId", "round", "originalIndex", "slotMilliseconds", "targetLanguage", "initialTranslation", "previousText", "previousDurationMilliseconds", "previousSpeakingRate", "maximumFitRate", "maximumCombinedRate" ] } }, "required": [ "schema", "track_id", "block_id", "block_index", "source_language", "cues", "context_before", "context_after", "timing" ]}