addedInput schema / $defs / __schema0 / additionalProperties
Added value: +false
removedInput schema / $defs / __schema0 / anyOf
Removed value: -[
- {
- "type": "string"
- },
- {
- "type": "number"
- },
- {
- "type": "boolean"
- },
- {
- "type": "null"
- },
- {
- "items": {
- "$ref": "#/$defs/__schema0"
- },
- "type": "array"
- },
- {
- "additionalProperties": {
- "$ref": "#/$defs/__schema0"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- }
-]
addedInput schema / $defs / __schema0 / properties
Added value: +{
+ "durationSec": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "graphic": {
+ "additionalProperties": false,
+ "description": "GRAPHICS MANDATE: the plan MUST carry a graphics request of this role overlapping this beat's window — enforced at the plan gate (honor-or-refuse, like moment pinning). Prose mustIncludes reaches only the judge; this is the checkable form.",
+ "properties": {
+ "items": {
+ "$ref": "#/$defs/__schema5"
+ },
+ "role": {
+ "$ref": "#/$defs/__schema4"
+ }
+ },
+ "required": [
+ "role"
+ ],
+ "type": "object"
+ },
+ "id": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "intent": {
+ "description": "What this beat DOES editorially (hook the claim, prove it, CTA…).",
+ "minLength": 1,
+ "type": "string"
+ },
+ "source": {
+ "additionalProperties": false,
+ "description": "MOMENT PINNING: this beat uses EXACTLY this window of this media item — honored to-the-frame or refused. v1: every sourced beat must reference the SAME mediaId (multi-source briefs are refused loudly, not silently merged).",
+ "properties": {
+ "endSec": {
+ "$ref": "#/$defs/__schema3"
+ },
+ "mediaId": {
+ "$ref": "#/$defs/__schema1"
+ },
+ "startSec": {
+ "$ref": "#/$defs/__schema2"
+ }
+ },
+ "required": [
+ "mediaId",
+ "startSec",
+ "endSec"
+ ],
+ "type": "object"
+ }
+}
addedInput schema / $defs / __schema0 / required
Added value: +[
+ "id",
+ "intent"
+]
addedInput schema / $defs / __schema0 / type
Added value: +"object"
addedInput schema / $defs / __schema1
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema10
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "automation": {
+ "additionalProperties": false,
+ "properties": {
+ "lanes": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "points": {
+ "items": {
+ "$ref": "#/$defs/__schema36"
+ },
+ "minItems": 2,
+ "type": "array"
+ },
+ "target": {
+ "const": "volume",
+ "type": "string"
+ }
+ },
+ "required": [
+ "target",
+ "points"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "version": {
+ "const": 1,
+ "type": "number"
+ }
+ },
+ "required": [
+ "version",
+ "lanes"
+ ],
+ "type": "object"
+ },
+ "captionVisibility": {
+ "description": "Video media clip only. Hide native captions while this clip is topmost and covers the lower picture, or when an opaque, effect-free clip has an explicitly full-frame region, even with fit:contain. Caption words and timings remain stored and resume when another visible clip takes over.",
+ "enum": [
+ "visible",
+ "hidden"
+ ],
+ "type": "string"
+ },
+ "color": {
+ "additionalProperties": false,
+ "properties": {
+ "creative": {
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "mediaId": {
+ "type": "string"
+ },
+ "sha256": {
+ "type": "string"
+ },
+ "strength": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "mediaId",
+ "sha256",
+ "enabled",
+ "strength"
+ ],
+ "type": "object"
+ },
+ "display": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "mediaId": {
+ "type": "string"
+ },
+ "sha256": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "mediaId",
+ "sha256",
+ "enabled"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "bundled": {
+ "enum": [
+ "daylight-negative",
+ "tungsten-negative",
+ "soft-negative",
+ "slide",
+ "black-and-white"
+ ],
+ "type": "string"
+ },
+ "enabled": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "bundled",
+ "enabled"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "enabled": {
+ "type": "boolean"
+ },
+ "grade": {
+ "additionalProperties": false,
+ "properties": {
+ "blacks": {
+ "maximum": 1,
+ "minimum": -1,
+ "type": "number"
+ },
+ "contrast": {
+ "maximum": 1,
+ "minimum": -1,
+ "type": "number"
+ },
+ "exposure": {
+ "maximum": 4,
+ "minimum": -4,
+ "type": "number"
+ },
+ "highlights": {
+ "maximum": 1,
+ "minimum": -1,
+ "type": "number"
+ },
+ "saturation": {
+ "maximum": 1,
+ "minimum": -1,
+ "type": "number"
+ },
+ "shadows": {
+ "maximum": 1,
+ "minimum": -1,
+ "type": "number"
+ },
+ "temperature": {
+ "maximum": 1,
+ "minimum": -1,
+ "type": "number"
+ },
+ "tint": {
+ "maximum": 1,
+ "minimum": -1,
+ "type": "number"
+ },
+ "vibrance": {
+ "maximum": 1,
+ "minimum": -1,
+ "type": "number"
+ },
+ "whites": {
+ "maximum": 1,
+ "minimum": -1,
+ "type": "number"
+ }
+ },
+ "required": [
+ "exposure",
+ "contrast",
+ "highlights",
+ "shadows",
+ "whites",
+ "blacks",
+ "temperature",
+ "tint",
+ "vibrance",
+ "saturation"
+ ],
+ "type": "object"
+ },
+ "grain": {
+ "additionalProperties": false,
+ "properties": {
+ "amount": {
+ "maximum": 2,
+ "minimum": 0,
+ "type": "number"
+ },
+ "enabled": {
+ "type": "boolean"
+ },
+ "gauge": {
+ "enum": [
+ "super8",
+ "super16",
+ "super35",
+ "65mm"
+ ],
+ "type": "string"
+ },
+ "profile": {
+ "enum": [
+ "daylight-negative",
+ "tungsten-negative",
+ "soft-negative",
+ "slide",
+ "black-and-white"
+ ],
+ "type": "string"
+ },
+ "seed": {
+ "maximum": 4294967295,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "size": {
+ "maximum": 4,
+ "minimum": 0.5,
+ "type": "number"
+ }
+ },
+ "required": [
+ "enabled",
+ "profile",
+ "gauge",
+ "amount",
+ "size",
+ "seed"
+ ],
+ "type": "object"
+ },
+ "halation": {
+ "additionalProperties": false,
+ "properties": {
+ "amount": {
+ "maximum": 0.5,
+ "minimum": 0,
+ "type": "number"
+ },
+ "enabled": {
+ "type": "boolean"
+ },
+ "radius": {
+ "maximum": 0.02,
+ "minimum": 0.0005,
+ "type": "number"
+ },
+ "threshold": {
+ "maximum": 16,
+ "minimum": 0,
+ "type": "number"
+ },
+ "tint": {
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema38"
+ },
+ {
+ "$ref": "#/$defs/__schema39"
+ },
+ {
+ "$ref": "#/$defs/__schema40"
+ }
+ ],
+ "type": "array"
+ }
+ },
+ "required": [
+ "enabled",
+ "amount",
+ "radius",
+ "threshold",
+ "tint"
+ ],
+ "type": "object"
+ },
+ "looks": {
+ "items": {
+ "$ref": "#/$defs/__schema37"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "version": {
+ "const": 1,
+ "type": "number"
+ }
+ },
+ "required": [
+ "version",
+ "enabled",
+ "grade",
+ "looks"
+ ],
+ "type": "object"
+ },
+ "duration": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "effects": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "component": {
+ "$ref": "#/$defs/__schema23"
+ },
+ "id": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "params": {
+ "additionalProperties": {},
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "primitiveId": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "window": {
+ "additionalProperties": false,
+ "properties": {
+ "duration": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "startTime": {
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "startTime",
+ "duration"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "fit": {
+ "enum": [
+ "cover",
+ "contain"
+ ],
+ "type": "string"
+ },
+ "id": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "video",
+ "audio",
+ "image",
+ "overlay",
+ "effect"
+ ],
+ "type": "string"
+ },
+ "legacyKeyframes": {
+ "additionalProperties": false,
+ "properties": {
+ "channels": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "needsUpgrade": {
+ "const": true,
+ "type": "boolean"
+ },
+ "record": {}
+ },
+ "required": [
+ "needsUpgrade",
+ "channels",
+ "record"
+ ],
+ "type": "object"
+ },
+ "linkGroupId": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "opacity": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "position": {
+ "additionalProperties": {
+ "$ref": "#/$defs/__schema29"
+ },
+ "description": "Clip CENTRE as a fraction of the frame: {x:0.5,y:0.5} is dead centre, 0 to 1 is inside the frame, and a little overshoot (down to -1, up to 2) is how an entrance starts off-canvas. NOT pixels: the renderer maps x to `left: x*100%`, so `x: 180` sits 180 frame-widths away and draws nothing.",
+ "properties": {
+ "x": {
+ "$ref": "#/$defs/__schema27"
+ },
+ "y": {
+ "$ref": "#/$defs/__schema28"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": "object"
+ },
+ "region": {
+ "additionalProperties": {
+ "$ref": "#/$defs/__schema34"
+ },
+ "description": "A window in the frame that the clip draws into and is clipped to (top-left corner and size, each a frame fraction). Inside a region, `position` and `scale` act relative to that window, so content moved past its edge is cut off. Omit it to place the clip against the whole frame.",
+ "properties": {
+ "h": {
+ "$ref": "#/$defs/__schema33"
+ },
+ "w": {
+ "$ref": "#/$defs/__schema32"
+ },
+ "x": {
+ "$ref": "#/$defs/__schema30"
+ },
+ "y": {
+ "$ref": "#/$defs/__schema31"
+ }
+ },
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h"
+ ],
+ "type": "object"
+ },
+ "rotation": {
+ "type": "number"
+ },
+ "scale": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "source": {
+ "oneOf": [
+ {
+ "additionalProperties": {},
+ "properties": {
+ "anchor": {
+ "additionalProperties": {},
+ "properties": {
+ "clipId": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "offsetMs": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "clipId",
+ "offsetMs"
+ ],
+ "type": "object"
+ },
+ "audioRole": {
+ "description": "Mix role. A role sets the clip's default gain when it has no `volume` or `volumeDb`: vo 0 dB, sfx -6 dB, music -8 dB (-16 dB when any vo clip exists), ambience -22 dB. Set `volumeDb: 0` to keep a role and play the source at its own level.",
+ "enum": [
+ "sfx",
+ "music",
+ "vo",
+ "ambience"
+ ],
+ "type": "string"
+ },
+ "duck": {
+ "additionalProperties": {},
+ "properties": {
+ "attackMs": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "duckDb": {
+ "maximum": 0,
+ "type": "number"
+ },
+ "releaseMs": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "windows": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "endMs": {
+ "type": "number"
+ },
+ "startMs": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "startMs",
+ "endMs"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "duckDb",
+ "attackMs",
+ "releaseMs"
+ ],
+ "type": "object"
+ },
+ "excludedRanges": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "end": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "start": {
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "start",
+ "end"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "fadeInMs": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "fadeOutMs": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "kenBurns": {
+ "description": "Still-image motion. When unset, an image clip slowly pushes in (`in`) unless its fit is `contain` or it keyframes scale, position or rotation, so a keyframed clip renders exactly its keyframed values; set `none` for a still that holds.",
+ "enum": [
+ "in",
+ "out",
+ "pan-l",
+ "pan-r",
+ "none"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "media",
+ "type": "string"
+ },
+ "loop": {
+ "type": "boolean"
+ },
+ "mediaId": {
+ "type": "string"
+ },
+ "muted": {
+ "type": "boolean"
+ },
+ "playbackRate": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "reframe": {
+ "additionalProperties": {},
+ "properties": {
+ "segments": {
+ "items": {
+ "$ref": "#/$defs/__schema11"
+ },
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "segments"
+ ],
+ "type": "object"
+ },
+ "sync": {
+ "enum": [
+ "video",
+ "independent"
+ ],
+ "type": "string"
+ },
+ "trim": {
+ "additionalProperties": {},
+ "properties": {
+ "end": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "start": {
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "start",
+ "end"
+ ],
+ "type": "object"
+ },
+ "volume": {
+ "maximum": 4,
+ "minimum": 0,
+ "type": "number"
+ },
+ "volumeDb": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "mediaId"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "componentId": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "execution": {
+ "$ref": "#/$defs/__schema23"
+ },
+ "kind": {
+ "const": "component",
+ "type": "string"
+ },
+ "placement": {
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "clip",
+ "type": "string"
+ },
+ "version": {
+ "const": 3,
+ "type": "number"
+ }
+ },
+ "required": [
+ "version",
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "content-slots",
+ "type": "string"
+ },
+ "slots": {
+ "additionalProperties": {
+ "additionalProperties": false,
+ "properties": {
+ "ownership": {
+ "enum": [
+ "reference",
+ "exclusive"
+ ],
+ "type": "string"
+ },
+ "targetClipIds": {
+ "items": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "targetClipIds",
+ "ownership"
+ ],
+ "type": "object"
+ },
+ "properties": {},
+ "propertyNames": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "version": {
+ "const": 3,
+ "type": "number"
+ }
+ },
+ "required": [
+ "version",
+ "kind",
+ "slots"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "props": {
+ "additionalProperties": {},
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "retired": {
+ "additionalProperties": {},
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "zPlane": {
+ "enum": [
+ "front",
+ "behind-subject"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "componentId",
+ "props"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": {},
+ "properties": {
+ "anchor": {
+ "additionalProperties": {},
+ "properties": {
+ "space": {
+ "const": "scene",
+ "type": "string"
+ },
+ "x": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "y": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "space",
+ "x",
+ "y"
+ ],
+ "type": "object"
+ },
+ "kind": {
+ "const": "overlay",
+ "type": "string"
+ },
+ "parallax": {
+ "maximum": 0.3,
+ "minimum": -0.3,
+ "type": "number"
+ },
+ "params": {
+ "additionalProperties": {},
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "primitiveId": {
+ "minLength": 1,
+ "pattern": "^(?!custom$)",
+ "type": "string"
+ },
+ "zPlane": {
+ "enum": [
+ "front",
+ "behind-subject"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "primitiveId",
+ "params"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "component": {
+ "$ref": "#/$defs/__schema23"
+ },
+ "kind": {
+ "const": "effect",
+ "type": "string"
+ },
+ "params": {
+ "additionalProperties": {},
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "primitiveId": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "targetTrackIds": {
+ "items": {
+ "$ref": "#/$defs/__schema25"
+ },
+ "minItems": 1,
+ "type": "array"
+ },
+ "wrapperOrder": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": {},
+ "properties": {
+ "html": {
+ "description": "Self-contained card markup sized to the format's pixel frame. Motion comes from frame-driven vars, never @keyframes or transition: --cf-frame, --cf-t (seconds), --cf-fps, --cf-duration, --cf-progress, --cf-ease, --cf-enter, --cf-exit. Visible copy goes in the html as plain text. Wrap a run in <span data-cf-split=\"words\"> or \"chars\" and each unit becomes its own span carrying --cf-i (its index, the group carries --cf-n), so one rule staggers it (in chars, spaces count as units), e.g. opacity:clamp(0,calc(var(--cf-t)*4 - var(--cf-i)*.3),1). save_as_template binds that copy with textParams match.",
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "card",
+ "type": "string"
+ },
+ "tokens": {
+ "$ref": "#/$defs/__schema26",
+ "description": "Style values the html reads as CSS custom properties: key x becomes --cf-x, so never put dashes in a key. Use tokens for colours and sizes, not visible copy.",
+ "propertyNames": {
+ "type": "string"
+ }
+ },
+ "zPlane": {
+ "const": "front",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "html"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "compositionId": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "composition",
+ "type": "string"
+ },
+ "trim": {
+ "additionalProperties": {},
+ "properties": {
+ "end": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "start": {
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "start",
+ "end"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "compositionId"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "startTime": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "transitionIn": {
+ "additionalProperties": {},
+ "properties": {
+ "component": {
+ "$ref": "#/$defs/__schema23"
+ },
+ "duration": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "fromClipId": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "handlePolicy": {
+ "const": "outgoing-overrun-at-cut-v1",
+ "type": "string"
+ },
+ "id": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "toClipId": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": {
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "duration"
+ ],
+ "type": "object"
+ },
+ "tweens": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "duration": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "id": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "keyframes": {
+ "additionalProperties": false,
+ "properties": {
+ "easeEach": {
+ "const": "none",
+ "type": "string"
+ },
+ "format": {
+ "const": "percentage",
+ "type": "string"
+ },
+ "keyframes": {
+ "items": {
+ "$ref": "#/$defs/__schema35"
+ },
+ "minItems": 2,
+ "type": "array"
+ }
+ },
+ "required": [
+ "format",
+ "easeEach",
+ "keyframes"
+ ],
+ "type": "object"
+ },
+ "position": {
+ "type": "number"
+ },
+ "propertyGroup": {
+ "enum": [
+ "visual",
+ "scale",
+ "rotation",
+ "position"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "propertyGroup",
+ "position",
+ "duration",
+ "keyframes"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "id",
+ "startTime",
+ "duration",
+ "source"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema11
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "bias": {
+ "additionalProperties": {
+ "$ref": "#/$defs/__schema22"
+ },
+ "description": "Optional FINE framing nudge off the focus center, source-normalized in [−0.3, 0.3]. A small correction (headroom, rule-of-thirds), NOT a reframe — use `focus`/`zoom` for the actual shot. Omit (treated as 0) to sit dead-center on the focus.",
+ "properties": {
+ "x": {
+ "$ref": "#/$defs/__schema20"
+ },
+ "y": {
+ "$ref": "#/$defs/__schema21"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": "object"
+ },
+ "ease": {
+ "additionalProperties": {
+ "$ref": "#/$defs/__schema19"
+ },
+ "description": "Zoom/center ramp DURATIONS in SECONDS at this segment's edges — NOT a unitless 0–1 curve. ~0.3–0.6s reads as a snappy push; >1s reads sluggish. Keep `in` + `out` ≤ the segment's duration (endSec − startSec): the two edges share the span, so to ramp across the WHOLE segment set one edge to the full duration and the other to 0. Omit for an instant cut to this framing.",
+ "properties": {
+ "in": {
+ "$ref": "#/$defs/__schema17"
+ },
+ "out": {
+ "$ref": "#/$defs/__schema18"
+ }
+ },
+ "required": [
+ "in",
+ "out"
+ ],
+ "type": "object"
+ },
+ "endSec": {
+ "description": "Segment END in seconds, clip-relative. The span (endSec − startSec) is this segment's duration — the window `ease` ramps over.",
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "focus": {
+ "description": "WHO/WHAT the camera tracks this segment (the reframe center), selected by `mode`: `frame-center` = no tracking, hold the geometric center (static/graphic footage, or a pure zoom); `point` = lock to a fixed source-normalized {x,y} (a non-moving on-screen element); `face` = track a detected face by `faceId` (from get_media_context), with optional `shotScale` close|standard|wide for tightness; `all-faces` = frame the bounding box of every detected face (group/ensemble shots); `active-speaker` = follow whoever is speaking (diarized talking-head / podcast). Pick by what the beat is about; pair with `zoom` for how tight.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/__schema12"
+ },
+ {
+ "$ref": "#/$defs/__schema13"
+ },
+ {
+ "$ref": "#/$defs/__schema14"
+ },
+ {
+ "$ref": "#/$defs/__schema15"
+ },
+ {
+ "$ref": "#/$defs/__schema16"
+ }
+ ]
+ },
+ "intent": {
+ "description": "Optional editorial LABEL for diff/log readability (e.g. 'speaker-tight', 'wide-context'). Cosmetic — NOT honored by the derive math and excluded from the variant cache key.",
+ "type": "string"
+ },
+ "startSec": {
+ "description": "Segment START in seconds, clip-relative. Segments tile the clip's duration in order.",
+ "minimum": 0,
+ "type": "number"
+ },
+ "zoom": {
+ "description": "How TIGHT the framing is — the fraction of the source the output viewport shows. <1 punches IN (a smaller source fraction, magnified to fill the frame); 1 = the full frame (no crop). ~0.6–0.8 is a moderate push-in, ~0.5 a tight close-up, 0.1 the maximum zoom. There is NO zoom-OUT past the full frame (max 1). Omit for the full frame. MUTUALLY EXCLUSIVE with `focus.shotScale`: a face-tracked shot is sized EITHER by the editorial scale (shotScale, calibrated to the detected face) OR by an explicit zoom — never both.",
+ "maximum": 1,
+ "minimum": 0.1,
+ "type": "number"
+ }
+ },
+ "required": [
+ "startSec",
+ "endSec",
+ "focus"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema12
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "mode": {
+ "const": "frame-center",
+ "type": "string"
+ }
+ },
+ "required": [
+ "mode"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema13
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "mode": {
+ "const": "point",
+ "type": "string"
+ },
+ "x": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "y": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "mode",
+ "x",
+ "y"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema14
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "faceId": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "mode": {
+ "const": "face",
+ "type": "string"
+ },
+ "shotScale": {
+ "enum": [
+ "close",
+ "standard",
+ "wide"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "mode",
+ "faceId"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema15
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "mode": {
+ "const": "all-faces",
+ "type": "string"
+ }
+ },
+ "required": [
+ "mode"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema16
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "mode": {
+ "const": "active-speaker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "mode"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema17
Added value: +{
+ "description": "Ease-IN ramp DURATION in seconds at the segment START.",
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema18
Added value: +{
+ "description": "Ease-OUT ramp DURATION in seconds at the segment END.",
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema19
Added value: +{}
addedInput schema / $defs / __schema2
Added value: +{
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema20
Added value: +{
+ "description": "Horizontal nudge, source-normalized (+ = right).",
+ "maximum": 0.3,
+ "minimum": -0.3,
+ "type": "number"
+}
addedInput schema / $defs / __schema21
Added value: +{
+ "description": "Vertical nudge, source-normalized (+ = down).",
+ "maximum": 0.3,
+ "minimum": -0.3,
+ "type": "number"
+}
addedInput schema / $defs / __schema22
Added value: +{}
addedInput schema / $defs / __schema23
Added value: +{
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "assets": {
+ "additionalProperties": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "properties": {},
+ "propertyNames": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "componentId": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "mediaBindings": {
+ "additionalProperties": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "properties": {},
+ "propertyNames": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "params": {
+ "additionalProperties": {
+ "$ref": "#/$defs/__schema24"
+ },
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "seed": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "sourceVersionId": {
+ "pattern": "^[a-f0-9]{64}$",
+ "type": "string"
+ },
+ "version": {
+ "const": 3,
+ "type": "number"
+ }
+ },
+ "required": [
+ "version",
+ "componentId",
+ "sourceVersionId",
+ "params",
+ "seed"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "assets": {
+ "additionalProperties": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "properties": {},
+ "propertyNames": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "componentId": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "mediaBindings": {
+ "additionalProperties": {
+ "items": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "properties": {},
+ "propertyNames": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "params": {
+ "additionalProperties": {
+ "$ref": "#/$defs/__schema24"
+ },
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "seed": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "sourceVersionId": {
+ "pattern": "^[a-f0-9]{64}$",
+ "type": "string"
+ },
+ "version": {
+ "const": 4,
+ "type": "number"
+ }
+ },
+ "required": [
+ "version",
+ "componentId",
+ "sourceVersionId",
+ "params",
+ "seed"
+ ],
+ "type": "object"
+ }
+ ]
+}
addedInput schema / $defs / __schema24
Added value: +{
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ },
+ {
+ "items": {
+ "$ref": "#/$defs/__schema24"
+ },
+ "type": "array"
+ },
+ {
+ "additionalProperties": {
+ "$ref": "#/$defs/__schema24"
+ },
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ }
+ ]
+}
addedInput schema / $defs / __schema25
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema26
Added value: +{
+ "additionalProperties": {
+ "type": "string"
+ },
+ "properties": {},
+ "type": "object"
+}
addedInput schema / $defs / __schema27
Added value: +{
+ "maximum": 2,
+ "minimum": -1,
+ "type": "number"
+}
addedInput schema / $defs / __schema28
Added value: +{
+ "maximum": 2,
+ "minimum": -1,
+ "type": "number"
+}
addedInput schema / $defs / __schema29
Added value: +{}
addedInput schema / $defs / __schema3
Added value: +{
+ "exclusiveMinimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema30
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema31
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema32
Added value: +{
+ "exclusiveMinimum": 0,
+ "maximum": 1,
+ "type": "number"
+}
addedInput schema / $defs / __schema33
Added value: +{
+ "exclusiveMinimum": 0,
+ "maximum": 1,
+ "type": "number"
+}
addedInput schema / $defs / __schema34
Added value: +{}
addedInput schema / $defs / __schema35
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "ease": {
+ "type": "string"
+ },
+ "percentage": {
+ "type": "number"
+ },
+ "properties": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "percentage",
+ "properties"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema36
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "t": {
+ "type": "number"
+ },
+ "v": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "t",
+ "v"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema37
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "mediaId": {
+ "type": "string"
+ },
+ "sha256": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "mediaId",
+ "sha256",
+ "enabled"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema38
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema39
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema4
Added value: +{
+ "description": "The mandated graphic's editorial role (the graphics-plan GraphicRole vocabulary).",
+ "enum": [
+ "title-card",
+ "stat",
+ "lower-third",
+ "pull-quote",
+ "hero",
+ "logo-tag",
+ "enumeration",
+ "sequence",
+ "comparison"
+ ],
+ "type": "string"
+}
addedInput schema / $defs / __schema40
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema41
Added value: +{
+ "enum": [
+ "overlay",
+ "component",
+ "card",
+ "no-transitions"
+ ],
+ "type": "string"
+}
addedInput schema / $defs / __schema42
Added value: +{
+ "enum": [
+ "content",
+ "layout",
+ "motion"
+ ],
+ "type": "string"
+}
addedInput schema / $defs / __schema43
Added value: +{
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema5
Added value: +{
+ "description": "Mandated list items (enumeration/sequence) — carried VERBATIM into the plan's copy.items.",
+ "items": {
+ "$ref": "#/$defs/__schema6"
+ },
+ "maxItems": 8,
+ "type": "array"
+}
addedInput schema / $defs / __schema6
Added value: +{
+ "maxLength": 80,
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema7
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema8
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema9
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / properties / body / properties / beats / items / $ref
Added value: +"#/$defs/__schema0"
removedInput schema / properties / body / properties / beats / items / additionalProperties
Removed value: -false
removedInput schema / properties / body / properties / beats / items / properties
Removed value: -{
- "durationSec": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "graphic": {
- "additionalProperties": false,
- "description": "GRAPHICS MANDATE: the plan MUST carry a graphics request of this role overlapping this beat's window — enforced at the plan gate (honor-or-refuse, like moment pinning). Prose mustIncludes reaches only the judge; this is the checkable form.",
- "properties": {
- "items": {
- "description": "Mandated list items (enumeration/sequence) — carried VERBATIM into the plan's copy.items.",
- "items": {
- "maxLength": 80,
- "minLength": 1,
- "type": "string"
- },
- "maxItems": 8,
- "type": "array"
- },
- "role": {
- "description": "The mandated graphic's editorial role (the graphics-plan GraphicRole vocabulary).",
- "enum": [
- "title-card",
- "stat",
- "lower-third",
- "pull-quote",
- "hero",
- "logo-tag",
- "enumeration",
- "sequence",
- "comparison"
- ],
- "type": "string"
- }
- },
- "required": [
- "role"
- ],
- "type": "object"
- },
- "id": {
- "minLength": 1,
- "type": "string"
- },
- "intent": {
- "description": "What this beat DOES editorially (hook the claim, prove it, CTA…).",
- "minLength": 1,
- "type": "string"
- },
- "source": {
- "additionalProperties": false,
- "description": "MOMENT PINNING: this beat uses EXACTLY this window of this media item — honored to-the-frame or refused. v1: every sourced beat must reference the SAME mediaId (multi-source briefs are refused loudly, not silently merged).",
- "properties": {
- "endSec": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "mediaId": {
- "minLength": 1,
- "type": "string"
- },
- "startSec": {
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "mediaId",
- "startSec",
- "endSec"
- ],
- "type": "object"
- }
-}
removedInput schema / properties / body / properties / beats / items / required
Removed value: -[
- "id",
- "intent"
-]
removedInput schema / properties / body / properties / beats / items / type
Removed value: -"object"
addedInput schema / properties / body / properties / captions / properties / emphasisPhrases / items / $ref
Added value: +"#/$defs/__schema9"
removedInput schema / properties / body / properties / captions / properties / emphasisPhrases / items / minLength
Removed value: -1
removedInput schema / properties / body / properties / captions / properties / emphasisPhrases / items / type
Removed value: -"string"
addedInput schema / properties / body / properties / exclusions / items / $ref
Added value: +"#/$defs/__schema41"
removedInput schema / properties / body / properties / exclusions / items / enum
Removed value: -[
- "overlay",
- "component",
- "card",
- "no-transitions"
-]
removedInput schema / properties / body / properties / exclusions / items / type
Removed value: -"string"
addedInput schema / properties / body / properties / gates / properties / holdAt / items / $ref
Added value: +"#/$defs/__schema42"
removedInput schema / properties / body / properties / gates / properties / holdAt / items / enum
Removed value: -[
- "content",
- "layout",
- "motion"
-]
removedInput schema / properties / body / properties / gates / properties / holdAt / items / type
Removed value: -"string"
addedInput schema / properties / body / properties / mustIncludes / items / $ref
Added value: +"#/$defs/__schema7"
removedInput schema / properties / body / properties / mustIncludes / items / minLength
Removed value: -1
removedInput schema / properties / body / properties / mustIncludes / items / type
Removed value: -"string"
addedInput schema / properties / body / properties / references / items / $ref
Added value: +"#/$defs/__schema8"
removedInput schema / properties / body / properties / references / items / type
Removed value: -"string"
addedInput schema / properties / body / properties / seededGraphics / items / $ref
Added value: +"#/$defs/__schema10"
removedInput schema / properties / body / properties / seededGraphics / items / additionalProperties
Removed value: -false
removedInput schema / properties / body / properties / seededGraphics / items / properties
Removed value: -{
- "automation": {
- "additionalProperties": false,
- "properties": {
- "lanes": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "points": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "t": {
- "type": "number"
- },
- "v": {
- "type": "number"
- }
- },
- "required": [
- "t",
- "v"
- ],
- "type": "object"
- },
- "minItems": 2,
- "type": "array"
- },
- "target": {
- "const": "volume",
- "type": "string"
- }
- },
- "required": [
- "target",
- "points"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "version": {
- "const": 1,
- "type": "number"
- }
- },
- "required": [
- "version",
- "lanes"
- ],
- "type": "object"
- },
- "captionVisibility": {
- "description": "Video media clip only. Hide native captions while this clip is topmost and covers the lower picture, or when an opaque, effect-free clip has an explicitly full-frame region, even with fit:contain. Caption words and timings remain stored and resume when another visible clip takes over.",
- "enum": [
- "visible",
- "hidden"
- ],
- "type": "string"
- },
- "duration": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "effects": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "component": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "assets": {
- "additionalProperties": {
- "minLength": 1,
- "type": "string"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "mediaBindings": {
- "additionalProperties": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema0"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "seed": {
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 3,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId",
- "params",
- "seed"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "assets": {
- "additionalProperties": {
- "minLength": 1,
- "type": "string"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "mediaBindings": {
- "additionalProperties": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema0"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "seed": {
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 4,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId",
- "params",
- "seed"
- ],
- "type": "object"
- }
- ]
- },
- "id": {
- "minLength": 1,
- "type": "string"
- },
- "params": {
- "additionalProperties": {},
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "primitiveId": {
- "minLength": 1,
- "type": "string"
- },
- "window": {
- "additionalProperties": false,
- "properties": {
- "duration": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "startTime": {
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "startTime",
- "duration"
- ],
- "type": "object"
- }
- },
- "type": "object"
- },
- "type": "array"
- },
- "fit": {
- "enum": [
- "cover",
- "contain"
- ],
- "type": "string"
- },
- "id": {
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "enum": [
- "video",
- "audio",
- "image",
- "overlay",
- "effect"
- ],
- "type": "string"
- },
- "legacyKeyframes": {
- "additionalProperties": false,
- "properties": {
- "channels": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "needsUpgrade": {
- "const": true,
- "type": "boolean"
- },
- "record": {}
- },
- "required": [
- "needsUpgrade",
- "channels",
- "record"
- ],
- "type": "object"
- },
- "linkGroupId": {
- "minLength": 1,
- "type": "string"
- },
- "opacity": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "position": {
- "additionalProperties": {},
- "description": "Clip CENTRE as a fraction of the frame: {x:0.5,y:0.5} is dead centre, 0 to 1 is inside the frame, and a little overshoot (down to -1, up to 2) is how an entrance starts off-canvas. NOT pixels: the renderer maps x to `left: x*100%`, so `x: 180` sits 180 frame-widths away and draws nothing.",
- "properties": {
- "x": {
- "maximum": 2,
- "minimum": -1,
- "type": "number"
- },
- "y": {
- "maximum": 2,
- "minimum": -1,
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": "object"
- },
- "region": {
- "additionalProperties": {},
- "properties": {
- "h": {
- "exclusiveMinimum": 0,
- "maximum": 1,
- "type": "number"
- },
- "w": {
- "exclusiveMinimum": 0,
- "maximum": 1,
- "type": "number"
- },
- "x": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "y": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "x",
- "y",
- "w",
- "h"
- ],
- "type": "object"
- },
- "rotation": {
- "type": "number"
- },
- "scale": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "source": {
- "oneOf": [
- {
- "additionalProperties": {},
- "properties": {
- "anchor": {
- "additionalProperties": {},
- "properties": {
- "clipId": {
- "minLength": 1,
- "type": "string"
- },
- "offsetMs": {
- "type": "number"
- }
- },
- "required": [
- "clipId",
- "offsetMs"
- ],
- "type": "object"
- },
- "audioRole": {
- "enum": [
- "sfx",
- "music",
- "vo",
- "ambience"
- ],
- "type": "string"
- },
- "duck": {
- "additionalProperties": {},
- "properties": {
- "attackMs": {
- "minimum": 0,
- "type": "number"
- },
- "duckDb": {
- "maximum": 0,
- "type": "number"
- },
- "releaseMs": {
- "minimum": 0,
- "type": "number"
- },
- "windows": {
- "items": {
- "additionalProperties": {},
- "properties": {
- "endMs": {
- "type": "number"
- },
- "startMs": {
- "type": "number"
- }
- },
- "required": [
- "startMs",
- "endMs"
- ],
- "type": "object"
- },
- "type": "array"
- }
- },
- "required": [
- "duckDb",
- "attackMs",
- "releaseMs"
- ],
- "type": "object"
- },
- "excludedRanges": {
- "items": {
- "additionalProperties": {},
- "properties": {
- "end": {
- "minimum": 0,
- "type": "number"
- },
- "reason": {
- "type": "string"
- },
- "start": {
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "start",
- "end"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "fadeInMs": {
- "minimum": 0,
- "type": "number"
- },
- "fadeOutMs": {
- "minimum": 0,
- "type": "number"
- },
- "kenBurns": {
- "enum": [
- "in",
- "out",
- "pan-l",
- "pan-r",
- "none"
- ],
- "type": "string"
- },
- "kind": {
- "const": "media",
- "type": "string"
- },
- "loop": {
- "type": "boolean"
- },
- "mediaId": {
- "type": "string"
- },
- "muted": {
- "type": "boolean"
- },
- "playbackRate": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "reframe": {
- "additionalProperties": {},
- "properties": {
- "segments": {
- "items": {
- "additionalProperties": {},
- "properties": {
- "bias": {
- "additionalProperties": {},
- "description": "Optional FINE framing nudge off the focus center, source-normalized in [−0.3, 0.3]. A small correction (headroom, rule-of-thirds), NOT a reframe — use `focus`/`zoom` for the actual shot. Omit (treated as 0) to sit dead-center on the focus.",
- "properties": {
- "x": {
- "description": "Horizontal nudge, source-normalized (+ = right).",
- "maximum": 0.3,
- "minimum": -0.3,
- "type": "number"
- },
- "y": {
- "description": "Vertical nudge, source-normalized (+ = down).",
- "maximum": 0.3,
- "minimum": -0.3,
- "type": "number"
- }
- },
- "required": [
- "x",
- "y"
- ],
- "type": "object"
- },
- "ease": {
- "additionalProperties": {},
- "description": "Zoom/center ramp DURATIONS in SECONDS at this segment's edges — NOT a unitless 0–1 curve. ~0.3–0.6s reads as a snappy push; >1s reads sluggish. Keep `in` + `out` ≤ the segment's duration (endSec − startSec): the two edges share the span, so to ramp across the WHOLE segment set one edge to the full duration and the other to 0. Omit for an instant cut to this framing.",
- "properties": {
- "in": {
- "description": "Ease-IN ramp DURATION in seconds at the segment START.",
- "minimum": 0,
- "type": "number"
- },
- "out": {
- "description": "Ease-OUT ramp DURATION in seconds at the segment END.",
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "in",
- "out"
- ],
- "type": "object"
- },
- "endSec": {
- "description": "Segment END in seconds, clip-relative. The span (endSec − startSec) is this segment's duration — the window `ease` ramps over.",
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "focus": {
- "description": "WHO/WHAT the camera tracks this segment (the reframe center), selected by `mode`: `frame-center` = no tracking, hold the geometric center (static/graphic footage, or a pure zoom); `point` = lock to a fixed source-normalized {x,y} (a non-moving on-screen element); `face` = track a detected face by `faceId` (from get_media_context), with optional `shotScale` close|standard|wide for tightness; `all-faces` = frame the bounding box of every detected face (group/ensemble shots); `active-speaker` = follow whoever is speaking (diarized talking-head / podcast). Pick by what the beat is about; pair with `zoom` for how tight.",
- "oneOf": [
- {
- "additionalProperties": {},
- "properties": {
- "mode": {
- "const": "frame-center",
- "type": "string"
- }
- },
- "required": [
- "mode"
- ],
- "type": "object"
- },
- {
- "additionalProperties": {},
- "properties": {
- "mode": {
- "const": "point",
- "type": "string"
- },
- "x": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "y": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "mode",
- "x",
- "y"
- ],
- "type": "object"
- },
- {
- "additionalProperties": {},
- "properties": {
- "faceId": {
- "minLength": 1,
- "type": "string"
- },
- "mode": {
- "const": "face",
- "type": "string"
- },
- "shotScale": {
- "enum": [
- "close",
- "standard",
- "wide"
- ],
- "type": "string"
- }
- },
- "required": [
- "mode",
- "faceId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": {},
- "properties": {
- "mode": {
- "const": "all-faces",
- "type": "string"
- }
- },
- "required": [
- "mode"
- ],
- "type": "object"
- },
- {
- "additionalProperties": {},
- "properties": {
- "mode": {
- "const": "active-speaker",
- "type": "string"
- }
- },
- "required": [
- "mode"
- ],
- "type": "object"
- }
- ]
- },
- "intent": {
- "description": "Optional editorial LABEL for diff/log readability (e.g. 'speaker-tight', 'wide-context'). Cosmetic — NOT honored by the derive math and excluded from the variant cache key.",
- "type": "string"
- },
- "startSec": {
- "description": "Segment START in seconds, clip-relative. Segments tile the clip's duration in order.",
- "minimum": 0,
- "type": "number"
- },
- "zoom": {
- "description": "How TIGHT the framing is — the fraction of the source the output viewport shows. <1 punches IN (a smaller source fraction, magnified to fill the frame); 1 = the full frame (no crop). ~0.6–0.8 is a moderate push-in, ~0.5 a tight close-up, 0.1 the maximum zoom. There is NO zoom-OUT past the full frame (max 1). Omit for the full frame. MUTUALLY EXCLUSIVE with `focus.shotScale`: a face-tracked shot is sized EITHER by the editorial scale (shotScale, calibrated to the detected face) OR by an explicit zoom — never both.",
- "maximum": 1,
- "minimum": 0.1,
- "type": "number"
- }
- },
- "required": [
- "startSec",
- "endSec",
- "focus"
- ],
- "type": "object"
- },
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "segments"
- ],
- "type": "object"
- },
- "sync": {
- "enum": [
- "video",
- "independent"
- ],
- "type": "string"
- },
- "trim": {
- "additionalProperties": {},
- "properties": {
- "end": {
- "minimum": 0,
- "type": "number"
- },
- "start": {
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "start",
- "end"
- ],
- "type": "object"
- },
- "volume": {
- "maximum": 4,
- "minimum": 0,
- "type": "number"
- },
- "volumeDb": {
- "type": "number"
- }
- },
- "required": [
- "kind",
- "mediaId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "componentId": {
- "minLength": 1,
- "type": "string"
- },
- "execution": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "assets": {
- "additionalProperties": {
- "minLength": 1,
- "type": "string"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "mediaBindings": {
- "additionalProperties": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema0"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "seed": {
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 3,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId",
- "params",
- "seed"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "assets": {
- "additionalProperties": {
- "minLength": 1,
- "type": "string"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "mediaBindings": {
- "additionalProperties": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema0"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "seed": {
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 4,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId",
- "params",
- "seed"
- ],
- "type": "object"
- }
- ]
- },
- "kind": {
- "const": "component",
- "type": "string"
- },
- "placement": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "clip",
- "type": "string"
- },
- "version": {
- "const": 3,
- "type": "number"
- }
- },
- "required": [
- "version",
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "content-slots",
- "type": "string"
- },
- "slots": {
- "additionalProperties": {
- "additionalProperties": false,
- "properties": {
- "ownership": {
- "enum": [
- "reference",
- "exclusive"
- ],
- "type": "string"
- },
- "targetClipIds": {
- "items": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- }
- },
- "required": [
- "targetClipIds",
- "ownership"
- ],
- "type": "object"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "version": {
- "const": 3,
- "type": "number"
- }
- },
- "required": [
- "version",
- "kind",
- "slots"
- ],
- "type": "object"
- }
- ]
- },
- "props": {
- "additionalProperties": {},
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "retired": {
- "additionalProperties": {},
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "zPlane": {
- "enum": [
- "front",
- "behind-subject"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "componentId",
- "props"
- ],
- "type": "object"
- },
- {
- "additionalProperties": {},
- "properties": {
- "anchor": {
- "additionalProperties": {},
- "properties": {
- "space": {
- "const": "scene",
- "type": "string"
- },
- "x": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "y": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "space",
- "x",
- "y"
- ],
- "type": "object"
- },
- "kind": {
- "const": "overlay",
- "type": "string"
- },
- "parallax": {
- "maximum": 0.3,
- "minimum": -0.3,
- "type": "number"
- },
- "params": {
- "additionalProperties": {},
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "primitiveId": {
- "minLength": 1,
- "pattern": "^(?!custom$)",
- "type": "string"
- },
- "zPlane": {
- "enum": [
- "front",
- "behind-subject"
- ],
- "type": "string"
- }
- },
- "required": [
- "kind",
- "primitiveId",
- "params"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "component": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "assets": {
- "additionalProperties": {
- "minLength": 1,
- "type": "string"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "mediaBindings": {
- "additionalProperties": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema0"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "seed": {
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 3,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId",
- "params",
- "seed"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "assets": {
- "additionalProperties": {
- "minLength": 1,
- "type": "string"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "mediaBindings": {
- "additionalProperties": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema0"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "seed": {
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 4,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId",
- "params",
- "seed"
- ],
- "type": "object"
- }
- ]
- },
- "kind": {
- "const": "effect",
- "type": "string"
- },
- "params": {
- "additionalProperties": {},
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "primitiveId": {
- "minLength": 1,
- "type": "string"
- },
- "targetTrackIds": {
- "items": {
- "minLength": 1,
- "type": "string"
- },
- "minItems": 1,
- "type": "array"
- },
- "wrapperOrder": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": {},
- "properties": {
- "html": {
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "card",
- "type": "string"
- },
- "tokens": {
- "additionalProperties": {
- "type": "string"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "zPlane": {
- "const": "front",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "html"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "compositionId": {
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "composition",
- "type": "string"
- },
- "trim": {
- "additionalProperties": {},
- "properties": {
- "end": {
- "minimum": 0,
- "type": "number"
- },
- "start": {
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "start",
- "end"
- ],
- "type": "object"
- }
- },
- "required": [
- "kind",
- "compositionId"
- ],
- "type": "object"
- }
- ]
- },
- "startTime": {
- "minimum": 0,
- "type": "number"
- },
- "transitionIn": {
- "additionalProperties": {},
- "properties": {
- "component": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "assets": {
- "additionalProperties": {
- "minLength": 1,
- "type": "string"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "mediaBindings": {
- "additionalProperties": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema0"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "seed": {
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 3,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId",
- "params",
- "seed"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "assets": {
- "additionalProperties": {
- "minLength": 1,
- "type": "string"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "mediaBindings": {
- "additionalProperties": {
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "array"
- },
- "properties": {},
- "propertyNames": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema0"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "seed": {
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 4,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId",
- "params",
- "seed"
- ],
- "type": "object"
- }
- ]
- },
- "duration": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "fromClipId": {
- "minLength": 1,
- "type": "string"
- },
- "handlePolicy": {
- "const": "outgoing-overrun-at-cut-v1",
- "type": "string"
- },
- "id": {
- "minLength": 1,
- "type": "string"
- },
- "toClipId": {
- "minLength": 1,
- "type": "string"
- },
- "type": {
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "type",
- "duration"
- ],
- "type": "object"
- },
- "tweens": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "duration": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "id": {
- "minLength": 1,
- "type": "string"
- },
- "keyframes": {
- "additionalProperties": false,
- "properties": {
- "easeEach": {
- "const": "none",
- "type": "string"
- },
- "format": {
- "const": "percentage",
- "type": "string"
- },
- "keyframes": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "ease": {
- "type": "string"
- },
- "percentage": {
- "type": "number"
- },
- "properties": {
- "additionalProperties": {
- "type": "number"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- }
- },
- "required": [
- "percentage",
- "properties"
- ],
- "type": "object"
- },
- "minItems": 2,
- "type": "array"
- }
- },
- "required": [
- "format",
- "easeEach",
- "keyframes"
- ],
- "type": "object"
- },
- "position": {
- "type": "number"
- },
- "propertyGroup": {
- "enum": [
- "visual",
- "scale",
- "rotation",
- "position"
- ],
- "type": "string"
- }
- },
- "required": [
- "id",
- "propertyGroup",
- "position",
- "duration",
- "keyframes"
- ],
- "type": "object"
- },
- "type": "array"
- }
-}
removedInput schema / properties / body / properties / seededGraphics / items / required
Removed value: -[
- "id",
- "startTime",
- "duration",
- "source"
-]
removedInput schema / properties / body / properties / seededGraphics / items / type
Removed value: -"object"
addedInput schema / properties / commandId / $ref
Added value: +"#/$defs/__schema43"
removedInput schema / properties / commandId / maxLength
Removed value: -128
removedInput schema / properties / commandId / minLength
Removed value: -1
removedInput schema / properties / commandId / type
Removed value: -"string"