{
"type": "object",
"additionalProperties": false,
"properties": {
"productionId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$",
"description": "ID of the saved Production whose asset context must remain pinned."
},
"operationId": {
"type": "string",
"pattern": "^[a-zA-Z0-9-]{16,64}$",
"description": "Persist a client-generated UUID before this mutation. Repeat identical inputs and this same ID after interruption; a new ID is a new request."
},
"expectedVersion": {
"type": "integer",
"minimum": 1,
"description": "Copy the current version from the latest workflow read. Refresh after a conflict; never increment or guess it."
},
"mode": {
"type": "string",
"enum": [
"prepare",
"edit"
]
},
"parentRevisionId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
},
"edits": {
"type": "object",
"additionalProperties": false,
"properties": {
"outputPresetId": {
"type": "string",
"enum": [
"1080p24",
"1080p25",
"1080p30",
"720p24",
"720p30"
]
},
"shots": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"shotNodeId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
},
"included": {
"type": "boolean"
},
"sourceInUs": {
"type": "integer",
"minimum": 0,
"maximum": 300000000
},
"sourceOutUs": {
"type": "integer",
"minimum": 1,
"maximum": 300000000
},
"nativeAudio": {
"type": "string",
"enum": [
"keep",
"mute"
]
},
"omissionReason": {
"type": "string",
"maxLength": 500
},
"framing": {
"type": "string",
"enum": [
"fit",
"fill"
]
},
"cropAnchor": {
"type": "string",
"enum": [
"top",
"center",
"bottom"
]
},
"audioGainDb": {
"type": "number",
"minimum": -30,
"maximum": 30
}
},
"required": [
"shotNodeId",
"included",
"sourceInUs",
"sourceOutUs",
"nativeAudio"
]
},
"minItems": 1,
"maxItems": 100
},
"music": {
"type": "object",
"additionalProperties": false,
"properties": {
"assetId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$",
"description": "ID of an already saved and linked Media record returned by this workflow."
},
"sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
},
"sourceInUs": {
"type": "integer",
"minimum": 0
},
"gainDb": {
"type": "number",
"minimum": -40,
"maximum": 6
},
"fadeInMs": {
"type": "integer",
"minimum": 0,
"maximum": 10000
},
"fadeOutMs": {
"type": "integer",
"minimum": 0,
"maximum": 10000
},
"loop": {
"type": "boolean"
}
},
"required": [
"assetId",
"sha256",
"sourceInUs",
"gainDb",
"fadeInMs",
"fadeOutMs",
"loop"
]
}
},
"required": [
"outputPresetId",
"shots"
]
}
},
"required": [
"productionId",
"operationId",
"expectedVersion",
"mode"
]
}