{
"type": "object",
"additionalProperties": false,
"properties": {
"storyworldId": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$",
"description": "ID of an accessible saved Storyworld returned by discovery. Keep this destination fixed for the operation."
},
"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."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"details": {
"type": "object",
"additionalProperties": false,
"properties": {
"schemaVersion": {
"const": 1
},
"category": {
"enum": [
"prop",
"clothing",
"accessory"
]
},
"description": {
"type": "string",
"minLength": 1,
"maxLength": 2000
},
"materials": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"scale": {
"type": "string",
"minLength": 1,
"maxLength": 500
},
"placement": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"continuityNotes": {
"type": "string",
"minLength": 1,
"maxLength": 4000
}
},
"required": [
"schemaVersion",
"category",
"description"
]
},
"sourceAssetIds": {
"type": "array",
"maxItems": 16,
"uniqueItems": true,
"items": {
"type": "string",
"pattern": "^[a-fA-F0-9]{24}$"
},
"description": "Ordered IDs of saved source images to preserve as generation inputs. Never silently omit an intended source."
}
},
"required": [
"storyworldId",
"operationId",
"title",
"details"
]
}