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 / const
Added value: +3
addedInput schema / $defs / __schema0 / type
Added value: +"number"
removedInput schema / $defs / __schema1 / anyOf
Removed value: -[
- {
- "additionalProperties": false,
- "properties": {
- "children": {
- "items": {
- "$ref": "#/$defs/__schema1"
- },
- "maxItems": 16,
- "minItems": 1,
- "type": "array"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "kind": {
- "const": "group",
- "type": "string"
- },
- "opacity": {
- "default": 1,
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "transform": {
- "additionalProperties": false,
- "default": {
- "position": [
- 0,
- 0,
- 0
- ],
- "rotation": [
- 0,
- 0,
- 0
- ],
- "scale": 1
- },
- "properties": {
- "position": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "rotation": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "scale": {
- "default": 1,
- "exclusiveMinimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- }
- },
- "required": [
- "kind",
- "id",
- "children"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "kind": {
- "const": "laptop",
- "type": "string"
- },
- "materials": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "anisotropy": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "anisotropyRotation": {
- "type": "number"
- },
- "clearcoat": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "clearcoatRoughness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "ior": {
- "maximum": 2.333,
- "minimum": 1,
- "type": "number"
- },
- "metalness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "reflectivity": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "role": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "roughness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "type": {
- "enum": [
- "physical",
- "unlit"
- ],
- "type": "string"
- }
- },
- "required": [
- "role",
- "type"
- ],
- "type": "object"
- },
- "maxItems": 16,
- "type": "array"
- },
- "opacity": {
- "default": 1,
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "openAngle": {
- "maximum": 3.141592653589793,
- "minimum": 0,
- "type": "number"
- },
- "surfaces": {
- "additionalProperties": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "assetSlot": {
- "description": "Image asset slot name bound by the clip assets map; never a URL.",
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z_][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "source": {
- "const": "image",
- "type": "string"
- }
- },
- "required": [
- "source",
- "assetSlot"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "source": {
- "const": "color",
- "type": "string"
- }
- },
- "required": [
- "source",
- "color"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "bakeScale": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- }
- ],
- "description": "Optional authored scale. Preparation defaults omission to 2 and may auto-raise it to 3."
- },
- "captureFrame": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- "component": {
- "additionalProperties": false,
- "properties": {
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 1,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId"
- ],
- "type": "object"
- },
- "layout": {
- "additionalProperties": false,
- "properties": {
- "height": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "width": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "width",
- "height"
- ],
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema2"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "source": {
- "const": "component",
- "type": "string"
- }
- },
- "required": [
- "source",
- "component",
- "captureFrame",
- "layout"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "endFrame": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "mediaId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "source": {
- "const": "video",
- "type": "string"
- },
- "startFrame": {
- "default": 0,
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "source",
- "mediaId"
- ],
- "type": "object"
- }
- ]
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "transform": {
- "additionalProperties": false,
- "default": {
- "position": [
- 0,
- 0,
- 0
- ],
- "rotation": [
- 0,
- 0,
- 0
- ],
- "scale": 1
- },
- "properties": {
- "position": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "rotation": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "scale": {
- "default": 1,
- "exclusiveMinimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- "width": {
- "maximum": 4000,
- "minimum": 200,
- "type": "number"
- }
- },
- "required": [
- "kind",
- "id",
- "width",
- "openAngle"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "kind": {
- "const": "phone",
- "type": "string"
- },
- "materials": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "anisotropy": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "anisotropyRotation": {
- "type": "number"
- },
- "clearcoat": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "clearcoatRoughness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "ior": {
- "maximum": 2.333,
- "minimum": 1,
- "type": "number"
- },
- "metalness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "reflectivity": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "role": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "roughness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "type": {
- "enum": [
- "physical",
- "unlit"
- ],
- "type": "string"
- }
- },
- "required": [
- "role",
- "type"
- ],
- "type": "object"
- },
- "maxItems": 16,
- "type": "array"
- },
- "opacity": {
- "default": 1,
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "surfaces": {
- "additionalProperties": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "assetSlot": {
- "description": "Image asset slot name bound by the clip assets map; never a URL.",
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z_][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "source": {
- "const": "image",
- "type": "string"
- }
- },
- "required": [
- "source",
- "assetSlot"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "source": {
- "const": "color",
- "type": "string"
- }
- },
- "required": [
- "source",
- "color"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "bakeScale": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- }
- ],
- "description": "Optional authored scale. Preparation defaults omission to 2 and may auto-raise it to 3."
- },
- "captureFrame": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- "component": {
- "additionalProperties": false,
- "properties": {
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 1,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId"
- ],
- "type": "object"
- },
- "layout": {
- "additionalProperties": false,
- "properties": {
- "height": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "width": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "width",
- "height"
- ],
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema2"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "source": {
- "const": "component",
- "type": "string"
- }
- },
- "required": [
- "source",
- "component",
- "captureFrame",
- "layout"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "endFrame": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "mediaId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "source": {
- "const": "video",
- "type": "string"
- },
- "startFrame": {
- "default": 0,
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "source",
- "mediaId"
- ],
- "type": "object"
- }
- ]
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "transform": {
- "additionalProperties": false,
- "default": {
- "position": [
- 0,
- 0,
- 0
- ],
- "rotation": [
- 0,
- 0,
- 0
- ],
- "scale": 1
- },
- "properties": {
- "position": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "rotation": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "scale": {
- "default": 1,
- "exclusiveMinimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- "width": {
- "maximum": 2000,
- "minimum": 80,
- "type": "number"
- }
- },
- "required": [
- "kind",
- "id",
- "width"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "cornerRadius": {
- "default": 32,
- "minimum": 0,
- "type": "number"
- },
- "edgeRadius": {
- "default": 15,
- "minimum": 0,
- "type": "number"
- },
- "finish": {
- "default": "satin",
- "enum": [
- "satin",
- "brushed"
- ],
- "type": "string"
- },
- "height": {
- "maximum": 8000,
- "minimum": 40,
- "type": "number"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "kind": {
- "const": "slab",
- "type": "string"
- },
- "materials": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "anisotropy": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "anisotropyRotation": {
- "type": "number"
- },
- "clearcoat": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "clearcoatRoughness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "ior": {
- "maximum": 2.333,
- "minimum": 1,
- "type": "number"
- },
- "metalness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "reflectivity": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "role": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "roughness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "type": {
- "enum": [
- "physical",
- "unlit"
- ],
- "type": "string"
- }
- },
- "required": [
- "role",
- "type"
- ],
- "type": "object"
- },
- "maxItems": 16,
- "type": "array"
- },
- "opacity": {
- "default": 1,
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "surfaces": {
- "additionalProperties": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "assetSlot": {
- "description": "Image asset slot name bound by the clip assets map; never a URL.",
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z_][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "source": {
- "const": "image",
- "type": "string"
- }
- },
- "required": [
- "source",
- "assetSlot"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "source": {
- "const": "color",
- "type": "string"
- }
- },
- "required": [
- "source",
- "color"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "bakeScale": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- }
- ],
- "description": "Optional authored scale. Preparation defaults omission to 2 and may auto-raise it to 3."
- },
- "captureFrame": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- "component": {
- "additionalProperties": false,
- "properties": {
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 1,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId"
- ],
- "type": "object"
- },
- "layout": {
- "additionalProperties": false,
- "properties": {
- "height": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "width": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "width",
- "height"
- ],
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema2"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "source": {
- "const": "component",
- "type": "string"
- }
- },
- "required": [
- "source",
- "component",
- "captureFrame",
- "layout"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "endFrame": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "mediaId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "source": {
- "const": "video",
- "type": "string"
- },
- "startFrame": {
- "default": 0,
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "source",
- "mediaId"
- ],
- "type": "object"
- }
- ]
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "thickness": {
- "default": 32,
- "maximum": 200,
- "minimum": 4,
- "type": "number"
- },
- "transform": {
- "additionalProperties": false,
- "default": {
- "position": [
- 0,
- 0,
- 0
- ],
- "rotation": [
- 0,
- 0,
- 0
- ],
- "scale": 1
- },
- "properties": {
- "position": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "rotation": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "scale": {
- "default": 1,
- "exclusiveMinimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- "width": {
- "maximum": 8000,
- "minimum": 40,
- "type": "number"
- }
- },
- "required": [
- "kind",
- "id",
- "width",
- "height"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "backface": {
- "default": "hidden",
- "enum": [
- "hidden",
- "visible"
- ],
- "type": "string"
- },
- "depthWrite": {
- "default": true,
- "type": "boolean"
- },
- "fit": {
- "default": "contain",
- "enum": [
- "contain",
- "cover"
- ],
- "type": "string"
- },
- "height": {
- "maximum": 8000,
- "minimum": 40,
- "type": "number"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "kind": {
- "const": "page",
- "type": "string"
- },
- "materials": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "anisotropy": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "anisotropyRotation": {
- "type": "number"
- },
- "clearcoat": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "clearcoatRoughness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "ior": {
- "maximum": 2.333,
- "minimum": 1,
- "type": "number"
- },
- "metalness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "reflectivity": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "role": {
- "maxLength": 64,
- "minLength": 1,
- "type": "string"
- },
- "roughness": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "type": {
- "enum": [
- "physical",
- "unlit"
- ],
- "type": "string"
- }
- },
- "required": [
- "role",
- "type"
- ],
- "type": "object"
- },
- "maxItems": 16,
- "type": "array"
- },
- "opacity": {
- "default": 1,
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "surfaces": {
- "additionalProperties": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "assetSlot": {
- "description": "Image asset slot name bound by the clip assets map; never a URL.",
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z_][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "source": {
- "const": "image",
- "type": "string"
- }
- },
- "required": [
- "source",
- "assetSlot"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "source": {
- "const": "color",
- "type": "string"
- }
- },
- "required": [
- "source",
- "color"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "bakeScale": {
- "anyOf": [
- {
- "const": 2,
- "type": "number"
- },
- {
- "const": 3,
- "type": "number"
- }
- ],
- "description": "Optional authored scale. Preparation defaults omission to 2 and may auto-raise it to 3."
- },
- "captureFrame": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- "component": {
- "additionalProperties": false,
- "properties": {
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "version": {
- "const": 1,
- "type": "number"
- }
- },
- "required": [
- "version",
- "componentId",
- "sourceVersionId"
- ],
- "type": "object"
- },
- "layout": {
- "additionalProperties": false,
- "properties": {
- "height": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "width": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- }
- },
- "required": [
- "width",
- "height"
- ],
- "type": "object"
- },
- "params": {
- "additionalProperties": {
- "$ref": "#/$defs/__schema2"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "source": {
- "const": "component",
- "type": "string"
- }
- },
- "required": [
- "source",
- "component",
- "captureFrame",
- "layout"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "endFrame": {
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "mediaId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "source": {
- "const": "video",
- "type": "string"
- },
- "startFrame": {
- "default": 0,
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "source",
- "mediaId"
- ],
- "type": "object"
- }
- ]
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "transform": {
- "additionalProperties": false,
- "default": {
- "position": [
- 0,
- 0,
- 0
- ],
- "rotation": [
- 0,
- 0,
- 0
- ],
- "scale": 1
- },
- "properties": {
- "position": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "rotation": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "scale": {
- "default": 1,
- "exclusiveMinimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- "transparency": {
- "default": "straight",
- "enum": [
- "straight",
- "premultiplied",
- "opaque"
- ],
- "type": "string"
- },
- "width": {
- "maximum": 8000,
- "minimum": 40,
- "type": "number"
- }
- },
- "required": [
- "kind",
- "id",
- "width",
- "height",
- "surfaces"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "align": {
- "default": "center",
- "enum": [
- "left",
- "center",
- "right"
- ],
- "type": "string"
- },
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "fontFamily": {
- "anyOf": [
- {
- "maxLength": 128,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.\\-]*$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:fonts.heading",
- "$brand:fonts.body",
- "$brand:fonts.caption"
- ],
- "type": "string"
- }
- ]
- },
- "fontSize": {
- "maximum": 800,
- "minimum": 8,
- "type": "number"
- },
- "fontStyle": {
- "enum": [
- "normal",
- "italic"
- ],
- "type": "string"
- },
- "fontWeight": {
- "maximum": 900,
- "minimum": 100,
- "type": "integer"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "kind": {
- "const": "text",
- "type": "string"
- },
- "letterSpacing": {
- "default": 0,
- "maximum": 40,
- "minimum": -20,
- "type": "number"
- },
- "lineHeight": {
- "default": 1.2,
- "maximum": 3,
- "minimum": 0.6,
- "type": "number"
- },
- "lines": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "runs": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "emphasis": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 512,
- "minLength": 1,
- "pattern": "^[^\\r\\n]+$",
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- },
- "maxItems": 16,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "runs"
- ],
- "type": "object"
- },
- "maxItems": 24,
- "minItems": 1,
- "type": "array"
- },
- "maxWidth": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "opacity": {
- "default": 1,
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "space": {
- "const": "world",
- "type": "string"
- },
- "transform": {
- "additionalProperties": false,
- "default": {
- "position": [
- 0,
- 0,
- 0
- ],
- "rotation": [
- 0,
- 0,
- 0
- ],
- "scale": 1
- },
- "properties": {
- "position": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "rotation": {
- "default": [
- 0,
- 0,
- 0
- ],
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "scale": {
- "default": 1,
- "exclusiveMinimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- }
- },
- "required": [
- "id",
- "kind",
- "lines",
- "fontFamily",
- "fontWeight",
- "fontStyle",
- "fontSize",
- "color",
- "space"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "align": {
- "default": "center",
- "enum": [
- "left",
- "center",
- "right"
- ],
- "type": "string"
- },
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "fontFamily": {
- "anyOf": [
- {
- "maxLength": 128,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.\\-]*$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:fonts.heading",
- "$brand:fonts.body",
- "$brand:fonts.caption"
- ],
- "type": "string"
- }
- ]
- },
- "fontSize": {
- "maximum": 800,
- "minimum": 8,
- "type": "number"
- },
- "fontStyle": {
- "enum": [
- "normal",
- "italic"
- ],
- "type": "string"
- },
- "fontWeight": {
- "maximum": 900,
- "minimum": 100,
- "type": "integer"
- },
- "id": {
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "kind": {
- "const": "text",
- "type": "string"
- },
- "letterSpacing": {
- "default": 0,
- "maximum": 40,
- "minimum": -20,
- "type": "number"
- },
- "lineHeight": {
- "default": 1.2,
- "maximum": 3,
- "minimum": 0.6,
- "type": "number"
- },
- "lines": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "runs": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "emphasis": {
- "type": "boolean"
- },
- "text": {
- "maxLength": 512,
- "minLength": 1,
- "pattern": "^[^\\r\\n]+$",
- "type": "string"
- }
- },
- "required": [
- "text"
- ],
- "type": "object"
- },
- "maxItems": 16,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "runs"
- ],
- "type": "object"
- },
- "maxItems": 24,
- "minItems": 1,
- "type": "array"
- },
- "maxWidth": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "opacity": {
- "default": 1,
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "rotation": {
- "default": 0,
- "type": "number"
- },
- "scale": {
- "default": 1,
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "space": {
- "const": "screen",
- "type": "string"
- },
- "x": {
- "type": "number"
- },
- "y": {
- "type": "number"
- }
- },
- "required": [
- "id",
- "kind",
- "lines",
- "fontFamily",
- "fontWeight",
- "fontStyle",
- "fontSize",
- "color",
- "space",
- "x",
- "y"
- ],
- "type": "object"
- }
-]
addedInput schema / $defs / __schema1 / const
Added value: +3
addedInput schema / $defs / __schema1 / type
Added value: +"number"
addedInput schema / $defs / __schema10
Added value: +{
+ "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"
+ }
+ ]
+}
addedInput schema / $defs / __schema100
Added value: +{
+ "additionalProperties": false,
+ "description": "Merge style overrides (font/color/position/emphasis) onto the composition's caption layer. Partial — omitted fields keep their current value; creates the caption container if absent.",
+ "properties": {
+ "style": {
+ "$ref": "#/$defs/__schema102"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema101"
+ }
+ },
+ "required": [
+ "type",
+ "style"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema101
Added value: +{
+ "const": "setCaptionStyle",
+ "type": "string"
+}
addedInput schema / $defs / __schema102
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "annotationColor": {
+ "type": "string"
+ },
+ "annotationStrokeWidth": {
+ "description": "Annotation stroke width in its 100×100 SVG coordinate system; default 4.",
+ "maximum": 12,
+ "minimum": 0.5,
+ "type": "number"
+ },
+ "annotationTexture": {
+ "description": "Native annotation stroke finish; default clean.",
+ "enum": [
+ "clean",
+ "pencil"
+ ],
+ "type": "string"
+ },
+ "backgroundColor": {
+ "type": "string"
+ },
+ "color": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "emphasisColor": {
+ "type": "string"
+ },
+ "emphasisFontFamily": {
+ "type": "string"
+ },
+ "emphasisFontStyle": {
+ "enum": [
+ "normal",
+ "italic"
+ ],
+ "type": "string"
+ },
+ "emphasisFontWeight": {
+ "maximum": 900,
+ "minimum": 100,
+ "type": "integer"
+ },
+ "emphasisGradient": {
+ "type": "string"
+ },
+ "emphasisLetterSpacing": {
+ "type": "number"
+ },
+ "emphasisPlate": {
+ "type": "boolean"
+ },
+ "emphasisPlateAltColor": {
+ "type": "string"
+ },
+ "emphasisPlateAltTextColor": {
+ "type": "string"
+ },
+ "emphasisPlateColor": {
+ "type": "string"
+ },
+ "emphasisPlatePadX": {
+ "type": "number"
+ },
+ "emphasisPlatePadY": {
+ "type": "number"
+ },
+ "emphasisPlateRadius": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "emphasisPlateReveal": {
+ "description": "Grow a shared emphasis plate as saved words appear while reserving its final layout width.",
+ "type": "boolean"
+ },
+ "emphasisPlateTextColor": {
+ "type": "string"
+ },
+ "emphasisScale": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "emphasisTextTransform": {
+ "enum": [
+ "none",
+ "uppercase",
+ "capitalize"
+ ],
+ "type": "string"
+ },
+ "entrance": {
+ "enum": [
+ "none",
+ "fade",
+ "word-pop",
+ "stagger-up"
+ ],
+ "type": "string"
+ },
+ "entranceMs": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "entranceStaggerMs": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "exitMs": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "fontFamily": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "fontSize": {
+ "description": "Font size as % of composition height (1-15, default 5). NOT px.",
+ "maximum": 15,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "maximum": 900,
+ "minimum": 100,
+ "type": "integer"
+ },
+ "highlightColor": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "letterSpacing": {
+ "description": "Base caption glyph spacing in pixels.",
+ "maximum": 20,
+ "minimum": -5,
+ "type": "number"
+ },
+ "lineGapEm": {
+ "description": "Gap between caption lines as a multiple of base font size; default 0.25.",
+ "maximum": 2,
+ "minimum": 0,
+ "type": "number"
+ },
+ "maxWidthPercent": {
+ "exclusiveMinimum": 0,
+ "maximum": 100,
+ "type": "number"
+ },
+ "plate": {
+ "enum": [
+ "glass",
+ "solid",
+ "none"
+ ],
+ "type": "string"
+ },
+ "position": {
+ "enum": [
+ "top",
+ "center",
+ "bottom"
+ ],
+ "type": "string"
+ },
+ "region": {
+ "additionalProperties": {
+ "$ref": "#/$defs/__schema107"
+ },
+ "description": "Optional caption layout box {x,y,w,h} in normalized output-frame coordinates. Overrides position; text starts at its top edge and wraps/pages within its width and height.",
+ "properties": {
+ "h": {
+ "$ref": "#/$defs/__schema106"
+ },
+ "w": {
+ "$ref": "#/$defs/__schema105"
+ },
+ "x": {
+ "$ref": "#/$defs/__schema103"
+ },
+ "y": {
+ "$ref": "#/$defs/__schema104"
+ }
+ },
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h"
+ ],
+ "type": "object"
+ },
+ "textTransform": {
+ "enum": [
+ "none",
+ "uppercase",
+ "capitalize"
+ ],
+ "type": "string"
+ },
+ "wordGapEm": {
+ "description": "Gap between caption runs as a multiple of base font size; default 0.35.",
+ "maximum": 2,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+}
addedInput schema / $defs / __schema103
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema104
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema105
Added value: +{
+ "exclusiveMinimum": 0,
+ "maximum": 1,
+ "type": "number"
+}
addedInput schema / $defs / __schema106
Added value: +{
+ "exclusiveMinimum": 0,
+ "maximum": 1,
+ "type": "number"
+}
addedInput schema / $defs / __schema107
Added value: +{}
addedInput schema / $defs / __schema108
Added value: +{
+ "additionalProperties": false,
+ "description": "Set the caption compositing plane. Use `behind-subject` to place captions behind the segmented foreground subject; use `front` for conventional captions above all video layers.",
+ "properties": {
+ "type": {
+ "$ref": "#/$defs/__schema109"
+ },
+ "zPlane": {
+ "$ref": "#/$defs/__schema110"
+ }
+ },
+ "required": [
+ "type",
+ "zPlane"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema109
Added value: +{
+ "const": "setCaptionDepth",
+ "type": "string"
+}
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 / __schema110
Added value: +{
+ "enum": [
+ "front",
+ "behind-subject"
+ ],
+ "type": "string"
+}
addedInput schema / $defs / __schema111
Added value: +{
+ "additionalProperties": false,
+ "description": "Replace the caption SEGMENTS wholesale — author the word-timed caption layer directly (each segment = one sentence/page of `words` with timeline-ms `startMs`/`endMs`, optional `emphasis`). This is how a client with its OWN word timings (e.g. a generated VO take) gets word-synced captions without a source transcript; the compose lane's transcript slice writes the same layer. `style`, when given, merges with setCaptionStyle semantics; an omitted style keeps the existing one. Renderer paginates within a segment and never pools words across two — keep segments sentence-bounded.",
+ "properties": {
+ "segments": {
+ "$ref": "#/$defs/__schema113"
+ },
+ "style": {
+ "$ref": "#/$defs/__schema114"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema112"
+ }
+ },
+ "required": [
+ "type",
+ "segments"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema112
Added value: +{
+ "const": "setCaptions",
+ "type": "string"
+}
addedInput schema / $defs / __schema113
Added value: +{
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "words": {
+ "items": {
+ "additionalProperties": {},
+ "properties": {
+ "annotate": {
+ "enum": [
+ "circle",
+ "underline"
+ ],
+ "type": "string"
+ },
+ "emphasis": {
+ "type": "boolean"
+ },
+ "endMs": {
+ "description": "Word end on the composition timeline, in milliseconds.",
+ "minimum": 0,
+ "type": "number"
+ },
+ "startMs": {
+ "description": "Word start on the composition timeline, in milliseconds.",
+ "minimum": 0,
+ "type": "number"
+ },
+ "text": {
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "text",
+ "startMs",
+ "endMs"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "words"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / $defs / __schema114
Added value: +{
+ "$ref": "#/$defs/__schema102"
+}
addedInput schema / $defs / __schema115
Added value: +{
+ "additionalProperties": false,
+ "description": "Replace native caption placements without changing transcript words or timings. Each layout references a half-open word-index range in one saved segment; a one-word range is valid. region places that group independently, optional bounded scale/rotation/style changes its look, and holdThroughWordIndex keeps it visible through a later saved word in the same segment. All words in a placed range occupy one page; rendering refuses a range that cannot fit its box, so enlarge region or split the range. The box reserves horizontal space of 1.6 font sizes and vertical space of 0.8 font sizes for padding, with at most three lines. Unreferenced words keep the default caption layout. Word ranges must not overlap. Reapply after caption regeneration or timeline cuts.",
+ "properties": {
+ "layouts": {
+ "$ref": "#/$defs/__schema117"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema116"
+ }
+ },
+ "required": [
+ "type",
+ "layouts"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema116
Added value: +{
+ "const": "setCaptionLayouts",
+ "type": "string"
+}
addedInput schema / $defs / __schema117
Added value: +{
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "holdThroughWordIndex": {
+ "description": "Inclusive saved-word index in this segment. The layout stays visible until that word ends.",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "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": {
+ "maximum": 45,
+ "minimum": -45,
+ "type": "number"
+ },
+ "scale": {
+ "maximum": 4,
+ "minimum": 0.25,
+ "type": "number"
+ },
+ "segmentIndex": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "style": {
+ "additionalProperties": false,
+ "properties": {
+ "annotationColor": {
+ "type": "string"
+ },
+ "annotationStrokeWidth": {
+ "description": "Annotation stroke width in its 100×100 SVG coordinate system; default 4.",
+ "maximum": 12,
+ "minimum": 0.5,
+ "type": "number"
+ },
+ "annotationTexture": {
+ "description": "Native annotation stroke finish; default clean.",
+ "enum": [
+ "clean",
+ "pencil"
+ ],
+ "type": "string"
+ },
+ "backgroundColor": {
+ "type": "string"
+ },
+ "color": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "emphasisColor": {
+ "type": "string"
+ },
+ "emphasisFontFamily": {
+ "type": "string"
+ },
+ "emphasisFontStyle": {
+ "enum": [
+ "normal",
+ "italic"
+ ],
+ "type": "string"
+ },
+ "emphasisFontWeight": {
+ "maximum": 900,
+ "minimum": 100,
+ "type": "integer"
+ },
+ "emphasisLetterSpacing": {
+ "type": "number"
+ },
+ "emphasisPlate": {
+ "type": "boolean"
+ },
+ "emphasisPlateAltColor": {
+ "type": "string"
+ },
+ "emphasisPlateAltTextColor": {
+ "type": "string"
+ },
+ "emphasisPlateColor": {
+ "type": "string"
+ },
+ "emphasisPlatePadX": {
+ "type": "number"
+ },
+ "emphasisPlatePadY": {
+ "type": "number"
+ },
+ "emphasisPlateRadius": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "emphasisPlateReveal": {
+ "description": "Grow a shared emphasis plate as saved words appear while reserving its final layout width.",
+ "type": "boolean"
+ },
+ "emphasisPlateTextColor": {
+ "type": "string"
+ },
+ "emphasisScale": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "emphasisTextTransform": {
+ "enum": [
+ "none",
+ "uppercase",
+ "capitalize"
+ ],
+ "type": "string"
+ },
+ "entrance": {
+ "enum": [
+ "none",
+ "fade",
+ "word-pop",
+ "stagger-up"
+ ],
+ "type": "string"
+ },
+ "entranceMs": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "entranceStaggerMs": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "exitMs": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "fontFamily": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "fontSize": {
+ "description": "Font size as % of composition height (1-15, default 5). NOT px.",
+ "maximum": 15,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "maximum": 900,
+ "minimum": 100,
+ "type": "integer"
+ },
+ "highlightColor": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "letterSpacing": {
+ "description": "Base caption glyph spacing in pixels.",
+ "maximum": 20,
+ "minimum": -5,
+ "type": "number"
+ },
+ "lineGapEm": {
+ "description": "Gap between caption lines as a multiple of base font size; default 0.25.",
+ "maximum": 2,
+ "minimum": 0,
+ "type": "number"
+ },
+ "plate": {
+ "enum": [
+ "glass",
+ "solid",
+ "none"
+ ],
+ "type": "string"
+ },
+ "textTransform": {
+ "enum": [
+ "none",
+ "uppercase",
+ "capitalize"
+ ],
+ "type": "string"
+ },
+ "wordGapEm": {
+ "description": "Gap between caption runs as a multiple of base font size; default 0.35.",
+ "maximum": 2,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "wordEndIndex": {
+ "description": "Exclusive word index in the saved caption segment.",
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "wordMarks": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "annotate": {
+ "anyOf": [
+ {
+ "enum": [
+ "circle",
+ "underline"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "emphasis": {
+ "type": "boolean"
+ },
+ "wordIndex": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "wordIndex"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "wordStartIndex": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "segmentIndex",
+ "wordStartIndex",
+ "wordEndIndex",
+ "region"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / $defs / __schema118
Added value: +{
+ "additionalProperties": false,
+ "description": "Author a scene shot and place it on a dedicated overlay track. The host validates the scene, generates and registers an immutable wrapper component source, and emits the ordinary track/clip operations carrying `props.componentRef` — you edit a scene SPEC, never wrapper TSX or a source hash. Registration and the composition update are ONE undoable edit; a failure publishes nothing and leaves no clip pointing at an unresolved source. REQUIRED: `clipId`, `startTime`, `duration`, `scene` and `assets` (send `{}` when no layer references a slot), plus EXACTLY ONE of `trackId` (an existing dedicated scene track) or `newTrack: true` (mint one). A minted scene track is appended at the BACK like every new track, so it paints under existing tracks; raise it with `reorderTracks` (index 0 is the top layer). That track holds scene-shot clips and gaps only — no generic component/primitive/media clips in v1 — and existing generic overlay tracks are unaffected. Scene clips use front zPlane and full-frame placement: outer per-clip `region`, `position`, `scale`, `rotation`, `fit`, `effects`, keyframes (`tweens`/`automation`), `params.transition`, `params.sequenceGroup` and internal fadeIn/fadeOut are REFUSED with a path, because the shot's own layer transforms are the single transform owner. TEXT: `space: \"screen\"` text is composed above the world result, stays fixed in the frame and stays sharp through focus; `space: \"world\"` text is rasterized into the 3D scene, moves with the camera and is occluded by geometry. Screenshots and world text are UNLIT and colour-managed so product UI colours are not tinted by the studio lighting, while device bodies are lit and cast shadows; an unlit surface still occludes. SCOPE GAP (pre-existing, neither closed nor changed by scene shots): global wrap effects — composition-level grades and camera effects — do not reach front-overlay clips, so they do not affect a scene shot. Author the look INSIDE the shot (`post.grain`, `post.vignette`, `post.focus`, `backdrop`, `environment`) instead. DISCOVERY: there is no built-in scene primitive to look up in list_catalog; the wrapper this operation registers appears afterwards as an ordinary INSTALLED component under the existing catalog rules. ASSETS: `assets` binds each slot name a layer references to a media id in the same project, and the slot's declared KIND decides what it admits — an image slot takes PNG, JPEG or WebP, a video slot MP4 or WebM. Binding the wrong kind is refused with the slot's path.",
+ "properties": {
+ "assets": {
+ "$ref": "#/$defs/__schema197"
+ },
+ "clipId": {
+ "$ref": "#/$defs/__schema120"
+ },
+ "duration": {
+ "$ref": "#/$defs/__schema125"
+ },
+ "newTrack": {
+ "$ref": "#/$defs/__schema122"
+ },
+ "newTrackId": {
+ "$ref": "#/$defs/__schema123"
+ },
+ "scene": {
+ "$ref": "#/$defs/__schema127"
+ },
+ "startTime": {
+ "$ref": "#/$defs/__schema124"
+ },
+ "trackId": {
+ "$ref": "#/$defs/__schema121"
+ },
+ "transitionIn": {
+ "$ref": "#/$defs/__schema126"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema119"
+ }
+ },
+ "required": [
+ "type",
+ "clipId",
+ "startTime",
+ "duration",
+ "scene",
+ "assets"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema119
Added value: +{
+ "const": "scene.add",
+ "type": "string"
+}
addedInput schema / $defs / __schema12
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "mode": {
+ "const": "frame-center",
+ "type": "string"
+ }
+ },
+ "required": [
+ "mode"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema120
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema121
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema122
Added value: +{
+ "type": "boolean"
+}
addedInput schema / $defs / __schema123
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema124
Added value: +{
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema125
Added value: +{
+ "exclusiveMinimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema126
Added value: +{
+ "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"
+}
addedInput schema / $defs / __schema127
Added value: +{
+ "additionalProperties": false,
+ "description": "A version-2 scene shot: a self-contained 3D world-object shot that scene.add / scene.update materializes into an ordinary component clip. The shot owns its layers, camera, lighting, backdrop and normalized local animation; the composition owns start, duration, ordering, cuts and transitions. Coordinates are REFERENCE PIXELS: origin at frame centre, +X right, +Y down, +Z toward the viewer. referenceSize must have the SAME aspect ratio as the composition format; mismatch fails instead of cropping. At equal aspect ratio the shot scales uniformly by outputWidth/referenceWidth. A segment's easing belongs to the keyframe it ARRIVES at; the first keyframe has no easing. Authoring limits: 32 layers, 4 devices, 16 distinct image slots, 256 keyframes per channel, 2048 keyframes per shot. Version 2 supports nested groups, procedural slab/page/phone/laptop objects, screen- and world-space text, admitted image/component/video surfaces, fixed photographic and generated studio environments, transparent/solid/linear/radial backdrops, constraints, focus, grain and vignette. Raw HTML, custom shader props, imported GLB models, arbitrary external HDR environments, skeletal animation and physics are refused with an exact field path.",
+ "properties": {
+ "animation": {
+ "$ref": "#/$defs/__schema192"
+ },
+ "backdrop": {
+ "$ref": "#/$defs/__schema138"
+ },
+ "camera": {
+ "$ref": "#/$defs/__schema130"
+ },
+ "constraints": {
+ "$ref": "#/$defs/__schema195"
+ },
+ "environment": {
+ "$ref": "#/$defs/__schema137"
+ },
+ "layers": {
+ "$ref": "#/$defs/__schema143"
+ },
+ "post": {
+ "$ref": "#/$defs/__schema194"
+ },
+ "referenceSize": {
+ "$ref": "#/$defs/__schema129"
+ },
+ "version": {
+ "$ref": "#/$defs/__schema128"
+ }
+ },
+ "required": [
+ "version",
+ "referenceSize",
+ "layers"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema128
Added value: +{
+ "const": 2,
+ "type": "number"
+}
addedInput schema / $defs / __schema129
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "height": {
+ "maximum": 8192,
+ "minimum": 16,
+ "type": "integer"
+ },
+ "width": {
+ "maximum": 8192,
+ "minimum": 16,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "width",
+ "height"
+ ],
+ "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 / __schema130
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "fov": {
+ "maximum": 1.3962634015954636,
+ "minimum": 0.3141592653589793,
+ "type": "number"
+ },
+ "position": {
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema131"
+ },
+ {
+ "$ref": "#/$defs/__schema132"
+ },
+ {
+ "$ref": "#/$defs/__schema133"
+ }
+ ],
+ "type": "array"
+ },
+ "rotation": {
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema134"
+ },
+ {
+ "$ref": "#/$defs/__schema135"
+ },
+ {
+ "$ref": "#/$defs/__schema136"
+ }
+ ],
+ "type": "array"
+ }
+ },
+ "type": "object"
+}
addedInput schema / $defs / __schema131
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema132
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema133
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema134
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema135
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema136
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema137
Added value: +{
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "floorY": {
+ "default": -420,
+ "type": "number"
+ },
+ "intensity": {
+ "default": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "kind": {
+ "const": "studio",
+ "type": "string"
+ },
+ "lightingProfile": {
+ "default": "studio",
+ "enum": [
+ "studio",
+ "studio-edge"
+ ],
+ "type": "string"
+ },
+ "preset": {
+ "default": "soft",
+ "enum": [
+ "soft",
+ "key",
+ "rim"
+ ],
+ "type": "string"
+ },
+ "shadowOpacity": {
+ "default": 0.5,
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "photographic-studio-v1",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ }
+ ],
+ "default": {
+ "floorY": -420,
+ "intensity": 1,
+ "lightingProfile": "studio",
+ "preset": "soft",
+ "shadowOpacity": 0.5
+ }
+}
addedInput schema / $defs / __schema138
Added value: +{
+ "default": {
+ "kind": "transparent"
+ },
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "transparent",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "color": {
+ "anyOf": [
+ {
+ "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
+ "type": "string"
+ },
+ {
+ "enum": [
+ "$brand:colors.background",
+ "$brand:colors.surface",
+ "$brand:colors.text",
+ "$brand:colors.textMuted",
+ "$brand:colors.accent",
+ "$brand:colors.accentStrong",
+ "$brand:colors.accentSoft",
+ "$brand:colors.success",
+ "$brand:colors.warning",
+ "$brand:colors.danger"
+ ],
+ "type": "string"
+ }
+ ]
+ },
+ "kind": {
+ "const": "solid",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "color"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "angle": {
+ "default": 0,
+ "type": "number"
+ },
+ "kind": {
+ "const": "linear",
+ "type": "string"
+ },
+ "stops": {
+ "items": {
+ "$ref": "#/$defs/__schema139"
+ },
+ "maxItems": 8,
+ "minItems": 2,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stops"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "at": {
+ "default": [
+ 0.5,
+ 0.5
+ ],
+ "items": false,
+ "maxItems": 2,
+ "minItems": 2,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema140"
+ },
+ {
+ "$ref": "#/$defs/__schema141"
+ }
+ ],
+ "type": "array"
+ },
+ "kind": {
+ "const": "radial",
+ "type": "string"
+ },
+ "stops": {
+ "items": {
+ "$ref": "#/$defs/__schema142"
+ },
+ "maxItems": 8,
+ "minItems": 2,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "stops"
+ ],
+ "type": "object"
+ }
+ ]
+}
addedInput schema / $defs / __schema139
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "at": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "color": {
+ "anyOf": [
+ {
+ "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
+ "type": "string"
+ },
+ {
+ "enum": [
+ "$brand:colors.background",
+ "$brand:colors.surface",
+ "$brand:colors.text",
+ "$brand:colors.textMuted",
+ "$brand:colors.accent",
+ "$brand:colors.accentStrong",
+ "$brand:colors.accentSoft",
+ "$brand:colors.success",
+ "$brand:colors.warning",
+ "$brand:colors.danger"
+ ],
+ "type": "string"
+ }
+ ]
+ }
+ },
+ "required": [
+ "at",
+ "color"
+ ],
+ "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 / __schema140
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema141
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema142
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "at": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "color": {
+ "anyOf": [
+ {
+ "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
+ "type": "string"
+ },
+ {
+ "enum": [
+ "$brand:colors.background",
+ "$brand:colors.surface",
+ "$brand:colors.text",
+ "$brand:colors.textMuted",
+ "$brand:colors.accent",
+ "$brand:colors.accentStrong",
+ "$brand:colors.accentSoft",
+ "$brand:colors.success",
+ "$brand:colors.warning",
+ "$brand:colors.danger"
+ ],
+ "type": "string"
+ }
+ ]
+ }
+ },
+ "required": [
+ "at",
+ "color"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema143
Added value: +{
+ "items": {
+ "$ref": "#/$defs/__schema144"
+ },
+ "minItems": 1,
+ "type": "array"
+}
addedInput schema / $defs / __schema144
Added value: +{
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "children": {
+ "items": {
+ "$ref": "#/$defs/__schema151"
+ },
+ "maxItems": 16,
+ "minItems": 1,
+ "type": "array"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
+ "type": "string"
+ },
+ "kind": {
+ "const": "group",
+ "type": "string"
+ },
+ "opacity": {
+ "default": 1,
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "transform": {
+ "additionalProperties": false,
+ "default": {
+ "position": [
+ 0,
+ 0,
+ 0
+ ],
+ "rotation": [
+ 0,
+ 0,
+ 0
+ ],
+ "scale": 1
+ },
+ "properties": {
+ "position": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema145"
+ },
+ {
+ "$ref": "#/$defs/__schema146"
+ },
+ {
+ "$ref": "#/$defs/__schema147"
+ }
+ ],
+ "type": "array"
+ },
+ "rotation": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema148"
+ },
+ {
+ "$ref": "#/$defs/__schema149"
+ },
+ {
+ "$ref": "#/$defs/__schema150"
+ }
+ ],
+ "type": "array"
+ },
+ "scale": {
+ "default": 1,
+ "exclusiveMinimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "kind",
+ "id",
+ "children"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
+ "type": "string"
+ },
+ "kind": {
+ "const": "laptop",
+ "type": "string"
+ },
+ "materials": {
+ "$ref": "#/$defs/__schema158"
+ },
+ "opacity": {
+ "default": 1,
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "openAngle": {
+ "maximum": 3.141592653589793,
+ "minimum": 0,
+ "type": "number"
+ },
+ "surfaces": {
+ "$ref": "#/$defs/__schema160"
+ },
+ "transform": {
+ "additionalProperties": false,
+ "default": {
+ "position": [
+ 0,
+ 0,
+ 0
+ ],
+ "rotation": [
+ 0,
+ 0,
+ 0
+ ],
+ "scale": 1
+ },
+ "properties": {
+ "position": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema152"
+ },
+ {
+ "$ref": "#/$defs/__schema153"
+ },
+ {
+ "$ref": "#/$defs/__schema154"
+ }
+ ],
+ "type": "array"
+ },
+ "rotation": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema155"
+ },
+ {
+ "$ref": "#/$defs/__schema156"
+ },
+ {
+ "$ref": "#/$defs/__schema157"
+ }
+ ],
+ "type": "array"
+ },
+ "scale": {
+ "default": 1,
+ "exclusiveMinimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "width": {
+ "maximum": 4000,
+ "minimum": 200,
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "id",
+ "width",
+ "openAngle"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
+ "type": "string"
+ },
+ "kind": {
+ "const": "phone",
+ "type": "string"
+ },
+ "materials": {
+ "$ref": "#/$defs/__schema158"
+ },
+ "opacity": {
+ "default": 1,
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "surfaces": {
+ "$ref": "#/$defs/__schema160"
+ },
+ "transform": {
+ "additionalProperties": false,
+ "default": {
+ "position": [
+ 0,
+ 0,
+ 0
+ ],
+ "rotation": [
+ 0,
+ 0,
+ 0
+ ],
+ "scale": 1
+ },
+ "properties": {
+ "position": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema164"
+ },
+ {
+ "$ref": "#/$defs/__schema165"
+ },
+ {
+ "$ref": "#/$defs/__schema166"
+ }
+ ],
+ "type": "array"
+ },
+ "rotation": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema167"
+ },
+ {
+ "$ref": "#/$defs/__schema168"
+ },
+ {
+ "$ref": "#/$defs/__schema169"
+ }
+ ],
+ "type": "array"
+ },
+ "scale": {
+ "default": 1,
+ "exclusiveMinimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "width": {
+ "maximum": 2000,
+ "minimum": 80,
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "id",
+ "width"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "cornerRadius": {
+ "default": 32,
+ "minimum": 0,
+ "type": "number"
+ },
+ "edgeRadius": {
+ "default": 15,
+ "minimum": 0,
+ "type": "number"
+ },
+ "finish": {
+ "default": "satin",
+ "enum": [
+ "satin",
+ "brushed"
+ ],
+ "type": "string"
+ },
+ "height": {
+ "maximum": 8000,
+ "minimum": 40,
+ "type": "number"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
+ "type": "string"
+ },
+ "kind": {
+ "const": "slab",
+ "type": "string"
+ },
+ "materials": {
+ "$ref": "#/$defs/__schema158"
+ },
+ "opacity": {
+ "default": 1,
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "surfaces": {
+ "$ref": "#/$defs/__schema160"
+ },
+ "thickness": {
+ "default": 32,
+ "maximum": 200,
+ "minimum": 4,
+ "type": "number"
+ },
+ "transform": {
+ "additionalProperties": false,
+ "default": {
+ "position": [
+ 0,
+ 0,
+ 0
+ ],
+ "rotation": [
+ 0,
+ 0,
+ 0
+ ],
+ "scale": 1
+ },
+ "properties": {
+ "position": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema170"
+ },
+ {
+ "$ref": "#/$defs/__schema171"
+ },
+ {
+ "$ref": "#/$defs/__schema172"
+ }
+ ],
+ "type": "array"
+ },
+ "rotation": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema173"
+ },
+ {
+ "$ref": "#/$defs/__schema174"
+ },
+ {
+ "$ref": "#/$defs/__schema175"
+ }
+ ],
+ "type": "array"
+ },
+ "scale": {
+ "default": 1,
+ "exclusiveMinimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "width": {
+ "maximum": 8000,
+ "minimum": 40,
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "id",
+ "width",
+ "height"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "backface": {
+ "default": "hidden",
+ "enum": [
+ "hidden",
+ "visible"
+ ],
+ "type": "string"
+ },
+ "depthWrite": {
+ "default": true,
+ "type": "boolean"
+ },
+ "fit": {
+ "default": "contain",
+ "enum": [
+ "contain",
+ "cover"
+ ],
+ "type": "string"
+ },
+ "height": {
+ "maximum": 8000,
+ "minimum": 40,
+ "type": "number"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
+ "type": "string"
+ },
+ "kind": {
+ "const": "page",
+ "type": "string"
+ },
+ "materials": {
+ "$ref": "#/$defs/__schema158"
+ },
+ "opacity": {
+ "default": 1,
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "surfaces": {
+ "$ref": "#/$defs/__schema160"
+ },
+ "transform": {
+ "additionalProperties": false,
+ "default": {
+ "position": [
+ 0,
+ 0,
+ 0
+ ],
+ "rotation": [
+ 0,
+ 0,
+ 0
+ ],
+ "scale": 1
+ },
+ "properties": {
+ "position": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema176"
+ },
+ {
+ "$ref": "#/$defs/__schema177"
+ },
+ {
+ "$ref": "#/$defs/__schema178"
+ }
+ ],
+ "type": "array"
+ },
+ "rotation": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema179"
+ },
+ {
+ "$ref": "#/$defs/__schema180"
+ },
+ {
+ "$ref": "#/$defs/__schema181"
+ }
+ ],
+ "type": "array"
+ },
+ "scale": {
+ "default": 1,
+ "exclusiveMinimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "transparency": {
+ "default": "straight",
+ "enum": [
+ "straight",
+ "premultiplied",
+ "opaque"
+ ],
+ "type": "string"
+ },
+ "width": {
+ "maximum": 8000,
+ "minimum": 40,
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "id",
+ "width",
+ "height",
+ "surfaces"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "align": {
+ "default": "center",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "type": "string"
+ },
+ "color": {
+ "anyOf": [
+ {
+ "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
+ "type": "string"
+ },
+ {
+ "enum": [
+ "$brand:colors.background",
+ "$brand:colors.surface",
+ "$brand:colors.text",
+ "$brand:colors.textMuted",
+ "$brand:colors.accent",
+ "$brand:colors.accentStrong",
+ "$brand:colors.accentSoft",
+ "$brand:colors.success",
+ "$brand:colors.warning",
+ "$brand:colors.danger"
+ ],
+ "type": "string"
+ }
+ ]
+ },
+ "fontFamily": {
+ "anyOf": [
+ {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.\\-]*$",
+ "type": "string"
+ },
+ {
+ "enum": [
+ "$brand:fonts.heading",
+ "$brand:fonts.body",
+ "$brand:fonts.caption"
+ ],
+ "type": "string"
+ }
+ ]
+ },
+ "fontSize": {
+ "maximum": 800,
+ "minimum": 8,
+ "type": "number"
+ },
+ "fontStyle": {
+ "enum": [
+ "normal",
+ "italic"
+ ],
+ "type": "string"
+ },
+ "fontWeight": {
+ "maximum": 900,
+ "minimum": 100,
+ "type": "integer"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
+ "type": "string"
+ },
+ "kind": {
+ "const": "text",
+ "type": "string"
+ },
+ "letterSpacing": {
+ "default": 0,
+ "maximum": 40,
+ "minimum": -20,
+ "type": "number"
+ },
+ "lineHeight": {
+ "default": 1.2,
+ "maximum": 3,
+ "minimum": 0.6,
+ "type": "number"
+ },
+ "lines": {
+ "items": {
+ "$ref": "#/$defs/__schema182"
+ },
+ "maxItems": 24,
+ "minItems": 1,
+ "type": "array"
+ },
+ "maxWidth": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "opacity": {
+ "default": 1,
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "space": {
+ "const": "world",
+ "type": "string"
+ },
+ "transform": {
+ "additionalProperties": false,
+ "default": {
+ "position": [
+ 0,
+ 0,
+ 0
+ ],
+ "rotation": [
+ 0,
+ 0,
+ 0
+ ],
+ "scale": 1
+ },
+ "properties": {
+ "position": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema184"
+ },
+ {
+ "$ref": "#/$defs/__schema185"
+ },
+ {
+ "$ref": "#/$defs/__schema186"
+ }
+ ],
+ "type": "array"
+ },
+ "rotation": {
+ "default": [
+ 0,
+ 0,
+ 0
+ ],
+ "items": false,
+ "maxItems": 3,
+ "minItems": 3,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema187"
+ },
+ {
+ "$ref": "#/$defs/__schema188"
+ },
+ {
+ "$ref": "#/$defs/__schema189"
+ }
+ ],
+ "type": "array"
+ },
+ "scale": {
+ "default": 1,
+ "exclusiveMinimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "id",
+ "kind",
+ "lines",
+ "fontFamily",
+ "fontWeight",
+ "fontStyle",
+ "fontSize",
+ "color",
+ "space"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "align": {
+ "default": "center",
+ "enum": [
+ "left",
+ "center",
+ "right"
+ ],
+ "type": "string"
+ },
+ "color": {
+ "anyOf": [
+ {
+ "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
+ "type": "string"
+ },
+ {
+ "enum": [
+ "$brand:colors.background",
+ "$brand:colors.surface",
+ "$brand:colors.text",
+ "$brand:colors.textMuted",
+ "$brand:colors.accent",
+ "$brand:colors.accentStrong",
+ "$brand:colors.accentSoft",
+ "$brand:colors.success",
+ "$brand:colors.warning",
+ "$brand:colors.danger"
+ ],
+ "type": "string"
+ }
+ ]
+ },
+ "fontFamily": {
+ "anyOf": [
+ {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9 _.\\-]*$",
+ "type": "string"
+ },
+ {
+ "enum": [
+ "$brand:fonts.heading",
+ "$brand:fonts.body",
+ "$brand:fonts.caption"
+ ],
+ "type": "string"
+ }
+ ]
+ },
+ "fontSize": {
+ "maximum": 800,
+ "minimum": 8,
+ "type": "number"
+ },
+ "fontStyle": {
+ "enum": [
+ "normal",
+ "italic"
+ ],
+ "type": "string"
+ },
+ "fontWeight": {
+ "maximum": 900,
+ "minimum": 100,
+ "type": "integer"
+ },
+ "id": {
+ "maxLength": 64,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
+ "type": "string"
+ },
+ "kind": {
+ "const": "text",
+ "type": "string"
+ },
+ "letterSpacing": {
+ "default": 0,
+ "maximum": 40,
+ "minimum": -20,
+ "type": "number"
+ },
+ "lineHeight": {
+ "default": 1.2,
+ "maximum": 3,
+ "minimum": 0.6,
+ "type": "number"
+ },
+ "lines": {
+ "items": {
+ "$ref": "#/$defs/__schema190"
+ },
+ "maxItems": 24,
+ "minItems": 1,
+ "type": "array"
+ },
+ "maxWidth": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "opacity": {
+ "default": 1,
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "rotation": {
+ "default": 0,
+ "type": "number"
+ },
+ "scale": {
+ "default": 1,
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "space": {
+ "const": "screen",
+ "type": "string"
+ },
+ "x": {
+ "type": "number"
+ },
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "id",
+ "kind",
+ "lines",
+ "fontFamily",
+ "fontWeight",
+ "fontStyle",
+ "fontSize",
+ "color",
+ "space",
+ "x",
+ "y"
+ ],
+ "type": "object"
+ }
+ ]
+}
addedInput schema / $defs / __schema145
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema146
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema147
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema148
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema149
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema15
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "mode": {
+ "const": "all-faces",
+ "type": "string"
+ }
+ },
+ "required": [
+ "mode"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema150
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema151
Added value: +{
+ "$ref": "#/$defs/__schema144"
+}
addedInput schema / $defs / __schema152
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema153
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema154
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema155
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema156
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema157
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema158
Added value: +{
+ "items": {
+ "$ref": "#/$defs/__schema159"
+ },
+ "maxItems": 16,
+ "type": "array"
+}
addedInput schema / $defs / __schema159
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "anisotropy": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "anisotropyRotation": {
+ "type": "number"
+ },
+ "clearcoat": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "clearcoatRoughness": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "color": {
+ "anyOf": [
+ {
+ "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
+ "type": "string"
+ },
+ {
+ "enum": [
+ "$brand:colors.background",
+ "$brand:colors.surface",
+ "$brand:colors.text",
+ "$brand:colors.textMuted",
+ "$brand:colors.accent",
+ "$brand:colors.accentStrong",
+ "$brand:colors.accentSoft",
+ "$brand:colors.success",
+ "$brand:colors.warning",
+ "$brand:colors.danger"
+ ],
+ "type": "string"
+ }
+ ]
+ },
+ "ior": {
+ "maximum": 2.333,
+ "minimum": 1,
+ "type": "number"
+ },
+ "metalness": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "reflectivity": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "role": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "roughness": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "type": {
+ "enum": [
+ "physical",
+ "unlit"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "role",
+ "type"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema16
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "mode": {
+ "const": "active-speaker",
+ "type": "string"
+ }
+ },
+ "required": [
+ "mode"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema160
Added value: +{
+ "additionalProperties": {
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "assetSlot": {
+ "description": "Image asset slot name bound by the clip assets map; never a URL.",
+ "maxLength": 64,
+ "minLength": 1,
+ "pattern": "^[A-Za-z_][A-Za-z0-9_-]*$",
+ "type": "string"
+ },
+ "source": {
+ "const": "image",
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "assetSlot"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "color": {
+ "anyOf": [
+ {
+ "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
+ "type": "string"
+ },
+ {
+ "enum": [
+ "$brand:colors.background",
+ "$brand:colors.surface",
+ "$brand:colors.text",
+ "$brand:colors.textMuted",
+ "$brand:colors.accent",
+ "$brand:colors.accentStrong",
+ "$brand:colors.accentSoft",
+ "$brand:colors.success",
+ "$brand:colors.warning",
+ "$brand:colors.danger"
+ ],
+ "type": "string"
+ }
+ ]
+ },
+ "source": {
+ "const": "color",
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "color"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "bakeScale": {
+ "anyOf": [
+ {
+ "$ref": "#/$defs/__schema161"
+ },
+ {
+ "$ref": "#/$defs/__schema162"
+ }
+ ],
+ "description": "Optional authored scale. Preparation defaults omission to 2 and may auto-raise it to 3."
+ },
+ "captureFrame": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "component": {
+ "additionalProperties": false,
+ "properties": {
+ "componentId": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "sourceVersionId": {
+ "pattern": "^[a-f0-9]{64}$",
+ "type": "string"
+ },
+ "version": {
+ "const": 1,
+ "type": "number"
+ }
+ },
+ "required": [
+ "version",
+ "componentId",
+ "sourceVersionId"
+ ],
+ "type": "object"
+ },
+ "layout": {
+ "additionalProperties": false,
+ "properties": {
+ "height": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "width": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "width",
+ "height"
+ ],
+ "type": "object"
+ },
+ "params": {
+ "additionalProperties": {
+ "$ref": "#/$defs/__schema163"
+ },
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "source": {
+ "const": "component",
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "component",
+ "captureFrame",
+ "layout"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "endFrame": {
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "mediaId": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "source": {
+ "const": "video",
+ "type": "string"
+ },
+ "startFrame": {
+ "default": 0,
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "source",
+ "mediaId"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+}
addedInput schema / $defs / __schema161
Added value: +{
+ "const": 2,
+ "type": "number"
+}
addedInput schema / $defs / __schema162
Added value: +{
+ "const": 3,
+ "type": "number"
+}
addedInput schema / $defs / __schema163
Added value: +{
+ "anyOf": [
+ {
+ "type": "null"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "number"
+ },
+ {
+ "type": "string"
+ },
+ {
+ "items": {
+ "$ref": "#/$defs/__schema163"
+ },
+ "type": "array"
+ },
+ {
+ "additionalProperties": {
+ "$ref": "#/$defs/__schema163"
+ },
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ }
+ ]
+}
addedInput schema / $defs / __schema164
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema165
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema166
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema167
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema168
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema169
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema17
Added value: +{
+ "description": "Ease-IN ramp DURATION in seconds at the segment START.",
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema170
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema171
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema172
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema173
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema174
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema175
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema176
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema177
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema178
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema179
Added value: +{
+ "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 / __schema180
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema181
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema182
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "runs": {
+ "items": {
+ "$ref": "#/$defs/__schema183"
+ },
+ "maxItems": 16,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "runs"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema183
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "color": {
+ "anyOf": [
+ {
+ "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
+ "type": "string"
+ },
+ {
+ "enum": [
+ "$brand:colors.background",
+ "$brand:colors.surface",
+ "$brand:colors.text",
+ "$brand:colors.textMuted",
+ "$brand:colors.accent",
+ "$brand:colors.accentStrong",
+ "$brand:colors.accentSoft",
+ "$brand:colors.success",
+ "$brand:colors.warning",
+ "$brand:colors.danger"
+ ],
+ "type": "string"
+ }
+ ]
+ },
+ "emphasis": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 512,
+ "minLength": 1,
+ "pattern": "^[^\\r\\n]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema184
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema185
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema186
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema187
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema188
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema189
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema19
Added value: +{}
addedInput schema / $defs / __schema190
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "runs": {
+ "items": {
+ "$ref": "#/$defs/__schema191"
+ },
+ "maxItems": 16,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "runs"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema191
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "color": {
+ "anyOf": [
+ {
+ "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
+ "type": "string"
+ },
+ {
+ "enum": [
+ "$brand:colors.background",
+ "$brand:colors.surface",
+ "$brand:colors.text",
+ "$brand:colors.textMuted",
+ "$brand:colors.accent",
+ "$brand:colors.accentStrong",
+ "$brand:colors.accentSoft",
+ "$brand:colors.success",
+ "$brand:colors.warning",
+ "$brand:colors.danger"
+ ],
+ "type": "string"
+ }
+ ]
+ },
+ "emphasis": {
+ "type": "boolean"
+ },
+ "text": {
+ "maxLength": 512,
+ "minLength": 1,
+ "pattern": "^[^\\r\\n]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "text"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema192
Added value: +{
+ "default": [],
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "keyframes": {
+ "items": {
+ "$ref": "#/$defs/__schema193"
+ },
+ "maxItems": 256,
+ "minItems": 1,
+ "type": "array"
+ },
+ "property": {
+ "enum": [
+ "positionX",
+ "positionY",
+ "positionZ",
+ "rotationX",
+ "rotationY",
+ "rotationZ",
+ "fov",
+ "scale",
+ "opacity",
+ "openAngle",
+ "x",
+ "y",
+ "rotation",
+ "intensity",
+ "distance",
+ "range",
+ "maxBlur"
+ ],
+ "type": "string"
+ },
+ "target": {
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "camera",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "layer",
+ "type": "string"
+ },
+ "layerId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "layerId"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "environment",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "focus",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ }
+ ]
+ }
+ },
+ "required": [
+ "target",
+ "property",
+ "keyframes"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / $defs / __schema193
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "at": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "easing": {
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "linear",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "hold",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "kind": {
+ "const": "bezier",
+ "type": "string"
+ },
+ "x1": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "x2": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "y1": {
+ "maximum": 5,
+ "minimum": -4,
+ "type": "number"
+ },
+ "y2": {
+ "maximum": 5,
+ "minimum": -4,
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "x1",
+ "y1",
+ "x2",
+ "y2"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "value": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "at",
+ "value"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema194
Added value: +{
+ "additionalProperties": false,
+ "default": {
+ "focus": null,
+ "grain": 0,
+ "vignette": 0
+ },
+ "properties": {
+ "focus": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "distance": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "maxBlur": {
+ "maximum": 64,
+ "minimum": 0,
+ "type": "number"
+ },
+ "range": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "distance",
+ "range",
+ "maxBlur"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "grain": {
+ "default": 0,
+ "maximum": 0.5,
+ "minimum": 0,
+ "type": "number"
+ },
+ "vignette": {
+ "default": 0,
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+}
addedInput schema / $defs / __schema195
Added value: +{
+ "default": [],
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "gap": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "kind": {
+ "const": "minSeparation",
+ "type": "string"
+ },
+ "objects": {
+ "items": {
+ "$ref": "#/$defs/__schema196"
+ },
+ "minItems": 2,
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "objects",
+ "gap"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / $defs / __schema196
Added value: +{
+ "maxLength": 64,
+ "minLength": 1,
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
+ "type": "string"
+}
addedInput schema / $defs / __schema197
Added value: +{
+ "additionalProperties": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "properties": {},
+ "propertyNames": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "object"
+}
addedInput schema / $defs / __schema198
Added value: +{
+ "additionalProperties": false,
+ "description": "Revise a scene shot in place by clip id. Send a replacement `scene` and/or `assets`; timing changes use the ordinary clip timing fields (`startTime`, `duration`, `transitionIn`). Omitted fields keep their persisted values and the MERGED result is re-validated as a whole, so a partial edit cannot leave the shot invalid. Changing only values or asset IDs updates props and bindings and REUSES the pinned source; changing the referenced SLOT SET regenerates the wrapper manifest and registers a new immutable source version atomically. Undo restores the source reference, spec, bindings and timing together. Topology, asset bindings, text content, font properties, device kind and colours are STATIC within a shot's animation — change them here (a revised spec) rather than trying to animate them. This is not a source trim or slip: a shortened or extended clip resamples the SAME normalized animation over its new duration, and trim/slip requests on generated animation are rejected rather than reinterpreted as media trims. In one batch, `scene.update` may target a shot added by an earlier `scene.add`. ASSETS: `assets` binds each slot name a layer references to a media id in the same project, and the slot's declared KIND decides what it admits — an image slot takes PNG, JPEG or WebP, a video slot MP4 or WebM. Binding the wrong kind is refused with the slot's path.",
+ "properties": {
+ "assets": {
+ "$ref": "#/$defs/__schema205"
+ },
+ "clipId": {
+ "$ref": "#/$defs/__schema200"
+ },
+ "duration": {
+ "$ref": "#/$defs/__schema202"
+ },
+ "scene": {
+ "$ref": "#/$defs/__schema204"
+ },
+ "startTime": {
+ "$ref": "#/$defs/__schema201"
+ },
+ "transitionIn": {
+ "$ref": "#/$defs/__schema203"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema199"
+ }
+ },
+ "required": [
+ "type",
+ "clipId"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema199
Added value: +{
+ "const": "scene.update",
+ "type": "string"
+}
removedInput schema / $defs / __schema2 / anyOf
Removed value: -[
- {
- "type": "null"
- },
- {
- "type": "boolean"
- },
- {
- "type": "number"
- },
- {
- "type": "string"
- },
- {
- "items": {
- "$ref": "#/$defs/__schema2"
- },
- "type": "array"
- },
- {
- "additionalProperties": {
- "$ref": "#/$defs/__schema2"
- },
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- }
-]
addedInput schema / $defs / __schema2 / const
Added value: +4
addedInput schema / $defs / __schema2 / type
Added value: +"number"
addedInput schema / $defs / __schema20
Added value: +{
+ "description": "Horizontal nudge, source-normalized (+ = right).",
+ "maximum": 0.3,
+ "minimum": -0.3,
+ "type": "number"
+}
addedInput schema / $defs / __schema200
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema201
Added value: +{
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema202
Added value: +{
+ "exclusiveMinimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema203
Added value: +{
+ "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"
+}
addedInput schema / $defs / __schema204
Added value: +{
+ "$ref": "#/$defs/__schema127"
+}
addedInput schema / $defs / __schema205
Added value: +{
+ "additionalProperties": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "properties": {},
+ "propertyNames": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "type": "object"
+}
addedInput schema / $defs / __schema206
Added value: +{
+ "additionalProperties": false,
+ "description": "Materialize a clip's SOURCE-media temporal GRID as timeline markers — the rhythm authority you cut to. `grid:\"beat\"` reads a MUSIC bed's beat map (get_media_context.beatGrid), `grid:\"word\"` the VO word onsets (wordGrid); each grid point is projected from media time to TIMELINE time through the clip's placement (startTime, trim, playbackRate, excludedRanges) and written as a `kind:\"beat\"|\"word\"` marker (`metadata.sourceClipId` set). Points outside the clip's visible window are skipped. Re-running REPLACES the prior markers from the same clip+grid (idempotent). Land cuts and transition MIDPOINTS on the markers (a 0.5s transition starts 0.25s before its marker). `maxMarkers` (default 500, ceiling 2000) — exceeding it fails loud with the count. `grid:\"shot\"` is not yet exposed (shot_grid_unavailable). The target must be a media clip; absent evidence fails loud (grid_unavailable) naming how to get it (declare audioRole:\"music\" at ingest / transcribe).",
+ "properties": {
+ "clipId": {
+ "$ref": "#/$defs/__schema208"
+ },
+ "grid": {
+ "$ref": "#/$defs/__schema209"
+ },
+ "maxMarkers": {
+ "$ref": "#/$defs/__schema210"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema207"
+ }
+ },
+ "required": [
+ "type",
+ "clipId",
+ "grid"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema207
Added value: +{
+ "const": "materializeGrid",
+ "type": "string"
+}
addedInput schema / $defs / __schema208
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema209
Added value: +{
+ "enum": [
+ "beat",
+ "word",
+ "shot"
+ ],
+ "type": "string"
+}
addedInput schema / $defs / __schema21
Added value: +{
+ "description": "Vertical nudge, source-normalized (+ = down).",
+ "maximum": 0.3,
+ "minimum": -0.3,
+ "type": "number"
+}
addedInput schema / $defs / __schema210
Added value: +{
+ "exclusiveMinimum": 0,
+ "maximum": 2000,
+ "type": "integer"
+}
addedInput schema / $defs / __schema211
Added value: +{
+ "additionalProperties": false,
+ "description": "Attach caption CONTENT from the media's cached transcript — no pasting words. ROUTE-MATERIALIZED like materializeGrid: the server slices the word-timed transcript to `window` (source seconds; absent = the whole media), rebases times, sentence-splits into segments, and applies it as `setCaptions`. 422 media_no_transcript when the media has no transcript or no words in the window. For your OWN word timings use setCaptions directly. For edited multi-clip timelines, use captions.fromComposition after saving the edits; that operation projects all selected track clips, trims, exclusions, and placements.",
+ "properties": {
+ "mediaId": {
+ "$ref": "#/$defs/__schema213"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema212"
+ },
+ "window": {
+ "$ref": "#/$defs/__schema214"
+ }
+ },
+ "required": [
+ "type",
+ "mediaId"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema212
Added value: +{
+ "const": "captions.fromTranscript",
+ "type": "string"
+}
addedInput schema / $defs / __schema213
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema214
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "endSec": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "startSec": {
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "startSec",
+ "endSec"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema215
Added value: +{
+ "additionalProperties": false,
+ "description": "Snapshot word-timed captions from the SAVED edits on one explicit enabled video or audio track. The host reads each source media transcript, projects words through clip trim, excluded ranges and placement, then replaces the caption segments. This is route-materialized to setCaptions; call it AFTER persisting clip edits and call it again when those edits change. The existing caption style and depth are preserved. Missing transcripts, unsupported clips, inconsistent clip durations, and overlapping audible clips fail loud. Playback rate scales source word times and playable duration on both audio and video tracks.",
+ "properties": {
+ "trackId": {
+ "$ref": "#/$defs/__schema217"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema216"
+ }
+ },
+ "required": [
+ "type",
+ "trackId"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema216
Added value: +{
+ "const": "captions.fromComposition",
+ "type": "string"
+}
addedInput schema / $defs / __schema217
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema218
Added value: +{
+ "additionalProperties": false,
+ "description": "Set the output format — `aspectRatio` (16:9|9:16|1:1|4:5) plus optional `fps` and `resolution`. Merges: an omitted field keeps the current value.",
+ "properties": {
+ "format": {
+ "$ref": "#/$defs/__schema220"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema219"
+ }
+ },
+ "required": [
+ "type",
+ "format"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema219
Added value: +{
+ "const": "setFormat",
+ "type": "string"
+}
addedInput schema / $defs / __schema22
Added value: +{}
addedInput schema / $defs / __schema220
Added value: +{
+ "additionalProperties": {},
+ "properties": {
+ "aspectRatio": {
+ "enum": [
+ "16:9",
+ "9:16",
+ "1:1",
+ "4:5"
+ ],
+ "type": "string"
+ },
+ "fps": {
+ "anyOf": [
+ {
+ "const": 24,
+ "type": "number"
+ },
+ {
+ "const": 25,
+ "type": "number"
+ },
+ {
+ "const": 30,
+ "type": "number"
+ },
+ {
+ "const": 60,
+ "type": "number"
+ }
+ ]
+ },
+ "resolution": {
+ "enum": [
+ "hd",
+ "fhd",
+ "4k"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "aspectRatio"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema221
Added value: +{
+ "additionalProperties": false,
+ "description": "Add an EMPTY track of a given family (video|audio|image|overlay|effect). Optional pinned `id`. The new track is appended, so it starts at the BACK: index 0 is the top layer and higher indices are further back (see `reorderTracks`). Track order is the paint order for every family: a card on a track behind a video or image track draws behind it.",
+ "properties": {
+ "id": {
+ "$ref": "#/$defs/__schema225"
+ },
+ "kind": {
+ "$ref": "#/$defs/__schema223"
+ },
+ "name": {
+ "$ref": "#/$defs/__schema224"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema222"
+ }
+ },
+ "required": [
+ "type",
+ "kind"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema222
Added value: +{
+ "const": "addTrack",
+ "type": "string"
+}
addedInput schema / $defs / __schema223
Added value: +{
+ "enum": [
+ "video",
+ "audio",
+ "image",
+ "overlay",
+ "effect"
+ ],
+ "type": "string"
+}
addedInput schema / $defs / __schema224
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema225
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema226
Added value: +{
+ "additionalProperties": false,
+ "description": "Remove a track AND all its clips by id.",
+ "properties": {
+ "trackId": {
+ "$ref": "#/$defs/__schema228"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema227"
+ }
+ },
+ "required": [
+ "type",
+ "trackId"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema227
Added value: +{
+ "const": "removeTrack",
+ "type": "string"
+}
addedInput schema / $defs / __schema228
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema229
Added value: +{
+ "additionalProperties": false,
+ "description": "Patch a track's `name` / `enabled` by id. Track volume is retired: set each clip's own volume.",
+ "properties": {
+ "trackId": {
+ "$ref": "#/$defs/__schema231"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema230"
+ },
+ "updates": {
+ "$ref": "#/$defs/__schema232"
+ }
+ },
+ "required": [
+ "type",
+ "trackId",
+ "updates"
+ ],
+ "type": "object"
+}
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 / __schema230
Added value: +{
+ "const": "updateTrack",
+ "type": "string"
+}
addedInput schema / $defs / __schema231
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema232
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "volume": {
+ "maximum": 4,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+}
addedInput schema / $defs / __schema233
Added value: +{
+ "additionalProperties": false,
+ "description": "Move a track from one index to another. ORDER: index 0 is the TOP layer, not the bottom — moving a backdrop to index 0 puts it in FRONT of everything and hides the composition. Higher index = further back. Track order is the paint order for every family, so cards, overlays, images and video interleave by index: a backdrop card, a screenshot and a foreground card on three tracks stack in that order. The one exception is `zPlane:\"behind-subject\"`, which moves the overlay inside its host clip, behind the segmented foreground.",
+ "properties": {
+ "fromIndex": {
+ "$ref": "#/$defs/__schema235"
+ },
+ "toIndex": {
+ "$ref": "#/$defs/__schema236"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema234"
+ }
+ },
+ "required": [
+ "type",
+ "fromIndex",
+ "toIndex"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema234
Added value: +{
+ "const": "reorderTracks",
+ "type": "string"
+}
addedInput schema / $defs / __schema235
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema236
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema237
Added value: +{
+ "additionalProperties": false,
+ "description": "Move a clip to another SAME-family track, optionally at a new `newStartTime`.",
+ "properties": {
+ "clipId": {
+ "$ref": "#/$defs/__schema239"
+ },
+ "newStartTime": {
+ "$ref": "#/$defs/__schema241"
+ },
+ "targetTrackId": {
+ "$ref": "#/$defs/__schema240"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema238"
+ }
+ },
+ "required": [
+ "type",
+ "clipId",
+ "targetTrackId"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema238
Added value: +{
+ "const": "moveClipToTrack",
+ "type": "string"
+}
addedInput schema / $defs / __schema239
Added value: +{
+ "type": "string"
+}
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 / __schema240
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema241
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema242
Added value: +{
+ "additionalProperties": false,
+ "description": "Duplicate a clip by id. Pin `newClipId` to make the copy's id deterministic (required for a clean undo/inverse).",
+ "properties": {
+ "clipId": {
+ "$ref": "#/$defs/__schema244"
+ },
+ "newClipId": {
+ "$ref": "#/$defs/__schema245"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema243"
+ }
+ },
+ "required": [
+ "type",
+ "clipId"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema243
Added value: +{
+ "const": "duplicateClip",
+ "type": "string"
+}
addedInput schema / $defs / __schema244
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema245
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema246
Added value: +{
+ "additionalProperties": false,
+ "description": "Server-authoritative: delete the [start,end] time window (seconds) and ripple every downstream clip/marker/caption earlier to close the gap. Cuts apply sequentially in TIMELINE seconds: each cut moves everything after it, so a later cut's coordinates go stale once an earlier one lands. Plan several cuts back to front (latest first), or send them as one `cutRanges`. To drop spans inside one clip, `addExcludedRange` takes SOURCE seconds and is order-independent.",
+ "properties": {
+ "end": {
+ "$ref": "#/$defs/__schema249"
+ },
+ "start": {
+ "$ref": "#/$defs/__schema248"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema247"
+ }
+ },
+ "required": [
+ "type",
+ "start",
+ "end"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema247
Added value: +{
+ "const": "cutAndRipple",
+ "type": "string"
+}
addedInput schema / $defs / __schema248
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema249
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema25
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema250
Added value: +{
+ "additionalProperties": false,
+ "description": "Server-authoritative: delete several [start,end] windows (seconds) in one atomic edit, one undo step. Every range is in timeline seconds of the composition as it is BEFORE this op, in any order; overlapping and touching ranges merge. Each must satisfy 0 <= start < end <= the timeline's end. The cuts apply back to front with exactly `cutAndRipple`'s ripple (every track, markers and derived captions move earlier), so no coordinate goes stale.",
+ "properties": {
+ "ranges": {
+ "$ref": "#/$defs/__schema252"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema251"
+ }
+ },
+ "required": [
+ "type",
+ "ranges"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema251
Added value: +{
+ "const": "cutRanges",
+ "type": "string"
+}
addedInput schema / $defs / __schema252
Added value: +{
+ "items": {
+ "$ref": "#/$defs/__schema253"
+ },
+ "minItems": 1,
+ "type": "array"
+}
addedInput schema / $defs / __schema253
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "end": {
+ "type": "number"
+ },
+ "start": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "start",
+ "end"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema254
Added value: +{
+ "additionalProperties": false,
+ "description": "Server-authoritative: shift everything at/after `time` (seconds) by `amount` seconds (+ opens a gap, − closes one).",
+ "properties": {
+ "amount": {
+ "$ref": "#/$defs/__schema257"
+ },
+ "time": {
+ "$ref": "#/$defs/__schema256"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema255"
+ }
+ },
+ "required": [
+ "type",
+ "time",
+ "amount"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema255
Added value: +{
+ "const": "ripple",
+ "type": "string"
+}
addedInput schema / $defs / __schema256
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema257
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema258
Added value: +{
+ "additionalProperties": false,
+ "description": "Server-authoritative: exclude a [sourceStart,sourceEnd] span (seconds) of a clip's SOURCE (an internal trim) and ripple downstream — the preferred way to drop a sub-range vs a source patch. Coordinates are SOURCE seconds, which a cut or another exclusion never shifts, so several exclusions on one clip can be sent in any order.",
+ "properties": {
+ "clipId": {
+ "$ref": "#/$defs/__schema260"
+ },
+ "reason": {
+ "$ref": "#/$defs/__schema263"
+ },
+ "sourceEnd": {
+ "$ref": "#/$defs/__schema262"
+ },
+ "sourceStart": {
+ "$ref": "#/$defs/__schema261"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema259"
+ }
+ },
+ "required": [
+ "type",
+ "clipId",
+ "sourceStart",
+ "sourceEnd"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema259
Added value: +{
+ "const": "addExcludedRange",
+ "type": "string"
+}
addedInput schema / $defs / __schema26
Added value: +{
+ "additionalProperties": {
+ "type": "string"
+ },
+ "properties": {},
+ "type": "object"
+}
addedInput schema / $defs / __schema260
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema261
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema262
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema263
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema264
Added value: +{
+ "additionalProperties": false,
+ "description": "Server-authoritative: remove a clip's previously-added excluded range by index (re-includes that span, ripples downstream).",
+ "properties": {
+ "clipId": {
+ "$ref": "#/$defs/__schema266"
+ },
+ "rangeIdx": {
+ "$ref": "#/$defs/__schema267"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema265"
+ }
+ },
+ "required": [
+ "type",
+ "clipId",
+ "rangeIdx"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema265
Added value: +{
+ "const": "removeExcludedRange",
+ "type": "string"
+}
addedInput schema / $defs / __schema266
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema267
Added value: +{
+ "type": "number"
+}
addedInput schema / $defs / __schema268
Added value: +{
+ "additionalProperties": false,
+ "description": "Atomically repin explicit version3 invocations using complete before/after execution references and an exact composition etag. Persistence must canonically admit scoped source hashes, destination input schemas and every resulting target context before applying, including replay/undo. Never infer a latest head, downgrade versions or accept an admitted flag.",
+ "properties": {
+ "changes": {
+ "$ref": "#/$defs/__schema274"
+ },
+ "componentId": {
+ "$ref": "#/$defs/__schema270"
+ },
+ "expectedCompositionEtag": {
+ "$ref": "#/$defs/__schema273"
+ },
+ "from": {
+ "$ref": "#/$defs/__schema271"
+ },
+ "to": {
+ "$ref": "#/$defs/__schema272"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema269"
+ }
+ },
+ "required": [
+ "type",
+ "componentId",
+ "from",
+ "to",
+ "expectedCompositionEtag",
+ "changes"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema269
Added value: +{
+ "const": "component.repin-v3",
+ "type": "string"
+}
addedInput schema / $defs / __schema27
Added value: +{
+ "maximum": 2,
+ "minimum": -1,
+ "type": "number"
+}
addedInput schema / $defs / __schema270
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema271
Added value: +{
+ "pattern": "^[a-f0-9]{64}$",
+ "type": "string"
+}
addedInput schema / $defs / __schema272
Added value: +{
+ "pattern": "^[a-f0-9]{64}$",
+ "type": "string"
+}
addedInput schema / $defs / __schema273
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema274
Added value: +{
+ "items": {
+ "$ref": "#/$defs/__schema275"
+ },
+ "maxItems": 512,
+ "minItems": 1,
+ "type": "array"
+}
addedInput schema / $defs / __schema275
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "after": {
+ "$ref": "#/$defs/__schema23"
+ },
+ "before": {
+ "$ref": "#/$defs/__schema23"
+ },
+ "placementId": {
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "placementId",
+ "before",
+ "after"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema276
Added value: +{
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema28
Added value: +{
+ "maximum": 2,
+ "minimum": -1,
+ "type": "number"
+}
addedInput schema / $defs / __schema29
Added value: +{}
addedInput schema / $defs / __schema3
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "componentId": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "scope": {
+ "additionalProperties": false,
+ "properties": {
+ "collection": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "const": "builtin",
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "collection"
+ ],
+ "type": "object"
+ },
+ "sourceVersion": {
+ "anyOf": [
+ {
+ "const": 3,
+ "type": "number"
+ },
+ {
+ "const": 4,
+ "type": "number"
+ }
+ ]
+ },
+ "sourceVersionId": {
+ "pattern": "^[a-f0-9]{64}$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "scope",
+ "componentId",
+ "sourceVersionId",
+ "sourceVersion"
+ ],
+ "type": "object"
+}
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": {
+ "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/__schema39"
+ },
+ {
+ "$ref": "#/$defs/__schema40"
+ },
+ {
+ "$ref": "#/$defs/__schema41"
+ }
+ ],
+ "type": "array"
+ }
+ },
+ "required": [
+ "enabled",
+ "amount",
+ "radius",
+ "threshold",
+ "tint"
+ ],
+ "type": "object"
+ },
+ "looks": {
+ "items": {
+ "$ref": "#/$defs/__schema38"
+ },
+ "maxItems": 2,
+ "type": "array"
+ },
+ "version": {
+ "const": 1,
+ "type": "number"
+ }
+ },
+ "required": [
+ "version",
+ "enabled",
+ "grade",
+ "looks"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema38
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "mediaId": {
+ "type": "string"
+ },
+ "sha256": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "mediaId",
+ "sha256",
+ "enabled"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema39
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema4
Added value: +{
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "expectedRevision": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "mode": {
+ "const": "exact",
+ "type": "string"
+ }
+ },
+ "required": [
+ "mode",
+ "expectedRevision"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "basis": {
+ "items": {
+ "$ref": "#/$defs/__schema5"
+ },
+ "maxItems": 2048,
+ "type": "array"
+ },
+ "compositionId": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "mode": {
+ "const": "guarded",
+ "type": "string"
+ },
+ "observedRevision": {
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "mode",
+ "observedRevision",
+ "basis"
+ ],
+ "type": "object"
+ }
+ ]
+}
addedInput schema / $defs / __schema40
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema41
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema42
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema43
Added value: +{
+ "type": "boolean"
+}
addedInput schema / $defs / __schema44
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema45
Added value: +{
+ "additionalProperties": false,
+ "description": "Remove a clip by id (located across every track).",
+ "properties": {
+ "clipId": {
+ "$ref": "#/$defs/__schema47"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema46"
+ }
+ },
+ "required": [
+ "type",
+ "clipId"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema46
Added value: +{
+ "const": "clip.remove",
+ "type": "string"
+}
addedInput schema / $defs / __schema47
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema48
Added value: +{
+ "additionalProperties": false,
+ "description": "Set (or CLEAR, with `keyframes: null`) ONE keyframed channel of a clip: `opacity`, `scale`, `rotation`, `position.x`, `position.y` or `volume`, with at least two keyframes `{time, value, ease?}` in any order. `time` is seconds from the clip's own start (0 to its duration); `value` uses the property's own unit, as its scalar: opacity 0-1, scale a multiplier, rotation degrees, position.x/position.y a FRACTION of the frame (0.5 = centre, never px), volume 0-4. Each keyframe's optional `ease` shapes the segment ARRIVING at it, in HyperFrames' vocabulary: `none` (linear, the default), named eases such as `power2.out`, `back.out`, `expo.inOut`, `spring-gentle`, `hold`, or `custom(M0,0 Cx1,y1 x2,y2 1,1)` (a cubic, x in [0,1]). Before its first keyframe a channel holds its first value, after its last it holds the last; a channel OVERRIDES the clip's scalar (`opacity`, `scale`, `rotation`, `position`). The op REPLACES that property's keyframes; other channels are untouched. Volume keyframes are linear and only for a video or audio media clip. Trims and splits keep every keyframe on its content. Keyframes are stored as HyperFrames tweens (`tweens`) and automation (`automation`) on the clip; author them with this op, not `clip.update`.",
+ "properties": {
+ "clipId": {
+ "$ref": "#/$defs/__schema50"
+ },
+ "keyframes": {
+ "$ref": "#/$defs/__schema52"
+ },
+ "property": {
+ "$ref": "#/$defs/__schema51"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema49"
+ }
+ },
+ "required": [
+ "type",
+ "clipId",
+ "property",
+ "keyframes"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema49
Added value: +{
+ "const": "clip.setKeyframes",
+ "type": "string"
+}
addedInput schema / $defs / __schema5
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "key": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "token": {
+ "maxLength": 65536,
+ "type": "string"
+ }
+ },
+ "required": [
+ "key",
+ "token"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema50
Added value: +{
+ "minLength": 1,
+ "type": "string"
+}
addedInput schema / $defs / __schema51
Added value: +{
+ "enum": [
+ "opacity",
+ "scale",
+ "rotation",
+ "position.x",
+ "position.y",
+ "volume"
+ ],
+ "type": "string"
+}
addedInput schema / $defs / __schema52
Added value: +{
+ "anyOf": [
+ {
+ "items": {
+ "$ref": "#/$defs/__schema53"
+ },
+ "minItems": 2,
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ]
+}
addedInput schema / $defs / __schema53
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "ease": {
+ "type": "string"
+ },
+ "time": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "value": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "time",
+ "value"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema54
Added value: +{
+ "additionalProperties": false,
+ "description": "Patch an existing clip by id (cross-family). The patch is a partial TimelineClip. NOTE: `source` is REPLACED wholesale — the patch merges at the top level only, so a partial `source` WIPES the source fields you omit. Patch the whole source object when changing it. (To change reframe/excluded ranges, prefer setCropIntents / addExcludedRange, not a source patch.)",
+ "properties": {
+ "clipId": {
+ "$ref": "#/$defs/__schema56"
+ },
+ "patch": {
+ "$ref": "#/$defs/__schema57"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema55"
+ }
+ },
+ "required": [
+ "type",
+ "clipId",
+ "patch"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema55
Added value: +{
+ "const": "clip.update",
+ "type": "string"
+}
addedInput schema / $defs / __schema56
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema57
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "automation": {
+ "additionalProperties": false,
+ "properties": {
+ "lanes": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "points": {
+ "items": {
+ "$ref": "#/$defs/__schema67"
+ },
+ "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": {
+ "$ref": "#/$defs/__schema37"
+ },
+ "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/__schema60"
+ },
+ "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/__schema58"
+ },
+ "y": {
+ "$ref": "#/$defs/__schema59"
+ }
+ },
+ "required": [
+ "x",
+ "y"
+ ],
+ "type": "object"
+ },
+ "region": {
+ "additionalProperties": {
+ "$ref": "#/$defs/__schema65"
+ },
+ "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/__schema64"
+ },
+ "w": {
+ "$ref": "#/$defs/__schema63"
+ },
+ "x": {
+ "$ref": "#/$defs/__schema61"
+ },
+ "y": {
+ "$ref": "#/$defs/__schema62"
+ }
+ },
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h"
+ ],
+ "type": "object"
+ },
+ "rotation": {
+ "type": "number"
+ },
+ "scale": {
+ "exclusiveMinimum": 0,
+ "type": "number"
+ },
+ "source": {
+ "$ref": "#/$defs/__schema10"
+ },
+ "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/__schema66"
+ },
+ "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"
+ }
+ },
+ "type": "object"
+}
addedInput schema / $defs / __schema58
Added value: +{
+ "maximum": 2,
+ "minimum": -1,
+ "type": "number"
+}
addedInput schema / $defs / __schema59
Added value: +{
+ "maximum": 2,
+ "minimum": -1,
+ "type": "number"
+}
addedInput schema / $defs / __schema6
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "concurrency": {
+ "$ref": "#/$defs/__schema4"
+ },
+ "operation": {
+ "description": "One scoped composition operation. Discriminated by `type` — `clip.add` / `clip.remove` / `clip.update` patch clips across any family; the rest cover markers, reframe, effects, captions, format, tracks, and the server-authoritative ripple recomputes. Every variant is `.strict()`: an unknown field is refused, not ignored.",
+ "oneOf": [
+ {
+ "$ref": "#/$defs/__schema7"
+ },
+ {
+ "$ref": "#/$defs/__schema45"
+ },
+ {
+ "$ref": "#/$defs/__schema48"
+ },
+ {
+ "$ref": "#/$defs/__schema54"
+ },
+ {
+ "$ref": "#/$defs/__schema68"
+ },
+ {
+ "$ref": "#/$defs/__schema71"
+ },
+ {
+ "$ref": "#/$defs/__schema74"
+ },
+ {
+ "$ref": "#/$defs/__schema77"
+ },
+ {
+ "$ref": "#/$defs/__schema80"
+ },
+ {
+ "$ref": "#/$defs/__schema84"
+ },
+ {
+ "$ref": "#/$defs/__schema88"
+ },
+ {
+ "$ref": "#/$defs/__schema92"
+ },
+ {
+ "$ref": "#/$defs/__schema96"
+ },
+ {
+ "$ref": "#/$defs/__schema100"
+ },
+ {
+ "$ref": "#/$defs/__schema108"
+ },
+ {
+ "$ref": "#/$defs/__schema111"
+ },
+ {
+ "$ref": "#/$defs/__schema115"
+ },
+ {
+ "$ref": "#/$defs/__schema118"
+ },
+ {
+ "$ref": "#/$defs/__schema198"
+ },
+ {
+ "$ref": "#/$defs/__schema206"
+ },
+ {
+ "$ref": "#/$defs/__schema211"
+ },
+ {
+ "$ref": "#/$defs/__schema215"
+ },
+ {
+ "$ref": "#/$defs/__schema218"
+ },
+ {
+ "$ref": "#/$defs/__schema221"
+ },
+ {
+ "$ref": "#/$defs/__schema226"
+ },
+ {
+ "$ref": "#/$defs/__schema229"
+ },
+ {
+ "$ref": "#/$defs/__schema233"
+ },
+ {
+ "$ref": "#/$defs/__schema237"
+ },
+ {
+ "$ref": "#/$defs/__schema242"
+ },
+ {
+ "$ref": "#/$defs/__schema246"
+ },
+ {
+ "$ref": "#/$defs/__schema250"
+ },
+ {
+ "$ref": "#/$defs/__schema254"
+ },
+ {
+ "$ref": "#/$defs/__schema258"
+ },
+ {
+ "$ref": "#/$defs/__schema264"
+ },
+ {
+ "$ref": "#/$defs/__schema268"
+ }
+ ]
+ },
+ "operationId": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "operationId",
+ "operation"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema60
Added value: +{}
addedInput schema / $defs / __schema61
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema62
Added value: +{
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+}
addedInput schema / $defs / __schema63
Added value: +{
+ "exclusiveMinimum": 0,
+ "maximum": 1,
+ "type": "number"
+}
addedInput schema / $defs / __schema64
Added value: +{
+ "exclusiveMinimum": 0,
+ "maximum": 1,
+ "type": "number"
+}
addedInput schema / $defs / __schema65
Added value: +{}
addedInput schema / $defs / __schema66
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 / __schema67
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "t": {
+ "type": "number"
+ },
+ "v": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "t",
+ "v"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema68
Added value: +{
+ "additionalProperties": false,
+ "description": "Remove EVERY clip sourced from a given mediaId (e.g. after deleting that media).",
+ "properties": {
+ "mediaId": {
+ "$ref": "#/$defs/__schema70"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema69"
+ }
+ },
+ "required": [
+ "type",
+ "mediaId"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema69
Added value: +{
+ "const": "removeClipsByMediaId",
+ "type": "string"
+}
addedInput schema / $defs / __schema7
Added value: +{
+ "additionalProperties": false,
+ "description": "Add a clip to the timeline. The clip self-routes to a track by FAMILY (`clip.kind`, else derived from `source.kind`, else the target track) — a `media` clip MUST carry `kind` (video|audio|image) or a `trackId`, else it is rejected as ambiguous. `trackId` targets an existing SAME-family track; `newTrack:true` (with optional pinned `newTrackId`) creates a fresh track of that family, appended at the BACK (the highest index, painted under every other track); raise it with `reorderTracks` (index 0 is the top layer).",
+ "properties": {
+ "clip": {
+ "$ref": "#/$defs/__schema9"
+ },
+ "newTrack": {
+ "$ref": "#/$defs/__schema43"
+ },
+ "newTrackId": {
+ "$ref": "#/$defs/__schema44"
+ },
+ "trackId": {
+ "$ref": "#/$defs/__schema42"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema8"
+ }
+ },
+ "required": [
+ "type",
+ "clip"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema70
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema71
Added value: +{
+ "additionalProperties": false,
+ "description": "Replace the overlay channel wholesale with the given clips (bulk set, not a merge).",
+ "properties": {
+ "clips": {
+ "$ref": "#/$defs/__schema73"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema72"
+ }
+ },
+ "required": [
+ "type",
+ "clips"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema72
Added value: +{
+ "const": "loadOverlays",
+ "type": "string"
+}
addedInput schema / $defs / __schema73
Added value: +{
+ "items": {
+ "$ref": "#/$defs/__schema9"
+ },
+ "type": "array"
+}
addedInput schema / $defs / __schema74
Added value: +{
+ "additionalProperties": false,
+ "description": "Add a timeline marker (a named time point/range; carry extensions in `metadata`).",
+ "properties": {
+ "marker": {
+ "$ref": "#/$defs/__schema76"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema75"
+ }
+ },
+ "required": [
+ "type",
+ "marker"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema75
Added value: +{
+ "const": "addMarker",
+ "type": "string"
+}
addedInput schema / $defs / __schema76
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "endTime": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "id": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "metadata": {
+ "additionalProperties": {},
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "name": {
+ "type": "string"
+ },
+ "startTime": {
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "id",
+ "startTime",
+ "kind"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema77
Added value: +{
+ "additionalProperties": false,
+ "description": "Remove a marker by id.",
+ "properties": {
+ "markerId": {
+ "$ref": "#/$defs/__schema79"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema78"
+ }
+ },
+ "required": [
+ "type",
+ "markerId"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema78
Added value: +{
+ "const": "removeMarker",
+ "type": "string"
+}
addedInput schema / $defs / __schema79
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema8
Added value: +{
+ "const": "clip.add",
+ "type": "string"
+}
addedInput schema / $defs / __schema80
Added value: +{
+ "additionalProperties": false,
+ "description": "Patch a marker's fields by id (partial merge).",
+ "properties": {
+ "markerId": {
+ "$ref": "#/$defs/__schema82"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema81"
+ },
+ "updates": {
+ "$ref": "#/$defs/__schema83"
+ }
+ },
+ "required": [
+ "type",
+ "markerId",
+ "updates"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema81
Added value: +{
+ "const": "updateMarker",
+ "type": "string"
+}
addedInput schema / $defs / __schema82
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema83
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "endTime": {
+ "minimum": 0,
+ "type": "number"
+ },
+ "id": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "kind": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "metadata": {
+ "additionalProperties": {},
+ "properties": {},
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "name": {
+ "type": "string"
+ },
+ "startTime": {
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+}
addedInput schema / $defs / __schema84
Added value: +{
+ "additionalProperties": false,
+ "description": "Set (or CLEAR, with `segments: null`) the camera/reframe channel on a MEDIA clip — the time-aligned source→output viewport (focus, zoom, ease, bias). This is the PREFERRED way to author reframing; do NOT reframe via a whole-source `clip.update` patch. Segments tile the clip's duration.",
+ "properties": {
+ "clipId": {
+ "$ref": "#/$defs/__schema86"
+ },
+ "segments": {
+ "$ref": "#/$defs/__schema87"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema85"
+ }
+ },
+ "required": [
+ "type",
+ "clipId",
+ "segments"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema85
Added value: +{
+ "const": "setCropIntents",
+ "type": "string"
+}
addedInput schema / $defs / __schema86
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema87
Added value: +{
+ "anyOf": [
+ {
+ "items": {
+ "$ref": "#/$defs/__schema11"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ]
+}
addedInput schema / $defs / __schema88
Added value: +{
+ "additionalProperties": false,
+ "description": "Set (or CLEAR, with `effects: []`) a clip's EFFECT channel — the pinned component clip wrappers stacked onto that clip, each `{id, component, window}`: a unique `id`, the wrapper component's execution pin as `component`, and `window: {startTime, duration}` in seconds. The built-in primitive effects were removed: a stored one reads, and save and render refuse it (`effect_retired`), so clear it with `effects: []`. WHOLESALE: the array REPLACES the clip's current effects, so send the full stack (read the clip first to add one). This is the ONLY way to change effects on an existing clip — do NOT reach for a `clip.update` patch, whose top-level merge is the source-clobbering footgun documented above.",
+ "properties": {
+ "clipId": {
+ "$ref": "#/$defs/__schema90"
+ },
+ "effects": {
+ "$ref": "#/$defs/__schema91"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema89"
+ }
+ },
+ "required": [
+ "type",
+ "clipId",
+ "effects"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema89
Added value: +{
+ "const": "setEffects",
+ "type": "string"
+}
addedInput schema / $defs / __schema9
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": {
+ "$ref": "#/$defs/__schema37"
+ },
+ "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": {
+ "$ref": "#/$defs/__schema10"
+ },
+ "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 / __schema90
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema91
Added value: +{
+ "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"
+}
addedInput schema / $defs / __schema92
Added value: +{
+ "additionalProperties": false,
+ "description": "Set (or CLEAR, with `inputTransform: null`) how a MEDIA's pixels are decoded into the working color space, for every clip of that media: `{version: 1, id, table?, ycbcr?}` with `id` one of rec709, insta360-ilog, custom-lut, apple-log. `custom-lut` is a camera LUT (log → Rec.709, e.g. DJI's D-Log M LUT): it requires `table: {mediaId, sha256, enabled}` naming an uploaded .cube LUT, and its output is read as Rec.709 footage; the others take no table. `ycbcr: {matrix, range}` overrides the source's signalled YCbCr matrix and range. The entry lives in the composition's `media` map; the media must be used by a clip in this composition, and removing its last clip removes the entry. To set a camera input for many media, send one `setMediaInputTransform` per media in a single `apply_composition` call.",
+ "properties": {
+ "inputTransform": {
+ "$ref": "#/$defs/__schema95"
+ },
+ "mediaId": {
+ "$ref": "#/$defs/__schema94"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema93"
+ }
+ },
+ "required": [
+ "type",
+ "mediaId",
+ "inputTransform"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema93
Added value: +{
+ "const": "setMediaInputTransform",
+ "type": "string"
+}
addedInput schema / $defs / __schema94
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema95
Added value: +{
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "enum": [
+ "rec709",
+ "insta360-ilog",
+ "custom-lut",
+ "apple-log"
+ ],
+ "type": "string"
+ },
+ "table": {
+ "additionalProperties": false,
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "mediaId": {
+ "type": "string"
+ },
+ "sha256": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "mediaId",
+ "sha256",
+ "enabled"
+ ],
+ "type": "object"
+ },
+ "version": {
+ "const": 1,
+ "type": "number"
+ },
+ "ycbcr": {
+ "additionalProperties": false,
+ "properties": {
+ "matrix": {
+ "enum": [
+ "bt709",
+ "bt2020",
+ "bt601"
+ ],
+ "type": "string"
+ },
+ "range": {
+ "enum": [
+ "limited",
+ "full"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "matrix",
+ "range"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "version",
+ "id"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+}
addedInput schema / $defs / __schema96
Added value: +{
+ "additionalProperties": false,
+ "description": "Set (or CLEAR, with `color: null`) a video media clip's color correction, WHOLESALE: `{version: 1, enabled, grade, looks, display?, creative?}`. `grade` holds every primary control: `exposure` in stops (-4..4) and `contrast`, `highlights`, `shadows`, `whites`, `blacks`, `temperature`, `tint`, `vibrance`, `saturation` each -1..1 (0 = neutral). `looks` (at most 2), `display` and `creative` name uploaded .cube LUTs as `{mediaId, sha256, enabled}`; `creative` adds `strength` 0..1. `display` may instead name a bundled film look as `{bundled, enabled}`, `bundled` one of daylight-negative, tungsten-negative, soft-negative, slide, black-and-white. `halation?: {enabled, amount 0..0.5, radius (picture heights) 0.0005..0.02, threshold 0..16, tint [r,g,b] 0..1}`; `grain?: {enabled, profile (a film look id), gauge super8|super16|super35|65mm, amount 0..2, size 0.5..4, seed uint32}`. Film presets are whole values, applied by replacing `display`, `halation` and `grain` with exactly what the preset names (absent = removed), writing only the grade keys it names, `display` as `{bundled, enabled: true}`, `halation`/`grain` with `enabled: true`, and grain `seed` kept or any uint32. Presets: {\"id\":\"daylight-negative\",\"name\":\"Daylight Negative\",\"display\":\"daylight-negative\",\"halation\":{\"amount\":0.015,\"radius\":0.0026795284030010718,\"threshold\":0,\"tint\":[1,0.33333333333333337,0]},\"grain\":{\"profile\":\"daylight-negative\",\"gauge\":\"super35\",\"amount\":1,\"size\":1}}; {\"id\":\"tungsten-negative\",\"name\":\"Tungsten Negative\",\"display\":\"tungsten-negative\",\"halation\":{\"amount\":0.015,\"radius\":0.0026795284030010718,\"threshold\":0,\"tint\":[1,0.33333333333333337,0]},\"grain\":{\"profile\":\"tungsten-negative\",\"gauge\":\"super35\",\"amount\":1,\"size\":1}}; {\"id\":\"soft-negative\",\"name\":\"Soft Negative\",\"display\":\"soft-negative\",\"halation\":{\"amount\":0.015,\"radius\":0.0034833869239013935,\"threshold\":0,\"tint\":[1,0.33333333333333337,0]},\"grain\":{\"profile\":\"soft-negative\",\"gauge\":\"super35\",\"amount\":1,\"size\":1}}; {\"id\":\"slide\",\"name\":\"Slide\",\"display\":\"slide\",\"halation\":{\"amount\":0.015,\"radius\":0.0034833869239013935,\"threshold\":0,\"tint\":[1,0.33333333333333337,0]},\"grain\":{\"profile\":\"slide\",\"gauge\":\"super35\",\"amount\":1,\"size\":1}}; {\"id\":\"black-and-white\",\"name\":\"Black and White\",\"display\":\"black-and-white\",\"halation\":{\"amount\":0.015,\"radius\":0.0026795284030010718,\"threshold\":0,\"tint\":[1,0.33333333333333337,0]},\"grain\":{\"profile\":\"black-and-white\",\"gauge\":\"super35\",\"amount\":1,\"size\":1}}; {\"id\":\"grain-only-fine\",\"name\":\"Fine grain\",\"grain\":{\"profile\":\"daylight-negative\",\"gauge\":\"65mm\",\"amount\":1,\"size\":1}}; {\"id\":\"halation-only\",\"name\":\"Halation\",\"halation\":{\"amount\":0.08,\"radius\":0.0026795284030010718,\"threshold\":0,\"tint\":[1,0.25,0]}}. `enabled: false` bypasses the whole correction. Only a media clip on a video track takes color.",
+ "properties": {
+ "clipId": {
+ "$ref": "#/$defs/__schema98"
+ },
+ "color": {
+ "$ref": "#/$defs/__schema99"
+ },
+ "type": {
+ "$ref": "#/$defs/__schema97"
+ }
+ },
+ "required": [
+ "type",
+ "clipId",
+ "color"
+ ],
+ "type": "object"
+}
addedInput schema / $defs / __schema97
Added value: +{
+ "const": "setClipColor",
+ "type": "string"
+}
addedInput schema / $defs / __schema98
Added value: +{
+ "type": "string"
+}
addedInput schema / $defs / __schema99
Added value: +{
+ "anyOf": [
+ {
+ "$ref": "#/$defs/__schema37"
+ },
+ {
+ "type": "null"
+ }
+ ]
+}
addedInput schema / properties / body / properties / composition / properties / builtinSources / items / $ref
Added value: +"#/$defs/__schema3"
removedInput schema / properties / body / properties / composition / properties / builtinSources / items / additionalProperties
Removed value: -false
removedInput schema / properties / body / properties / composition / properties / builtinSources / items / properties
Removed value: -{
- "componentId": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "scope": {
- "additionalProperties": false,
- "properties": {
- "collection": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "const": "builtin",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "collection"
- ],
- "type": "object"
- },
- "sourceVersion": {
- "anyOf": [
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ]
- },
- "sourceVersionId": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- }
-}
removedInput schema / properties / body / properties / composition / properties / builtinSources / items / required
Removed value: -[
- "scope",
- "componentId",
- "sourceVersionId",
- "sourceVersion"
-]
removedInput schema / properties / body / properties / composition / properties / builtinSources / items / type
Removed value: -"object"
changedInput schema / properties / body / properties / composition / properties / componentExecutionVersions / anyOf
Previous value: -[
- {
- "items": false,
- "maxItems": 1,
- "minItems": 1,
- "prefixItems": [
- {
- "const": 3,
- "type": "number"
- }
- ],
- "type": "array"
- },
- {
- "items": false,
- "maxItems": 2,
- "minItems": 2,
- "prefixItems": [
- {
- "const": 3,
- "type": "number"
- },
- {
- "const": 4,
- "type": "number"
- }
- ],
- "type": "array"
- }
-]New value: +[
+ {
+ "items": false,
+ "maxItems": 1,
+ "minItems": 1,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema0"
+ }
+ ],
+ "type": "array"
+ },
+ {
+ "items": false,
+ "maxItems": 2,
+ "minItems": 2,
+ "prefixItems": [
+ {
+ "$ref": "#/$defs/__schema1"
+ },
+ {
+ "$ref": "#/$defs/__schema2"
+ }
+ ],
+ "type": "array"
+ }
+]
addedInput schema / properties / body / properties / composition / properties / concurrency / $ref
Added value: +"#/$defs/__schema4"
removedInput schema / properties / body / properties / composition / properties / concurrency / oneOf
Removed value: -[
- {
- "additionalProperties": false,
- "properties": {
- "expectedRevision": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- "mode": {
- "const": "exact",
- "type": "string"
- }
- },
- "required": [
- "mode",
- "expectedRevision"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "basis": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "key": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "token": {
- "maxLength": 65536,
- "type": "string"
- }
- },
- "required": [
- "key",
- "token"
- ],
- "type": "object"
- },
- "maxItems": 2048,
- "type": "array"
- },
- "compositionId": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "mode": {
- "const": "guarded",
- "type": "string"
- },
- "observedRevision": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "mode",
- "observedRevision",
- "basis"
- ],
- "type": "object"
- }
-]
addedInput schema / properties / body / properties / composition / properties / operations / items / $ref
Added value: +"#/$defs/__schema6"
removedInput schema / properties / body / properties / composition / properties / operations / items / additionalProperties
Removed value: -false
removedInput schema / properties / body / properties / composition / properties / operations / items / properties
Removed value: -{
- "concurrency": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "expectedRevision": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- "mode": {
- "const": "exact",
- "type": "string"
- }
- },
- "required": [
- "mode",
- "expectedRevision"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "basis": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "key": {
- "maxLength": 256,
- "minLength": 1,
- "type": "string"
- },
- "token": {
- "maxLength": 65536,
- "type": "string"
- }
- },
- "required": [
- "key",
- "token"
- ],
- "type": "object"
- },
- "maxItems": 2048,
- "type": "array"
- },
- "compositionId": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "mode": {
- "const": "guarded",
- "type": "string"
- },
- "observedRevision": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "mode",
- "observedRevision",
- "basis"
- ],
- "type": "object"
- }
- ]
- },
- "operation": {
- "description": "One scoped composition operation. Discriminated by `type` — `clip.add` / `clip.remove` / `clip.update` patch clips across any family; the rest cover markers, reframe, effects, captions, format, tracks, and the server-authoritative ripple recomputes. Every variant is `.strict()`: an unknown field is refused, not ignored.",
- "oneOf": [
- {
- "additionalProperties": false,
- "description": "Add a clip to the timeline. The clip self-routes to a track by FAMILY (`clip.kind`, else derived from `source.kind`, else the target track) — a `media` clip MUST carry `kind` (video|audio|image) or a `trackId`, else it is rejected as ambiguous. `trackId` targets an existing SAME-family track; `newTrack:true` (with optional pinned `newTrackId`) creates a fresh track of that family.",
- "properties": {
- "clip": {
- "additionalProperties": false,
- "properties": {
- "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"
- }
- },
- "required": [
- "id",
- "startTime",
- "duration",
- "source"
- ],
- "type": "object"
- },
- "newTrack": {
- "type": "boolean"
- },
- "newTrackId": {
- "type": "string"
- },
- "trackId": {
- "type": "string"
- },
- "type": {
- "const": "clip.add",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clip"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Remove a clip by id (located across every track).",
- "properties": {
- "clipId": {
- "type": "string"
- },
- "type": {
- "const": "clip.remove",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Set (or CLEAR, with `keyframes: null`) ONE keyframed channel of a clip: `opacity`, `scale`, `rotation`, `position.x`, `position.y` or `volume`, with at least two keyframes `{time, value, ease?}` in any order. `time` is seconds from the clip's own start (0 to its duration); `value` uses the property's own unit, as its scalar: opacity 0-1, scale a multiplier, rotation degrees, position.x/position.y a FRACTION of the frame (0.5 = centre, never px), volume 0-4. Each keyframe's optional `ease` shapes the segment ARRIVING at it, in HyperFrames' vocabulary: `none` (linear, the default), named eases such as `power2.out`, `back.out`, `expo.inOut`, `spring-gentle`, `hold`, or `custom(M0,0 Cx1,y1 x2,y2 1,1)` (a cubic, x in [0,1]). Before its first keyframe a channel holds its first value, after its last it holds the last; a channel OVERRIDES the clip's scalar (`opacity`, `scale`, `rotation`, `position`). The op REPLACES that property's keyframes; other channels are untouched. Volume keyframes are linear and only for a video or audio media clip. Trims and splits keep every keyframe on its content. Keyframes are stored as HyperFrames tweens (`tweens`) and automation (`automation`) on the clip; author them with this op, not `clip.update`.",
- "properties": {
- "clipId": {
- "minLength": 1,
- "type": "string"
- },
- "keyframes": {
- "anyOf": [
- {
- "items": {
- "additionalProperties": false,
- "properties": {
- "ease": {
- "type": "string"
- },
- "time": {
- "minimum": 0,
- "type": "number"
- },
- "value": {
- "type": "number"
- }
- },
- "required": [
- "time",
- "value"
- ],
- "type": "object"
- },
- "minItems": 2,
- "type": "array"
- },
- {
- "type": "null"
- }
- ]
- },
- "property": {
- "enum": [
- "opacity",
- "scale",
- "rotation",
- "position.x",
- "position.y",
- "volume"
- ],
- "type": "string"
- },
- "type": {
- "const": "clip.setKeyframes",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId",
- "property",
- "keyframes"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Patch an existing clip by id (cross-family). The patch is a partial TimelineClip. NOTE: `source` is REPLACED wholesale — the patch merges at the top level only, so a partial `source` WIPES the source fields you omit. Patch the whole source object when changing it. (To change reframe/excluded ranges, prefer setCropIntents / addExcludedRange, not a source patch.)",
- "properties": {
- "clipId": {
- "type": "string"
- },
- "patch": {
- "additionalProperties": false,
- "properties": {
- "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"
- }
- },
- "type": "object"
- },
- "type": {
- "const": "clip.update",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId",
- "patch"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Remove EVERY clip sourced from a given mediaId (e.g. after deleting that media).",
- "properties": {
- "mediaId": {
- "type": "string"
- },
- "type": {
- "const": "removeClipsByMediaId",
- "type": "string"
- }
- },
- "required": [
- "type",
- "mediaId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Replace the overlay channel wholesale with the given clips (bulk set, not a merge).",
- "properties": {
- "clips": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "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"
- }
- },
- "required": [
- "id",
- "startTime",
- "duration",
- "source"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "type": {
- "const": "loadOverlays",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clips"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Add a timeline marker (a named time point/range; carry extensions in `metadata`).",
- "properties": {
- "marker": {
- "additionalProperties": false,
- "properties": {
- "endTime": {
- "minimum": 0,
- "type": "number"
- },
- "id": {
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "minLength": 1,
- "type": "string"
- },
- "metadata": {
- "additionalProperties": {},
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "name": {
- "type": "string"
- },
- "startTime": {
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "id",
- "startTime",
- "kind"
- ],
- "type": "object"
- },
- "type": {
- "const": "addMarker",
- "type": "string"
- }
- },
- "required": [
- "type",
- "marker"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Remove a marker by id.",
- "properties": {
- "markerId": {
- "type": "string"
- },
- "type": {
- "const": "removeMarker",
- "type": "string"
- }
- },
- "required": [
- "type",
- "markerId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Patch a marker's fields by id (partial merge).",
- "properties": {
- "markerId": {
- "type": "string"
- },
- "type": {
- "const": "updateMarker",
- "type": "string"
- },
- "updates": {
- "additionalProperties": false,
- "properties": {
- "endTime": {
- "minimum": 0,
- "type": "number"
- },
- "id": {
- "minLength": 1,
- "type": "string"
- },
- "kind": {
- "minLength": 1,
- "type": "string"
- },
- "metadata": {
- "additionalProperties": {},
- "properties": {},
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
- },
- "name": {
- "type": "string"
- },
- "startTime": {
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- }
- },
- "required": [
- "type",
- "markerId",
- "updates"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Set (or CLEAR, with `segments: null`) the camera/reframe channel on a MEDIA clip — the time-aligned source→output viewport (focus, zoom, ease, bias). This is the PREFERRED way to author reframing; do NOT reframe via a whole-source `clip.update` patch. Segments tile the clip's duration.",
- "properties": {
- "clipId": {
- "type": "string"
- },
- "segments": {
- "anyOf": [
- {
- "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"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ]
- },
- "type": {
- "const": "setCropIntents",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId",
- "segments"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Set (or CLEAR, with `effects: []`) a clip's EFFECT channel — the pinned component clip wrappers stacked onto that clip, each `{id, component, window}`: a unique `id`, the wrapper component's execution pin as `component`, and `window: {startTime, duration}` in seconds. The built-in primitive effects were removed: a stored one reads, and save and render refuse it (`effect_retired`), so clear it with `effects: []`. WHOLESALE: the array REPLACES the clip's current effects, so send the full stack (read the clip first to add one). This is the ONLY way to change effects on an existing clip — do NOT reach for a `clip.update` patch, whose top-level merge is the source-clobbering footgun documented above.",
- "properties": {
- "clipId": {
- "type": "string"
- },
- "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"
- },
- "type": {
- "const": "setEffects",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId",
- "effects"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Merge style overrides (font/color/position/emphasis) onto the composition's caption layer. Partial — omitted fields keep their current value; creates the caption container if absent.",
- "properties": {
- "style": {
- "additionalProperties": {},
- "properties": {
- "annotationColor": {
- "type": "string"
- },
- "annotationStrokeWidth": {
- "description": "Annotation stroke width in its 100×100 SVG coordinate system; default 4.",
- "maximum": 12,
- "minimum": 0.5,
- "type": "number"
- },
- "annotationTexture": {
- "description": "Native annotation stroke finish; default clean.",
- "enum": [
- "clean",
- "pencil"
- ],
- "type": "string"
- },
- "backgroundColor": {
- "type": "string"
- },
- "color": {
- "minLength": 1,
- "type": "string"
- },
- "emphasisColor": {
- "type": "string"
- },
- "emphasisFontFamily": {
- "type": "string"
- },
- "emphasisFontStyle": {
- "enum": [
- "normal",
- "italic"
- ],
- "type": "string"
- },
- "emphasisFontWeight": {
- "maximum": 900,
- "minimum": 100,
- "type": "integer"
- },
- "emphasisGradient": {
- "type": "string"
- },
- "emphasisLetterSpacing": {
- "type": "number"
- },
- "emphasisPlate": {
- "type": "boolean"
- },
- "emphasisPlateAltColor": {
- "type": "string"
- },
- "emphasisPlateAltTextColor": {
- "type": "string"
- },
- "emphasisPlateColor": {
- "type": "string"
- },
- "emphasisPlatePadX": {
- "type": "number"
- },
- "emphasisPlatePadY": {
- "type": "number"
- },
- "emphasisPlateRadius": {
- "minimum": 0,
- "type": "number"
- },
- "emphasisPlateReveal": {
- "description": "Grow a shared emphasis plate as saved words appear while reserving its final layout width.",
- "type": "boolean"
- },
- "emphasisPlateTextColor": {
- "type": "string"
- },
- "emphasisScale": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "emphasisTextTransform": {
- "enum": [
- "none",
- "uppercase",
- "capitalize"
- ],
- "type": "string"
- },
- "entrance": {
- "enum": [
- "none",
- "fade",
- "word-pop",
- "stagger-up"
- ],
- "type": "string"
- },
- "entranceMs": {
- "minimum": 0,
- "type": "number"
- },
- "entranceStaggerMs": {
- "minimum": 0,
- "type": "number"
- },
- "exitMs": {
- "minimum": 0,
- "type": "number"
- },
- "fontFamily": {
- "minLength": 1,
- "type": "string"
- },
- "fontSize": {
- "description": "Font size as % of composition height (1-15, default 5). NOT px.",
- "maximum": 15,
- "minimum": 1,
- "type": "number"
- },
- "fontWeight": {
- "maximum": 900,
- "minimum": 100,
- "type": "integer"
- },
- "highlightColor": {
- "minLength": 1,
- "type": "string"
- },
- "letterSpacing": {
- "description": "Base caption glyph spacing in pixels.",
- "maximum": 20,
- "minimum": -5,
- "type": "number"
- },
- "lineGapEm": {
- "description": "Gap between caption lines as a multiple of base font size; default 0.25.",
- "maximum": 2,
- "minimum": 0,
- "type": "number"
- },
- "maxWidthPercent": {
- "exclusiveMinimum": 0,
- "maximum": 100,
- "type": "number"
- },
- "plate": {
- "enum": [
- "glass",
- "solid",
- "none"
- ],
- "type": "string"
- },
- "position": {
- "enum": [
- "top",
- "center",
- "bottom"
- ],
- "type": "string"
- },
- "region": {
- "additionalProperties": {},
- "description": "Optional caption layout box {x,y,w,h} in normalized output-frame coordinates. Overrides position; text starts at its top edge and wraps/pages within its width and height.",
- "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"
- },
- "textTransform": {
- "enum": [
- "none",
- "uppercase",
- "capitalize"
- ],
- "type": "string"
- },
- "wordGapEm": {
- "description": "Gap between caption runs as a multiple of base font size; default 0.35.",
- "maximum": 2,
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- "type": {
- "const": "setCaptionStyle",
- "type": "string"
- }
- },
- "required": [
- "type",
- "style"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Set the caption compositing plane. Use `behind-subject` to place captions behind the segmented foreground subject; use `front` for conventional captions above all video layers.",
- "properties": {
- "type": {
- "const": "setCaptionDepth",
- "type": "string"
- },
- "zPlane": {
- "enum": [
- "front",
- "behind-subject"
- ],
- "type": "string"
- }
- },
- "required": [
- "type",
- "zPlane"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Replace the caption SEGMENTS wholesale — author the word-timed caption layer directly (each segment = one sentence/page of `words` with timeline-ms `startMs`/`endMs`, optional `emphasis`). This is how a client with its OWN word timings (e.g. a generated VO take) gets word-synced captions without a source transcript; the compose lane's transcript slice writes the same layer. `style`, when given, merges with setCaptionStyle semantics; an omitted style keeps the existing one. Renderer paginates within a segment and never pools words across two — keep segments sentence-bounded.",
- "properties": {
- "segments": {
- "items": {
- "additionalProperties": {},
- "properties": {
- "words": {
- "items": {
- "additionalProperties": {},
- "properties": {
- "annotate": {
- "enum": [
- "circle",
- "underline"
- ],
- "type": "string"
- },
- "emphasis": {
- "type": "boolean"
- },
- "endMs": {
- "description": "Word end on the composition timeline, in milliseconds.",
- "minimum": 0,
- "type": "number"
- },
- "startMs": {
- "description": "Word start on the composition timeline, in milliseconds.",
- "minimum": 0,
- "type": "number"
- },
- "text": {
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "text",
- "startMs",
- "endMs"
- ],
- "type": "object"
- },
- "type": "array"
- }
- },
- "required": [
- "words"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "style": {
- "additionalProperties": {},
- "properties": {
- "annotationColor": {
- "type": "string"
- },
- "annotationStrokeWidth": {
- "description": "Annotation stroke width in its 100×100 SVG coordinate system; default 4.",
- "maximum": 12,
- "minimum": 0.5,
- "type": "number"
- },
- "annotationTexture": {
- "description": "Native annotation stroke finish; default clean.",
- "enum": [
- "clean",
- "pencil"
- ],
- "type": "string"
- },
- "backgroundColor": {
- "type": "string"
- },
- "color": {
- "minLength": 1,
- "type": "string"
- },
- "emphasisColor": {
- "type": "string"
- },
- "emphasisFontFamily": {
- "type": "string"
- },
- "emphasisFontStyle": {
- "enum": [
- "normal",
- "italic"
- ],
- "type": "string"
- },
- "emphasisFontWeight": {
- "maximum": 900,
- "minimum": 100,
- "type": "integer"
- },
- "emphasisGradient": {
- "type": "string"
- },
- "emphasisLetterSpacing": {
- "type": "number"
- },
- "emphasisPlate": {
- "type": "boolean"
- },
- "emphasisPlateAltColor": {
- "type": "string"
- },
- "emphasisPlateAltTextColor": {
- "type": "string"
- },
- "emphasisPlateColor": {
- "type": "string"
- },
- "emphasisPlatePadX": {
- "type": "number"
- },
- "emphasisPlatePadY": {
- "type": "number"
- },
- "emphasisPlateRadius": {
- "minimum": 0,
- "type": "number"
- },
- "emphasisPlateReveal": {
- "description": "Grow a shared emphasis plate as saved words appear while reserving its final layout width.",
- "type": "boolean"
- },
- "emphasisPlateTextColor": {
- "type": "string"
- },
- "emphasisScale": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "emphasisTextTransform": {
- "enum": [
- "none",
- "uppercase",
- "capitalize"
- ],
- "type": "string"
- },
- "entrance": {
- "enum": [
- "none",
- "fade",
- "word-pop",
- "stagger-up"
- ],
- "type": "string"
- },
- "entranceMs": {
- "minimum": 0,
- "type": "number"
- },
- "entranceStaggerMs": {
- "minimum": 0,
- "type": "number"
- },
- "exitMs": {
- "minimum": 0,
- "type": "number"
- },
- "fontFamily": {
- "minLength": 1,
- "type": "string"
- },
- "fontSize": {
- "description": "Font size as % of composition height (1-15, default 5). NOT px.",
- "maximum": 15,
- "minimum": 1,
- "type": "number"
- },
- "fontWeight": {
- "maximum": 900,
- "minimum": 100,
- "type": "integer"
- },
- "highlightColor": {
- "minLength": 1,
- "type": "string"
- },
- "letterSpacing": {
- "description": "Base caption glyph spacing in pixels.",
- "maximum": 20,
- "minimum": -5,
- "type": "number"
- },
- "lineGapEm": {
- "description": "Gap between caption lines as a multiple of base font size; default 0.25.",
- "maximum": 2,
- "minimum": 0,
- "type": "number"
- },
- "maxWidthPercent": {
- "exclusiveMinimum": 0,
- "maximum": 100,
- "type": "number"
- },
- "plate": {
- "enum": [
- "glass",
- "solid",
- "none"
- ],
- "type": "string"
- },
- "position": {
- "enum": [
- "top",
- "center",
- "bottom"
- ],
- "type": "string"
- },
- "region": {
- "additionalProperties": {},
- "description": "Optional caption layout box {x,y,w,h} in normalized output-frame coordinates. Overrides position; text starts at its top edge and wraps/pages within its width and height.",
- "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"
- },
- "textTransform": {
- "enum": [
- "none",
- "uppercase",
- "capitalize"
- ],
- "type": "string"
- },
- "wordGapEm": {
- "description": "Gap between caption runs as a multiple of base font size; default 0.35.",
- "maximum": 2,
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- "type": {
- "const": "setCaptions",
- "type": "string"
- }
- },
- "required": [
- "type",
- "segments"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Replace native caption placements without changing transcript words or timings. Each layout references a half-open word-index range in one saved segment; a one-word range is valid. region places that group independently, optional bounded scale/rotation/style changes its look, and holdThroughWordIndex keeps it visible through a later saved word in the same segment. All words in a placed range occupy one page; rendering refuses a range that cannot fit its box, so enlarge region or split the range. The box reserves horizontal space of 1.6 font sizes and vertical space of 0.8 font sizes for padding, with at most three lines. Unreferenced words keep the default caption layout. Word ranges must not overlap. Reapply after caption regeneration or timeline cuts.",
- "properties": {
- "layouts": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "holdThroughWordIndex": {
- "description": "Inclusive saved-word index in this segment. The layout stays visible until that word ends.",
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- "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": {
- "maximum": 45,
- "minimum": -45,
- "type": "number"
- },
- "scale": {
- "maximum": 4,
- "minimum": 0.25,
- "type": "number"
- },
- "segmentIndex": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- },
- "style": {
- "additionalProperties": false,
- "properties": {
- "annotationColor": {
- "type": "string"
- },
- "annotationStrokeWidth": {
- "description": "Annotation stroke width in its 100×100 SVG coordinate system; default 4.",
- "maximum": 12,
- "minimum": 0.5,
- "type": "number"
- },
- "annotationTexture": {
- "description": "Native annotation stroke finish; default clean.",
- "enum": [
- "clean",
- "pencil"
- ],
- "type": "string"
- },
- "backgroundColor": {
- "type": "string"
- },
- "color": {
- "minLength": 1,
- "type": "string"
- },
- "emphasisColor": {
- "type": "string"
- },
- "emphasisFontFamily": {
- "type": "string"
- },
- "emphasisFontStyle": {
- "enum": [
- "normal",
- "italic"
- ],
- "type": "string"
- },
- "emphasisFontWeight": {
- "maximum": 900,
- "minimum": 100,
- "type": "integer"
- },
- "emphasisLetterSpacing": {
- "type": "number"
- },
- "emphasisPlate": {
- "type": "boolean"
- },
- "emphasisPlateAltColor": {
- "type": "string"
- },
- "emphasisPlateAltTextColor": {
- "type": "string"
- },
- "emphasisPlateColor": {
- "type": "string"
- },
- "emphasisPlatePadX": {
- "type": "number"
- },
- "emphasisPlatePadY": {
- "type": "number"
- },
- "emphasisPlateRadius": {
- "minimum": 0,
- "type": "number"
- },
- "emphasisPlateReveal": {
- "description": "Grow a shared emphasis plate as saved words appear while reserving its final layout width.",
- "type": "boolean"
- },
- "emphasisPlateTextColor": {
- "type": "string"
- },
- "emphasisScale": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "emphasisTextTransform": {
- "enum": [
- "none",
- "uppercase",
- "capitalize"
- ],
- "type": "string"
- },
- "entrance": {
- "enum": [
- "none",
- "fade",
- "word-pop",
- "stagger-up"
- ],
- "type": "string"
- },
- "entranceMs": {
- "minimum": 0,
- "type": "number"
- },
- "entranceStaggerMs": {
- "minimum": 0,
- "type": "number"
- },
- "exitMs": {
- "minimum": 0,
- "type": "number"
- },
- "fontFamily": {
- "minLength": 1,
- "type": "string"
- },
- "fontSize": {
- "description": "Font size as % of composition height (1-15, default 5). NOT px.",
- "maximum": 15,
- "minimum": 1,
- "type": "number"
- },
- "fontWeight": {
- "maximum": 900,
- "minimum": 100,
- "type": "integer"
- },
- "highlightColor": {
- "minLength": 1,
- "type": "string"
- },
- "letterSpacing": {
- "description": "Base caption glyph spacing in pixels.",
- "maximum": 20,
- "minimum": -5,
- "type": "number"
- },
- "lineGapEm": {
- "description": "Gap between caption lines as a multiple of base font size; default 0.25.",
- "maximum": 2,
- "minimum": 0,
- "type": "number"
- },
- "plate": {
- "enum": [
- "glass",
- "solid",
- "none"
- ],
- "type": "string"
- },
- "textTransform": {
- "enum": [
- "none",
- "uppercase",
- "capitalize"
- ],
- "type": "string"
- },
- "wordGapEm": {
- "description": "Gap between caption runs as a multiple of base font size; default 0.35.",
- "maximum": 2,
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- "wordEndIndex": {
- "description": "Exclusive word index in the saved caption segment.",
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "wordMarks": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "annotate": {
- "anyOf": [
- {
- "enum": [
- "circle",
- "underline"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "emphasis": {
- "type": "boolean"
- },
- "wordIndex": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "wordIndex"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "wordStartIndex": {
- "maximum": 9007199254740991,
- "minimum": 0,
- "type": "integer"
- }
- },
- "required": [
- "segmentIndex",
- "wordStartIndex",
- "wordEndIndex",
- "region"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "type": {
- "const": "setCaptionLayouts",
- "type": "string"
- }
- },
- "required": [
- "type",
- "layouts"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Author a scene shot and place it on a dedicated overlay track. The host validates the scene, generates and registers an immutable wrapper component source, and emits the ordinary track/clip operations carrying `props.componentRef` — you edit a scene SPEC, never wrapper TSX or a source hash. Registration and the composition update are ONE undoable edit; a failure publishes nothing and leaves no clip pointing at an unresolved source. Pass EXACTLY ONE of `trackId` (an existing dedicated scene track) or `newTrack: true` (mint one). That track holds scene-shot clips and gaps only — no generic component/primitive/media clips in v1 — and existing generic overlay tracks are unaffected. Scene clips use front zPlane and full-frame placement: outer per-clip `region`, `position`, `scale`, `rotation`, `fit`, `effects`, keyframes (`tweens`/`automation`), `params.transition`, `params.sequenceGroup` and internal fadeIn/fadeOut are REFUSED with a path, because the shot's own layer transforms are the single transform owner. TEXT: `space: \"screen\"` text is composed above the world result, stays fixed in the frame and stays sharp through focus; `space: \"world\"` text is rasterized into the 3D scene, moves with the camera and is occluded by geometry. Screenshots and world text are UNLIT and colour-managed so product UI colours are not tinted by the studio lighting, while device bodies are lit and cast shadows; an unlit surface still occludes. SCOPE GAP (pre-existing, neither closed nor changed by scene shots): global wrap effects — composition-level grades and camera effects — do not reach front-overlay clips, so they do not affect a scene shot. Author the look INSIDE the shot (`post.grain`, `post.vignette`, `post.focus`, `backdrop`, `environment`) instead. DISCOVERY: there is no built-in scene primitive to look up in list_catalog; the wrapper this operation registers appears afterwards as an ordinary INSTALLED component under the existing catalog rules. ASSETS: `assets` binds each slot name a layer references to a media id in the same project, and the slot's declared KIND decides what it admits — an image slot takes PNG, JPEG or WebP, a video slot MP4 or WebM. Binding the wrong kind is refused with the slot's path.",
- "properties": {
- "assets": {
- "additionalProperties": {
- "minLength": 1,
- "type": "string"
- },
- "properties": {},
- "propertyNames": {
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "clipId": {
- "minLength": 1,
- "type": "string"
- },
- "duration": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "newTrack": {
- "type": "boolean"
- },
- "newTrackId": {
- "minLength": 1,
- "type": "string"
- },
- "scene": {
- "additionalProperties": false,
- "description": "A version-2 scene shot: a self-contained 3D world-object shot that scene.add / scene.update materializes into an ordinary component clip. The shot owns its layers, camera, lighting, backdrop and normalized local animation; the composition owns start, duration, ordering, cuts and transitions. Coordinates are REFERENCE PIXELS: origin at frame centre, +X right, +Y down, +Z toward the viewer. referenceSize must have the SAME aspect ratio as the composition format; mismatch fails instead of cropping. At equal aspect ratio the shot scales uniformly by outputWidth/referenceWidth. A segment's easing belongs to the keyframe it ARRIVES at; the first keyframe has no easing. Authoring limits: 32 layers, 4 devices, 16 distinct image slots, 256 keyframes per channel, 2048 keyframes per shot. Version 2 supports nested groups, procedural slab/page/phone/laptop objects, screen- and world-space text, admitted image/component/video surfaces, fixed photographic and generated studio environments, transparent/solid/linear/radial backdrops, constraints, focus, grain and vignette. Raw HTML, custom shader props, imported GLB models, arbitrary external HDR environments, skeletal animation and physics are refused with an exact field path.",
- "properties": {
- "animation": {
- "default": [],
- "items": {
- "additionalProperties": false,
- "properties": {
- "keyframes": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "at": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "easing": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "linear",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "hold",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "bezier",
- "type": "string"
- },
- "x1": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "x2": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "y1": {
- "maximum": 5,
- "minimum": -4,
- "type": "number"
- },
- "y2": {
- "maximum": 5,
- "minimum": -4,
- "type": "number"
- }
- },
- "required": [
- "kind",
- "x1",
- "y1",
- "x2",
- "y2"
- ],
- "type": "object"
- }
- ]
- },
- "value": {
- "type": "number"
- }
- },
- "required": [
- "at",
- "value"
- ],
- "type": "object"
- },
- "maxItems": 256,
- "minItems": 1,
- "type": "array"
- },
- "property": {
- "enum": [
- "positionX",
- "positionY",
- "positionZ",
- "rotationX",
- "rotationY",
- "rotationZ",
- "fov",
- "scale",
- "opacity",
- "openAngle",
- "x",
- "y",
- "rotation",
- "intensity",
- "distance",
- "range",
- "maxBlur"
- ],
- "type": "string"
- },
- "target": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "camera",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "layer",
- "type": "string"
- },
- "layerId": {
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "layerId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "environment",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "focus",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "target",
- "property",
- "keyframes"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "backdrop": {
- "default": {
- "kind": "transparent"
- },
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "transparent",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "kind": {
- "const": "solid",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "color"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "angle": {
- "default": 0,
- "type": "number"
- },
- "kind": {
- "const": "linear",
- "type": "string"
- },
- "stops": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "at": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- }
- },
- "required": [
- "at",
- "color"
- ],
- "type": "object"
- },
- "maxItems": 8,
- "minItems": 2,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stops"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "at": {
- "default": [
- 0.5,
- 0.5
- ],
- "items": false,
- "maxItems": 2,
- "minItems": 2,
- "prefixItems": [
- {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- ],
- "type": "array"
- },
- "kind": {
- "const": "radial",
- "type": "string"
- },
- "stops": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "at": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- }
- },
- "required": [
- "at",
- "color"
- ],
- "type": "object"
- },
- "maxItems": 8,
- "minItems": 2,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stops"
- ],
- "type": "object"
- }
- ]
- },
- "camera": {
- "additionalProperties": false,
- "properties": {
- "fov": {
- "maximum": 1.3962634015954636,
- "minimum": 0.3141592653589793,
- "type": "number"
- },
- "position": {
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "rotation": {
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- }
- },
- "type": "object"
- },
- "constraints": {
- "default": [],
- "items": {
- "additionalProperties": false,
- "properties": {
- "gap": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "kind": {
- "const": "minSeparation",
- "type": "string"
- },
- "objects": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "minItems": 2,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "objects",
- "gap"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "environment": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "floorY": {
- "default": -420,
- "type": "number"
- },
- "intensity": {
- "default": 1,
- "minimum": 0,
- "type": "number"
- },
- "kind": {
- "const": "studio",
- "type": "string"
- },
- "lightingProfile": {
- "default": "studio",
- "enum": [
- "studio",
- "studio-edge"
- ],
- "type": "string"
- },
- "preset": {
- "default": "soft",
- "enum": [
- "soft",
- "key",
- "rim"
- ],
- "type": "string"
- },
- "shadowOpacity": {
- "default": 0.5,
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "photographic-studio-v1",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- }
- ],
- "default": {
- "floorY": -420,
- "intensity": 1,
- "lightingProfile": "studio",
- "preset": "soft",
- "shadowOpacity": 0.5
- }
- },
- "layers": {
- "items": {
- "$ref": "#/$defs/__schema1"
- },
- "minItems": 1,
- "type": "array"
- },
- "post": {
- "additionalProperties": false,
- "default": {
- "focus": null,
- "grain": 0,
- "vignette": 0
- },
- "properties": {
- "focus": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "distance": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "maxBlur": {
- "maximum": 64,
- "minimum": 0,
- "type": "number"
- },
- "range": {
- "exclusiveMinimum": 0,
- "type": "number"
- }
- },
- "required": [
- "distance",
- "range",
- "maxBlur"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "grain": {
- "default": 0,
- "maximum": 0.5,
- "minimum": 0,
- "type": "number"
- },
- "vignette": {
- "default": 0,
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- "referenceSize": {
- "additionalProperties": false,
- "properties": {
- "height": {
- "maximum": 8192,
- "minimum": 16,
- "type": "integer"
- },
- "width": {
- "maximum": 8192,
- "minimum": 16,
- "type": "integer"
- }
- },
- "required": [
- "width",
- "height"
- ],
- "type": "object"
- },
- "version": {
- "const": 2,
- "type": "number"
- }
- },
- "required": [
- "version",
- "referenceSize",
- "layers"
- ],
- "type": "object"
- },
- "startTime": {
- "minimum": 0,
- "type": "number"
- },
- "trackId": {
- "minLength": 1,
- "type": "string"
- },
- "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"
- },
- "type": {
- "const": "scene.add",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId",
- "startTime",
- "duration",
- "scene",
- "assets"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Revise a scene shot in place by clip id. Send a replacement `scene` and/or `assets`; timing changes use the ordinary clip timing fields (`startTime`, `duration`, `transitionIn`). Omitted fields keep their persisted values and the MERGED result is re-validated as a whole, so a partial edit cannot leave the shot invalid. Changing only values or asset IDs updates props and bindings and REUSES the pinned source; changing the referenced SLOT SET regenerates the wrapper manifest and registers a new immutable source version atomically. Undo restores the source reference, spec, bindings and timing together. Topology, asset bindings, text content, font properties, device kind and colours are STATIC within a shot's animation — change them here (a revised spec) rather than trying to animate them. This is not a source trim or slip: a shortened or extended clip resamples the SAME normalized animation over its new duration, and trim/slip requests on generated animation are rejected rather than reinterpreted as media trims. In one batch, `scene.update` may target a shot added by an earlier `scene.add`. ASSETS: `assets` binds each slot name a layer references to a media id in the same project, and the slot's declared KIND decides what it admits — an image slot takes PNG, JPEG or WebP, a video slot MP4 or WebM. Binding the wrong kind is refused with the slot's path.",
- "properties": {
- "assets": {
- "additionalProperties": {
- "minLength": 1,
- "type": "string"
- },
- "properties": {},
- "propertyNames": {
- "minLength": 1,
- "type": "string"
- },
- "type": "object"
- },
- "clipId": {
- "minLength": 1,
- "type": "string"
- },
- "duration": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "scene": {
- "additionalProperties": false,
- "description": "A version-2 scene shot: a self-contained 3D world-object shot that scene.add / scene.update materializes into an ordinary component clip. The shot owns its layers, camera, lighting, backdrop and normalized local animation; the composition owns start, duration, ordering, cuts and transitions. Coordinates are REFERENCE PIXELS: origin at frame centre, +X right, +Y down, +Z toward the viewer. referenceSize must have the SAME aspect ratio as the composition format; mismatch fails instead of cropping. At equal aspect ratio the shot scales uniformly by outputWidth/referenceWidth. A segment's easing belongs to the keyframe it ARRIVES at; the first keyframe has no easing. Authoring limits: 32 layers, 4 devices, 16 distinct image slots, 256 keyframes per channel, 2048 keyframes per shot. Version 2 supports nested groups, procedural slab/page/phone/laptop objects, screen- and world-space text, admitted image/component/video surfaces, fixed photographic and generated studio environments, transparent/solid/linear/radial backdrops, constraints, focus, grain and vignette. Raw HTML, custom shader props, imported GLB models, arbitrary external HDR environments, skeletal animation and physics are refused with an exact field path.",
- "properties": {
- "animation": {
- "default": [],
- "items": {
- "additionalProperties": false,
- "properties": {
- "keyframes": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "at": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "easing": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "linear",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "hold",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "bezier",
- "type": "string"
- },
- "x1": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "x2": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "y1": {
- "maximum": 5,
- "minimum": -4,
- "type": "number"
- },
- "y2": {
- "maximum": 5,
- "minimum": -4,
- "type": "number"
- }
- },
- "required": [
- "kind",
- "x1",
- "y1",
- "x2",
- "y2"
- ],
- "type": "object"
- }
- ]
- },
- "value": {
- "type": "number"
- }
- },
- "required": [
- "at",
- "value"
- ],
- "type": "object"
- },
- "maxItems": 256,
- "minItems": 1,
- "type": "array"
- },
- "property": {
- "enum": [
- "positionX",
- "positionY",
- "positionZ",
- "rotationX",
- "rotationY",
- "rotationZ",
- "fov",
- "scale",
- "opacity",
- "openAngle",
- "x",
- "y",
- "rotation",
- "intensity",
- "distance",
- "range",
- "maxBlur"
- ],
- "type": "string"
- },
- "target": {
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "camera",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "layer",
- "type": "string"
- },
- "layerId": {
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "layerId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "environment",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "focus",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- }
- ]
- }
- },
- "required": [
- "target",
- "property",
- "keyframes"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "backdrop": {
- "default": {
- "kind": "transparent"
- },
- "oneOf": [
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "transparent",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- },
- "kind": {
- "const": "solid",
- "type": "string"
- }
- },
- "required": [
- "kind",
- "color"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "angle": {
- "default": 0,
- "type": "number"
- },
- "kind": {
- "const": "linear",
- "type": "string"
- },
- "stops": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "at": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- }
- },
- "required": [
- "at",
- "color"
- ],
- "type": "object"
- },
- "maxItems": 8,
- "minItems": 2,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stops"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "at": {
- "default": [
- 0.5,
- 0.5
- ],
- "items": false,
- "maxItems": 2,
- "minItems": 2,
- "prefixItems": [
- {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- ],
- "type": "array"
- },
- "kind": {
- "const": "radial",
- "type": "string"
- },
- "stops": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "at": {
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "color": {
- "anyOf": [
- {
- "pattern": "^#(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
- "type": "string"
- },
- {
- "enum": [
- "$brand:colors.background",
- "$brand:colors.surface",
- "$brand:colors.text",
- "$brand:colors.textMuted",
- "$brand:colors.accent",
- "$brand:colors.accentStrong",
- "$brand:colors.accentSoft",
- "$brand:colors.success",
- "$brand:colors.warning",
- "$brand:colors.danger"
- ],
- "type": "string"
- }
- ]
- }
- },
- "required": [
- "at",
- "color"
- ],
- "type": "object"
- },
- "maxItems": 8,
- "minItems": 2,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "stops"
- ],
- "type": "object"
- }
- ]
- },
- "camera": {
- "additionalProperties": false,
- "properties": {
- "fov": {
- "maximum": 1.3962634015954636,
- "minimum": 0.3141592653589793,
- "type": "number"
- },
- "position": {
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- },
- "rotation": {
- "items": false,
- "maxItems": 3,
- "minItems": 3,
- "prefixItems": [
- {
- "type": "number"
- },
- {
- "type": "number"
- },
- {
- "type": "number"
- }
- ],
- "type": "array"
- }
- },
- "type": "object"
- },
- "constraints": {
- "default": [],
- "items": {
- "additionalProperties": false,
- "properties": {
- "gap": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "kind": {
- "const": "minSeparation",
- "type": "string"
- },
- "objects": {
- "items": {
- "maxLength": 64,
- "minLength": 1,
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]*$",
- "type": "string"
- },
- "minItems": 2,
- "type": "array"
- }
- },
- "required": [
- "kind",
- "objects",
- "gap"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "environment": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "floorY": {
- "default": -420,
- "type": "number"
- },
- "intensity": {
- "default": 1,
- "minimum": 0,
- "type": "number"
- },
- "kind": {
- "const": "studio",
- "type": "string"
- },
- "lightingProfile": {
- "default": "studio",
- "enum": [
- "studio",
- "studio-edge"
- ],
- "type": "string"
- },
- "preset": {
- "default": "soft",
- "enum": [
- "soft",
- "key",
- "rim"
- ],
- "type": "string"
- },
- "shadowOpacity": {
- "default": 0.5,
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "kind": {
- "const": "photographic-studio-v1",
- "type": "string"
- }
- },
- "required": [
- "kind"
- ],
- "type": "object"
- }
- ],
- "default": {
- "floorY": -420,
- "intensity": 1,
- "lightingProfile": "studio",
- "preset": "soft",
- "shadowOpacity": 0.5
- }
- },
- "layers": {
- "items": {
- "$ref": "#/$defs/__schema1"
- },
- "minItems": 1,
- "type": "array"
- },
- "post": {
- "additionalProperties": false,
- "default": {
- "focus": null,
- "grain": 0,
- "vignette": 0
- },
- "properties": {
- "focus": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "distance": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "maxBlur": {
- "maximum": 64,
- "minimum": 0,
- "type": "number"
- },
- "range": {
- "exclusiveMinimum": 0,
- "type": "number"
- }
- },
- "required": [
- "distance",
- "range",
- "maxBlur"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "grain": {
- "default": 0,
- "maximum": 0.5,
- "minimum": 0,
- "type": "number"
- },
- "vignette": {
- "default": 0,
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- "referenceSize": {
- "additionalProperties": false,
- "properties": {
- "height": {
- "maximum": 8192,
- "minimum": 16,
- "type": "integer"
- },
- "width": {
- "maximum": 8192,
- "minimum": 16,
- "type": "integer"
- }
- },
- "required": [
- "width",
- "height"
- ],
- "type": "object"
- },
- "version": {
- "const": 2,
- "type": "number"
- }
- },
- "required": [
- "version",
- "referenceSize",
- "layers"
- ],
- "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"
- },
- "type": {
- "const": "scene.update",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Materialize a clip's SOURCE-media temporal GRID as timeline markers — the rhythm authority you cut to. `grid:\"beat\"` reads a MUSIC bed's beat map (get_media_context.beatGrid), `grid:\"word\"` the VO word onsets (wordGrid); each grid point is projected from media time to TIMELINE time through the clip's placement (startTime, trim, playbackRate, excludedRanges) and written as a `kind:\"beat\"|\"word\"` marker (`metadata.sourceClipId` set). Points outside the clip's visible window are skipped. Re-running REPLACES the prior markers from the same clip+grid (idempotent). Land cuts and transition MIDPOINTS on the markers (a 0.5s transition starts 0.25s before its marker). `maxMarkers` (default 500, ceiling 2000) — exceeding it fails loud with the count. `grid:\"shot\"` is not yet exposed (shot_grid_unavailable). The target must be a media clip; absent evidence fails loud (grid_unavailable) naming how to get it (declare audioRole:\"music\" at ingest / transcribe).",
- "properties": {
- "clipId": {
- "type": "string"
- },
- "grid": {
- "enum": [
- "beat",
- "word",
- "shot"
- ],
- "type": "string"
- },
- "maxMarkers": {
- "exclusiveMinimum": 0,
- "maximum": 2000,
- "type": "integer"
- },
- "type": {
- "const": "materializeGrid",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId",
- "grid"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Attach caption CONTENT from the media's cached transcript — no pasting words. ROUTE-MATERIALIZED like materializeGrid: the server slices the word-timed transcript to `window` (source seconds; absent = the whole media), rebases times, sentence-splits into segments, and applies it as `setCaptions`. 422 media_no_transcript when the media has no transcript or no words in the window. For your OWN word timings use setCaptions directly. For edited multi-clip timelines, use captions.fromComposition after saving the edits; that operation projects all selected track clips, trims, exclusions, and placements.",
- "properties": {
- "mediaId": {
- "minLength": 1,
- "type": "string"
- },
- "type": {
- "const": "captions.fromTranscript",
- "type": "string"
- },
- "window": {
- "additionalProperties": false,
- "properties": {
- "endSec": {
- "exclusiveMinimum": 0,
- "type": "number"
- },
- "startSec": {
- "minimum": 0,
- "type": "number"
- }
- },
- "required": [
- "startSec",
- "endSec"
- ],
- "type": "object"
- }
- },
- "required": [
- "type",
- "mediaId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Snapshot word-timed captions from the SAVED edits on one explicit enabled video or audio track. The host reads each source media transcript, projects words through clip trim, excluded ranges and placement, then replaces the caption segments. This is route-materialized to setCaptions; call it AFTER persisting clip edits and call it again when those edits change. The existing caption style and depth are preserved. Missing transcripts, unsupported clips, inconsistent clip durations, and overlapping audible clips fail loud. Playback rate scales source word times and playable duration on both audio and video tracks.",
- "properties": {
- "trackId": {
- "minLength": 1,
- "type": "string"
- },
- "type": {
- "const": "captions.fromComposition",
- "type": "string"
- }
- },
- "required": [
- "type",
- "trackId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Set the output format — `aspectRatio` (16:9|9:16|1:1|4:5) plus optional `fps` and `resolution`. Merges: an omitted field keeps the current value.",
- "properties": {
- "format": {
- "additionalProperties": {},
- "properties": {
- "aspectRatio": {
- "enum": [
- "16:9",
- "9:16",
- "1:1",
- "4:5"
- ],
- "type": "string"
- },
- "fps": {
- "anyOf": [
- {
- "const": 24,
- "type": "number"
- },
- {
- "const": 25,
- "type": "number"
- },
- {
- "const": 30,
- "type": "number"
- },
- {
- "const": 60,
- "type": "number"
- }
- ]
- },
- "resolution": {
- "enum": [
- "hd",
- "fhd",
- "4k"
- ],
- "type": "string"
- }
- },
- "required": [
- "aspectRatio"
- ],
- "type": "object"
- },
- "type": {
- "const": "setFormat",
- "type": "string"
- }
- },
- "required": [
- "type",
- "format"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Add an EMPTY track of a given family (video|audio|image|overlay|effect). Optional pinned `id`. The new track is appended, so it starts at the BACK: index 0 is the top layer and higher indices are further back (see `reorderTracks`). Track order only ranks clips on the same plane — every overlay draws above the video lane unless its `zPlane` is `behind-subject`, whatever its track index.",
- "properties": {
- "id": {
- "type": "string"
- },
- "kind": {
- "enum": [
- "video",
- "audio",
- "image",
- "overlay",
- "effect"
- ],
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "type": {
- "const": "addTrack",
- "type": "string"
- }
- },
- "required": [
- "type",
- "kind"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Remove a track AND all its clips by id.",
- "properties": {
- "trackId": {
- "type": "string"
- },
- "type": {
- "const": "removeTrack",
- "type": "string"
- }
- },
- "required": [
- "type",
- "trackId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Patch a track's `name` / `enabled` by id. Track volume is retired: set each clip's own volume.",
- "properties": {
- "trackId": {
- "type": "string"
- },
- "type": {
- "const": "updateTrack",
- "type": "string"
- },
- "updates": {
- "additionalProperties": false,
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "name": {
- "type": "string"
- },
- "volume": {
- "maximum": 4,
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- }
- },
- "required": [
- "type",
- "trackId",
- "updates"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Move a track from one index to another. ORDER: index 0 is the TOP layer, not the bottom — moving a backdrop to index 0 puts it in FRONT of everything and hides the composition. Higher index = further back. PRECEDENCE: track order decides compositing only among clips on the same plane. Overlays are composited in a lane ABOVE the video lane whatever their track index; the one exception is `zPlane:\"behind-subject\"`, which moves the overlay inside its host clip, behind the segmented foreground. So if reordering tracks does not change what you see, the plane split already decided it.",
- "properties": {
- "fromIndex": {
- "type": "number"
- },
- "toIndex": {
- "type": "number"
- },
- "type": {
- "const": "reorderTracks",
- "type": "string"
- }
- },
- "required": [
- "type",
- "fromIndex",
- "toIndex"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Move a clip to another SAME-family track, optionally at a new `newStartTime`.",
- "properties": {
- "clipId": {
- "type": "string"
- },
- "newStartTime": {
- "type": "number"
- },
- "targetTrackId": {
- "type": "string"
- },
- "type": {
- "const": "moveClipToTrack",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId",
- "targetTrackId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Duplicate a clip by id. Pin `newClipId` to make the copy's id deterministic (required for a clean undo/inverse).",
- "properties": {
- "clipId": {
- "type": "string"
- },
- "newClipId": {
- "type": "string"
- },
- "type": {
- "const": "duplicateClip",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Server-authoritative: delete the [start,end] time window (seconds) and ripple every downstream clip/marker/caption earlier to close the gap.",
- "properties": {
- "end": {
- "type": "number"
- },
- "start": {
- "type": "number"
- },
- "type": {
- "const": "cutAndRipple",
- "type": "string"
- }
- },
- "required": [
- "type",
- "start",
- "end"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Server-authoritative: shift everything at/after `time` (seconds) by `amount` seconds (+ opens a gap, − closes one).",
- "properties": {
- "amount": {
- "type": "number"
- },
- "time": {
- "type": "number"
- },
- "type": {
- "const": "ripple",
- "type": "string"
- }
- },
- "required": [
- "type",
- "time",
- "amount"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Server-authoritative: exclude a [sourceStart,sourceEnd] span (seconds) of a clip's SOURCE (an internal trim) and ripple downstream — the preferred way to drop a sub-range vs a source patch.",
- "properties": {
- "clipId": {
- "type": "string"
- },
- "reason": {
- "type": "string"
- },
- "sourceEnd": {
- "type": "number"
- },
- "sourceStart": {
- "type": "number"
- },
- "type": {
- "const": "addExcludedRange",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId",
- "sourceStart",
- "sourceEnd"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Server-authoritative: remove a clip's previously-added excluded range by index (re-includes that span, ripples downstream).",
- "properties": {
- "clipId": {
- "type": "string"
- },
- "rangeIdx": {
- "type": "number"
- },
- "type": {
- "const": "removeExcludedRange",
- "type": "string"
- }
- },
- "required": [
- "type",
- "clipId",
- "rangeIdx"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "description": "Atomically repin explicit version3 invocations using complete before/after execution references and an exact composition etag. Persistence must canonically admit scoped source hashes, destination input schemas and every resulting target context before applying, including replay/undo. Never infer a latest head, downgrade versions or accept an admitted flag.",
- "properties": {
- "changes": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "after": {
- "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"
- }
- ]
- },
- "before": {
- "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"
- }
- ]
- },
- "placementId": {
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "placementId",
- "before",
- "after"
- ],
- "type": "object"
- },
- "maxItems": 512,
- "minItems": 1,
- "type": "array"
- },
- "componentId": {
- "minLength": 1,
- "type": "string"
- },
- "expectedCompositionEtag": {
- "minLength": 1,
- "type": "string"
- },
- "from": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "to": {
- "pattern": "^[a-f0-9]{64}$",
- "type": "string"
- },
- "type": {
- "const": "component.repin-v3",
- "type": "string"
- }
- },
- "required": [
- "type",
- "componentId",
- "from",
- "to",
- "expectedCompositionEtag",
- "changes"
- ],
- "type": "object"
- }
- ]
- },
- "operationId": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- }
-}
removedInput schema / properties / body / properties / composition / properties / operations / items / required
Removed value: -[
- "operationId",
- "operation"
-]
removedInput schema / properties / body / properties / composition / properties / operations / items / type
Removed value: -"object"
addedInput schema / properties / commandId / $ref
Added value: +"#/$defs/__schema276"
removedInput schema / properties / commandId / maxLength
Removed value: -128
removedInput schema / properties / commandId / minLength
Removed value: -1
removedInput schema / properties / commandId / type
Removed value: -"string"