{
"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": [
"plan",
"retake"
]
},
"shotNodeId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
},
"correction": {
"type": "object",
"additionalProperties": false,
"properties": {
"version": {
"type": "integer",
"const": 1
},
"field": {
"type": "string",
"enum": [
"motion",
"camera",
"sound"
]
},
"instruction": {
"type": "string",
"minLength": 1,
"maxLength": 4000
},
"beatIndex": {
"type": "integer",
"minimum": 0,
"maximum": 7
},
"sourceJobId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
},
"reviewNote": {
"type": "string",
"maxLength": 2000
},
"reviewRenderId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
},
"reviewJoinIndex": {
"type": "integer",
"minimum": 0,
"maximum": 1000
},
"reviewFindingId": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"version",
"field",
"instruction"
]
},
"resolution": {
"type": "string",
"enum": [
"1080p",
"720p"
]
},
"durationSeconds": {
"type": "integer",
"minimum": 1,
"maximum": 15
},
"motion": {
"type": "string",
"maxLength": 16000
},
"camera": {
"type": "string",
"maxLength": 16000
},
"sound": {
"type": "string",
"maxLength": 16000
},
"continuity": {
"type": "string",
"maxLength": 16000
},
"endingShotNodeId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
}
},
"required": [
"productionId",
"operationId",
"expectedVersion",
"mode",
"shotNodeId"
]
}