{"openapi":"3.1.0","info":{"title":"Design Studio AI","version":"0.3.1"},"servers":[{"url":"/"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"document":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"schemaVersion":{"type":"number","const":1},"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","enum":["web","slides","report","wireframe","3d","video"]},"theme":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","minLength":1,"maxLength":120},"colors":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"type":"string","maxLength":80}},"fonts":{"type":"object","properties":{"heading":{"type":"string","maxLength":200},"body":{"type":"string","maxLength":200}},"required":["heading","body"],"additionalProperties":false},"spacing":{"maxItems":32,"type":"array","items":{"type":"number","minimum":0,"maximum":1000}},"radius":{"type":"number","minimum":0,"maximum":1000}},"required":["id","name","colors","fonts","spacing","radius"],"additionalProperties":false},"pages":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","maxLength":200},"width":{"type":"number","minimum":1,"maximum":20000},"height":{"type":"number","minimum":1,"maximum":20000},"background":{"type":"string","maxLength":80},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"notes":{"type":"string","maxLength":20000},"scene":{"type":"object","properties":{"camera":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"target":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"fov":{"type":"number","minimum":10,"maximum":120}},"required":["position","target","fov"],"additionalProperties":false},"ambient":{"type":"number","minimum":0,"maximum":10},"light":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"intensity":{"type":"number","minimum":0,"maximum":20},"color":{"type":"string","maxLength":80}},"required":["position","intensity","color"],"additionalProperties":false}},"required":["camera","ambient","light"],"additionalProperties":false},"nodes":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"type":{"type":"string","enum":["frame","group","component","text","image","shape","icon","chart","model3d","video","audio"]},"name":{"type":"string","maxLength":200},"x":{"type":"number","minimum":-100000,"maximum":100000},"y":{"type":"number","minimum":-100000,"maximum":100000},"width":{"type":"number","minimum":0,"maximum":20000},"height":{"type":"number","minimum":0,"maximum":20000},"rotation":{"type":"number","minimum":-36000,"maximum":36000},"opacity":{"type":"number","minimum":0,"maximum":1},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"sizing":{"type":"object","properties":{"width":{"type":"string","enum":["fixed","hug","fill"]},"height":{"type":"string","enum":["fixed","hug","fill"]},"minWidth":{"type":"number","minimum":0,"maximum":20000},"maxWidth":{"type":"number","minimum":0,"maximum":20000},"minHeight":{"type":"number","minimum":0,"maximum":20000},"maxHeight":{"type":"number","minimum":0,"maximum":20000}},"additionalProperties":false},"position":{"type":"string","enum":["flow","absolute"]},"pivot":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":0,"maximum":1}],"items":false,"minItems":2,"maxItems":2},"component":{"type":"object","properties":{"name":{"type":"string","enum":["Button","Checkbox","Input","InputNumber","Slider","Image","Avatar","List","Statistics","Chart","Table","Select","Switch","Textarea","Card","Badge","Progress","Tabs","Dialog","Radio"]},"system":{"default":"shadcn","type":"string","enum":["shadcn","antd"]},"variant":{"type":"string","maxLength":80},"props":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"maxItems":1000,"type":"array","items":{"type":"string","maxLength":2000}}]}}},"required":["name","system"],"additionalProperties":false},"interactions":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"trigger":{"type":"string","enum":["click","hover"]},"action":{"type":"string","enum":["navigate","toggle","url"]},"target":{"type":"string","maxLength":2000}},"required":["trigger","action","target"],"additionalProperties":false}},"scene":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"scale":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"mesh":{"type":"object","properties":{"positions":{"minItems":9,"maxItems":900000,"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000}},"indices":{"minItems":3,"maxItems":1800000,"type":"array","items":{"type":"integer","minimum":0,"maximum":299999}},"uv":{"maxItems":600000,"type":"array","items":{"type":"number","minimum":-100,"maximum":100}},"skinIndices":{"maxItems":1200000,"type":"array","items":{"type":"integer","minimum":0,"maximum":255}},"skinWeights":{"maxItems":1200000,"type":"array","items":{"type":"number","minimum":0,"maximum":1}}},"required":["positions","indices"],"additionalProperties":false},"material":{"type":"object","properties":{"color":{"type":"string","maxLength":80},"metalness":{"type":"number","minimum":0,"maximum":1},"roughness":{"type":"number","minimum":0,"maximum":1},"wireframe":{"type":"boolean"},"doubleSided":{"type":"boolean"},"textureAssetId":{"type":"string","maxLength":120}},"additionalProperties":false},"bones":{"maxItems":256,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"parent":{"type":"integer","minimum":-1,"maximum":255},"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3}},"required":["name","parent","position"],"additionalProperties":false}}},"additionalProperties":false},"parentId":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"locked":{"type":"boolean"},"visible":{"type":"boolean"},"text":{"type":"string","maxLength":50000},"src":{"type":"string","maxLength":2000000},"style":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"data":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{}}},"required":["id","type","name","x","y","width","height"],"additionalProperties":false}}},"required":["id","name","width","height","background","nodes"],"additionalProperties":false}},"assets":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","maxLength":300},"type":{"type":"string","maxLength":80},"mimeType":{"type":"string","maxLength":100},"url":{"type":"string","maxLength":2000000},"size":{"type":"number","minimum":0}},"required":["id","name","type","mimeType","url"],"additionalProperties":false}},"designSystem":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"name":{"type":"string","maxLength":200}},"required":["id","version","name"],"additionalProperties":false},"presentation":{"type":"object","properties":{"interval":{"type":"number","minimum":1,"maximum":600},"loop":{"type":"boolean"}},"required":["interval","loop"],"additionalProperties":false},"timeline":{"type":"object","properties":{"duration":{"type":"number","minimum":0.1,"maximum":3600},"fps":{"type":"number","minimum":1,"maximum":60},"tracks":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120},"nodeId":{"type":"string","minLength":1,"maxLength":120},"keyframes":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"time":{"type":"number","minimum":0,"maximum":3600},"values":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"easing":{"anyOf":[{"type":"string","enum":["linear","easeIn","easeOut","easeInOut","bounce","spring","step"]},{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":-5,"maximum":5},{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":-5,"maximum":5}],"items":false,"minItems":4,"maxItems":4}]}},"required":["time","values"],"additionalProperties":false}},"muted":{"type":"boolean"},"locked":{"type":"boolean"}},"required":["id","nodeId","keyframes"],"additionalProperties":false}}},"required":["duration","fps","tracks"],"additionalProperties":false},"metadata":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["createdAt","updatedAt"],"additionalProperties":false}},"required":["schemaVersion","id","name","kind","theme","pages","assets","metadata"],"additionalProperties":false},"operations":{"$schema":"https://json-schema.org/draft/2020-12/schema","minItems":1,"maxItems":100,"type":"array","items":{"oneOf":[{"type":"object","properties":{"op":{"type":"string","const":"add-node"},"pageId":{"type":"string"},"node":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"type":{"type":"string","enum":["frame","group","component","text","image","shape","icon","chart","model3d","video","audio"]},"name":{"type":"string","maxLength":200},"x":{"type":"number","minimum":-100000,"maximum":100000},"y":{"type":"number","minimum":-100000,"maximum":100000},"width":{"type":"number","minimum":0,"maximum":20000},"height":{"type":"number","minimum":0,"maximum":20000},"rotation":{"type":"number","minimum":-36000,"maximum":36000},"opacity":{"type":"number","minimum":0,"maximum":1},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"sizing":{"type":"object","properties":{"width":{"type":"string","enum":["fixed","hug","fill"]},"height":{"type":"string","enum":["fixed","hug","fill"]},"minWidth":{"type":"number","minimum":0,"maximum":20000},"maxWidth":{"type":"number","minimum":0,"maximum":20000},"minHeight":{"type":"number","minimum":0,"maximum":20000},"maxHeight":{"type":"number","minimum":0,"maximum":20000}},"additionalProperties":false},"position":{"type":"string","enum":["flow","absolute"]},"pivot":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":0,"maximum":1}],"items":false,"minItems":2,"maxItems":2},"component":{"type":"object","properties":{"name":{"type":"string","enum":["Button","Checkbox","Input","InputNumber","Slider","Image","Avatar","List","Statistics","Chart","Table","Select","Switch","Textarea","Card","Badge","Progress","Tabs","Dialog","Radio"]},"system":{"default":"shadcn","type":"string","enum":["shadcn","antd"]},"variant":{"type":"string","maxLength":80},"props":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"maxItems":1000,"type":"array","items":{"type":"string","maxLength":2000}}]}}},"required":["name","system"],"additionalProperties":false},"interactions":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"trigger":{"type":"string","enum":["click","hover"]},"action":{"type":"string","enum":["navigate","toggle","url"]},"target":{"type":"string","maxLength":2000}},"required":["trigger","action","target"],"additionalProperties":false}},"scene":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"scale":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"mesh":{"type":"object","properties":{"positions":{"minItems":9,"maxItems":900000,"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000}},"indices":{"minItems":3,"maxItems":1800000,"type":"array","items":{"type":"integer","minimum":0,"maximum":299999}},"uv":{"maxItems":600000,"type":"array","items":{"type":"number","minimum":-100,"maximum":100}},"skinIndices":{"maxItems":1200000,"type":"array","items":{"type":"integer","minimum":0,"maximum":255}},"skinWeights":{"maxItems":1200000,"type":"array","items":{"type":"number","minimum":0,"maximum":1}}},"required":["positions","indices"],"additionalProperties":false},"material":{"type":"object","properties":{"color":{"type":"string","maxLength":80},"metalness":{"type":"number","minimum":0,"maximum":1},"roughness":{"type":"number","minimum":0,"maximum":1},"wireframe":{"type":"boolean"},"doubleSided":{"type":"boolean"},"textureAssetId":{"type":"string","maxLength":120}},"additionalProperties":false},"bones":{"maxItems":256,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"parent":{"type":"integer","minimum":-1,"maximum":255},"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3}},"required":["name","parent","position"],"additionalProperties":false}}},"additionalProperties":false},"parentId":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"locked":{"type":"boolean"},"visible":{"type":"boolean"},"text":{"type":"string","maxLength":50000},"src":{"type":"string","maxLength":2000000},"style":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"data":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{}}},"required":["id","type","name","x","y","width","height"],"additionalProperties":false}},"required":["op","pageId","node"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"update-node"},"nodeId":{"type":"string"},"changes":{"type":"object","properties":{"type":{"type":"string","enum":["frame","group","component","text","image","shape","icon","chart","model3d","video","audio"]},"name":{"type":"string","maxLength":200},"x":{"type":"number","minimum":-100000,"maximum":100000},"y":{"type":"number","minimum":-100000,"maximum":100000},"width":{"type":"number","minimum":0,"maximum":20000},"height":{"type":"number","minimum":0,"maximum":20000},"rotation":{"type":"number","minimum":-36000,"maximum":36000},"opacity":{"type":"number","minimum":0,"maximum":1},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"sizing":{"type":"object","properties":{"width":{"type":"string","enum":["fixed","hug","fill"]},"height":{"type":"string","enum":["fixed","hug","fill"]},"minWidth":{"type":"number","minimum":0,"maximum":20000},"maxWidth":{"type":"number","minimum":0,"maximum":20000},"minHeight":{"type":"number","minimum":0,"maximum":20000},"maxHeight":{"type":"number","minimum":0,"maximum":20000}},"additionalProperties":false},"position":{"type":"string","enum":["flow","absolute"]},"pivot":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":0,"maximum":1}],"items":false,"minItems":2,"maxItems":2},"component":{"type":"object","properties":{"name":{"type":"string","enum":["Button","Checkbox","Input","InputNumber","Slider","Image","Avatar","List","Statistics","Chart","Table","Select","Switch","Textarea","Card","Badge","Progress","Tabs","Dialog","Radio"]},"system":{"default":"shadcn","type":"string","enum":["shadcn","antd"]},"variant":{"type":"string","maxLength":80},"props":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"maxItems":1000,"type":"array","items":{"type":"string","maxLength":2000}}]}}},"required":["name","system"],"additionalProperties":false},"interactions":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"trigger":{"type":"string","enum":["click","hover"]},"action":{"type":"string","enum":["navigate","toggle","url"]},"target":{"type":"string","maxLength":2000}},"required":["trigger","action","target"],"additionalProperties":false}},"scene":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"scale":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"mesh":{"type":"object","properties":{"positions":{"minItems":9,"maxItems":900000,"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000}},"indices":{"minItems":3,"maxItems":1800000,"type":"array","items":{"type":"integer","minimum":0,"maximum":299999}},"uv":{"maxItems":600000,"type":"array","items":{"type":"number","minimum":-100,"maximum":100}},"skinIndices":{"maxItems":1200000,"type":"array","items":{"type":"integer","minimum":0,"maximum":255}},"skinWeights":{"maxItems":1200000,"type":"array","items":{"type":"number","minimum":0,"maximum":1}}},"required":["positions","indices"],"additionalProperties":false},"material":{"type":"object","properties":{"color":{"type":"string","maxLength":80},"metalness":{"type":"number","minimum":0,"maximum":1},"roughness":{"type":"number","minimum":0,"maximum":1},"wireframe":{"type":"boolean"},"doubleSided":{"type":"boolean"},"textureAssetId":{"type":"string","maxLength":120}},"additionalProperties":false},"bones":{"maxItems":256,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"parent":{"type":"integer","minimum":-1,"maximum":255},"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3}},"required":["name","parent","position"],"additionalProperties":false}}},"additionalProperties":false},"parentId":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"locked":{"type":"boolean"},"visible":{"type":"boolean"},"text":{"type":"string","maxLength":50000},"src":{"type":"string","maxLength":2000000},"style":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"data":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{}}},"additionalProperties":false}},"required":["op","nodeId","changes"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"remove-node"},"nodeId":{"type":"string"}},"required":["op","nodeId"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"duplicate-node"},"nodeId":{"type":"string"},"duplicateId":{"type":"string"},"offset":{"type":"object","properties":{"x":{"type":"number","minimum":-100000,"maximum":100000},"y":{"type":"number","minimum":-100000,"maximum":100000}},"required":["x","y"],"additionalProperties":false}},"required":["op","nodeId"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"add-page"},"page":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","maxLength":200},"width":{"type":"number","minimum":1,"maximum":20000},"height":{"type":"number","minimum":1,"maximum":20000},"background":{"type":"string","maxLength":80},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"notes":{"type":"string","maxLength":20000},"scene":{"type":"object","properties":{"camera":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"target":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"fov":{"type":"number","minimum":10,"maximum":120}},"required":["position","target","fov"],"additionalProperties":false},"ambient":{"type":"number","minimum":0,"maximum":10},"light":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"intensity":{"type":"number","minimum":0,"maximum":20},"color":{"type":"string","maxLength":80}},"required":["position","intensity","color"],"additionalProperties":false}},"required":["camera","ambient","light"],"additionalProperties":false},"nodes":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"type":{"type":"string","enum":["frame","group","component","text","image","shape","icon","chart","model3d","video","audio"]},"name":{"type":"string","maxLength":200},"x":{"type":"number","minimum":-100000,"maximum":100000},"y":{"type":"number","minimum":-100000,"maximum":100000},"width":{"type":"number","minimum":0,"maximum":20000},"height":{"type":"number","minimum":0,"maximum":20000},"rotation":{"type":"number","minimum":-36000,"maximum":36000},"opacity":{"type":"number","minimum":0,"maximum":1},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"sizing":{"type":"object","properties":{"width":{"type":"string","enum":["fixed","hug","fill"]},"height":{"type":"string","enum":["fixed","hug","fill"]},"minWidth":{"type":"number","minimum":0,"maximum":20000},"maxWidth":{"type":"number","minimum":0,"maximum":20000},"minHeight":{"type":"number","minimum":0,"maximum":20000},"maxHeight":{"type":"number","minimum":0,"maximum":20000}},"additionalProperties":false},"position":{"type":"string","enum":["flow","absolute"]},"pivot":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":0,"maximum":1}],"items":false,"minItems":2,"maxItems":2},"component":{"type":"object","properties":{"name":{"type":"string","enum":["Button","Checkbox","Input","InputNumber","Slider","Image","Avatar","List","Statistics","Chart","Table","Select","Switch","Textarea","Card","Badge","Progress","Tabs","Dialog","Radio"]},"system":{"default":"shadcn","type":"string","enum":["shadcn","antd"]},"variant":{"type":"string","maxLength":80},"props":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"maxItems":1000,"type":"array","items":{"type":"string","maxLength":2000}}]}}},"required":["name","system"],"additionalProperties":false},"interactions":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"trigger":{"type":"string","enum":["click","hover"]},"action":{"type":"string","enum":["navigate","toggle","url"]},"target":{"type":"string","maxLength":2000}},"required":["trigger","action","target"],"additionalProperties":false}},"scene":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"scale":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"mesh":{"type":"object","properties":{"positions":{"minItems":9,"maxItems":900000,"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000}},"indices":{"minItems":3,"maxItems":1800000,"type":"array","items":{"type":"integer","minimum":0,"maximum":299999}},"uv":{"maxItems":600000,"type":"array","items":{"type":"number","minimum":-100,"maximum":100}},"skinIndices":{"maxItems":1200000,"type":"array","items":{"type":"integer","minimum":0,"maximum":255}},"skinWeights":{"maxItems":1200000,"type":"array","items":{"type":"number","minimum":0,"maximum":1}}},"required":["positions","indices"],"additionalProperties":false},"material":{"type":"object","properties":{"color":{"type":"string","maxLength":80},"metalness":{"type":"number","minimum":0,"maximum":1},"roughness":{"type":"number","minimum":0,"maximum":1},"wireframe":{"type":"boolean"},"doubleSided":{"type":"boolean"},"textureAssetId":{"type":"string","maxLength":120}},"additionalProperties":false},"bones":{"maxItems":256,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"parent":{"type":"integer","minimum":-1,"maximum":255},"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3}},"required":["name","parent","position"],"additionalProperties":false}}},"additionalProperties":false},"parentId":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"locked":{"type":"boolean"},"visible":{"type":"boolean"},"text":{"type":"string","maxLength":50000},"src":{"type":"string","maxLength":2000000},"style":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"data":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{}}},"required":["id","type","name","x","y","width","height"],"additionalProperties":false}}},"required":["id","name","width","height","background","nodes"],"additionalProperties":false}},"required":["op","page"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"remove-page"},"pageId":{"type":"string"}},"required":["op","pageId"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"set-theme"},"theme":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","minLength":1,"maxLength":120},"colors":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"type":"string","maxLength":80}},"fonts":{"type":"object","properties":{"heading":{"type":"string","maxLength":200},"body":{"type":"string","maxLength":200}},"required":["heading","body"],"additionalProperties":false},"spacing":{"maxItems":32,"type":"array","items":{"type":"number","minimum":0,"maximum":1000}},"radius":{"type":"number","minimum":0,"maximum":1000}},"required":["id","name","colors","fonts","spacing","radius"],"additionalProperties":false}},"required":["op","theme"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"apply-theme"},"themeId":{"type":"string"}},"required":["op","themeId"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"insert-block"},"pageId":{"type":"string"},"blockId":{"type":"string"},"offset":{"type":"number"}},"required":["op","pageId","blockId"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"rename"},"name":{"type":"string","minLength":1,"maxLength":200}},"required":["op","name"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"set-timeline"},"timeline":{"type":"object","properties":{"duration":{"type":"number","minimum":0.1,"maximum":3600},"fps":{"type":"number","minimum":1,"maximum":60},"tracks":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120},"nodeId":{"type":"string","minLength":1,"maxLength":120},"keyframes":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"time":{"type":"number","minimum":0,"maximum":3600},"values":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"easing":{"anyOf":[{"type":"string","enum":["linear","easeIn","easeOut","easeInOut","bounce","spring","step"]},{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":-5,"maximum":5},{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":-5,"maximum":5}],"items":false,"minItems":4,"maxItems":4}]}},"required":["time","values"],"additionalProperties":false}},"muted":{"type":"boolean"},"locked":{"type":"boolean"}},"required":["id","nodeId","keyframes"],"additionalProperties":false}}},"required":["duration","fps","tracks"],"additionalProperties":false}},"required":["op","timeline"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"upsert-track"},"track":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120},"nodeId":{"type":"string","minLength":1,"maxLength":120},"keyframes":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"time":{"type":"number","minimum":0,"maximum":3600},"values":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"easing":{"anyOf":[{"type":"string","enum":["linear","easeIn","easeOut","easeInOut","bounce","spring","step"]},{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":-5,"maximum":5},{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":-5,"maximum":5}],"items":false,"minItems":4,"maxItems":4}]}},"required":["time","values"],"additionalProperties":false}},"muted":{"type":"boolean"},"locked":{"type":"boolean"}},"required":["id","nodeId","keyframes"],"additionalProperties":false}},"required":["op","track"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"remove-track"},"trackId":{"type":"string"}},"required":["op","trackId"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"upsert-keyframe"},"trackId":{"type":"string"},"keyframe":{"type":"object","properties":{"time":{"type":"number","minimum":0,"maximum":3600},"values":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"easing":{"anyOf":[{"type":"string","enum":["linear","easeIn","easeOut","easeInOut","bounce","spring","step"]},{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":-5,"maximum":5},{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":-5,"maximum":5}],"items":false,"minItems":4,"maxItems":4}]}},"required":["time","values"],"additionalProperties":false},"previousTime":{"type":"number","minimum":0}},"required":["op","trackId","keyframe"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"remove-keyframe"},"trackId":{"type":"string"},"time":{"type":"number","minimum":0}},"required":["op","trackId","time"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"reparent-node"},"nodeId":{"type":"string"},"parentId":{"type":["string","null"]},"index":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["op","nodeId","parentId","index"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"group-nodes"},"pageId":{"type":"string"},"nodeIds":{"minItems":1,"maxItems":2000,"type":"array","items":{"type":"string"}},"groupId":{"type":"string"},"name":{"type":"string","maxLength":200},"bounds":{"maxItems":2001,"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"x":{"type":"number","minimum":-100000,"maximum":100000},"y":{"type":"number","minimum":-100000,"maximum":100000},"width":{"type":"number","minimum":0,"maximum":20000},"height":{"type":"number","minimum":0,"maximum":20000}},"required":["id","x","y","width","height"],"additionalProperties":false}}},"required":["op","pageId","nodeIds"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"ungroup-node"},"nodeId":{"type":"string"}},"required":["op","nodeId"],"additionalProperties":false},{"type":"object","properties":{"op":{"type":"string","const":"update-page"},"pageId":{"type":"string"},"changes":{"type":"object","properties":{"name":{"type":"string","maxLength":200},"width":{"type":"number","minimum":1,"maximum":20000},"height":{"type":"number","minimum":1,"maximum":20000},"background":{"type":"string","maxLength":80},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"notes":{"type":"string","maxLength":20000},"scene":{"type":"object","properties":{"camera":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"target":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"fov":{"type":"number","minimum":10,"maximum":120}},"required":["position","target","fov"],"additionalProperties":false},"ambient":{"type":"number","minimum":0,"maximum":10},"light":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"intensity":{"type":"number","minimum":0,"maximum":20},"color":{"type":"string","maxLength":80}},"required":["position","intensity","color"],"additionalProperties":false}},"required":["camera","ambient","light"],"additionalProperties":false}},"additionalProperties":false}},"required":["op","pageId","changes"],"additionalProperties":false}]}},"designSystem":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"default":"","type":"string","maxLength":2000},"system":{"type":"string","enum":["antd","shadcn"]},"theme":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","minLength":1,"maxLength":120},"colors":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"type":"string","maxLength":80}},"fonts":{"type":"object","properties":{"heading":{"type":"string","maxLength":200},"body":{"type":"string","maxLength":200}},"required":["heading","body"],"additionalProperties":false},"spacing":{"maxItems":32,"type":"array","items":{"type":"number","minimum":0,"maximum":1000}},"radius":{"type":"number","minimum":0,"maximum":1000}},"required":["id","name","colors","fonts","spacing","radius"],"additionalProperties":false},"components":{"default":[],"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","minLength":1,"maxLength":120},"component":{"type":"object","properties":{"name":{"type":"string","enum":["Button","Checkbox","Input","InputNumber","Slider","Image","Avatar","List","Statistics","Chart","Table","Select","Switch","Textarea","Card","Badge","Progress","Tabs","Dialog","Radio"]},"system":{"default":"shadcn","type":"string","enum":["shadcn","antd"]},"variant":{"type":"string","maxLength":80},"props":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"maxItems":1000,"type":"array","items":{"type":"string","maxLength":2000}}]}}},"required":["name","system"],"additionalProperties":false},"style":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"sizing":{"type":"object","properties":{"width":{"type":"string","enum":["fixed","hug","fill"]},"height":{"type":"string","enum":["fixed","hug","fill"]},"minWidth":{"type":"number","minimum":0,"maximum":20000},"maxWidth":{"type":"number","minimum":0,"maximum":20000},"minHeight":{"type":"number","minimum":0,"maximum":20000},"maxHeight":{"type":"number","minimum":0,"maximum":20000}},"additionalProperties":false},"width":{"type":"number","minimum":0,"maximum":20000},"height":{"type":"number","minimum":0,"maximum":20000},"text":{"type":"string","maxLength":50000},"src":{"type":"string","maxLength":2000000}},"required":["id","name","component"],"additionalProperties":false}},"compositions":{"default":[],"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","maxLength":200},"width":{"type":"number","minimum":1,"maximum":20000},"height":{"type":"number","minimum":1,"maximum":20000},"background":{"type":"string","maxLength":80},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"notes":{"type":"string","maxLength":20000},"scene":{"type":"object","properties":{"camera":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"target":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"fov":{"type":"number","minimum":10,"maximum":120}},"required":["position","target","fov"],"additionalProperties":false},"ambient":{"type":"number","minimum":0,"maximum":10},"light":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"intensity":{"type":"number","minimum":0,"maximum":20},"color":{"type":"string","maxLength":80}},"required":["position","intensity","color"],"additionalProperties":false}},"required":["camera","ambient","light"],"additionalProperties":false},"nodes":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"type":{"type":"string","enum":["frame","group","component","text","image","shape","icon","chart","model3d","video","audio"]},"name":{"type":"string","maxLength":200},"x":{"type":"number","minimum":-100000,"maximum":100000},"y":{"type":"number","minimum":-100000,"maximum":100000},"width":{"type":"number","minimum":0,"maximum":20000},"height":{"type":"number","minimum":0,"maximum":20000},"rotation":{"type":"number","minimum":-36000,"maximum":36000},"opacity":{"type":"number","minimum":0,"maximum":1},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"sizing":{"type":"object","properties":{"width":{"type":"string","enum":["fixed","hug","fill"]},"height":{"type":"string","enum":["fixed","hug","fill"]},"minWidth":{"type":"number","minimum":0,"maximum":20000},"maxWidth":{"type":"number","minimum":0,"maximum":20000},"minHeight":{"type":"number","minimum":0,"maximum":20000},"maxHeight":{"type":"number","minimum":0,"maximum":20000}},"additionalProperties":false},"position":{"type":"string","enum":["flow","absolute"]},"pivot":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":0,"maximum":1}],"items":false,"minItems":2,"maxItems":2},"component":{"type":"object","properties":{"name":{"type":"string","enum":["Button","Checkbox","Input","InputNumber","Slider","Image","Avatar","List","Statistics","Chart","Table","Select","Switch","Textarea","Card","Badge","Progress","Tabs","Dialog","Radio"]},"system":{"default":"shadcn","type":"string","enum":["shadcn","antd"]},"variant":{"type":"string","maxLength":80},"props":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"maxItems":1000,"type":"array","items":{"type":"string","maxLength":2000}}]}}},"required":["name","system"],"additionalProperties":false},"interactions":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"trigger":{"type":"string","enum":["click","hover"]},"action":{"type":"string","enum":["navigate","toggle","url"]},"target":{"type":"string","maxLength":2000}},"required":["trigger","action","target"],"additionalProperties":false}},"scene":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"scale":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"mesh":{"type":"object","properties":{"positions":{"minItems":9,"maxItems":900000,"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000}},"indices":{"minItems":3,"maxItems":1800000,"type":"array","items":{"type":"integer","minimum":0,"maximum":299999}},"uv":{"maxItems":600000,"type":"array","items":{"type":"number","minimum":-100,"maximum":100}},"skinIndices":{"maxItems":1200000,"type":"array","items":{"type":"integer","minimum":0,"maximum":255}},"skinWeights":{"maxItems":1200000,"type":"array","items":{"type":"number","minimum":0,"maximum":1}}},"required":["positions","indices"],"additionalProperties":false},"material":{"type":"object","properties":{"color":{"type":"string","maxLength":80},"metalness":{"type":"number","minimum":0,"maximum":1},"roughness":{"type":"number","minimum":0,"maximum":1},"wireframe":{"type":"boolean"},"doubleSided":{"type":"boolean"},"textureAssetId":{"type":"string","maxLength":120}},"additionalProperties":false},"bones":{"maxItems":256,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"parent":{"type":"integer","minimum":-1,"maximum":255},"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3}},"required":["name","parent","position"],"additionalProperties":false}}},"additionalProperties":false},"parentId":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"locked":{"type":"boolean"},"visible":{"type":"boolean"},"text":{"type":"string","maxLength":50000},"src":{"type":"string","maxLength":2000000},"style":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"data":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{}}},"required":["id","type","name","x","y","width","height"],"additionalProperties":false}}},"required":["id","name","width","height","background","nodes"],"additionalProperties":false}}},"required":["name","description","system","theme","components","compositions"],"additionalProperties":false}}},"paths":{"/api/projects/{id}/connections/{bindingId}":{"put":{"summary":"Change the explicit project selection with revision checks; revoke grants and retain disconnected source copies","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bindingId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedPolicyRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"role":{"type":"string","enum":["source","tool","destination"]},"selection":{"oneOf":[{"type":"object","properties":{"adapter":{"type":"string","const":"mcp"},"tools":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"resources":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":2048}}},"required":["adapter","tools","resources"],"additionalProperties":false},{"type":"object","properties":{"adapter":{"type":"string","const":"github"},"repositoryId":{"type":"string","pattern":"^\\d+$"},"commit":{"type":"string","pattern":"^[a-f0-9]{40}$"},"paths":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":1024}}},"required":["adapter","repositoryId","commit","paths"],"additionalProperties":false},{"type":"object","properties":{"adapter":{"type":"string","const":"google-drive"},"fileIds":{"maxItems":100,"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},"destinationFolderId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},"required":["adapter","fileIds"],"additionalProperties":false}]}},"required":["expectedPolicyRevision","role","selection"],"additionalProperties":false},"example":{"expectedPolicyRevision":1,"role":"source","selection":{"adapter":"mcp","tools":[],"resources":[]}}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"delete":{"summary":"Remove a project binding, revoke grants and invalidate dependent work","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bindingId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedPolicyRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedPolicyRevision"],"additionalProperties":false},"example":{"expectedPolicyRevision":1}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connections/agent-recipients":{"get":{"summary":"List owned active OAuth authorization identities for explicit connector grants; no tokens","parameters":[{"name":"projectId","in":"query","schema":{"type":"string"},"description":"Required for agent callers; explicit discovery grant required."}],"x-studio-agent-exposure":"human-only","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/github/authorize":{"post":{"summary":"Begin separate GitHub App authorization for a verified installation","parameters":[],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"connectionId":"","expectedRevision":1,"installationId":""}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/github/callback":{"get":{"summary":"Complete one-use GitHub authorization bound to the initiating session","parameters":[],"x-studio-agent-exposure":"human-only","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/github/repositories":{"get":{"summary":"List repositories accessible to the user and selected GitHub installation; connectionId and page query parameters","parameters":[],"x-studio-agent-exposure":"human-only","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/github/resolve":{"post":{"summary":"Resolve a selected repository branch or tag to an immutable commit","parameters":[],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"connectionId":"","repositoryId":"","ref":"main"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/github/webhook":{"post":{"summary":"Receive signature-verified GitHub installation and authorization revocations","parameters":[],"x-studio-agent-exposure":"none","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/sources/{sourceId}/asset":{"post":{"summary":"Copy a granted image snapshot into isolated project assets without changing the document","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"sourceId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"example":{}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connector-operations/{operationId}/reconcile":{"post":{"summary":"Reconcile an uncertain Drive upload or GitHub PR using recorded identities; never repeats external writes","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operationId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false},"example":{"expectedRevision":1}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connector-operations/{operationId}/artifact":{"get":{"summary":"Download an authorized prepared PDF, PPTX or React ZIP for inspection before upload","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operationId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/google-drive/authorize":{"post":{"summary":"Begin separate session-bound Google Drive authorization","parameters":[],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"connectionId":"","expectedRevision":1}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/google-drive/callback":{"get":{"summary":"Redeem a one-use Google callback for the initiating session","parameters":[],"x-studio-agent-exposure":"human-only","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/google-drive/picker":{"post":{"summary":"Obtain a transient selected-account access token for Google Picker; never returns refresh credentials","parameters":[],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"connectionId":""}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connector-operations/{operationId}/continuation":{"post":{"summary":"Supply explicitly reviewed input to a paused MCP operation; creates a separately approved continuation","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operationId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"expectedRevision":1,"inputResponses":{}}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/runs":{"get":{"summary":"List saved run metadata without advancing","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"post":{"summary":"Persist a bounded run at exact document and brief versions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":12000},"provider":{"anyOf":[{"type":"string","enum":["openai","anthropic","gemini","openrouter","deepseek"]},{"type":"string","pattern":"^custom-[a-z0-9][a-z0-9-]{0,55}$"}]},"model":{"type":"string","minLength":1,"maxLength":200},"bindingIds":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},"sourceSnapshotIds":{"maxItems":100,"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},"expectedDocumentRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"expectedBriefRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"idempotencyKey":{"type":"string","pattern":"^[a-zA-Z0-9_-]{16,128}$"}},"required":["prompt","provider","bindingIds","sourceSnapshotIds","expectedDocumentRevision","expectedBriefRevision","idempotencyKey"],"additionalProperties":false},"example":{"provider":"openai","prompt":"Refine design","bindingIds":[],"sourceSnapshotIds":[],"expectedDocumentRevision":1,"expectedBriefRevision":1,"idempotencyKey":"unique-request-key"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/runs/{runId}":{"get":{"summary":"Read run status, authorized proposal and provider usage","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"runId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/runs/{runId}/advance":{"post":{"summary":"Advance exactly one run step with current grants","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"runId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false},"example":{"expectedRevision":1}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/runs/{runId}/cancel":{"post":{"summary":"Cancel future steps and preserve uncertain in-flight outcomes","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"runId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false},"example":{"expectedRevision":1}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/runs/{runId}/proposal":{"get":{"summary":"Revalidate a completed unsaved proposal against current authority and versions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"runId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connections/{bindingId}/grants":{"get":{"summary":"Inspect existing agent grants for a project binding","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bindingId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"post":{"summary":"Grant an active agent explicit capabilities and selection with expiry","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bindingId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"recipient":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"api"},"tokenId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},"required":["kind","tokenId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"oauth"},"clientId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"},"familyId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},"required":["kind","clientId","familyId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"webmcp"}},"required":["kind"],"additionalProperties":false}]},"expectedPolicyRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"capabilities":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"string","enum":["discover","read_source","execute_read","prepare_write","run"]}},"selection":{"oneOf":[{"type":"object","properties":{"adapter":{"type":"string","const":"mcp"},"tools":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"resources":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":2048}}},"required":["adapter","tools","resources"],"additionalProperties":false},{"type":"object","properties":{"adapter":{"type":"string","const":"github"},"repositoryId":{"type":"string","pattern":"^\\d+$"},"commit":{"type":"string","pattern":"^[a-f0-9]{40}$"},"paths":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":1024}}},"required":["adapter","repositoryId","commit","paths"],"additionalProperties":false},{"type":"object","properties":{"adapter":{"type":"string","const":"google-drive"},"fileIds":{"maxItems":100,"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},"destinationFolderId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},"required":["adapter","fileIds"],"additionalProperties":false}]},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["recipient","expectedPolicyRevision","capabilities","selection","expiresAt"],"additionalProperties":false},"example":{"recipient":{"kind":"webmcp"},"expectedPolicyRevision":1,"capabilities":["discover"],"selection":{"adapter":"mcp","tools":[],"resources":[]},"expiresAt":"<ISO timestamp within 90 days>"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/sources":{"get":{"summary":"List private source metadata; agent results are limited to current source grants","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/sources/{sourceId}":{"get":{"summary":"Download an authorized immutable source as inert data","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"sourceId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"delete":{"summary":"Remove an owned source snapshot and invalidate dependent work","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"sourceId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/sources/{sourceId}/refresh":{"post":{"summary":"Import a new source snapshot without replacing existing content or brief","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"sourceId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"example":{}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connections/{connectionId}/capabilities":{"post":{"summary":"Discover bounded MCP capabilities before granting a project access","parameters":[{"name":"connectionId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connections/{bindingId}/capabilities":{"post":{"summary":"Discover only capabilities selected by both the project and agent grant","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bindingId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"example":{}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connections/{bindingId}/sources":{"post":{"summary":"Import one selected MCP resource or Drive file as an immutable source snapshot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bindingId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"uri":{"type":"string","minLength":1,"maxLength":2048},"fileId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"},"path":{"type":"string","minLength":1,"maxLength":1024}},"additionalProperties":false},"example":{"uri":"resource://selected"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connector-operations":{"get":{"summary":"List the latest 50 operation records without private payloads","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"post":{"summary":"Prepare a selected tool operation against exact observed versions; unknown effects require human approval","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"bindingId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"},"action":{"type":"string","minLength":1,"maxLength":200},"arguments":{"description":"JSON data up to 65536 UTF-8 bytes, depth 32 and 20000 values; unsafe property names and cycles are rejected.","x-studio-max-bytes":65536},"idempotencyKey":{"type":"string","pattern":"^[a-zA-Z0-9_-]{16,128}$"},"expectedVersions":{"type":"object","properties":{"connectionRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"credentialVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"policyRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"documentRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"briefRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"sourceSnapshotIds":{"maxItems":100,"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}}},"required":["connectionRevision","credentialVersion","policyRevision","documentRevision","briefRevision","sourceSnapshotIds"],"additionalProperties":false}},"required":["bindingId","action","arguments","idempotencyKey","expectedVersions"],"additionalProperties":false},"example":{"bindingId":"","action":"","arguments":{},"idempotencyKey":"unique-request-key","expectedVersions":{"connectionRevision":1,"credentialVersion":1,"policyRevision":1,"documentRevision":1,"briefRevision":0,"sourceSnapshotIds":[]}}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connector-operations/{operationId}":{"get":{"summary":"Inspect an operation and authorized private payload without advancing it","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operationId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connector-operations/{operationId}/execute":{"post":{"summary":"Claim approved operation once; uncertain results are never replayed","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operationId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false},"example":{"expectedRevision":1}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connector-operations/{operationId}/decision":{"post":{"summary":"Approve once or deny the exact operation in an authenticated browser session","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operationId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"decision":{"type":"string","enum":["approve","deny"]}},"required":["expectedRevision","decision"],"additionalProperties":false},"example":{"expectedRevision":1,"decision":"approve"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connector-operations/{operationId}/cancel":{"post":{"summary":"Cancel own pending operation with revision protection","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"operationId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["expectedRevision"],"additionalProperties":false},"example":{"expectedRevision":1}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connections":{"get":{"summary":"List project bindings; agents see only explicitly granted discovery selections","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"post":{"summary":"Bind a connected account and explicit selection to an owned project","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"},"role":{"type":"string","enum":["source","tool","destination"]},"selection":{"oneOf":[{"type":"object","properties":{"adapter":{"type":"string","const":"mcp"},"tools":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"resources":{"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":2048}}},"required":["adapter","tools","resources"],"additionalProperties":false},{"type":"object","properties":{"adapter":{"type":"string","const":"github"},"repositoryId":{"type":"string","pattern":"^\\d+$"},"commit":{"type":"string","pattern":"^[a-f0-9]{40}$"},"paths":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"string","minLength":1,"maxLength":1024}}},"required":["adapter","repositoryId","commit","paths"],"additionalProperties":false},{"type":"object","properties":{"adapter":{"type":"string","const":"google-drive"},"fileIds":{"maxItems":100,"type":"array","items":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},"destinationFolderId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}},"required":["adapter","fileIds"],"additionalProperties":false}]}},"required":["connectionId","role","selection"],"additionalProperties":false},"example":{"connectionId":"","role":"tool","selection":{"adapter":"mcp","tools":[],"resources":[]}}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/connections/{bindingId}/grants/{grantId}":{"delete":{"summary":"Revoke an owned active project connection grant","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bindingId","in":"path","required":true,"schema":{"type":"string"}},{"name":"grantId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connections":{"get":{"summary":"List connection metadata; agents require projectId and explicit discovery grants; requires connectors enabled","parameters":[{"name":"projectId","in":"query","schema":{"type":"string"},"description":"Required for agent callers; explicit discovery grant required."}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"post":{"summary":"Create pending connection metadata using a signed-in session","parameters":[],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":120},"config":{"oneOf":[{"type":"object","properties":{"adapter":{"type":"string","const":"mcp"},"endpoint":{"type":"string","maxLength":2048,"format":"uri"},"authMode":{"type":"string","enum":["anonymous","bearer","oauth"]}},"required":["adapter","endpoint","authMode"],"additionalProperties":false},{"type":"object","properties":{"adapter":{"type":"string","const":"github"},"authMode":{"type":"string","const":"oauth"}},"required":["adapter","authMode"],"additionalProperties":false},{"type":"object","properties":{"adapter":{"type":"string","const":"google-drive"},"authMode":{"type":"string","const":"oauth"}},"required":["adapter","authMode"],"additionalProperties":false}]}},"required":["displayName","config"],"additionalProperties":false},"example":{"displayName":"My MCP server","config":{"adapter":"mcp","endpoint":"https://mcp.example.com/mcp","authMode":"oauth"}}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connections/{connectionId}":{"get":{"summary":"Read owned connection metadata; agents require projectId and explicit discovery grants","parameters":[{"name":"connectionId","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectId","in":"query","schema":{"type":"string"},"description":"Required for agent callers; explicit discovery grant required."}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connections/{connectionId}/disconnect":{"post":{"summary":"Disconnect and revoke grants using a signed-in session","parameters":[{"name":"connectionId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"expectedRevision":1}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/mcp/connect":{"post":{"summary":"Verify anonymous or bearer MCP access using a signed-in session","parameters":[],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"accessToken":{"type":"string","minLength":1,"maxLength":16384}},"required":["connectionId","expectedRevision"],"additionalProperties":false},"example":{"connectionId":"","expectedRevision":1}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/mcp/authorize":{"post":{"summary":"Begin session-bound MCP OAuth authorization","parameters":[],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connectionId":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"options":{"type":"object","properties":{"profile":{"default":"modern","type":"string","enum":["modern","legacy"]},"scope":{"type":"string","maxLength":4096},"client":{"type":"object","properties":{"clientId":{"type":"string","minLength":1,"maxLength":2048},"clientSecret":{"type":"string","minLength":1,"maxLength":16384},"authMethod":{"default":"none","type":"string","enum":["none","client_secret_basic","client_secret_post"]}},"required":["clientId","authMethod"],"additionalProperties":false},"clientMetadataUrl":{"type":"string","maxLength":2048}},"required":["profile"],"additionalProperties":false}},"required":["connectionId","expectedRevision","options"],"additionalProperties":false},"example":{"connectionId":"","expectedRevision":1,"options":{"profile":"modern"}}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/mcp/client-metadata":{"get":{"summary":"Public first-party OAuth client metadata when connectors are enabled","parameters":[],"x-studio-agent-exposure":"none","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/connectors/mcp/callback":{"get":{"summary":"Redeem one-use OAuth callback bound to the initiating browser session","parameters":[],"x-studio-agent-exposure":"human-only","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/health":{"get":{"summary":"Health","parameters":[],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/schema":{"get":{"summary":"Document and operation schemas","parameters":[],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/catalog":{"get":{"summary":"Templates, themes and blocks","parameters":[],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/fonts":{"get":{"summary":"Search Google Fonts catalog","parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":200},"description":"Case-insensitive catalog search"}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/providers/{provider}/models":{"get":{"summary":"Discover provider models","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":200},"description":"Case-insensitive catalog search"}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/design-systems":{"get":{"summary":"List your design systems","parameters":[],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"post":{"summary":"Create a reusable design system","parameters":[],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"default":"","type":"string","maxLength":2000},"system":{"type":"string","enum":["antd","shadcn"]},"theme":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","minLength":1,"maxLength":120},"colors":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"type":"string","maxLength":80}},"fonts":{"type":"object","properties":{"heading":{"type":"string","maxLength":200},"body":{"type":"string","maxLength":200}},"required":["heading","body"],"additionalProperties":false},"spacing":{"maxItems":32,"type":"array","items":{"type":"number","minimum":0,"maximum":1000}},"radius":{"type":"number","minimum":0,"maximum":1000}},"required":["id","name","colors","fonts","spacing","radius"],"additionalProperties":false},"components":{"default":[],"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","minLength":1,"maxLength":120},"component":{"type":"object","properties":{"name":{"type":"string","enum":["Button","Checkbox","Input","InputNumber","Slider","Image","Avatar","List","Statistics","Chart","Table","Select","Switch","Textarea","Card","Badge","Progress","Tabs","Dialog","Radio"]},"system":{"default":"shadcn","type":"string","enum":["shadcn","antd"]},"variant":{"type":"string","maxLength":80},"props":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"maxItems":1000,"type":"array","items":{"type":"string","maxLength":2000}}]}}},"required":["name","system"],"additionalProperties":false},"style":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"sizing":{"type":"object","properties":{"width":{"type":"string","enum":["fixed","hug","fill"]},"height":{"type":"string","enum":["fixed","hug","fill"]},"minWidth":{"type":"number","minimum":0,"maximum":20000},"maxWidth":{"type":"number","minimum":0,"maximum":20000},"minHeight":{"type":"number","minimum":0,"maximum":20000},"maxHeight":{"type":"number","minimum":0,"maximum":20000}},"additionalProperties":false},"width":{"type":"number","minimum":0,"maximum":20000},"height":{"type":"number","minimum":0,"maximum":20000},"text":{"type":"string","maxLength":50000},"src":{"type":"string","maxLength":2000000}},"required":["id","name","component"],"additionalProperties":false}},"compositions":{"default":[],"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","maxLength":200},"width":{"type":"number","minimum":1,"maximum":20000},"height":{"type":"number","minimum":1,"maximum":20000},"background":{"type":"string","maxLength":80},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"notes":{"type":"string","maxLength":20000},"scene":{"type":"object","properties":{"camera":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"target":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"fov":{"type":"number","minimum":10,"maximum":120}},"required":["position","target","fov"],"additionalProperties":false},"ambient":{"type":"number","minimum":0,"maximum":10},"light":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"intensity":{"type":"number","minimum":0,"maximum":20},"color":{"type":"string","maxLength":80}},"required":["position","intensity","color"],"additionalProperties":false}},"required":["camera","ambient","light"],"additionalProperties":false},"nodes":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"type":{"type":"string","enum":["frame","group","component","text","image","shape","icon","chart","model3d","video","audio"]},"name":{"type":"string","maxLength":200},"x":{"type":"number","minimum":-100000,"maximum":100000},"y":{"type":"number","minimum":-100000,"maximum":100000},"width":{"type":"number","minimum":0,"maximum":20000},"height":{"type":"number","minimum":0,"maximum":20000},"rotation":{"type":"number","minimum":-36000,"maximum":36000},"opacity":{"type":"number","minimum":0,"maximum":1},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"sizing":{"type":"object","properties":{"width":{"type":"string","enum":["fixed","hug","fill"]},"height":{"type":"string","enum":["fixed","hug","fill"]},"minWidth":{"type":"number","minimum":0,"maximum":20000},"maxWidth":{"type":"number","minimum":0,"maximum":20000},"minHeight":{"type":"number","minimum":0,"maximum":20000},"maxHeight":{"type":"number","minimum":0,"maximum":20000}},"additionalProperties":false},"position":{"type":"string","enum":["flow","absolute"]},"pivot":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":0,"maximum":1}],"items":false,"minItems":2,"maxItems":2},"component":{"type":"object","properties":{"name":{"type":"string","enum":["Button","Checkbox","Input","InputNumber","Slider","Image","Avatar","List","Statistics","Chart","Table","Select","Switch","Textarea","Card","Badge","Progress","Tabs","Dialog","Radio"]},"system":{"default":"shadcn","type":"string","enum":["shadcn","antd"]},"variant":{"type":"string","maxLength":80},"props":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"maxItems":1000,"type":"array","items":{"type":"string","maxLength":2000}}]}}},"required":["name","system"],"additionalProperties":false},"interactions":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"trigger":{"type":"string","enum":["click","hover"]},"action":{"type":"string","enum":["navigate","toggle","url"]},"target":{"type":"string","maxLength":2000}},"required":["trigger","action","target"],"additionalProperties":false}},"scene":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"scale":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"mesh":{"type":"object","properties":{"positions":{"minItems":9,"maxItems":900000,"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000}},"indices":{"minItems":3,"maxItems":1800000,"type":"array","items":{"type":"integer","minimum":0,"maximum":299999}},"uv":{"maxItems":600000,"type":"array","items":{"type":"number","minimum":-100,"maximum":100}},"skinIndices":{"maxItems":1200000,"type":"array","items":{"type":"integer","minimum":0,"maximum":255}},"skinWeights":{"maxItems":1200000,"type":"array","items":{"type":"number","minimum":0,"maximum":1}}},"required":["positions","indices"],"additionalProperties":false},"material":{"type":"object","properties":{"color":{"type":"string","maxLength":80},"metalness":{"type":"number","minimum":0,"maximum":1},"roughness":{"type":"number","minimum":0,"maximum":1},"wireframe":{"type":"boolean"},"doubleSided":{"type":"boolean"},"textureAssetId":{"type":"string","maxLength":120}},"additionalProperties":false},"bones":{"maxItems":256,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"parent":{"type":"integer","minimum":-1,"maximum":255},"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3}},"required":["name","parent","position"],"additionalProperties":false}}},"additionalProperties":false},"parentId":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"locked":{"type":"boolean"},"visible":{"type":"boolean"},"text":{"type":"string","maxLength":50000},"src":{"type":"string","maxLength":2000000},"style":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"data":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{}}},"required":["id","type","name","x","y","width","height"],"additionalProperties":false}}},"required":["id","name","width","height","background","nodes"],"additionalProperties":false}}},"required":["name","description","system","theme","components","compositions"],"additionalProperties":false},"example":{"name":"My system","system":"shadcn","theme":{},"components":[],"compositions":[]}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/design-systems/{id}":{"get":{"summary":"Read a design system (optional version query)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","in":"query","schema":{"type":"integer","minimum":1},"description":"Immutable version; latest when omitted"}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"put":{"summary":"Append a design-system version with conflict protection","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"expectedVersion":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"definition":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"default":"","type":"string","maxLength":2000},"system":{"type":"string","enum":["antd","shadcn"]},"theme":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","minLength":1,"maxLength":120},"colors":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"type":"string","maxLength":80}},"fonts":{"type":"object","properties":{"heading":{"type":"string","maxLength":200},"body":{"type":"string","maxLength":200}},"required":["heading","body"],"additionalProperties":false},"spacing":{"maxItems":32,"type":"array","items":{"type":"number","minimum":0,"maximum":1000}},"radius":{"type":"number","minimum":0,"maximum":1000}},"required":["id","name","colors","fonts","spacing","radius"],"additionalProperties":false},"components":{"default":[],"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","minLength":1,"maxLength":120},"component":{"type":"object","properties":{"name":{"type":"string","enum":["Button","Checkbox","Input","InputNumber","Slider","Image","Avatar","List","Statistics","Chart","Table","Select","Switch","Textarea","Card","Badge","Progress","Tabs","Dialog","Radio"]},"system":{"default":"shadcn","type":"string","enum":["shadcn","antd"]},"variant":{"type":"string","maxLength":80},"props":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"maxItems":1000,"type":"array","items":{"type":"string","maxLength":2000}}]}}},"required":["name","system"],"additionalProperties":false},"style":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"sizing":{"type":"object","properties":{"width":{"type":"string","enum":["fixed","hug","fill"]},"height":{"type":"string","enum":["fixed","hug","fill"]},"minWidth":{"type":"number","minimum":0,"maximum":20000},"maxWidth":{"type":"number","minimum":0,"maximum":20000},"minHeight":{"type":"number","minimum":0,"maximum":20000},"maxHeight":{"type":"number","minimum":0,"maximum":20000}},"additionalProperties":false},"width":{"type":"number","minimum":0,"maximum":20000},"height":{"type":"number","minimum":0,"maximum":20000},"text":{"type":"string","maxLength":50000},"src":{"type":"string","maxLength":2000000}},"required":["id","name","component"],"additionalProperties":false}},"compositions":{"default":[],"maxItems":30,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"name":{"type":"string","maxLength":200},"width":{"type":"number","minimum":1,"maximum":20000},"height":{"type":"number","minimum":1,"maximum":20000},"background":{"type":"string","maxLength":80},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"notes":{"type":"string","maxLength":20000},"scene":{"type":"object","properties":{"camera":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"target":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"fov":{"type":"number","minimum":10,"maximum":120}},"required":["position","target","fov"],"additionalProperties":false},"ambient":{"type":"number","minimum":0,"maximum":10},"light":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"intensity":{"type":"number","minimum":0,"maximum":20},"color":{"type":"string","maxLength":80}},"required":["position","intensity","color"],"additionalProperties":false}},"required":["camera","ambient","light"],"additionalProperties":false},"nodes":{"maxItems":2000,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"type":{"type":"string","enum":["frame","group","component","text","image","shape","icon","chart","model3d","video","audio"]},"name":{"type":"string","maxLength":200},"x":{"type":"number","minimum":-100000,"maximum":100000},"y":{"type":"number","minimum":-100000,"maximum":100000},"width":{"type":"number","minimum":0,"maximum":20000},"height":{"type":"number","minimum":0,"maximum":20000},"rotation":{"type":"number","minimum":-36000,"maximum":36000},"opacity":{"type":"number","minimum":0,"maximum":1},"layout":{"type":"object","properties":{"mode":{"type":"string","enum":["absolute","flex","grid"]},"direction":{"type":"string","enum":["row","column"]},"gap":{"type":"number","minimum":0,"maximum":20000},"padding":{"type":"number","minimum":0,"maximum":20000},"columns":{"type":"integer","minimum":1,"maximum":24},"align":{"type":"string","enum":["start","center","end","stretch"]},"justify":{"type":"string","enum":["start","center","end","space-between"]},"wrap":{"type":"boolean"}},"required":["mode"],"additionalProperties":false},"sizing":{"type":"object","properties":{"width":{"type":"string","enum":["fixed","hug","fill"]},"height":{"type":"string","enum":["fixed","hug","fill"]},"minWidth":{"type":"number","minimum":0,"maximum":20000},"maxWidth":{"type":"number","minimum":0,"maximum":20000},"minHeight":{"type":"number","minimum":0,"maximum":20000},"maxHeight":{"type":"number","minimum":0,"maximum":20000}},"additionalProperties":false},"position":{"type":"string","enum":["flow","absolute"]},"pivot":{"type":"array","prefixItems":[{"type":"number","minimum":0,"maximum":1},{"type":"number","minimum":0,"maximum":1}],"items":false,"minItems":2,"maxItems":2},"component":{"type":"object","properties":{"name":{"type":"string","enum":["Button","Checkbox","Input","InputNumber","Slider","Image","Avatar","List","Statistics","Chart","Table","Select","Switch","Textarea","Card","Badge","Progress","Tabs","Dialog","Radio"]},"system":{"default":"shadcn","type":"string","enum":["shadcn","antd"]},"variant":{"type":"string","maxLength":80},"props":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":10000},{"type":"number"},{"type":"boolean"},{"maxItems":1000,"type":"array","items":{"type":"string","maxLength":2000}}]}}},"required":["name","system"],"additionalProperties":false},"interactions":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"trigger":{"type":"string","enum":["click","hover"]},"action":{"type":"string","enum":["navigate","toggle","url"]},"target":{"type":"string","maxLength":2000}},"required":["trigger","action","target"],"additionalProperties":false}},"scene":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"scale":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"mesh":{"type":"object","properties":{"positions":{"minItems":9,"maxItems":900000,"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000}},"indices":{"minItems":3,"maxItems":1800000,"type":"array","items":{"type":"integer","minimum":0,"maximum":299999}},"uv":{"maxItems":600000,"type":"array","items":{"type":"number","minimum":-100,"maximum":100}},"skinIndices":{"maxItems":1200000,"type":"array","items":{"type":"integer","minimum":0,"maximum":255}},"skinWeights":{"maxItems":1200000,"type":"array","items":{"type":"number","minimum":0,"maximum":1}}},"required":["positions","indices"],"additionalProperties":false},"material":{"type":"object","properties":{"color":{"type":"string","maxLength":80},"metalness":{"type":"number","minimum":0,"maximum":1},"roughness":{"type":"number","minimum":0,"maximum":1},"wireframe":{"type":"boolean"},"doubleSided":{"type":"boolean"},"textureAssetId":{"type":"string","maxLength":120}},"additionalProperties":false},"bones":{"maxItems":256,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","maxLength":120},"parent":{"type":"integer","minimum":-1,"maximum":255},"position":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3},"rotation":{"type":"array","prefixItems":[{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000},{"type":"number","minimum":-100000,"maximum":100000}],"items":false,"minItems":3,"maxItems":3}},"required":["name","parent","position"],"additionalProperties":false}}},"additionalProperties":false},"parentId":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"locked":{"type":"boolean"},"visible":{"type":"boolean"},"text":{"type":"string","maxLength":50000},"src":{"type":"string","maxLength":2000000},"style":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"}]}},"data":{"type":"object","propertyNames":{"type":"string","maxLength":80},"additionalProperties":{}}},"required":["id","type","name","x","y","width","height"],"additionalProperties":false}}},"required":["id","name","width","height","background","nodes"],"additionalProperties":false}}},"required":["name","description","system","theme","components","compositions"],"additionalProperties":false}},"required":["expectedVersion","definition"],"additionalProperties":false},"example":{"expectedVersion":1,"definition":{}}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"delete":{"summary":"Delete library; existing projects retain embedded designs","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/design-systems/{id}/versions":{"get":{"summary":"List immutable design-system versions","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/design-systems/{id}/apply":{"post":{"summary":"Apply a saved design system to a project","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"projectId":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["projectId","expectedRevision"],"additionalProperties":false},"example":{"projectId":"","expectedRevision":1}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/design-systems/{id}/insert":{"post":{"summary":"Insert a reusable component or composition","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"projectId":"","expectedRevision":1,"pageId":"","itemId":""}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects":{"get":{"summary":"List your projects","parameters":[],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"post":{"summary":"Create a project","parameters":[],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"My design","kind":"web"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}":{"get":{"summary":"Read a project","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"patch":{"summary":"Rename or describe a project","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"name":"Updated name"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"delete":{"summary":"Delete project and assets","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/document":{"put":{"summary":"Save a validated document at the observed revision","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"expectedRevision":1,"document":{}}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/merge":{"post":{"summary":"Merge nonconflicting human and agent edits","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"baseRevision":1,"base":{},"document":{}}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/changes":{"get":{"summary":"Read current revision and changes","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/checks":{"get":{"summary":"Inspect design","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/brief":{"get":{"summary":"Read design brief","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"put":{"summary":"Update request, answers and scope","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"expectedRevision":0,"request":"Design a product landing page"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/brief/approve":{"post":{"summary":"Explicitly approve the reviewed scope","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"expectedRevision":1}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/brief/interview":{"post":{"summary":"Prepare interview using your provider","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"provider":{"anyOf":[{"type":"string","enum":["openai","anthropic","gemini","openrouter","deepseek"]},{"type":"string","pattern":"^custom-[a-z0-9][a-z0-9-]{0,55}$"}]},"model":{"type":"string","minLength":1,"maxLength":200},"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["provider","expectedRevision"],"additionalProperties":false},"example":{"expectedRevision":1,"provider":"openai"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/assets":{"get":{"summary":"List owned assets","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"post":{"summary":"Upload a file (WebMCP converts base64 to multipart)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/google-slides":{"post":{"summary":"Export using your Google access token","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"accessToken":""}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/messages":{"get":{"summary":"Read project conversation","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"post":{"summary":"Store a conversation message","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"role":"user","text":"Refine the header spacing"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/generate":{"post":{"summary":"Generate a design proposal with a configured provider","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"prompt":{"type":"string","minLength":1,"maxLength":12000},"provider":{"anyOf":[{"type":"string","enum":["openai","anthropic","gemini","openrouter","deepseek"]},{"type":"string","pattern":"^custom-[a-z0-9][a-z0-9-]{0,55}$"}]},"model":{"type":"string","minLength":1,"maxLength":200},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["prompt","provider","expectedRevision"],"additionalProperties":false},"example":{"provider":"openai","expectedRevision":1,"prompt":"Refine the header spacing"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/media":{"post":{"summary":"Generate images with OpenAI, Gemini, Leonardo, Grok or custom providers; OpenAI speech and fal media also supported","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"type":"string","enum":["image","audio","video"]},"prompt":{"type":"string","minLength":1,"maxLength":4000},"provider":{"anyOf":[{"type":"string","enum":["openai","gemini","fal","leonardo","grok"]},{"type":"string","pattern":"^custom-[a-z0-9][a-z0-9-]{0,55}$"}]},"model":{"type":"string","minLength":1,"maxLength":200},"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer"]},"sourceAssetId":{"type":"string","maxLength":120,"pattern":"^[a-zA-Z0-9_-]+$"},"durationSeconds":{"type":"integer","minimum":1,"maximum":190},"strength":{"type":"number","minimum":0,"maximum":1}},"required":["kind","prompt","provider"],"additionalProperties":false},"example":{"provider":"openai","kind":"image","prompt":"A ceramic vase in soft light"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/media/{jobId}":{"get":{"summary":"Read generation job status","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"jobId","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/export":{"post":{"summary":"Export saved design","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"format":"html"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/publish":{"post":{"summary":"Publish an immutable snapshot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"delete":{"summary":"Unpublish the current public snapshot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/preview":{"post":{"summary":"Create a public immutable preview snapshot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"delete":{"summary":"Remove all public snapshots (preview alias)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/projects/{id}/share":{"post":{"summary":"Create a public immutable share snapshot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"delete":{"summary":"Remove all public snapshots (share alias)","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/providers/{provider}":{"put":{"summary":"Save an official or custom BYOK connection (account session or API key only)","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"apiKey":{"type":"string","minLength":1,"maxLength":4096,"pattern":"^[^\\r\\n\\x00-\\x1f\\x7f]+$"},"baseUrl":{"type":"string","maxLength":2048,"format":"uri"},"model":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":80},"protocol":{"type":"string","enum":["openai","anthropic","gemini"]},"authMethod":{"type":"string","enum":["bearer","api-key","basic","none"]},"authHeader":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9-]{0,79}$"}},"additionalProperties":false},"example":{"apiKey":"<secure credential>","model":"<model ID>"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}},"delete":{"summary":"Remove an owned BYOK connection (account session or API key only)","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string"}}],"x-studio-agent-exposure":"human-only","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/providers":{"get":{"summary":"Read provider configuration metadata","parameters":[],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/observability/summary":{"get":{"summary":"Account activity, measured usage and coverage; scope=all requires configured operator","parameters":[{"name":"scope","in":"query","schema":{"default":"owner","type":"string","enum":["owner","all"]}},{"name":"days","in":"query","schema":{"default":7,"type":"integer","minimum":1,"maximum":30}},{"name":"projectId","in":"query","schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"actorId","in":"query","schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"channel","in":"query","schema":{"type":"string","enum":["browser","api","oauth","mcp","cli","webmcp","anonymous"]}},{"name":"kind","in":"query","schema":{"type":"string","enum":["http","provider","mcp","client","export"]}},{"name":"status","in":"query","schema":{"type":"string","enum":["running","success","error","interrupted"]}},{"name":"action","in":"query","schema":{"type":"string","maxLength":160,"pattern":"^[a-zA-Z0-9_./:* -]+$"}},{"name":"limit","in":"query","schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":160}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/observability/events":{"get":{"summary":"Paginated activity events with owner isolation","parameters":[{"name":"scope","in":"query","schema":{"default":"owner","type":"string","enum":["owner","all"]}},{"name":"days","in":"query","schema":{"default":7,"type":"integer","minimum":1,"maximum":30}},{"name":"projectId","in":"query","schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"actorId","in":"query","schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"channel","in":"query","schema":{"type":"string","enum":["browser","api","oauth","mcp","cli","webmcp","anonymous"]}},{"name":"kind","in":"query","schema":{"type":"string","enum":["http","provider","mcp","client","export"]}},{"name":"status","in":"query","schema":{"type":"string","enum":["running","success","error","interrupted"]}},{"name":"action","in":"query","schema":{"type":"string","maxLength":160,"pattern":"^[a-zA-Z0-9_./:* -]+$"}},{"name":"limit","in":"query","schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":160}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/observability/trace/{id}":{"get":{"summary":"Read correlated trace steps visible to your account","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"scope","in":"query","schema":{"default":"owner","type":"string","enum":["owner","all"]}},{"name":"days","in":"query","schema":{"default":7,"type":"integer","minimum":1,"maximum":30}},{"name":"projectId","in":"query","schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"actorId","in":"query","schema":{"type":"string","minLength":1,"maxLength":120}},{"name":"channel","in":"query","schema":{"type":"string","enum":["browser","api","oauth","mcp","cli","webmcp","anonymous"]}},{"name":"kind","in":"query","schema":{"type":"string","enum":["http","provider","mcp","client","export"]}},{"name":"status","in":"query","schema":{"type":"string","enum":["running","success","error","interrupted"]}},{"name":"action","in":"query","schema":{"type":"string","maxLength":160,"pattern":"^[a-zA-Z0-9_./:* -]+$"}},{"name":"limit","in":"query","schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":160}}],"x-studio-agent-exposure":"allowed","responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}},"/api/observability/client-events":{"post":{"summary":"Submit an allowlisted browser event without private content","parameters":[],"x-studio-agent-exposure":"none","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"event":{"type":"string","enum":["page_view","project_open","project_create","project_save","template_open","design_system_open","design_system_apply","export_start","export_finish","generation_start","generation_finish","editor_action","client_error"]},"page":{"type":"string","enum":["home","projects","templates","design-systems","editor","observability","settings","docs","guide"]},"action":{"type":"string","enum":["select","multiselect","move","resize","rotate","text_edit","font_change","duplicate","delete","group","ungroup","undo","redo","save","export","generate","navigate"]},"projectId":{"type":"string","minLength":1,"maxLength":120},"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"outcome":{"type":"string","enum":["success","error"]},"errorCode":{"type":"string","enum":["request_failed","network_error","unexpected_error","validation_error","revision_conflict"]}},"required":["event"],"additionalProperties":false},"example":{"event":"page_view","page":"templates"}}}},"responses":{"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Insufficient scope"},"404":{"description":"Resource not found"},"409":{"description":"Revision or merge conflict"},"2XX":{"description":"Success; exports return file bytes with Content-Type and Content-Disposition"}}}}}}