{"openapi":"3.1.1","info":{"title":"Blendstra public resource API","version":"1.3.0","description":"Implemented project, version, job, artifact and sharing operations. Availability depends on deployment configuration. OAuth uses /mcp as the resource and binds a workspace; copied tenant identifiers grant no access. Human browser sessions use the same-origin /api/backend facade. Account, billing and OAuth management are documented separately at /connect."},"servers":[{"url":"https://blendstra.com"}],"paths":{"/v1/workspaces/{workspaceId}/content-references":{"post":{"operationId":"prepareContentReference","summary":"Prepare permitted inputs from an exact public model","description":"Requires project:read, project:write and artifact:view plus owner/editor access to the destination project. Rechecks publisher permission and authorization after rendering. Does not start a Blender job or publish a result.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"201":{"description":"Success; no-store","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentReferencePackage"}}}},"default":{"description":"Canonical error; private and capability responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareContentReference"}}}}}},"/v1/workspaces/{workspaceId}/content-references/{packageId}":{"get":{"operationId":"getContentReference","summary":"Read an existing reference package","description":"Requires project:read and artifact:view. Only the requesting subject in the original workspace may read the manifest. Publisher grant revision, listing, exact version and destination access are rechecked.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"packageId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; no-store","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentReferencePackage"}}}},"default":{"description":"Canonical error; private and capability responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/content-references/{packageId}/artifacts/{artifactId}":{"get":{"operationId":"downloadContentReferenceArtifact","summary":"Download one prepared input through its unguessable capability","description":"The random 256-bit packageId is a capability, not an OAuth token. Share this address only with the intended consuming application. Exact artifact identity, current publication grant, source-download approval when applicable, destination lifetime and delivery limits are checked before and after object loading.","security":[],"parameters":[{"in":"path","name":"packageId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"artifactId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Immutable artifact bytes; Content-Type follows the verified artifact mediaType. Every response is no-store.","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"default":{"description":"Canonical error; private and capability responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/content-results":{"post":{"operationId":"saveContentResult","summary":"Save finished content with exact input sources","description":"Requires project:read, project:write and artifact:view plus owner/editor project access. Saves privately by default. Use an existing verified image/video artifact, a validated passive upload, or an explicitly confirmed durable provider result. Actual input artifact IDs must belong to the supplied permissioned packages; rendered_object requires matching bytes. Repeated idempotency keys recover the saved result.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"201":{"description":"Success; no-store","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentResult"}}}},"default":{"description":"Canonical error; private and capability responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveContentResult"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/content-results/{resultId}":{"get":{"operationId":"getContentResult","summary":"Read a private result and its current source availability","description":"Requires project:read and artifact:view plus owner/editor project access. Sources retain exact historical facts but become unavailable when their public grant is withdrawn.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"resultId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; no-store","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentResult"}}}},"default":{"description":"Canonical error; private and capability responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/content-results/{resultId}/sharing":{"patch":{"operationId":"shareContentResult","summary":"Choose whether the finished result is public","description":"Requires project:read, artifact:view and publication:manage plus project ownership. Publication is explicit, requires current source grants and an available output, and does not publish private projects or source files.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"resultId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; no-store","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentResult"}}}},"default":{"description":"Canonical error; private and capability responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShareContentResult"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/content-results/{resultId}/media":{"get":{"operationId":"deliverPrivateContentResult","summary":"Read a saved result image or video","description":"Requires project:read and artifact:view plus owner/editor project access. Serves a stored output, with passive media disposition. External provider results are linked and are not proxied.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"resultId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Immutable artifact bytes; Content-Type follows the verified artifact mediaType. Every response is no-store.","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"default":{"description":"Canonical error; private and capability responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/content-results/{resultId}":{"get":{"operationId":"publicContentResult","summary":"Read a published result with its source tray","description":"Only explicitly published results are available. Rechecks project lifetime and public delivery. Revoked sources are redacted; output links are withheld while a source is unavailable. Never exposes package capabilities or private project notes.","security":[],"parameters":[{"in":"path","name":"resultId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; no-store","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentResult"}}}},"default":{"description":"Canonical error; private and capability responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/content-results/{resultId}/media":{"get":{"operationId":"deliverPublicContentResult","summary":"Read a published result image or video","description":"Rechecks explicit result sharing, source grants, project lifetime and delivery limits before and after object loading. External provider results are linked and are not proxied.","security":[],"parameters":[{"in":"path","name":"resultId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Immutable artifact bytes; Content-Type follows the verified artifact mediaType. Every response is no-store.","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"default":{"description":"Canonical error; private and capability responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/project-deletions":{"get":{"operationId":"listProjectDeletions","summary":"List deletion progress for projects owned by this account","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100}},{"in":"query","name":"cursor","schema":{"type":"string"}}],"responses":{"200":{"description":"Owner-only deletion status. Billing history and minimal recovery metadata remain. Live-file removal follows native cleanup and the configured retention date.","content":{"application/json":{"schema":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["projectId","title","state","requestedAt","purgeAfter","retentionMillis","billingHistoryRetained"],"properties":{"projectId":{"type":"string"},"title":{"type":"string"},"state":{"enum":["active","stopping","retained","purging","purged"]},"requestedAt":{"type":["string","null"]},"purgeAfter":{"type":["string","null"]},"retentionMillis":{"type":"integer","minimum":0},"billingHistoryRetained":{"const":true}}}},"nextCursor":{"type":["string","null"]}}}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/deletion":{"get":{"operationId":"getProjectDeletion","summary":"Read owner-only deletion status after project access is revoked","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Owner-only deletion status. Billing history and minimal recovery metadata remain. Live-file removal follows native cleanup and the configured retention date.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["projectId","title","state","requestedAt","purgeAfter","retentionMillis","billingHistoryRetained"],"properties":{"projectId":{"type":"string"},"title":{"type":"string"},"state":{"enum":["active","stopping","retained","purging","purged"]},"requestedAt":{"type":["string","null"]},"purgeAfter":{"type":["string","null"]},"retentionMillis":{"type":"integer","minimum":0},"billingHistoryRetained":{"const":true}}}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"deleteProject","summary":"Confirm deletion, stop active jobs and schedule complete live-file cleanup","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"202":{"description":"Owner-only deletion status. Billing history and minimal recovery metadata remain. Live-file removal follows native cleanup and the configured retention date.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["projectId","title","state","requestedAt","purgeAfter","retentionMillis","billingHistoryRetained"],"properties":{"projectId":{"type":"string"},"title":{"type":"string"},"state":{"enum":["active","stopping","retained","purging","purged"]},"requestedAt":{"type":["string","null"]},"purgeAfter":{"type":["string","null"]},"retentionMillis":{"type":"integer","minimum":0},"billingHistoryRetained":{"const":true}}}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["confirmDelete"],"properties":{"confirmDelete":{"const":true}}}}}}}},"/v1/workspaces/{workspaceId}/execution-policy":{"get":{"operationId":"getWorkspaceExecutionPolicy","summary":"Read inherited execution policy and effective limits; project:read required.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Current private policy; no work starts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shared_18"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"saveWorkspaceExecutionPolicy","summary":"Current human workspace owner only; project:write + membership:manage required. Revision/idempotency protected. Restricts existing funding authority and never adds funds or paid permission.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Current private policy; no work starts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shared_19"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shared_26"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/execution-policy":{"get":{"operationId":"getProjectExecutionPolicy","summary":"Read project override and effective execution policy; current owner/editor with project:read required.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Current private policy; no work starts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shared_18"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"saveProjectExecutionPolicy","summary":"Current human workspace/project owner only; project:write + membership:manage required. Project override can only narrow workspace limits; null restores inheritance.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Current private policy; no work starts.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shared_23"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shared_27"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/jobs/{jobId}/preview-lease":{"post":{"operationId":"jobPreviewLease","summary":"Read a short-lived private descriptor for current-attempt verified draft geometry. Requires project:read + artifact:view and current editor/owner access. A draft is not a saved or accepted version; cancellation/expiry invalidates draft access.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"jobId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPreviewLease"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmptyRequest"}}}}}},"/v1/workspaces/{workspaceId}/creations":{"post":{"operationId":"createModel","summary":"Submit one bounded private modeling intent with server defaults; retries recover the same project/input/job. The response retains its operation reference through partial failures.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"202":{"description":"Private response; no caching.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreationOperation"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateModel"}}}}}},"/v1/workspaces/{workspaceId}/creations/{operationId}":{"get":{"operationId":"getCreation","summary":"Read the exact durable operation/result and authorized on-demand artifact options. Starts no work and mints no transfer.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"operationId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Private response; no caching.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreationOperation"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/review":{"get":{"operationId":"getProjectReview","summary":"Read private editor notes at a consistent revision. Follow nextOffset using revision; currentRevision reports newer notes. Content and anchors grant no execution, acceptance or publication authority.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"offset","schema":{"type":"integer","minimum":0,"maximum":200}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":20}},{"in":"query","name":"revision","schema":{"type":"integer","minimum":0,"maximum":200}},{"in":"query","name":"entryId","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"description":"Retrieve one exact immutable entry at the requested revision; offset must be absent or zero."}],"responses":{"200":{"description":"Success; private response is never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectReview"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"appendProjectReview","summary":"Append an immutable private note with revision conflict protection and idempotent retry. Corrections require a saved version; addressed corrections require a result version. History is bounded to 200 events / 256 KiB. Only owners and editors may read or write.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; private response is never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppendedProjectReview"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppendProjectReview"}}}}}},"/v1/workspaces/{workspaceId}/capabilities":{"get":{"operationId":"getCapabilities","summary":"Read released execution prices and configured limits without starting work or granting credit","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Ordinary creation uses released server defaults without a separate quote. Configured profiles do not guarantee provider capacity or workspace allowance.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["schemaVersion","workspaceId","inputs","maxUploadBytes","execution","viewingStartsCompute","remixStartsCompute","quoteRequired"],"properties":{"schemaVersion":{"const":"1.0"},"workspaceId":{"type":"string"},"inputs":{"type":"array","items":{"enum":["script","import_blend","import_glb"]}},"maxUploadBytes":{"type":"integer","minimum":1},"maxPreparedGlbBytes":{"type":"integer","minimum":1,"maximum":67108864,"description":"Prepared GLB admission bound, independent of ordinary maxUploadBytes and workspace storage quota. Defaults to 64 MiB when the existing request bound supports 8 MiB signed parts. Explicit lower prepared limits are preserved; request bounds below one part retain direct-upload capacity. The upload-transfer response supplies all part and completion instructions. Strict container, scene and viewer resource checks still apply before saving a version."},"execution":{"type":"object","additionalProperties":false,"required":["configured","paused","profiles","prices"],"properties":{"configured":{"type":"boolean"},"paused":{"type":"boolean"},"maxJobChargeMicros":{"type":"integer","minimum":0,"maximum":20000000,"description":"Current effective workspace authorization ceiling; may be lower than the global $20 service limit."},"profiles":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["computeProfileId","computeClass","limits"],"properties":{"computeProfileId":{"type":"string"},"computeClass":{"enum":["cpu","gpu"]},"limits":{"type":"object","additionalProperties":false,"required":["wallTimeSeconds","memoryMiB","outputBytes"],"properties":{"wallTimeSeconds":{"type":"integer","minimum":1},"memoryMiB":{"type":"integer","minimum":128},"outputBytes":{"type":"integer","minimum":1}}},"inspectionMedia":{"type":"boolean","description":"True only after a matching worker profile with optional stored inspection media is activated."},"maxSavedSourceBytes":{"type":"integer","minimum":1,"maximum":536870912,"description":"Saved-source transfer size supported by this pinned worker, capped by hosted storage capacity. Legacy profiles support at most 32 MiB."}}}},"prices":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["priceVersionId","computeProfileId","currency","rates"],"properties":{"priceVersionId":{"type":"string"},"computeProfileId":{"type":"string"},"currency":{"const":"USD"},"rates":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["meter","numeratorMicros","denominatorQuantity"],"properties":{"meter":{"enum":["cpu_milliseconds","gpu_milliseconds"]},"numeratorMicros":{"type":"integer","minimum":0},"denominatorQuantity":{"type":"integer","minimum":1}}}}}}}}},"viewingStartsCompute":{"const":false},"remixStartsCompute":{"const":false},"quoteRequired":{"const":false},"ordinaryCreation":{"type":"object","additionalProperties":false,"properties":{"submitTool":{"const":"model_create"},"resultTool":{"const":"model_get"},"contractVersion":{"const":"1.0"}},"required":["submitTool","resultTool","contractVersion"]},"authoringGuide":{"type":"object","additionalProperties":false,"properties":{"tool":{"const":"authoring_guide"},"version":{"const":"2026-10-13.3"}},"required":["tool","version"]},"executionPolicy":{"$ref":"#/components/schemas/Shared_18"},"maxSavedSourceBytes":{"type":"integer","minimum":1,"maximum":536870912,"description":"Saved-source transfer size supported by the default runnable execution profile. Omitted when no profile is runnable. Existing larger saved sources remain stored and downloadable after a worker rollback. Ordinary inputs and worker model GLBs retain maxUploadBytes; prepared uploads use maxPreparedGlbBytes."},"inspection":{"type":"object","additionalProperties":false,"properties":{"renderTool":{"const":"model_render"},"renderer":{"const":"blendstra_web_viewer_v1"},"resolutions":{"const":[512,1024]},"savedVersionRequired":{"const":true},"animationTime":{"const":true},"partIsolation":{"const":true},"startsBlenderJob":{"const":false},"sourceObjectLimit":{"const":1024},"maxBatchViews":{"const":4},"batchParameter":{"const":"views"}},"required":["renderTool","renderer","resolutions","savedVersionRequired","animationTime","partIsolation","startsBlenderJob","sourceObjectLimit","maxBatchViews","batchParameter"]},"materials":{"type":"object","additionalProperties":false,"properties":{"listTool":{"const":"materials_list"},"getTool":{"const":"material_get"},"version":{"const":"1"}},"required":["listTool","getTool","version"]},"availability":{"type":"object","additionalProperties":false,"properties":{"cpu":{"$ref":"#/components/schemas/AccountFeatureAvailability"},"gpu":{"$ref":"#/components/schemas/AccountFeatureAvailability"},"preparedImport":{"$ref":"#/components/schemas/AccountFeatureAvailability"},"viewing":{"$ref":"#/components/schemas/AccountFeatureAvailability"},"export":{"$ref":"#/components/schemas/AccountFeatureAvailability"}},"required":["cpu","gpu","preparedImport","viewing","export"]},"accountPath":{"const":"/account"},"gpuInformationPath":{"const":"/gpu-modeling"},"supportEmail":{"const":"support+blendstra@fenceline.ai"},"usage":{"type":"object","additionalProperties":false,"properties":{"storage":{"type":"object","additionalProperties":false,"properties":{"usedBytes":{"type":"integer","minimum":0},"reservedBytes":{"type":"integer","minimum":0},"limitBytes":{"type":"integer","minimum":0},"resetAt":{"type":"null"}},"required":["usedBytes","reservedBytes","limitBytes","resetAt"]},"delivery":{"type":"object","additionalProperties":false,"properties":{"usedBytes":{"type":"integer","minimum":0},"limitBytes":{"type":"integer","minimum":0},"resetAt":{"type":"string","format":"date-time"}},"required":["usedBytes","limitBytes","resetAt"]},"includedCpu":{"anyOf":[{"type":"null"},{"type":"object","additionalProperties":false,"properties":{"daily":{"type":"object","additionalProperties":false,"properties":{"usedJobs":{"type":"integer","minimum":0},"limitJobs":{"type":"integer","minimum":0},"resetAt":{"type":["string","null"],"format":"date-time"}},"required":["usedJobs","limitJobs","resetAt"]},"monthly":{"type":"object","additionalProperties":false,"properties":{"usedJobs":{"type":"integer","minimum":0},"limitJobs":{"type":"integer","minimum":0},"resetAt":{"type":["string","null"],"format":"date-time"}},"required":["usedJobs","limitJobs","resetAt"]}},"required":["daily","monthly"]}]}},"required":["storage","delivery","includedCpu"]},"retainedInputGlb":{"type":"object","additionalProperties":false,"properties":{"maxBytes":{"type":"integer","minimum":1024,"maximum":536870912},"chunkBytes":{"const":8388608},"projectOwnerOnly":{"const":true},"viewingRequiresSeparatePreview":{"const":true}},"required":["maxBytes","chunkBytes","projectOwnerOnly","viewingRequiresSeparatePreview"]}}}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects":{"get":{"operationId":"listProjects","summary":"listProjects","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectPage"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createProject","summary":"createProject","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProject"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}":{"get":{"operationId":"getProject","summary":"getProject","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"tombstoneProject","summary":"tombstoneProject","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tombstone"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/head":{"put":{"operationId":"advanceHead","summary":"advanceHead","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HeadSave"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/members":{"put":{"operationId":"setProjectMember","summary":"setProjectMember","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMember"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectMember"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/versions":{"get":{"operationId":"listVersions","summary":"listVersions","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionPage"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/versions/{versionId}":{"get":{"operationId":"getVersion","summary":"getVersion","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Version"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/uploads":{"post":{"operationId":"createUpload","summary":"createUpload","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadTicket"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadRequest"}}}}},"get":{"operationId":"listRecoverableUploads","parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}},{"in":"path","name":"projectId","required":true,"schema":{"pattern":"^[A-Za-z0-9_-]{1,128}$","type":"string"}},{"in":"query","name":"limit","schema":{"default":20,"maximum":20,"minimum":1,"type":"integer"}},{"in":"query","name":"cursor","schema":{"maxLength":2048,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecoverableUploadPage"}}},"description":"Success"},"default":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Canonical error; private responses are never cached"}},"security":[{"UserBearer":[]}],"summary":"List the current uploader’s expired interrupted uploads","description":"Requires current project owner/editor access and project:write. Scans at most 20 pending, receiving or abandoning records using the existing project/state index. Returns only expired records belonging to the current subject. A filtered page may be empty with a nextCursor; listing never changes object state or storage accounting."}},"/v1/workspaces/{workspaceId}/projects/{projectId}/uploads/{uploadId}":{"put":{"operationId":"receiveUpload","summary":"receiveUpload","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"uploadId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"header","name":"Content-Length","required":true,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Must equal the immutable stored upload/output byteLength. Authority and length are checked before reading the body; chunked transfer is not accepted."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Artifact"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"description":" Authentication, current scoped intent and declared length are checked in onRequest before binary buffering. The handler repeats current authority checks before byte storage."}},"/v1/workspaces/{workspaceId}/projects/{projectId}/uploads/{uploadId}/recover":{"post":{"operationId":"recoverUpload","summary":"recoverUpload","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"uploadId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadRecovery"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/artifacts/{artifactId}":{"get":{"operationId":"downloadArtifact","summary":"downloadArtifact","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"artifactId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Immutable artifact bytes; Content-Type follows verified artifact mediaType. Every response is no-store.","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/jobs/quote":{"post":{"operationId":"quoteJob","summary":"quoteJob","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitJob"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/jobs":{"post":{"operationId":"submitJob","summary":"submitJob","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"202":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ExecuteJob"},{"$ref":"#/components/schemas/SubmitJob"}]}}}}},"get":{"operationId":"listJobs","summary":"listJobs","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobPage"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/jobs/{jobId}":{"get":{"operationId":"getJob","summary":"getJob","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"jobId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/jobs/{jobId}/cancel":{"post":{"operationId":"cancelJob","summary":"cancelJob","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"jobId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/jobs/{jobId}/receipt":{"get":{"operationId":"getReceipt","summary":"getReceipt","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"jobId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Receipt"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/publications":{"post":{"operationId":"createPublication","summary":"createPublication","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Publication"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePublication"}}}}},"get":{"operationId":"listPublications","summary":"List owner publication management records","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"in":"query","name":"cursor","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["items","nextCursor"],"properties":{"items":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"required":["publication","listed","suspended"],"properties":{"publication":{"$ref":"#/components/schemas/Publication"},"listed":{"type":"boolean"},"suspended":{"type":"boolean"}}}},"nextCursor":{"type":["string","null"]}}}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Fresh project owner with publication:manage receives current unlisted, listed, revoked and suspended records. Pagination is bounded and cursor-bound to this tenant, project and actor; no-store."}},"/v1/workspaces/{workspaceId}/projects/{projectId}/publications/{publicationId}":{"patch":{"operationId":"updatePublication","summary":"updatePublication","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"publicationId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Publication"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicationUpdate"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/grants":{"post":{"operationId":"createGrant","summary":"createGrant","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Grant"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGrant"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/grants/{grantId}":{"delete":{"operationId":"revokeGrant","summary":"revokeGrant","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"grantId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Grant"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/grants/{grantId}/leases":{"post":{"operationId":"acquireLease","summary":"acquireLease","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"grantId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaseResponse"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaseRequest"}}}}}},"/v1/workspaces/{workspaceId}/leases/{leaseId}":{"delete":{"operationId":"revokeLease","summary":"revokeLease","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"leaseId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Revoked"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/clones":{"post":{"operationId":"cloneProject","summary":"cloneProject","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneResult"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloneRequest"}}}}}},"/v1/workspaces/{workspaceId}/clones/abandon":{"post":{"operationId":"abandonClone","summary":"abandonClone","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AbandonedClone"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdempotencyKey"}}}}}},"/v1/workspaces/{workspaceId}/clones/purge":{"post":{"operationId":"purgeClone","summary":"purgeClone","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurgedClone"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdempotencyKey"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/purge":{"post":{"operationId":"purgeProject","summary":"purgeProject","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurgeResult"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/orphans/{artifactId}":{"delete":{"operationId":"pruneOrphanOutput","summary":"pruneOrphanOutput","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"artifactId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deleted"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/webhooks":{"post":{"operationId":"createWebhook","summary":"createWebhook","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSecret"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhook"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/webhooks/{endpointId}/verify":{"post":{"operationId":"verifyWebhook","summary":"verifyWebhook","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"endpointId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookVerified"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookChallenge"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/webhooks/{endpointId}":{"delete":{"operationId":"revokeWebhook","summary":"revokeWebhook","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"endpointId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Revoked"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/jobs/{jobId}/webhooks":{"put":{"operationId":"attachWebhooks","summary":"attachWebhooks","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"jobId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointIds"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndpointIds"}}}}}},"/v1/gallery":{"get":{"operationId":"gallery","summary":"Search explicitly listed models by words, tag, creator, remix lineage or current capability; follow nextCursor even on empty filtered pages","security":[],"parameters":[{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":2048}},{"in":"query","name":"q","schema":{"type":"string","maxLength":120}},{"in":"query","name":"tag","schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},{"in":"query","name":"creator","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"remixedFrom","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"capability","schema":{"enum":["remix","source-download","clip","content-reference"]},"description":"Current allowed remix, source download, saved clip, or explicitly permissioned rendered content-reference use. Clip availability does not mean animated GLB."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicModelPage"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/publications/{publicationId}":{"get":{"operationId":"publicModel","summary":"publicModel","security":[],"parameters":[{"in":"path","name":"publicationId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicModel"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/publications/{publicationId}/resources/{kind}":{"get":{"operationId":"publicResource","summary":"publicResource","security":[],"parameters":[{"in":"path","name":"publicationId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"kind","required":true,"schema":{"enum":["model","poster","clip","source"]}},{"in":"query","name":"versionId","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"posterRevision","required":false,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Immutable artifact bytes; Content-Type follows verified artifact mediaType. Read anonymously with versionId, model, poster and clip bytes are shareable for five minutes (Cache-Control: public, max-age=60, s-maxage=300), which bounds revocation lag. Every other success and every error is no-store.","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/viewer-resources/{leaseId}/{kind}":{"get":{"operationId":"privateResource","summary":"privateResource","security":[{"LeaseBearer":[]}],"parameters":[{"in":"path","name":"leaseId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"kind","required":true,"schema":{"enum":["model","poster","clip","source"]}},{"in":"header","name":"Origin","required":true,"schema":{"type":"string","format":"uri"}}],"responses":{"200":{"description":"Immutable artifact bytes; Content-Type follows verified artifact mediaType. Every response is no-store.","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"options":{"operationId":"privateResourcePreflight","summary":"privateResourcePreflight","security":[],"parameters":[{"in":"path","name":"leaseId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"kind","required":true,"schema":{"enum":["model","poster","clip","source"]}},{"in":"header","name":"Origin","required":true,"schema":{"type":"string","format":"uri"}}],"responses":{"204":{"description":"Success"},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/versions/{versionId}/viewer-lease":{"post":{"operationId":"acquireProjectViewerLease","summary":"Acquire first-party viewer authorization window","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["descriptor","lease"],"properties":{"descriptor":{"$ref":"#/components/schemas/Descriptor"},"lease":{"$ref":"#/components/schemas/ResourceLease"}}}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Fresh owner/editor project:read and artifact:view authorize display of one immutable version for at most 30 seconds. expiresAt bounds viewer display authorization and renewal, not the lifetime of the cookie-protected artifact URL. The BFF maps the root-relative URL and supplies same-origin authentication. Every artifact GET independently rechecks current authority; no embed grant, source permission or worker is created.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["resource"],"properties":{"resource":{"enum":["model","poster"]}}}}}}}},"/v1/workspaces/{workspaceId}/publications/{publicationId}/reports":{"post":{"operationId":"reportPublicModel","summary":"reportPublicModel","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"publicationId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"202":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelReportReceived"}}}},"default":{"description":"Canonical error; all responses are no-store","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Fresh verified account/workspace project:read required. One immutable report per subject/publication; exact retries return the receipt. At most10 new reports per subject/application/UTCday. Reporter identity and text are visible only to the separate moderator authority. Report does not automatically suspend a model.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelReportRequest"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/versions/{versionId}/source-sharing":{"get":{"operationId":"previewSourceSharing","summary":"Owner-only inventory and exact source hash; incomplete inventory is not a privacy certification","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourcePreview"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/upload-transfers":{"post":{"operationId":"prepareUploadTransfer","summary":"Prepare an immutable binary upload with a separate five-minute artifact-only capability","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"201":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadTransfer"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadRequest"}}}},"description":"Prepare an artifact-only transfer for immutable local bytes. Repeat the exact request and idempotency key after interruption or expiry to renew a pending/receiving intent with the same artifact, storage reservation and acknowledged parts. Renewal never revives retiring or retired objects. GLB inputs larger than 8 MiB use bounded parts; skip uploaded parts, then complete. Current project access and size policy still apply. A null transfer means the upload is complete."}},"/v1/workspaces/{workspaceId}/projects/{projectId}/artifacts/{artifactId}/transfer":{"post":{"operationId":"prepareDownloadTransfer","summary":"Prepare a narrow download capability; source still requires artifact:source","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"artifactId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileTransfer"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/transfers/{transferId}":{"options":{"operationId":"modelWidgetTransferPreflight","summary":"Allow GET preflight only from the dedicated model widget origin; artifact access still requires its expiring capability","security":[],"parameters":[{"in":"path","name":"transferId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"header","name":"Origin","required":true,"schema":{"type":"string","const":"https://widgets.blendstra.com"}},{"in":"header","name":"Access-Control-Request-Method","required":true,"schema":{"type":"string","const":"GET"}}],"responses":{"204":{"description":"Widget GET preflight allowed without credentials"},"403":{"description":"Unsupported origin or method"}}},"get":{"operationId":"getTransferredArtifact","summary":"Use the artifact-bound transfer capability; expiry and current project/connection authority are rechecked","security":[{"TransferBearer":[]}],"parameters":[{"in":"path","name":"transferId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"putTransferredArtifact","summary":"Use the artifact-bound transfer capability; expiry and current project/connection authority are rechecked","security":[{"TransferBearer":[]}],"parameters":[{"in":"path","name":"transferId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"header","name":"Content-Length","required":true,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Artifact"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/grants/{grantId}/renew":{"post":{"operationId":"renewGrant","summary":"Owner extends the same private grant up to 30 days, without broadening recipient, origin, version or permissions","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"grantId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Grant"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"expiresAt":{"type":"string","format":"date-time"},"expectedExpiresAt":{"type":"string","format":"date-time"},"sourceReview":{"$ref":"#/components/schemas/Shared_135"}},"required":["expiresAt","expectedExpiresAt"]}}}}}},"/v1/workspaces/{workspaceId}/continuation":{"get":{"operationId":"getContinuation","summary":"Read this account’s saved intent and authorized pointers; no additional authority is granted","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContinuationResult"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"saveContinuation","summary":"Save or explicitly replace this account’s pending request for 30 days","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContinuationResult"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"goal":{"type":"string","minLength":1,"maxLength":2000},"expectedRevision":{"type":"integer","minimum":0},"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"objectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["goal","expectedRevision"]}}}}},"patch":{"operationId":"finishContinuation","summary":"Complete or cancel the exact saved request; stale identifiers and revisions are rejected","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContinuationResult"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"requestId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"expectedRevision":{"type":"integer","minimum":1},"state":{"enum":["completed","cancelled"]},"resultVersionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["requestId","expectedRevision","state"]}}}}}},"/v1/workspaces/{workspaceId}/catalogs":{"get":{"operationId":"listCatalogs","summary":"List this account or app’s private catalogs","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelCatalogPage"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"createCatalog","summary":"Create a private list of reusable model references, optionally with the pinned walk-gate kit","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"201":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelCatalog"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"title":{"type":"string","minLength":1,"maxLength":120},"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"},"kit":{"type":"string","const":"walk-gate-v1","description":"Snapshot five original gate generators into this private managed catalog. Omit for an empty editable catalog."}},"required":["title","idempotencyKey"]}}}}}},"/v1/workspaces/{workspaceId}/catalogs/{catalogId}":{"get":{"operationId":"getCatalog","summary":"Read pinned references; entries with lost project or version access are omitted","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"catalogId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelCatalog"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateCatalog","summary":"Change one catalog name, description, pin, removal or curated order at the expected revision","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"catalogId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelCatalog"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"expectedRevision":{"type":"integer","minimum":0},"title":{"type":"string","minLength":1,"maxLength":120},"entry":{"$ref":"#/components/schemas/SavedCatalogEntry"},"removeKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"description":{"type":"string","maxLength":500},"order":{"type":"array","maxItems":100,"uniqueItems":true,"items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}},"required":["expectedRevision"]}}}},"description":" Register an exact saved version explicitly with entry; project save alone does not create a catalog entry. Optional component metadata remains declared claims with no added import, sharing or publication permission."},"delete":{"operationId":"deleteCatalog","summary":"Delete a catalog while preserving its projects and artifacts","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"catalogId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"deleted":{"const":true}},"required":["deleted"]}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/prepared-imports":{"post":{"operationId":"importPreparedModel","summary":"Validate and save a prepared GLB without Blender execution","description":"Requires project:read, project:write and artifact:view plus current owner/editor access. artifactId selects the lightweight prepared_glb preview. Optional sourceArtifactId retains a separate .blend or GLB master and requires artifact:source; GLB masters also require project ownership and remain private. An unsaved prepared_glb upload rejected by viewer limits can be reused as sourceArtifactId without copying or re-uploading it. Only the preview is subject to viewer geometry limits; master bytes and kind remain unchanged and correspondence stays unverified. The resulting version supports web viewing, not source editing or editable remixing. Retry with the same unchanged idempotency key.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shared_175"}}}},"responses":{"201":{"description":"Immutable prepared version","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Version"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/recipes":{"get":{"operationId":"listRecipes","summary":"Find original private seeds by words, kind, exact parameter or declared capability. Declarations do not establish evaluated geometry.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"q","schema":{"type":"string","maxLength":80}},{"in":"query","name":"parameter","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"kind","schema":{"enum":["model","component"]}},{"in":"query","name":"capability","schema":{"type":"string","enum":["view","source-edit","animation","recipe-parameter"]}}],"responses":{"200":{"description":"Private bounded result. Declared seed capability is not native or production acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeList"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/recipes/prepare":{"post":{"operationId":"prepareRecipe","summary":"Validate the exact recipe and dependency pins with current source access, before uploads or execution. Requires project write permission; gate reuse also requires source and view scopes.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Private bounded result. Declared seed capability is not native or production acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreparedRecipe"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeRequest"}}}}}},"/v1/workspaces/{workspaceId}/recipe-instances":{"post":{"operationId":"instantiateRecipe","summary":"Create or revise a private seed through ordinary authorized creation and immutable jobs. Retry the unchanged request with the same idempotency key after partial setup.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"202":{"description":"Private bounded result. Declared seed capability is not native or production acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeOperation"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeRequest"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/versions/{versionId}/recipe":{"get":{"operationId":"getVersionRecipe","summary":"Recover immutable recipe/dependency pins and app controls from the retained job script. Requires source access. Script matching is not independent geometry evidence.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Private bounded result. Declared seed capability is not native or production acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeReceipt"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/catalogs/{catalogId}/search":{"get":{"operationId":"searchCatalog","summary":"Search one private catalog by words, verified capabilities or recorded reference facts; requires project:read and artifact:view","description":"Examines at most 20 pinned entries and checks retained evidence for at most 20 candidate reference rows per page. A paused reference search resumes inside its catalog entry through the existing cursor, bound to that journal snapshot. Returned models do not repeat merely to enumerate additional reference summaries. Follow nextCursor even for an empty filtered page. Cursors bind principal, permissions, catalog revision and normalized query; changed filters require a fresh search. Changed selected reference journals during evidence reads return a conflict. All reference and dimension filters match one selected reference and one measurement, never a combination of unrelated facts. Recorded product identities, publisher names and measurements establish no official authority or physical fit. Object IDs are attributed unverified anchors. Source-dependent findings remain restricted without artifact:source. No evidence URLs, evidence artifact handles or dependency graph are returned, and no work or publication starts. Optional component filters match explicit currently authorized metadata and compose with reference filters. Saved candidates may include componentUse with exact model_create components arguments and a nested source scene_inspect handoff. Inspect the exact version design and dimensions before choosing reuse; the descriptor proves neither fit nor full import eligibility. model_create revalidates complete inspection, source pins, dependencies and current access. Search never selects or injects a component. Saving a project does not automatically register a catalog entry.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"catalogId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"q","schema":{"type":"string","maxLength":120},"description":"Up to eight words from catalog labels/keys/tags or one selected reference title, identity or publisher. Evidence URLs and private assumptions are not searched."},{"in":"query","name":"capability","schema":{"type":"string","enum":["view","source-edit","animation","recipe-parameter"]}},{"in":"query","name":"parameter","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"name":"referenceState","in":"query","schema":{"type":"string","enum":["current","accepted"]},"description":"Omitting this field uses current facts when available and permits ordinary catalog matches without references. Explicit current requires a matching recorded reference and selects the latest fact per reference on the pinned version. Accepted requires facts before the single active acceptance only when it names that version; withdrawn acceptance does not restore an older decision."},{"name":"namespace","in":"query","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact recorded namespace after trimming; case-sensitive."},{"name":"productId","in":"query","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact recorded product ID after trimming; use namespace to disambiguate."},{"name":"variantId","in":"query","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact recorded resolved variant ID on the same reference as all other filters."},{"name":"publisher","in":"query","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact case-insensitive recorded publisher name; this is not publisher verification."},{"name":"objectId","in":"query","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"description":"Exact stored reference anchor on this version. Presence and compatibility require separate inspection."},{"name":"measurementLabel","in":"query","schema":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact case-insensitive recorded measurement label after trimming; combine with basis, unit and at least one bound."},{"name":"measurementBasis","in":"query","schema":{"type":"string","enum":["nominal","documented","modeled"]},"description":"Required for a measurement constraint. Nominal, documented and modeled measurements remain separate."},{"name":"measurementUnit","in":"query","schema":{"type":"string","enum":["mm","cm","m","in","ft","deg"]},"description":"Required query unit. Length units convert exactly; degrees match only degrees."},{"name":"measurementMin","in":"query","schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8})(?:\\.[0-9]{1,6})?$"},"description":"Inclusive minimum as a nonnegative decimal string with at most six decimal places. One bound is required for a measurement constraint."},{"name":"measurementMax","in":"query","schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8})(?:\\.[0-9]{1,6})?$"},"description":"Inclusive maximum, no smaller than the minimum, using the same query unit and decimal grammar."},{"name":"measurementApproximate","in":"query","schema":{"type":"boolean"},"description":"Optional exact filter for the recorded approximation flag; otherwise either is allowed and always reported. Requires a complete measurement constraint."},{"in":"query","name":"kind","schema":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,63}$"},"description":"Exact declared component kind, including custom kinds. Only current authorized explicit component metadata participates; legacy inferred defaults do not match."},{"in":"query","name":"mountType","schema":{"type":"string","enum":["axis","face","point","socket"]},"description":"Require a declared component mount of this type; this does not establish physical fit."},{"in":"query","name":"license","schema":{"type":"string","enum":["original","cc0","cc-by","brand-reserved"]},"description":"Exact declared component rights basis. This is a recorded claim, not a reuse or publication permission grant."},{"in":"query","name":"brand","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact case-insensitive declared component brand after trimming; not brand verification."},{"in":"query","name":"componentProductId","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact declared component product ID after trimming. Existing productId and measurement filters still match reference-journal facts and remain conjunctive."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":20,"default":10}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Authorized exact saved-version matches with bounded capability findings; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogSearchPage"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/versions/{versionId}/render":{"post":{"operationId":"renderSavedModel","summary":"Render an exact saved model using the website viewer","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewerRenderResult"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Private owner/editor project:read and artifact:view are checked before and after rendering, including cache hits. Choose a camera or named view, optional part isolation and animation time. Returns a PNG with model, image and renderer hashes. Uses bounded preview compute without starting a Blender job, saving a version or changing publication. No separate browser login is required. Camera coordinates use glTF Y-up. Repeated identical views are cached.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewerRenderRequest"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/versions/{versionId}/poster":{"post":{"operationId":"regeneratePoster","summary":"Regenerate the saved model poster","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Version"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Render the exact saved web model on the studio background, save a presentation image, and refresh previews without a new model version or Blender job. Project read/write and artifact view permissions are checked again before saving.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedPosterArtifactId":{"type":["string","null"],"pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["expectedPosterArtifactId"],"additionalProperties":false}}}}},"put":{"operationId":"assignPoster","summary":"Set a generated image as the saved version poster","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Version"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Persist a selected bounded PNG without compute. Pins the exact model artifact and hash, compares the expected poster before and after storage, and preserves original versions. Requires owner/editor project read/write and artifact view permissions.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedPosterArtifactId":{"type":["string","null"],"pattern":"^[A-Za-z0-9_-]{1,128}$"},"modelArtifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"modelSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageBase64":{"type":"string","maxLength":11184812,"description":"Canonical base64 PNG, at most 8 MiB and 2048 pixels per side."}},"required":["expectedPosterArtifactId","modelArtifactId","modelSha256","imageBase64"],"additionalProperties":false}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/edits":{"post":{"operationId":"editModel","summary":"Apply a supported exact-part source edit and recover its durable creation operation","security":[{"UserBearer":[]}],"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetedEditRequest"}}}},"responses":{"202":{"description":"Private response; no caching.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreationOperation"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/context":{"get":{"operationId":"getModelContext","summary":"Read compact version-bound private model context and targeted source facts","security":[{"UserBearer":[]}],"parameters":[{"name":"workspaceId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"name":"projectId","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"name":"versionId","in":"query","schema":{"type":"string"}},{"name":"objectIds","in":"query","schema":{"type":"string","description":"Comma-separated exact source object IDs; one to twenty unique IDs."}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":12}}],"responses":{"200":{"description":"Private context; source fields require source access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelContext"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/catalogs/search":{"get":{"operationId":"searchCatalogs","summary":"Search authorized private catalogs with exact saved-version pointers","description":"Visits at most three catalogs, examines at most sixty pinned entries and returns at most twenty matches per page. Follow nextCursor on empty filtered pages. Each result identifies its catalog and exact immutable model. Uses the same capability/reference filters and current access checks as single-catalog search. Catalog membership grants no source or component reuse permission. Existing recipe use handles still read the exact recipe receipt; search starts no work. Optional component filters match explicit currently authorized metadata and compose with reference filters. Saved candidates may include componentUse with exact model_create components arguments and a nested source scene_inspect handoff. Inspect the exact version design and dimensions before choosing reuse; the descriptor proves neither fit nor full import eligibility. model_create revalidates complete inspection, source pins, dependencies and current access. Search never selects or injects a component. Saving a project does not automatically register a catalog entry.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"q","schema":{"type":"string","maxLength":120},"description":"Up to eight words from catalog labels/keys/tags or one selected reference title, identity or publisher. Evidence URLs and private assumptions are not searched."},{"in":"query","name":"capability","schema":{"type":"string","enum":["view","source-edit","animation","recipe-parameter"]}},{"in":"query","name":"parameter","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"name":"referenceState","in":"query","schema":{"type":"string","enum":["current","accepted"]},"description":"Omitting this field uses current facts when available and permits ordinary catalog matches without references. Explicit current requires a matching recorded reference and selects the latest fact per reference on the pinned version. Accepted requires facts before the single active acceptance only when it names that version; withdrawn acceptance does not restore an older decision."},{"name":"namespace","in":"query","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact recorded namespace after trimming; case-sensitive."},{"name":"productId","in":"query","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact recorded product ID after trimming; use namespace to disambiguate."},{"name":"variantId","in":"query","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact recorded resolved variant ID on the same reference as all other filters."},{"name":"publisher","in":"query","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact case-insensitive recorded publisher name; this is not publisher verification."},{"name":"objectId","in":"query","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"description":"Exact stored reference anchor on this version. Presence and compatibility require separate inspection."},{"name":"measurementLabel","in":"query","schema":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact case-insensitive recorded measurement label after trimming; combine with basis, unit and at least one bound."},{"name":"measurementBasis","in":"query","schema":{"type":"string","enum":["nominal","documented","modeled"]},"description":"Required for a measurement constraint. Nominal, documented and modeled measurements remain separate."},{"name":"measurementUnit","in":"query","schema":{"type":"string","enum":["mm","cm","m","in","ft","deg"]},"description":"Required query unit. Length units convert exactly; degrees match only degrees."},{"name":"measurementMin","in":"query","schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8})(?:\\.[0-9]{1,6})?$"},"description":"Inclusive minimum as a nonnegative decimal string with at most six decimal places. One bound is required for a measurement constraint."},{"name":"measurementMax","in":"query","schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8})(?:\\.[0-9]{1,6})?$"},"description":"Inclusive maximum, no smaller than the minimum, using the same query unit and decimal grammar."},{"name":"measurementApproximate","in":"query","schema":{"type":"boolean"},"description":"Optional exact filter for the recorded approximation flag; otherwise either is allowed and always reported. Requires a complete measurement constraint."},{"in":"query","name":"kind","schema":{"type":"string","pattern":"^[a-z][a-z0-9_-]{0,63}$"},"description":"Exact declared component kind, including custom kinds. Only current authorized explicit component metadata participates; legacy inferred defaults do not match."},{"in":"query","name":"mountType","schema":{"type":"string","enum":["axis","face","point","socket"]},"description":"Require a declared component mount of this type; this does not establish physical fit."},{"in":"query","name":"license","schema":{"type":"string","enum":["original","cc0","cc-by","brand-reserved"]},"description":"Exact declared component rights basis. This is a recorded claim, not a reuse or publication permission grant."},{"in":"query","name":"brand","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact case-insensitive declared component brand after trimming; not brand verification."},{"in":"query","name":"componentProductId","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"description":"Exact declared component product ID after trimming. Existing productId and measurement filters still match reference-journal facts and remain conjunctive."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":20,"default":10}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Authorized exact saved-version matches with bounded capability findings; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogsSearchPage"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/versions/{versionId}/render-batch":{"post":{"operationId":"renderModelViews","summary":"Render one to four ordered views of an exact saved model","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewerRenderBatchResult"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Private owner/editor project:read and artifact:view are checked before and after rendering, including cache hits. Choose a camera or named view, optional part isolation and animation time. Returns a PNG with model, image and renderer hashes. Uses bounded preview compute without starting a Blender job, saving a version or changing publication. No separate browser login is required. Camera coordinates use glTF Y-up. Repeated identical views are cached. Batch views share one queue slot and 55-second deadline. Use one resolution for every view. Total PNG bytes cannot exceed 8 MiB. On timeout retry fewer views; completed views remain cached. Results preserve input order and include zero-based indices.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ViewerRenderBatchRequest"}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/versions/{versionId}/poster-status":{"get":{"operationId":"getPosterStatus","summary":"Recover the saved status of a poster refresh","security":[{"UserBearer":["project:read","artifact:view"]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PosterRefreshStatus"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Private owner/editor read. The existing poster remains available during refresh. Pending refreshes expire after two minutes and can then be retried. Reopening this status does not start work. A refresh runs within its original HTTP request, not an autonomous background job."}},"/v1/publications/{publicationId}/stars":{"get":{"operationId":"publicStars","summary":"publicStars","security":[],"parameters":[{"in":"path","name":"publicationId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":0}},"required":["count"],"additionalProperties":false}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/publications/{publicationId}/remixes":{"get":{"operationId":"publicRemixes","summary":"publicRemixes","security":[],"parameters":[{"in":"path","name":"publicationId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicModelPage"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/saved-models":{"get":{"operationId":"savedModels","summary":"savedModels","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicModelPage"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/publications/{publicationId}/star":{"get":{"operationId":"modelStar","summary":"modelStar","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"publicationId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"starred":{"type":"boolean"},"count":{"type":"integer","minimum":0},"isPublisher":{"type":"boolean"}},"required":["starred","count","isPublisher"],"additionalProperties":false}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"setModelStar","summary":"setModelStar","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"publicationId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"starred":{"type":"boolean"},"count":{"type":"integer","minimum":0}},"required":["starred","count"],"additionalProperties":false}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"starred":{"type":"boolean"}},"required":["starred"],"additionalProperties":false}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/versions/{versionId}/publication-facts":{"get":{"operationId":"publicationFactCandidates","summary":"publicationFactCandidates","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"versionId":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"entryId":{"type":"string"},"facts":{"$ref":"#/components/schemas/PublicReference"}},"required":["entryId","facts"],"additionalProperties":false}},"suggestion":{"description":"The newest public description draft saved for this exact version, for review before publishing. Never the private brief.","oneOf":[{"type":"null"},{"type":"object","properties":{"entryId":{"type":"string"},"title":{"type":"string","maxLength":120},"description":{"type":"string","maxLength":500},"tags":{"type":"array","maxItems":8,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}}},"required":["entryId","tags"],"additionalProperties":false}]}},"required":["versionId","items","suggestion"],"additionalProperties":false}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/transfers/{transferId}/chunks/{index}":{"put":{"operationId":"putRetainedInputGlbChunk","summary":"Upload one fixed input or prepared GLB part; current upload authority, capacity, immutable range and capability rechecked before body parsing","security":[{"TransferBearer":[]}],"parameters":[{"in":"path","name":"transferId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"header","name":"Content-Length","required":true,"schema":{"type":"integer","minimum":1}},{"in":"path","name":"index","required":true,"schema":{"type":"integer","minimum":0,"maximum":63}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"artifactId":{"type":"string"},"index":{"type":"integer"},"byteLength":{"type":"integer"}},"required":["artifactId","index","byteLength"]}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}}}},"/v1/transfers/{transferId}/complete":{"post":{"operationId":"completeRetainedInputGlbUpload","summary":"Finalize input or prepared GLB from bounded parts; exact full-file SHA/length and current authority/capability checked; no model processing or prepared promotion","security":[{"TransferBearer":[]}],"parameters":[{"in":"path","name":"transferId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Success; responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Artifact"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false}}}}}},"/v1/workspaces/{workspaceId}/catalogs/{catalogId}/sharing":{"get":{"operationId":"previewCatalogSharing","summary":"Preview how each exact private pin will be shared: already listed, or published by the share action as a fixed view-only model page; nothing is published and no modeling starts","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"catalogId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Current authorized data; never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogSharePreview"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"shareCatalog","summary":"Explicitly share or revoke a catalog showcase. Sharing publishes each owned pin without a listed page as a fixed view-only model page matching the catalog visibility; it never grants source, remix or content reference permissions, and turning sharing off leaves those model pages in place","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"catalogId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Current authorized data; never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelCatalog"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"expectedRevision":{"type":"integer","minimum":0},"visibility":{"enum":["private","unlisted","public"]},"confirmPublic":{"const":true},"creatorCredit":{"type":"string","minLength":1,"maxLength":80},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"modelDetails":{"type":"boolean","description":"Also show each shared model's public description draft and the references saved on its pinned version. Fills in pages that show none; descriptions and sources already chosen are kept. Pages already listed in Explore are unchanged."}},"required":["expectedRevision","visibility"]}}}},"description":"Public and unlisted sharing require confirmPublic=true and creatorCredit. Only owned, already-listed publications matching the exact catalog pins are included. Name and description are copied at sharing time. Subsequent additions and detail edits require another explicit update. Removed, unlisted, revoked, suspended, deleted or advanced versions disappear on the next read. Private visibility immediately revokes the catalog URL."}},"/v1/catalogs":{"get":{"operationId":"discoverCatalogs","summary":"Browse public catalogs by name, creator, tag or included model title; follow nextCursor even on empty filtered pages","security":[],"parameters":[{"in":"query","name":"q","schema":{"type":"string","maxLength":120}},{"in":"query","name":"limit","schema":{"type":"integer","minimum":1,"maximum":24,"default":12}},{"in":"query","name":"cursor","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Current authorized data; never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogShowcasePage"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/catalogs/{publicId}":{"get":{"operationId":"publicCatalog","summary":"Read one public or link-only catalog with live publication checks and no private project details","security":[],"parameters":[{"in":"path","name":"publicId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Current authorized data; never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogShowcase"}}}},"default":{"description":"Canonical error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/workspaces/{workspaceId}/projects/{projectId}/versions/{versionId}/components":{"get":{"operationId":"getVersionComponents","summary":"Read private immutable component input pins and attribution. Current owner/editor, source/view permission and retained exact dependencies are required. These records establish no preservation, public reuse, ownership or fit assurance.","security":[{"UserBearer":[]}],"parameters":[{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"projectId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},{"in":"path","name":"versionId","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Private bounded result. Declared seed capability is not native or production acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shared_226"}}}},"default":{"description":"Canonical error; private responses are never cached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"ContentReferencePackage":{"type":"object","additionalProperties":false,"required":["schemaVersion","packageId","publicationId","modelId","versionId","title","description","creatorCredit","sourceUrl","facts","purpose","permissions","artifacts","createdAt"],"properties":{"schemaVersion":{"const":"1.0"},"packageId":{"type":"string","pattern":"^ref_[a-f0-9]{64}$"},"publicationId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"modelId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string"},"description":{"type":"string"},"creatorCredit":{"type":"string"},"creatorId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"sourceUrl":{"type":"string"},"facts":{"$ref":"#/components/schemas/PublishedFacts"},"purpose":{"enum":["image","scene","video"]},"permissions":{"type":"object","additionalProperties":false,"required":["renderedReference","sourceDownload","remix"],"properties":{"renderedReference":{"const":true},"sourceDownload":{"type":"boolean"},"remix":{"type":"boolean"}}},"artifacts":{"type":"array","items":{"$ref":"#/components/schemas/ContentReferenceArtifact"},"minItems":1,"maxItems":4},"createdAt":{"type":"string","format":"date-time"}}},"PublishedFacts":{"$ref":"#/components/schemas/Shared_3"},"Shared_3":{"type":"object","properties":{"versionId":{"$ref":"#/components/schemas/Shared_4"},"references":{"type":"array","items":{"$ref":"#/components/schemas/Shared_5"},"maxItems":8},"workflows":{"type":"array","items":{"enum":["visualization","games","printing","video"]},"maxItems":4},"license":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":120},"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^/@\\s?#]+(?:[/?#][^\\s]*)?$"}},"required":["label","url"],"additionalProperties":false}},"required":["versionId","references","workflows"],"additionalProperties":false},"Shared_4":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"Shared_5":{"type":"object","properties":{"referenceId":{"$ref":"#/components/schemas/Shared_4"},"title":{"type":"string","minLength":1,"maxLength":120},"identity":{"type":"object","properties":{"namespace":{"type":"string","minLength":1,"maxLength":128},"productId":{"type":"string","minLength":1,"maxLength":128},"variantId":{"type":"string","minLength":1,"maxLength":128},"variantState":{"enum":["resolved","unresolved"]}},"required":["namespace","variantState"],"additionalProperties":false},"publisher":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128}},"required":["name"],"additionalProperties":false},"sources":{"type":"array","items":{"type":"object","properties":{"evidenceId":{"$ref":"#/components/schemas/Shared_4"},"kind":{"enum":["page","image","document"]},"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^/@\\s?#]+(?:[/?#][^\\s]*)?$"}},"required":["evidenceId","kind","url"],"additionalProperties":false},"maxItems":8},"measurements":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80},"basis":{"enum":["nominal","documented","modeled"]},"value":{"type":"string","minLength":1,"maxLength":20},"unit":{"enum":["mm","cm","m","in","ft","deg"]},"approximate":{"type":"boolean"},"evidenceId":{"$ref":"#/components/schemas/Shared_4"}},"required":["label","basis","value","unit","approximate"],"additionalProperties":false},"maxItems":16},"parts":{"type":"array","items":{"type":"object","properties":{"objectId":{"$ref":"#/components/schemas/Shared_4"},"role":{"type":"string","minLength":1,"maxLength":160},"aliases":{"type":"array","items":{"type":"string","minLength":1,"maxLength":160},"maxItems":16},"materialIntent":{"type":"string","minLength":1,"maxLength":240}},"required":["objectId","role","aliases"],"additionalProperties":false},"maxItems":32}},"required":["referenceId","title","identity","publisher","sources","measurements","parts"],"additionalProperties":false},"ContentReferenceArtifact":{"type":"object","additionalProperties":false,"required":["artifactId","kind","mediaType","sha256","byteLength","url"],"properties":{"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"kind":{"enum":["image","video","source"]},"mediaType":{"type":"string"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"byteLength":{"type":"integer","minimum":1},"url":{"type":"string","description":"Capability URL for the intended consuming application. Do not expose it in public result attribution."},"view":{"$ref":"#/components/schemas/ViewerRenderRequest"}}},"ViewerRenderRequest":{"type":"object","additionalProperties":false,"properties":{"mode":{"enum":["textured","clay","normals","wireframe","matcap"],"default":"textured","description":"Display mode. Diagnostic materials apply only to this image: neutral clay, view-space geometry normals, triangle wireframe, or built-in neutral matcap shading."},"view":{"enum":["perspective","front","rear","left","right","top","underside"]},"objectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"isolate":{"type":"boolean"},"animationId":{"type":"string","pattern":"^(all|clip:[0-9]{1,4})$"},"timeSeconds":{"type":"number","minimum":0,"maximum":3600},"camera":{"$ref":"#/components/schemas/ViewerRenderCamera"},"resolution":{"enum":[512,1024]}},"required":[],"allOf":[{"if":{"properties":{"isolate":{"const":true}},"required":["isolate"]},"then":{"required":["objectId"]}},{"not":{"required":["view","camera"]}}]},"ViewerRenderCamera":{"type":"object","additionalProperties":false,"properties":{"position":{"type":"array","items":{"type":"number","minimum":-1000000,"maximum":1000000},"minItems":3,"maxItems":3},"target":{"type":"array","items":{"type":"number","minimum":-1000000,"maximum":1000000},"minItems":3,"maxItems":3},"up":{"type":"array","items":{"type":"number","minimum":-1000000,"maximum":1000000},"minItems":3,"maxItems":3},"verticalFov":{"type":"number","minimum":1,"maximum":120}},"required":["position","target","up","verticalFov"]},"Error":{"$ref":"#/components/schemas/Shared_10"},"Shared_10":{"title":"Safe API error envelope; never exposes stack traces or another tenant","type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"error":{"type":"object","properties":{"code":{"enum":["INVALID_REQUEST","UNAUTHENTICATED","FORBIDDEN","NOT_FOUND","IDEMPOTENCY_CONFLICT","BASE_VERSION_CONFLICT","LIMIT_EXCEEDED","ENTITLEMENT_REQUIRED","LEGAL_ACCEPTANCE_REQUIRED","LEGAL_VERSION_CHANGED","LEASE_EXPIRED","LEASE_REVOKED","INTERNAL","EDIT_UNSUPPORTED","INSPECTION_REQUIRED"]},"message":{"type":"string","minLength":1,"maxLength":500},"requestId":{"$ref":"#/components/schemas/Shared_4"},"retryable":{"type":"boolean"},"details":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","maxLength":500,"pattern":"^(|/.*)$"},"code":{"type":"string","minLength":1,"maxLength":80}},"required":["path","code"],"additionalProperties":false},"minItems":0,"maxItems":32}},"required":["code","message","requestId","retryable"],"additionalProperties":false}},"required":["schemaVersion","error"],"additionalProperties":false},"Shared_11":{"const":"1.0"},"PrepareContentReference":{"type":"object","additionalProperties":false,"required":["publicationId","projectId","versionId","purpose"],"properties":{"publicationId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"purpose":{"type":"string","enum":["image","scene","video"]},"acceptedMediaTypes":{"type":"array","items":{"enum":["image/png","image/jpeg","video/mp4","application/octet-stream"]},"minItems":1,"maxItems":4},"views":{"type":"array","items":{"$ref":"#/components/schemas/ViewerRenderRequest"},"minItems":1,"maxItems":4}},"description":"Requires a listed, fixed publication with explicit content-reference permission. projectId is the requester-owned destination for generated PNGs. Selected views require image/png and one shared 512 or 1024 resolution. Existing saved clips and approved source downloads are returned only when the consumer accepts their actual formats. Repeated normalized requests reuse the same package; pending preparation returns 429."},"ContentResult":{"type":"object","additionalProperties":false,"required":["schemaVersion","resultId","title","createdAt","visibility","canonicalUrl","output","sources","exportNote"],"properties":{"schemaVersion":{"const":"1.0"},"resultId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"visibility":{"enum":["private","public"]},"canonicalUrl":{"type":"string"},"canManageSharing":{"type":"boolean"},"output":{"type":"object","additionalProperties":false,"required":["kind","status"],"properties":{"kind":{"enum":["image","video"]},"status":{"enum":["available","unavailable"]},"mediaType":{"type":"string"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"mediaUrl":{"type":"string"},"provider":{"type":"string"},"providerResultId":{"type":"string"},"externalUrl":{"type":"string"}}},"sources":{"type":"array","items":{"$ref":"#/components/schemas/ContentResultSource"},"minItems":1,"maxItems":6},"exportNote":{"type":"string"}}},"ContentResultSource":{"oneOf":[{"type":"object","additionalProperties":false,"required":["status","use"],"properties":{"status":{"const":"unavailable"},"use":{"type":"string","enum":["generation_reference","rendered_object","composited_object"]}}},{"type":"object","additionalProperties":false,"required":["status","publicationId","modelId","versionId","title","creatorCredit","sourceUrl","facts","productLinks","canReuse","use","evidence","inputArtifacts","permissionsAtCreation"],"properties":{"status":{"const":"available"},"publicationId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"modelId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string"},"creatorCredit":{"type":"string"},"sourceUrl":{"type":"string"},"creatorUrl":{"type":"string"},"libraryUrl":{"type":"string"},"facts":{"$ref":"#/components/schemas/PublishedFacts"},"productLinks":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["label","url"],"properties":{"label":{"type":"string"},"url":{"type":"string"}}},"maxItems":6},"previewUrl":{"type":"string"},"canReuse":{"type":"boolean"},"use":{"type":"string","enum":["generation_reference","rendered_object","composited_object"]},"evidence":{"enum":["artifact_match","creator_reported"]},"inputArtifacts":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["artifactId","sha256","mediaType"],"properties":{"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"mediaType":{"type":"string"},"view":{"$ref":"#/components/schemas/ViewerRenderRequest"}}},"minItems":1,"maxItems":12},"permissionsAtCreation":{"type":"object","additionalProperties":false,"required":["renderedReference","sourceDownload","remix"],"properties":{"renderedReference":{"type":"boolean"},"sourceDownload":{"type":"boolean"},"remix":{"type":"boolean"}}},"review":{"type":"object","additionalProperties":false,"required":["note","reviewedAt"],"properties":{"note":{"type":"string"},"reviewedAt":{"type":"string","format":"date-time"}}}}}]},"SaveContentResult":{"type":"object","additionalProperties":false,"required":["title","idempotencyKey","output","sources"],"properties":{"title":{"type":"string","minLength":1,"maxLength":160},"idempotencyKey":{"$ref":"#/components/schemas/Shared_16"},"output":{"oneOf":[{"type":"object","additionalProperties":false,"required":["artifactId"],"properties":{"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}},{"type":"object","additionalProperties":false,"required":["provider","resultId","url","kind","confirmDurableReference"],"properties":{"provider":{"type":"string","minLength":1,"maxLength":100},"resultId":{"type":"string","minLength":1,"maxLength":200},"url":{"type":"string","format":"uri","pattern":"^https://","description":"Authorized durable HTTPS result URL without credentials, fragments or temporary access credentials."},"kind":{"enum":["image","video"]},"confirmDurableReference":{"const":true}}}]},"sources":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["packageId","artifactIds","use"],"properties":{"packageId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"artifactIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"minItems":1,"maxItems":12},"use":{"type":"string","enum":["generation_reference","rendered_object","composited_object"]},"review":{"type":"object","additionalProperties":false,"required":["note","confirmReviewedDepiction"],"properties":{"note":{"type":"string","minLength":1,"maxLength":500},"confirmReviewedDepiction":{"const":true}}}}},"minItems":1,"maxItems":6}}},"Shared_16":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"},"ShareContentResult":{"type":"object","additionalProperties":false,"required":["public"],"properties":{"public":{"type":"boolean"}}},"Shared_18":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"workspacePolicy":{"$ref":"#/components/schemas/Shared_19"},"projectOverride":{"anyOf":[{"$ref":"#/components/schemas/Shared_23"},{"type":"null"}]},"effective":{"$ref":"#/components/schemas/Shared_25"}},"required":["schemaVersion","workspacePolicy","projectOverride","effective"],"additionalProperties":false},"Shared_19":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"applicationId":{"$ref":"#/components/schemas/Shared_4"},"workspaceId":{"$ref":"#/components/schemas/Shared_4"},"policyId":{"$ref":"#/components/schemas/Shared_4"},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"updatedAt":{"anyOf":[{"$ref":"#/components/schemas/Shared_20"},{"type":"null"}]},"updatedBySubjectId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"kind":{"const":"workspace"},"policy":{"$ref":"#/components/schemas/Shared_21"}},"required":["schemaVersion","applicationId","workspaceId","policyId","revision","updatedAt","updatedBySubjectId","kind","policy"],"additionalProperties":false},"Shared_20":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{3})?Z$"},"Shared_21":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowPrepaid":{"type":"boolean"},"maxJobChargeMicros":{"type":"integer","minimum":0,"maximum":20000000},"maxConcurrentJobs":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxMonthlyChargeMicros":{"type":"integer","minimum":0,"maximum":9007199254740991},"limits":{"$ref":"#/components/schemas/Shared_22"}},"required":["enabled","allowPrepaid","maxJobChargeMicros","maxConcurrentJobs","maxMonthlyChargeMicros","limits"],"additionalProperties":false},"Shared_22":{"type":"object","properties":{"wallTimeSeconds":{"type":"integer","minimum":1,"maximum":3600},"memoryMiB":{"type":"integer","minimum":128,"maximum":65536},"outputBytes":{"type":"integer","minimum":1,"maximum":2147483648}},"required":["wallTimeSeconds","memoryMiB","outputBytes"],"additionalProperties":false},"Shared_23":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"applicationId":{"$ref":"#/components/schemas/Shared_4"},"workspaceId":{"$ref":"#/components/schemas/Shared_4"},"policyId":{"$ref":"#/components/schemas/Shared_4"},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991},"updatedAt":{"$ref":"#/components/schemas/Shared_20"},"updatedBySubjectId":{"$ref":"#/components/schemas/Shared_4"},"kind":{"const":"project"},"projectId":{"$ref":"#/components/schemas/Shared_4"},"override":{"anyOf":[{"$ref":"#/components/schemas/Shared_24"},{"type":"null"}]}},"required":["schemaVersion","applicationId","workspaceId","policyId","revision","updatedAt","updatedBySubjectId","kind","projectId","override"],"additionalProperties":false},"Shared_24":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowPrepaid":{"type":"boolean"},"maxJobChargeMicros":{"type":"integer","minimum":0,"maximum":20000000},"maxConcurrentJobs":{"type":"integer","minimum":0,"maximum":9007199254740991},"limits":{"$ref":"#/components/schemas/Shared_22"}},"required":[],"additionalProperties":false,"minProperties":1},"Shared_25":{"type":"object","properties":{"enabled":{"type":"boolean"},"allowPrepaid":{"type":"boolean"},"maxJobChargeMicros":{"type":"integer","minimum":0,"maximum":20000000},"maxConcurrentJobs":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxMonthlyChargeMicros":{"type":"integer","minimum":0,"maximum":9007199254740991},"limits":{"$ref":"#/components/schemas/Shared_22"},"maxActiveProjectJobs":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["enabled","allowPrepaid","maxJobChargeMicros","maxConcurrentJobs","maxMonthlyChargeMicros","limits","maxActiveProjectJobs"],"additionalProperties":false},"Shared_26":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"},"policy":{"$ref":"#/components/schemas/Shared_21"}},"required":["expectedRevision","idempotencyKey","policy"],"additionalProperties":false},"Shared_27":{"type":"object","properties":{"expectedRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"},"override":{"anyOf":[{"$ref":"#/components/schemas/Shared_24"},{"type":"null"}]}},"required":["expectedRevision","idempotencyKey","override"],"additionalProperties":false},"JobPreviewLease":{"type":"object","additionalProperties":false,"required":["state","descriptor","lease"],"properties":{"state":{"const":"provisional"},"descriptor":{"$ref":"#/components/schemas/Descriptor"},"lease":{"$ref":"#/components/schemas/ResourceLease"}}},"Descriptor":{"$ref":"#/components/schemas/Shared_30"},"Shared_30":{"type":"object","properties":{"assetId":{"$ref":"#/components/schemas/Shared_4"},"versionId":{"$ref":"#/components/schemas/Shared_4"},"label":{"type":"string","minLength":1,"maxLength":120},"access":{"enum":["public","private"]},"objectIdProperty":{"const":"blendstra_id"},"hasPoster":{"type":"boolean"},"posterRevision":{"$ref":"#/components/schemas/Shared_4"}},"required":["assetId","versionId","label","access","objectIdProperty"],"additionalProperties":false},"ResourceLease":{"$ref":"#/components/schemas/Shared_32"},"Shared_32":{"type":"object","properties":{"url":{"$ref":"#/components/schemas/Shared_33"},"headers":{"type":"object","propertyNames":{"pattern":"^[A-Za-z0-9-]+$"},"maxProperties":16,"additionalProperties":{"type":"string","maxLength":8192,"pattern":"^[^\\r\\n]*$"}},"credentials":{"enum":["omit","same-origin","include"]},"expiresAt":{"$ref":"#/components/schemas/Shared_20"}},"required":["url"],"additionalProperties":false},"Shared_33":{"type":"string","maxLength":8192,"pattern":"^(https://[^\\s#]+|/(?!/)[^\\s#]*)$"},"EmptyRequest":{"type":"object","additionalProperties":false,"required":[],"properties":{}},"CreationOperation":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":"1.0"},"operationId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"projectId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"jobId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"state":{"enum":["preparing","blocked","queued","running","succeeded","failed","cancelled"]},"stage":{"enum":["project","input_or_submission","execution","delivery"]},"createdAt":{"type":"string","format":"date-time"},"projectPath":{"anyOf":[{"type":"string"},{"type":"null"}]},"problem":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"limitScope":{"type":"string","enum":["account","integration","platform"]}},"required":["code","message","retryable"]},{"type":"null"}]},"resume":{"type":"object","additionalProperties":false,"properties":{"tool":{"const":"model_get"},"arguments":{"type":"object","additionalProperties":false,"properties":{"operationId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["operationId"]},"path":{"type":"string"}},"required":["tool","arguments","path"]},"retry":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"tool":{"enum":["model_create","model_edit"]},"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"unchangedRequestRequired":{"const":true}},"required":["tool","idempotencyKey","unchangedRequestRequired"]},{"type":"null"}]},"job":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"state":{"enum":["queued","running","succeeded","failed","cancelled"]},"createdAt":{"type":"string","format":"date-time"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"failure":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":true},"maxItems":64},"headAdvanced":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"preview":{"$ref":"#/components/schemas/Shared_36"},"timings":{"$ref":"#/components/schemas/Shared_38"}},"required":["state","createdAt","startedAt","completedAt","failure","warnings","headAdvanced"]},{"type":"null"}]},"savedResult":{"anyOf":[{"$ref":"#/components/schemas/CreationSavedResult"},{"type":"null"}]},"sourceCheckpoint":{"type":"object","additionalProperties":false,"properties":{"artifactId":{"$ref":"#/components/schemas/Shared_4"},"sha256":{"$ref":"#/components/schemas/Shared_37"},"byteLength":{"type":"integer","minimum":1,"maximum":536870912},"savedAt":{"$ref":"#/components/schemas/Shared_20"},"baseVersionId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"download":{"type":"object","additionalProperties":false,"properties":{"path":{"type":"string"},"startsCompute":{"const":false},"tool":{"const":"artifact_export"},"arguments":{"type":"object","additionalProperties":false,"properties":{"projectId":{"$ref":"#/components/schemas/Shared_4"},"jobId":{"$ref":"#/components/schemas/Shared_4"},"kind":{"const":"source"}},"required":["projectId","jobId","kind"]}},"required":["path","startsCompute","tool","arguments"]},"recovery":{"anyOf":[{"$ref":"#/components/schemas/CreationToolHandle"},{"type":"null"}]}},"required":["artifactId","sha256","byteLength","savedAt","baseVersionId","download","recovery"]},"componentReceipt":{"$ref":"#/components/schemas/Shared_44"}},"required":["schemaVersion","operationId","projectId","jobId","state","stage","createdAt","projectPath","problem","resume","retry","job","savedResult"]},"Shared_36":{"type":"object","additionalProperties":false,"properties":{"state":{"enum":["provisional","final","discarded"]},"artifactId":{"$ref":"#/components/schemas/Shared_4"},"sha256":{"$ref":"#/components/schemas/Shared_37"},"byteLength":{"type":"integer","minimum":1,"maximum":9007199254740991},"readyAt":{"$ref":"#/components/schemas/Shared_20"},"baseVersionId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"versionId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]}},"required":["state","artifactId","sha256","byteLength","readyAt","baseVersionId","versionId"]},"Shared_37":{"type":"string","pattern":"^[a-f0-9]{64}$"},"Shared_38":{"type":"object","additionalProperties":false,"properties":{"cohort":{"enum":["cold_creation","revision"]},"firstInspectionBoundary":{"const":"verified_private_glb"},"timeToFirstInspectionMilliseconds":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"finalCompletionBoundary":{"const":"terminal_record_commit_started"},"finalCompletionMilliseconds":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["cohort","firstInspectionBoundary","timeToFirstInspectionMilliseconds","finalCompletionBoundary","finalCompletionMilliseconds"]},"CreationSavedResult":{"type":"object","additionalProperties":false,"properties":{"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"parentVersionId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"versionPath":{"type":"string"},"artifacts":{"type":"array","items":{"$ref":"#/components/schemas/CreationArtifact"},"maxItems":4},"warnings":{"type":"array","items":{"type":"object","additionalProperties":true},"maxItems":64},"inspection":{"type":"object","additionalProperties":false,"properties":{"geometry":{"anyOf":[{"$ref":"#/components/schemas/CreationToolHandle"},{"type":"null"}]},"source":{"anyOf":[{"$ref":"#/components/schemas/CreationToolHandle"},{"type":"null"}]},"preview":{"anyOf":[{"$ref":"#/components/schemas/CreationToolHandle"},{"type":"null"}]},"preservation":{"description":"The saved scoped-edit outcome, separate from successful file export. Null when no preservation check was requested. Detailed fixed-source findings require artifact:source.","anyOf":[{"type":"object","additionalProperties":false,"properties":{"status":{"enum":["passed","failed","unsupported"]},"coverage":{"const":"recorded_fields_only"},"fullSourcePreservation":{"const":false},"engineeringAccuracy":{"const":false},"report":{"anyOf":[{"$ref":"#/components/schemas/Shared_42"},{"type":"null"}]}},"required":["status","coverage","fullSourcePreservation","engineeringAccuracy","report"]},{"type":"null"}]},"requirements":{"const":"not_verified"},"acceptance":{"const":"not_inferred"},"render":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"tool":{"const":"model_render"},"arguments":{"type":"object","additionalProperties":false,"properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["projectId","versionId"]},"startsBlenderJob":{"const":false}},"required":["tool","arguments","startsBlenderJob"]},{"type":"null"}]},"requestedResult":{"$ref":"#/components/schemas/Shared_43"},"storedViews":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"tool":{"const":"preview_get"},"arguments":{"type":"object","additionalProperties":false,"properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"kind":{"const":"inspection"}},"required":["projectId","versionId","kind"]},"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"settingsSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"startsCompute":{"const":false}},"required":["tool","arguments","artifactId","settingsSha256","startsCompute"]},{"type":"null"}]}},"required":["geometry","source","preview","preservation","requirements","acceptance","requestedResult","storedViews"]},"receipt":{"$ref":"#/components/schemas/CreationToolHandle"}},"required":["versionId","parentVersionId","versionPath","artifacts","warnings","inspection","receipt"]},"CreationArtifact":{"type":"object","additionalProperties":false,"properties":{"kind":{"enum":["source","model","poster","clip"]},"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"byteLength":{"type":"integer","minimum":1},"mediaType":{"type":"string"},"metadata":{"type":"object","additionalProperties":true},"download":{"anyOf":[{"$ref":"#/components/schemas/CreationToolHandle"},{"type":"null"}]}},"required":["kind","artifactId","sha256","byteLength","mediaType","metadata","download"]},"CreationToolHandle":{"type":"object","additionalProperties":false,"properties":{"tool":{"type":"string"},"arguments":{"type":"object","additionalProperties":true}},"required":["tool","arguments"]},"Shared_42":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"verifier":{"const":"fixed_source_v1"},"baseVersionId":{"$ref":"#/components/schemas/Shared_4"},"baseSourceSha256":{"anyOf":[{"$ref":"#/components/schemas/Shared_37"},{"type":"null"}]},"candidateSourceSha256":{"$ref":"#/components/schemas/Shared_37"},"status":{"enum":["passed","failed","unsupported"]},"checkedObjects":{"type":"integer","minimum":0,"maximum":9007199254740991},"findings":{"type":"array","items":{"type":"object","properties":{"objectId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"property":{"type":"string","maxLength":64},"status":{"enum":["changed","unsupported","failed"]},"code":{"type":"string","pattern":"^[A-Z_]{1,64}$"}},"required":["objectId","property","status","code"],"additionalProperties":false},"minItems":0,"maxItems":128},"totalFindings":{"type":"integer","minimum":0,"maximum":9007199254740991},"truncated":{"type":"boolean"},"scope":{"const":"fixed_frame_source_properties"},"engineeringAccuracy":{"const":false},"coverage":{"const":"recorded_fields_only"},"fullSourcePreservation":{"const":false},"identityMappings":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"object","properties":{"oldObjectId":{"$ref":"#/components/schemas/Shared_4"},"newObjectId":{"$ref":"#/components/schemas/Shared_4"},"referencePolicy":{"const":"retain_base_anchors"}},"required":["oldObjectId","newObjectId","referencePolicy"],"additionalProperties":false}},"summary":{"type":"string","minLength":1,"maxLength":1000},"requestedResult":{"type":"object","properties":{"status":{"enum":["passed","failed","unsupported","not_verified"]},"checkedConditions":{"type":"integer","minimum":0,"maximum":64},"scope":{"const":"fixed_frame_declared_results"}},"required":["status","checkedConditions","scope"],"additionalProperties":false}},"required":["schemaVersion","verifier","baseVersionId","baseSourceSha256","candidateSourceSha256","status","checkedObjects","findings","totalFindings","truncated","scope","engineeringAccuracy","coverage","fullSourcePreservation"],"additionalProperties":false},"Shared_43":{"type":"object","properties":{"status":{"enum":["passed","failed","unsupported","not_verified"]},"checkedConditions":{"type":"integer","minimum":0,"maximum":64},"scope":{"const":"fixed_frame_declared_results"}},"required":["status","checkedConditions","scope"],"additionalProperties":false},"Shared_44":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"components":{"type":"array","items":{"$ref":"#/components/schemas/Shared_45"},"maxItems":64},"evidence":{"type":"object","properties":{"provenance":{"const":"retained_creation_inputs"},"geometry":{"const":"not-verified"},"modification":{"const":"allowed-derived"},"authorization":{"const":"current-access-required"},"publicReuse":{"const":"not-granted"}},"required":["provenance","geometry","modification","authorization","publicReuse"],"additionalProperties":false}},"required":["schemaVersion","components","evidence"],"additionalProperties":false},"Shared_45":{"type":"object","properties":{"as":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,47}$"},"instanceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"catalogEntryId":{"type":"string","maxLength":323},"entry":{"$ref":"#/components/schemas/Shared_46"},"partIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"maxItems":512},"sourceObjects":{"type":"array","items":{"type":"object","properties":{"objectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"name":{"type":"string","maxLength":256},"worldMatrixMicros":{"type":"array","items":{"type":"integer"},"maxItems":16,"minItems":16}},"required":["objectId","name","worldMatrixMicros"],"additionalProperties":false},"maxItems":512},"dependencies":{"type":"array","items":{"$ref":"#/components/schemas/Shared_45"},"maxItems":64},"inputOnly":{"const":true}},"required":["as","instanceId","entry","partIds","sourceObjects","dependencies"],"additionalProperties":false},"Shared_46":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"source":{"oneOf":[{"$ref":"#/components/schemas/Shared_47"},{"$ref":"#/components/schemas/Shared_50"}]},"kind":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[a-z][a-z0-9_-]{0,63}$"},"mounts":{"type":"array","items":{"$ref":"#/components/schemas/Shared_57"},"minItems":0,"maxItems":64},"dimensions":{"type":"array","items":{"$ref":"#/components/schemas/Shared_61"},"minItems":0,"maxItems":64},"rights":{"type":"object","properties":{"basis":{"enum":["original","cc0","cc-by","brand-reserved"]},"attribution":{"type":"string","minLength":1,"maxLength":2000,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"},"creator":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"},"brand":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"},"productId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"},"variantId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"}},"required":["basis","attribution","creator"],"additionalProperties":false},"evidence":{"type":"object","properties":{"official":{"const":"not-established"},"fit":{"const":"not-evaluated"}},"required":["official","fit"],"additionalProperties":false},"reuse":{"type":"object","properties":{"scope":{"enum":["workspace","kit"]}},"required":["scope"],"additionalProperties":false}},"required":["schemaVersion","source","kind","mounts","dimensions","rights","evidence","reuse"],"additionalProperties":false,"allOf":[{"if":{"properties":{"source":{"properties":{"kind":{"const":"generator"}}}}},"then":{"properties":{"reuse":{"properties":{"scope":{"const":"kit"}}},"rights":{"properties":{"basis":{"const":"original"}}}}},"else":{"properties":{"reuse":{"properties":{"scope":{"const":"workspace"}}}}}}]},"Shared_47":{"type":"object","properties":{"kind":{"const":"saved"},"projectId":{"$ref":"#/components/schemas/Shared_48"},"versionId":{"$ref":"#/components/schemas/Shared_48"},"source":{"$ref":"#/components/schemas/Shared_49"},"delivery":{"$ref":"#/components/schemas/Shared_49"},"partIds":{"type":"array","items":{"$ref":"#/components/schemas/Shared_48"},"minItems":1,"maxItems":128,"uniqueItems":true}},"required":["kind","projectId","versionId","source","delivery"],"additionalProperties":false},"Shared_48":{"$ref":"#/components/schemas/Shared_4"},"Shared_49":{"type":"object","properties":{"artifactId":{"$ref":"#/components/schemas/Shared_48"},"sha256":{"$ref":"#/components/schemas/Shared_37"}},"required":["artifactId","sha256"],"additionalProperties":false},"Shared_50":{"type":"object","properties":{"kind":{"const":"generator"},"module":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}(\\.[A-Za-z][A-Za-z0-9_]{0,63})*$"},"function":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"version":{"$ref":"#/components/schemas/Shared_51"},"parameters":{"$ref":"#/components/schemas/Shared_52"},"parameterSchema":{"$ref":"#/components/schemas/Shared_55"}},"required":["kind","module","function","version","parameters","parameterSchema"],"additionalProperties":false},"Shared_51":{"type":"string","minLength":1,"maxLength":32,"pattern":"^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)$"},"Shared_52":{"type":"object","propertyNames":{"$ref":"#/components/schemas/Shared_53"},"maxProperties":32,"additionalProperties":{"$ref":"#/components/schemas/Shared_54"}},"Shared_53":{"type":"string","minLength":1,"maxLength":64,"pattern":"^(?!constructor$|prototype$)[A-Za-z][A-Za-z0-9_]{0,63}$"},"Shared_54":{"anyOf":[{"type":"null"},{"type":"boolean"},{"type":"number","minimum":-1000000,"maximum":1000000},{"type":"string","minLength":0,"maxLength":256,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"},{"type":"array","items":{"$ref":"#/components/schemas/Shared_54"},"minItems":0,"maxItems":32},{"type":"object","propertyNames":{"$ref":"#/components/schemas/Shared_53"},"maxProperties":32,"additionalProperties":{"$ref":"#/components/schemas/Shared_54"}}]},"Shared_55":{"type":"object","properties":{"type":{"const":"object"},"properties":{"type":"object","propertyNames":{"$ref":"#/components/schemas/Shared_53"},"maxProperties":32,"additionalProperties":{"$ref":"#/components/schemas/Shared_56"}},"required":{"type":"array","items":{"$ref":"#/components/schemas/Shared_53"},"minItems":0,"maxItems":32,"uniqueItems":true},"additionalProperties":{"const":false},"description":{"type":"string","minLength":0,"maxLength":240,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"}},"required":["type","properties","required","additionalProperties"],"additionalProperties":false},"Shared_56":{"oneOf":[{"type":"object","properties":{"type":{"enum":["number","integer"]},"minimum":{"type":"number","minimum":-1000000,"maximum":1000000},"maximum":{"type":"number","minimum":-1000000,"maximum":1000000},"description":{"type":"string","minLength":0,"maxLength":240,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"}},"required":["type","minimum","maximum"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"string"},"maxLength":{"type":"integer","minimum":0,"maximum":256},"minLength":{"type":"integer","minimum":0,"maximum":256},"enum":{"type":"array","items":{"type":"string","minLength":0,"maxLength":256,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"},"minItems":1,"maxItems":16,"uniqueItems":true},"description":{"type":"string","minLength":0,"maxLength":240,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"}},"required":["type","maxLength"],"additionalProperties":false},{"type":"object","properties":{"type":{"enum":["boolean","null"]},"description":{"type":"string","minLength":0,"maxLength":240,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"array"},"items":{"$ref":"#/components/schemas/Shared_56"},"maxItems":{"type":"integer","minimum":0,"maximum":32},"minItems":{"type":"integer","minimum":0,"maximum":32},"description":{"type":"string","minLength":0,"maxLength":240,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"}},"required":["type","items","maxItems"],"additionalProperties":false},{"$ref":"#/components/schemas/Shared_55"}]},"Shared_57":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$"},"type":{"enum":["axis","face","point","socket"]},"frame":{"$ref":"#/components/schemas/Shared_58"},"size":{"type":"array","items":{"type":"number","minimum":1e-12,"maximum":1000000},"minItems":3,"maxItems":3},"diameter":{"type":"number","minimum":1e-12,"maximum":1000000}},"required":["name","type","frame"],"additionalProperties":false},"Shared_58":{"type":"object","properties":{"origin":{"$ref":"#/components/schemas/Shared_59"},"xAxis":{"$ref":"#/components/schemas/Shared_60"},"yAxis":{"$ref":"#/components/schemas/Shared_60"},"zAxis":{"$ref":"#/components/schemas/Shared_60"}},"required":["origin","xAxis","yAxis","zAxis"],"additionalProperties":false},"Shared_59":{"type":"array","items":{"type":"number","minimum":-1000000,"maximum":1000000},"minItems":3,"maxItems":3},"Shared_60":{"type":"array","items":{"type":"number","minimum":-1,"maximum":1},"minItems":3,"maxItems":3},"Shared_61":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u001f\\u007f]*$"},"basis":{"enum":["nominal","documented","modeled"]},"value":{"type":"string","minLength":1,"maxLength":16,"pattern":"^(?:0|[1-9][0-9]{0,8})(?:\\.[0-9]{1,6})?$"},"unit":{"enum":["mm","cm","m","in","ft","deg"]},"approximate":{"type":"boolean"},"evidenceId":{"$ref":"#/components/schemas/Shared_48"}},"required":["label","basis","value","unit","approximate"],"additionalProperties":false},"CreateModel":{"type":"object","properties":{"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"},"title":{"type":"string","minLength":1,"maxLength":120},"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"baseVersionId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"script":{"type":"string","minLength":1,"maxLength":61440},"assetArtifactIds":{"maxItems":32,"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"input":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"script"},"scriptArtifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"assetArtifactIds":{"maxItems":32,"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}},"required":["kind","scriptArtifactId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["import_blend","import_glb"]},"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"assetArtifactIds":{"maxItems":32,"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}},"required":["kind","artifactId"],"additionalProperties":false}]},"computeClass":{"type":"string","enum":["cpu","gpu"]},"limits":{"type":"object","properties":{"wallTimeSeconds":{"type":"integer","minimum":1,"maximum":3600},"memoryMiB":{"type":"integer","minimum":128,"maximum":65536},"outputBytes":{"type":"integer","minimum":1,"maximum":1073741824}},"required":["wallTimeSeconds","memoryMiB","outputBytes"],"additionalProperties":false},"budget":{"type":"object","properties":{"currency":{"type":"string","const":"USD"},"priceVersionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"maxChargeMicros":{"type":"integer","minimum":0,"maximum":20000000}},"required":["currency"],"additionalProperties":false},"outputs":{"$ref":"#/components/schemas/Shared_63"},"preservation":{"$ref":"#/components/schemas/Shared_65"},"components":{"$ref":"#/components/schemas/Shared_66"}},"required":["idempotencyKey"],"additionalProperties":false,"description":"One ordinary private creation intent. New model: title + script. Revision/existing input: projectId + explicit baseVersionId. Reuse unchanged body/key through partial failures; the returned operation is read-only resumable. UTF-8 script bytes must also fit 60 KiB.","allOf":[{"oneOf":[{"required":["script"],"not":{"required":["input"]}},{"required":["input"],"not":{"required":["script"]}}]},{"oneOf":[{"required":["title","script"],"not":{"anyOf":[{"required":["projectId"]},{"required":["input"]},{"required":["assetArtifactIds"]}]},"properties":{"baseVersionId":{"type":"null"}}},{"required":["projectId","baseVersionId"],"not":{"required":["title"]}}]},{"if":{"required":["input"]},"then":{"not":{"required":["assetArtifactIds"]}}},{"if":{"required":["components"]},"then":{"required":["script"]}}]},"Shared_63":{"type":"object","properties":{"poster":{"type":"boolean"},"clip":{"type":"boolean"},"inspection":{"$ref":"#/components/schemas/Shared_64"}},"required":["poster","clip"],"additionalProperties":false},"Shared_64":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"views":{"type":"array","items":{"type":"object","properties":{"view":{"enum":["front","rear","left","right","top","underside","reference"]},"objectId":{"$ref":"#/components/schemas/Shared_4"},"frame":{"type":"integer","minimum":0,"maximum":1000000},"camera":{"type":"object","properties":{"positionMicrometers":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":3,"maxItems":3},"targetMicrometers":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":3,"maxItems":3},"orthoScaleMicrometers":{"type":"integer","minimum":1,"maximum":1000000000000}},"required":["positionMicrometers","targetMicrometers","orthoScaleMicrometers"],"additionalProperties":false}},"required":["view"],"additionalProperties":false,"allOf":[{"if":{"properties":{"view":{"const":"reference"}},"required":["view"]},"then":{"required":["camera"]},"else":{"properties":{"camera":false}}}]},"minItems":1,"maxItems":9},"resolution":{"enum":[256,512,1024]}},"required":["schemaVersion","views"],"additionalProperties":false},"Shared_65":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"targets":{"type":"array","items":{"type":"object","properties":{"objectId":{"$ref":"#/components/schemas/Shared_4"},"allowedChanges":{"type":"array","items":{"enum":["geometry","transform","materials","hierarchy","visibility","camera"]},"minItems":1,"maxItems":6,"uniqueItems":true}},"required":["objectId","allowedChanges"],"additionalProperties":false},"minItems":1,"maxItems":32},"toleranceMicrometers":{"type":"integer","minimum":0,"maximum":10000},"postconditions":{"type":"array","items":{"type":"object","properties":{"objectId":{"$ref":"#/components/schemas/Shared_4"},"boundsMicrometers":{"type":"object","properties":{"min":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":3,"maxItems":3},"max":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":3,"maxItems":3}},"required":["min","max"],"additionalProperties":false},"toleranceMicrometers":{"type":"integer","minimum":0,"maximum":10000}},"required":["objectId","boundsMicrometers","toleranceMicrometers"],"additionalProperties":false},"minItems":0,"maxItems":32},"replacements":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"object","properties":{"oldObjectId":{"$ref":"#/components/schemas/Shared_4"},"newObjectId":{"$ref":"#/components/schemas/Shared_4"},"referencePolicy":{"const":"retain_base_anchors"}},"required":["oldObjectId","newObjectId","referencePolicy"],"additionalProperties":false}},"expectedResults":{"type":"array","minItems":1,"maxItems":32,"items":{"oneOf":[{"type":"object","properties":{"kind":{"const":"transform"},"objectId":{"$ref":"#/components/schemas/Shared_4"},"worldMatrixMicros":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":16,"maxItems":16},"componentToleranceMicros":{"type":"array","items":{"type":"integer","minimum":0,"maximum":10000},"minItems":16,"maxItems":16}},"required":["kind","objectId","worldMatrixMicros","componentToleranceMicros"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"material_assignment"},"objectId":{"$ref":"#/components/schemas/Shared_4"},"slot":{"type":"integer","minimum":0,"maximum":31},"material":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"sha256":{"$ref":"#/components/schemas/Shared_37"}},"required":["name","sha256"],"additionalProperties":false}},"required":["kind","objectId","slot","material"],"additionalProperties":false}]}}},"required":["schemaVersion","targets","toleranceMicrometers"],"additionalProperties":false},"Shared_66":{"type":"array","items":{"$ref":"#/components/schemas/Shared_67"},"maxItems":16,"minItems":1},"Shared_67":{"type":"object","properties":{"ref":{"oneOf":[{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["projectId","versionId"],"additionalProperties":false},{"type":"object","properties":{"catalogEntryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}:[A-Za-z0-9_-]{1,128}:[a-f0-9]{64}$"}},"required":["catalogEntryId"],"additionalProperties":false}]},"as":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,47}$"},"partIds":{"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"maxItems":512,"minItems":1,"uniqueItems":true}},"required":["ref","as"],"additionalProperties":false},"ProjectReview":{"type":"object","additionalProperties":false,"required":["projectId","revision","currentRevision","summary","items","nextOffset"],"properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"revision":{"type":"integer","minimum":0,"maximum":200},"currentRevision":{"type":"integer","minimum":0,"maximum":200},"summary":{"$ref":"#/components/schemas/ReviewSummary"},"items":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/ReviewItem"}},"nextOffset":{"anyOf":[{"type":"integer","minimum":0,"maximum":200},{"type":"null"}]}}},"ReviewSummary":{"type":"object","additionalProperties":false,"required":["revision","brief","decisions","openCorrections","openQuestions","acceptance","pendingItems","references","referenceCount","acceptedReferences"],"properties":{"revision":{"type":"integer","minimum":0,"maximum":200},"brief":{"anyOf":[{"$ref":"#/components/schemas/ReviewEntry"},{"type":"null"}]},"decisions":{"type":"array","maxItems":5,"items":{"$ref":"#/components/schemas/ReviewEntry"}},"openCorrections":{"type":"integer","minimum":0,"maximum":200},"openQuestions":{"type":"integer","minimum":0,"maximum":200},"acceptance":{"description":"Latest explicit accepted version and its written review scope; null after withdrawal. Later model saves do not replace this decision.","anyOf":[{"$ref":"#/components/schemas/ReviewEntry"},{"type":"null"}]},"pendingItems":{"type":"array","items":{"$ref":"#/components/schemas/ReviewItem"},"maxItems":5},"references":{"type":"array","items":{"$ref":"#/components/schemas/ReviewReferenceSummary"},"maxItems":5},"referenceCount":{"type":"integer","minimum":0,"maximum":200},"acceptedReferences":{"type":"array","items":{"$ref":"#/components/schemas/ReviewReferenceSummary"},"maxItems":5}}},"ReviewEntry":{"type":"object","additionalProperties":false,"required":["entryId","revision","kind","text","createdAt","createdBySubjectId","versionId","objectId","targetEntryId"],"properties":{"entryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"revision":{"type":"integer","minimum":1,"maximum":200},"kind":{"type":"string","enum":["brief","decision","question","correction","addressed","reopened","acceptance","acceptance_withdrawn","reference","reanchored"]},"text":{"type":"string","minLength":1,"maxLength":2000},"createdAt":{"type":"string","format":"date-time"},"createdBySubjectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"objectId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"targetEntryId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"anchor":{"$ref":"#/components/schemas/ReviewAnchor"},"reference":{"$ref":"#/components/schemas/ReferenceFacts"}}},"ReviewAnchor":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"camera"},"camera":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000}],"items":false,"minItems":3,"maxItems":3},"target":{"type":"array","prefixItems":[{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000}],"items":false,"minItems":3,"maxItems":3},"up":{"type":"array","prefixItems":[{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000}],"items":false,"minItems":3,"maxItems":3},"verticalFov":{"type":"number","minimum":1,"maximum":179}},"required":["position","target","up","verticalFov"],"additionalProperties":false}},"required":["kind","camera"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"point"},"position":{"type":"array","prefixItems":[{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000}],"items":false,"minItems":3,"maxItems":3},"camera":{"type":"object","properties":{"position":{"type":"array","prefixItems":[{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000}],"items":false,"minItems":3,"maxItems":3},"target":{"type":"array","prefixItems":[{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000}],"items":false,"minItems":3,"maxItems":3},"up":{"type":"array","prefixItems":[{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000},{"type":"number","minimum":-1000000000,"maximum":1000000000}],"items":false,"minItems":3,"maxItems":3},"verticalFov":{"type":"number","minimum":1,"maximum":179}},"required":["position","target","up","verticalFov"],"additionalProperties":false}},"required":["kind","position"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"image_region"},"referenceEntryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"evidenceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"region":{"type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1},"width":{"type":"number","exclusiveMinimum":0,"maximum":1},"height":{"type":"number","exclusiveMinimum":0,"maximum":1}},"required":["x","y","width","height"],"additionalProperties":false}},"required":["kind","referenceEntryId","evidenceId","region"],"additionalProperties":false}]},"ReferenceFacts":{"type":"object","properties":{"referenceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"identity":{"type":"object","properties":{"namespace":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"catalogId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"productId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"variantId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"variantState":{"type":"string","enum":["resolved","unresolved"]}},"required":["namespace","variantState"],"additionalProperties":false,"allOf":[{"if":{"properties":{"variantState":{"const":"resolved"}}},"then":{"required":["productId","variantId"]},"else":{"not":{"required":["variantId"]}}}]},"publisher":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"sourceId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"}},"required":["name"],"additionalProperties":false},"evidence":{"maxItems":8,"type":"array","items":{"type":"object","properties":{"evidenceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"kind":{"type":"string","enum":["page","image","document"]},"url":{"type":"string","maxLength":2048,"pattern":"^https:\\/\\/"},"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"capturedAt":{"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))$"},"documentRevision":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["evidenceId","kind"],"additionalProperties":false,"allOf":[{"anyOf":[{"required":["url"]},{"required":["artifactId"]}]},{"if":{"required":["artifactId"]},"then":{"required":["sha256"]}}]}},"measurements":{"maxItems":16,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"basis":{"type":"string","enum":["nominal","documented","modeled"]},"value":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8})(?:\\.[0-9]{1,6})?$"},"unit":{"type":"string","enum":["mm","cm","m","in","ft","deg"]},"approximate":{"type":"boolean"},"evidenceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["label","basis","value","unit","approximate"],"additionalProperties":false,"allOf":[{"if":{"properties":{"basis":{"const":"documented"}}},"then":{"required":["evidenceId"]}}]}},"requiredParts":{"maxItems":16,"type":"array","items":{"type":"string","minLength":1,"maxLength":160,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"}},"assumptions":{"maxItems":16,"type":"array","items":{"type":"string","minLength":1,"maxLength":240,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"}},"parts":{"type":"array","maxItems":16,"items":{"$ref":"#/components/schemas/ReferencePart"}}},"required":["referenceId","title","identity","publisher","evidence","measurements","requiredParts","assumptions"],"additionalProperties":false,"description":"At most 12 KiB after normalization. Evidence handles require same-project private uploaded files and exact sha256; HTTPS URLs are attributed sources and are never fetched by this operation. Documented measurements require evidenceId. References do not certify brand authority or physical compatibility."},"ReferencePart":{"type":"object","properties":{"objectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"role":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"aliases":{"maxItems":8,"type":"array","items":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"}},"materialIntent":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"textureScale":{"type":"object","properties":{"width":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"height":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"unit":{"type":"string","enum":["mm","cm","m","in","ft"]},"evidenceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["width","height","unit"],"additionalProperties":false},"articulation":{"type":"object","properties":{"coordinateBasis":{"type":"string","const":"source_local_z_up"},"pivotMeters":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"number","minimum":-1000000,"maximum":1000000}},"axis":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"number","minimum":-1000000,"maximum":1000000}},"limitsDegrees":{"type":"object","properties":{"min":{"type":"number","minimum":-3600,"maximum":3600},"max":{"type":"number","minimum":-3600,"maximum":3600}},"required":["min","max"],"additionalProperties":false},"states":{"maxItems":8,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"degrees":{"type":"number","minimum":-3600,"maximum":3600}},"required":["name","degrees"],"additionalProperties":false}},"evidenceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["coordinateBasis","pivotMeters","axis","limitsDegrees","states"],"additionalProperties":false}},"required":["objectId","role","aliases"],"additionalProperties":false},"ReviewItem":{"type":"object","additionalProperties":false,"required":["entryId","revision","kind","text","createdAt","createdBySubjectId","versionId","objectId","targetEntryId","state","targetRevision","anchorState","currentAnchor"],"properties":{"entryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"revision":{"type":"integer","minimum":1,"maximum":200},"kind":{"type":"string","enum":["brief","decision","question","correction","addressed","reopened","acceptance","acceptance_withdrawn","reference","reanchored"]},"text":{"type":"string","minLength":1,"maxLength":2000},"createdAt":{"type":"string","format":"date-time"},"createdBySubjectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"objectId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"targetEntryId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"state":{"enum":["open","addressed",null]},"targetRevision":{"anyOf":[{"type":"integer","minimum":1,"maximum":200},{"type":"null"}]},"anchorState":{"enum":["project","current_version","earlier_version","object_unverified"]},"anchor":{"$ref":"#/components/schemas/ReviewAnchor"},"reference":{"$ref":"#/components/schemas/ReferenceFacts"},"currentAnchor":{"anyOf":[{"$ref":"#/components/schemas/ReviewAnchorPointer"},{"type":"null"}]}}},"ReviewAnchorPointer":{"type":"object","additionalProperties":false,"properties":{"entryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"revision":{"type":"integer","minimum":1,"maximum":200},"versionId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"objectId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"anchor":{"$ref":"#/components/schemas/ReviewAnchor"}},"required":["entryId","revision","versionId","objectId"]},"ReviewReferenceSummary":{"type":"object","additionalProperties":false,"properties":{"entryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"revision":{"type":"integer","minimum":1,"maximum":200},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"objectId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"referenceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string"},"namespace":{"type":"string"},"productId":{"type":"string"},"variantId":{"type":"string"},"variantState":{"enum":["resolved","unresolved"]},"publisherName":{"type":"string"},"approximateMeasurements":{"type":"integer","minimum":0},"unresolvedAssumptions":{"type":"integer","minimum":0}},"required":["entryId","revision","versionId","objectId","referenceId","title","namespace","variantState","publisherName","approximateMeasurements","unresolvedAssumptions"]},"AppendedProjectReview":{"type":"object","additionalProperties":false,"required":["entry","revision"],"properties":{"entry":{"$ref":"#/components/schemas/ReviewEntry"},"revision":{"type":"integer","minimum":0,"maximum":200}}},"AppendProjectReview":{"type":"object","additionalProperties":false,"required":["expectedRevision","idempotencyKey","kind","text"],"properties":{"expectedRevision":{"type":"integer","minimum":0,"maximum":200},"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"},"kind":{"type":"string","enum":["brief","decision","question","correction","addressed","reopened","acceptance","acceptance_withdrawn","reference","reanchored"]},"text":{"type":"string","minLength":1,"maxLength":2000},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"objectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"targetEntryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"confirmAcceptance":{"const":true,"description":"Required only for an explicit acceptance or withdrawal. Existing notes never supply this authority."},"anchor":{"$ref":"#/components/schemas/ReviewAnchor"},"reference":{"$ref":"#/components/schemas/ReferenceFacts"}},"allOf":[{"if":{"properties":{"kind":{"const":"correction"}}},"then":{"required":["versionId"]}},{"if":{"required":["objectId"]},"then":{"required":["versionId"]}},{"if":{"properties":{"kind":{"enum":["addressed","reopened","acceptance_withdrawn"]}}},"then":{"required":["targetEntryId"],"not":{"required":["objectId"]}},"else":{"not":{"required":["targetEntryId"]}}},{"if":{"properties":{"kind":{"enum":["acceptance","acceptance_withdrawn"]}}},"then":{"required":["versionId","confirmAcceptance"],"not":{"required":["objectId"]}},"else":{"not":{"required":["confirmAcceptance"]}}}]},"AccountFeatureAvailability":{"type":"object","additionalProperties":false,"properties":{"available":{"type":"boolean"},"reasonCode":{"type":["string","null"],"enum":["service_unconfigured","service_paused","service_capacity","access_unavailable","permission_required","workspace_paused","quota_exhausted",null]},"message":{"type":"string"},"alternatives":{"type":"array","items":{"type":"string"}}},"required":["available","reasonCode","message","alternatives"]},"ProjectPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"Project":{"$ref":"#/components/schemas/Shared_82"},"Shared_82":{"title":"Private project; publication is a separate resource","type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"projectId":{"$ref":"#/components/schemas/Shared_4"},"applicationId":{"$ref":"#/components/schemas/Shared_4"},"workspaceId":{"$ref":"#/components/schemas/Shared_4"},"ownerSubjectId":{"$ref":"#/components/schemas/Shared_4"},"title":{"type":"string","minLength":1,"maxLength":120},"headVersionId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"createdAt":{"$ref":"#/components/schemas/Shared_20"},"updatedAt":{"$ref":"#/components/schemas/Shared_20"}},"required":["schemaVersion","projectId","applicationId","workspaceId","ownerSubjectId","title","headVersionId","createdAt","updatedAt"],"additionalProperties":false},"CreateProject":{"$ref":"#/components/schemas/Shared_84"},"Shared_84":{"type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"title":{"type":"string","minLength":1,"maxLength":120},"idempotencyKey":{"$ref":"#/components/schemas/Shared_85"}},"required":["schemaVersion","title","idempotencyKey"],"additionalProperties":false},"Shared_85":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"},"Tombstone":{"type":"object","properties":{"applicationId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"workspaceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"tombstoneId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"createdAt":{"type":"string","format":"date-time"},"purgeAfter":{"type":"string","format":"date-time"},"state":{"enum":["retained","purging","purged"]},"sortKey":{"type":"string"}},"required":["applicationId","workspaceId","tombstoneId","projectId","createdAt","purgeAfter","state","sortKey"],"additionalProperties":false},"HeadSave":{"type":"object","properties":{"baseVersionId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"}},"required":["baseVersionId","versionId","idempotencyKey"],"additionalProperties":false},"ProjectMember":{"type":"object","properties":{"subjectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"role":{"enum":["editor","viewer",null]}},"required":["subjectId","role"],"additionalProperties":false},"VersionPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Version"}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"Version":{"$ref":"#/components/schemas/Shared_91"},"Shared_91":{"type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"versionId":{"$ref":"#/components/schemas/Shared_4"},"projectId":{"$ref":"#/components/schemas/Shared_4"},"applicationId":{"$ref":"#/components/schemas/Shared_4"},"workspaceId":{"$ref":"#/components/schemas/Shared_4"},"createdBySubjectId":{"$ref":"#/components/schemas/Shared_4"},"parentVersionId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"source":{"type":"object","properties":{"blendArtifactId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"inputArtifactIds":{"type":"array","items":{"$ref":"#/components/schemas/Shared_4"},"minItems":0,"maxItems":64,"uniqueItems":true}},"required":["blendArtifactId","inputArtifactIds"],"additionalProperties":false},"web":{"type":"object","properties":{"glbArtifactId":{"$ref":"#/components/schemas/Shared_4"},"posterArtifactId":{"$ref":"#/components/schemas/Shared_4"},"clipArtifactId":{"$ref":"#/components/schemas/Shared_4"}},"required":["glbArtifactId"],"additionalProperties":false},"unit":{"const":"meters"},"objectIdProperty":{"const":"blendstra_id"},"createdAt":{"$ref":"#/components/schemas/Shared_20"},"jobId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"lineage":{"oneOf":[{"type":"object","properties":{"publicationId":{"$ref":"#/components/schemas/Shared_4"},"versionId":{"$ref":"#/components/schemas/Shared_4"},"creatorCredit":{"type":"string","minLength":1,"maxLength":80}},"required":["publicationId","versionId","creatorCredit"],"additionalProperties":false},{"type":"object","properties":{"grantId":{"$ref":"#/components/schemas/Shared_4"},"versionId":{"$ref":"#/components/schemas/Shared_4"}},"required":["grantId","versionId"],"additionalProperties":false}]},"warnings":{"$ref":"#/components/schemas/Shared_92"},"preparedImport":{"$ref":"#/components/schemas/Shared_94"},"preservation":{"$ref":"#/components/schemas/Shared_42"},"inspection":{"type":"object","properties":{"artifactId":{"$ref":"#/components/schemas/Shared_4"},"settingsSha256":{"$ref":"#/components/schemas/Shared_37"}},"required":["artifactId","settingsSha256"],"additionalProperties":false}},"required":["schemaVersion","versionId","projectId","applicationId","workspaceId","createdBySubjectId","parentVersionId","source","web","unit","objectIdProperty","createdAt","jobId","warnings"],"additionalProperties":false,"allOf":[{"if":{"properties":{"jobId":{"type":"null"}},"required":["jobId"]},"then":{"anyOf":[{"required":["lineage"]},{"required":["preparedImport"]}]}},{"if":{"properties":{"source":{"properties":{"blendArtifactId":{"type":"null"}}}},"required":["source"]},"then":{"required":["preparedImport"]}},{"if":{"required":["preparedImport"]},"then":{"properties":{"jobId":{"type":"null"},"source":{"properties":{"blendArtifactId":{"type":"null"}}}}}},{"if":{"required":["lineage"]},"then":{"properties":{"source":{"properties":{"blendArtifactId":{"$ref":"#/components/schemas/Shared_4"}}}}}}]},"Shared_92":{"type":"array","items":{"$ref":"#/components/schemas/Shared_93"},"minItems":0,"maxItems":64},"Shared_93":{"type":"object","properties":{"code":{"type":"string","pattern":"^[A-Z][A-Z0-9_]{0,79}$"},"message":{"type":"string","minLength":1,"maxLength":500}},"required":["code","message"],"additionalProperties":false},"Shared_94":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"kind":{"const":"prepared_glb"},"validationProfile":{"const":"embedded-viewer-v1"},"artifact":{"type":"object","properties":{"artifactId":{"$ref":"#/components/schemas/Shared_4"},"sha256":{"$ref":"#/components/schemas/Shared_37"}},"required":["artifactId","sha256"],"additionalProperties":false},"companionSource":{"anyOf":[{"type":"object","properties":{"artifactId":{"$ref":"#/components/schemas/Shared_4"},"sha256":{"$ref":"#/components/schemas/Shared_37"},"correspondence":{"const":"unverified"}},"required":["artifactId","sha256","correspondence"],"additionalProperties":false},{"type":"null"}]},"provenance":{"type":"object","properties":{"basis":{"const":"supplied_unverified"},"origin":{"anyOf":[{"type":"string","minLength":1,"maxLength":300},{"type":"null"}]},"sourceUrl":{"anyOf":[{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^\\s]+$"},{"type":"null"}]},"rights":{"anyOf":[{"type":"string","minLength":1,"maxLength":2000},{"type":"null"}]},"declaredGenerator":{"anyOf":[{"type":"string","minLength":1,"maxLength":300},{"type":"null"}]}},"required":["basis","origin","sourceUrl","rights","declaredGenerator"],"additionalProperties":false},"capabilities":{"type":"object","properties":{"view":{"const":true},"sourceEdit":{"const":false},"sourceDownload":{"const":false},"editableRemix":{"const":false},"requiresProcessingForSource":{"const":true}},"required":["view","sourceEdit","sourceDownload","editableRemix","requiresProcessingForSource"],"additionalProperties":false},"metadata":{"type":"object","properties":{"stablePartIds":{"enum":["complete","partial","absent"]},"stablePartIdCount":{"type":"integer","minimum":0,"maximum":10000},"nodeCount":{"type":"integer","minimum":0,"maximum":10000},"embeddedMetadata":{"const":"preserved_unverified"},"unitBasis":{"const":"gltf_meters"},"documentedDimensions":{"const":"not_verified"},"sourceToWebMapping":{"const":"unknown"}},"required":["stablePartIds","stablePartIdCount","nodeCount","embeddedMetadata","unitBasis","documentedDimensions","sourceToWebMapping"],"additionalProperties":false},"fullResolutionMaster":{"type":"object","properties":{"artifactId":{"$ref":"#/components/schemas/Shared_4"},"sha256":{"$ref":"#/components/schemas/Shared_37"},"byteLength":{"type":"integer","minimum":1,"maximum":9007199254740991},"representation":{"const":"full_resolution_master"},"export":{"type":"object","properties":{"tool":{"const":"artifact_export"},"arguments":{"type":"object","properties":{"projectId":{"$ref":"#/components/schemas/Shared_4"},"versionId":{"$ref":"#/components/schemas/Shared_4"},"kind":{"const":"source"}},"required":["projectId","versionId","kind"],"additionalProperties":false}},"required":["tool","arguments"],"additionalProperties":false},"kind":{"enum":["input_glb","prepared_glb"]},"mediaType":{"const":"model/gltf-binary"},"correspondence":{"const":"unverified"}},"required":["artifactId","sha256","byteLength","representation","export","kind","mediaType","correspondence"],"additionalProperties":false},"preview":{"type":"object","properties":{"artifactId":{"$ref":"#/components/schemas/Shared_4"},"sha256":{"$ref":"#/components/schemas/Shared_37"},"byteLength":{"type":"integer","minimum":1,"maximum":9007199254740991},"representation":{"const":"optimized_preview"},"export":{"type":"object","properties":{"tool":{"const":"artifact_export"},"arguments":{"type":"object","properties":{"projectId":{"$ref":"#/components/schemas/Shared_4"},"versionId":{"$ref":"#/components/schemas/Shared_4"},"kind":{"const":"model"}},"required":["projectId","versionId","kind"],"additionalProperties":false}},"required":["tool","arguments"],"additionalProperties":false}},"required":["artifactId","sha256","byteLength","representation","export"],"additionalProperties":false}},"required":["schemaVersion","kind","validationProfile","artifact","companionSource","provenance","capabilities","metadata"],"additionalProperties":false,"allOf":[{"if":{"required":["fullResolutionMaster"]},"then":{"required":["preview"]}},{"if":{"required":["preview"]},"then":{"required":["fullResolutionMaster"]}}]},"UploadTicket":{"type":"object","properties":{"uploadId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"expiresAt":{"type":"string","format":"date-time"},"state":{"enum":["pending","receiving","complete","rejected","abandoning","abandoned"]}},"required":["uploadId","artifactId","expiresAt","state"],"additionalProperties":false},"UploadRequest":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"},"filename":{"type":"string","maxLength":120},"kind":{"enum":["script","input_blend","input_glb","input_asset","prepared_glb"]},"mediaType":{"enum":["text/x-python","application/octet-stream","model/gltf-binary","image/png","image/jpeg","image/webp","video/mp4"]},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"byteLength":{"type":"integer","minimum":1}},"required":["schemaVersion","idempotencyKey","filename","kind","mediaType","sha256","byteLength"],"additionalProperties":false},"RecoverableUploadPage":{"additionalProperties":false,"properties":{"items":{"items":{"$ref":"#/components/schemas/RecoverableUpload"},"type":"array","maxItems":20},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"type":"object"},"RecoverableUpload":{"type":"object","additionalProperties":false,"required":["uploadId","filename","expiresAt","artifact"],"properties":{"uploadId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"filename":{"type":"string","maxLength":120},"expiresAt":{"type":"string","format":"date-time"},"artifact":{"$ref":"#/components/schemas/Artifact"}}},"Artifact":{"$ref":"#/components/schemas/Shared_100"},"Shared_100":{"title":"Immutable retained blob metadata; no storage paths or permanent delivery URLs","type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"artifactId":{"$ref":"#/components/schemas/Shared_4"},"applicationId":{"$ref":"#/components/schemas/Shared_4"},"workspaceId":{"$ref":"#/components/schemas/Shared_4"},"projectId":{"$ref":"#/components/schemas/Shared_4"},"kind":{"enum":["input_blend","input_glb","input_asset","script","source_blend","model_glb","poster","clip","prepared_glb","inspection_views"]},"mediaType":{"type":"string","minLength":1,"maxLength":100},"sha256":{"$ref":"#/components/schemas/Shared_37"},"byteLength":{"type":"integer","minimum":1,"maximum":9007199254740991},"unit":{"enum":["meters","unspecified","not_applicable"]},"metadata":{"type":"object","properties":{"blenderVersion":{"type":"string","minLength":1,"maxLength":40},"objectIdProperty":{"const":"blendstra_id"},"objectCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"triangleCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"animationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"width":{"type":"integer","minimum":1,"maximum":9007199254740991},"height":{"type":"integer","minimum":1,"maximum":9007199254740991},"durationMillis":{"type":"integer","minimum":1,"maximum":9007199254740991},"sourceInventory":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"imageCount":{"type":"integer","minimum":0,"maximum":1000000},"packedImageCount":{"type":"integer","minimum":0,"maximum":1000000},"textBlockCount":{"type":"integer","minimum":0,"maximum":1000000},"customPropertyBlockCount":{"type":"integer","minimum":0,"maximum":1000000},"hiddenObjectCount":{"type":"integer","minimum":0,"maximum":1000000},"imageNames":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":120}},"textBlockNames":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":120}}},"required":["schemaVersion","imageCount","packedImageCount","textBlockCount","customPropertyBlockCount","hiddenObjectCount","imageNames","textBlockNames"],"additionalProperties":false},"sourceInspection":{"$ref":"#/components/schemas/Shared_101"},"inspectionViews":{"$ref":"#/components/schemas/Shared_103"}},"required":[],"additionalProperties":false},"createdAt":{"$ref":"#/components/schemas/Shared_20"}},"required":["schemaVersion","artifactId","applicationId","workspaceId","projectId","kind","mediaType","sha256","byteLength","unit","metadata","createdAt"],"additionalProperties":false,"allOf":[{"if":{"properties":{"kind":{"enum":["input_blend"]}},"required":["kind"]},"then":{"properties":{"mediaType":{"const":"application/octet-stream"},"unit":{"const":"unspecified"}}}},{"if":{"properties":{"kind":{"enum":["input_glb"]}},"required":["kind"]},"then":{"properties":{"mediaType":{"const":"model/gltf-binary"},"unit":{"const":"unspecified"}}}},{"if":{"properties":{"kind":{"enum":["input_asset"]}},"required":["kind"]},"then":{"properties":{"mediaType":{"enum":["image/png","image/jpeg","image/webp","application/octet-stream","video/mp4"]},"unit":{"const":"not_applicable"}}}},{"if":{"properties":{"kind":{"enum":["script"]}},"required":["kind"]},"then":{"properties":{"mediaType":{"const":"text/x-python"},"unit":{"const":"not_applicable"}}}},{"if":{"properties":{"kind":{"enum":["source_blend"]}},"required":["kind"]},"then":{"properties":{"mediaType":{"const":"application/octet-stream"},"unit":{"const":"meters"},"metadata":{"required":["blenderVersion"]}}}},{"if":{"properties":{"kind":{"enum":["model_glb"]}},"required":["kind"]},"then":{"properties":{"mediaType":{"const":"model/gltf-binary"},"unit":{"const":"meters"},"metadata":{"required":["objectIdProperty","objectCount","triangleCount","animationCount"]}}}},{"if":{"properties":{"kind":{"enum":["poster"]}},"required":["kind"]},"then":{"properties":{"mediaType":{"enum":["image/png","image/jpeg","image/webp"]},"unit":{"const":"not_applicable"},"metadata":{"required":["width","height"]}}}},{"if":{"properties":{"kind":{"enum":["clip"]}},"required":["kind"]},"then":{"properties":{"mediaType":{"const":"video/mp4"},"unit":{"const":"not_applicable"},"metadata":{"required":["width","height","durationMillis"]}}}},{"if":{"properties":{"kind":{"const":"prepared_glb"}},"required":["kind"]},"then":{"properties":{"mediaType":{"const":"model/gltf-binary"},"unit":{"enum":["unspecified","meters"]}}}},{"if":{"properties":{"kind":{"const":"inspection_views"}},"required":["kind"]},"then":{"properties":{"mediaType":{"const":"image/png"},"unit":{"const":"not_applicable"},"metadata":{"required":["width","height","inspectionViews"]}}}}]},"Shared_101":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"producer":{"const":"fixed_exporter_v1"},"coordinateScale":{"const":1000000},"frame":{"type":"integer","minimum":0,"maximum":1000000},"objectCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"truncated":{"type":"boolean"},"animated":{"type":"boolean"},"activeCameraId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"objects":{"type":"array","items":{"type":"object","properties":{"objectId":{"$ref":"#/components/schemas/Shared_4"},"name":{"type":"string","maxLength":120},"type":{"enum":["MESH","CURVE","FONT","EMPTY","ARMATURE","CAMERA","LIGHT"]},"parentId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"worldMatrixMicros":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":16,"maxItems":16},"boundsMicrometers":{"anyOf":[{"type":"object","properties":{"min":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":3,"maxItems":3},"max":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":3,"maxItems":3}},"required":["min","max"],"additionalProperties":false},{"type":"null"}]},"sourceGeometry":{"anyOf":[{"type":"object","properties":{"sha256":{"$ref":"#/components/schemas/Shared_37"},"topologySha256":{"$ref":"#/components/schemas/Shared_37"},"vertexCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"triangleCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["sha256","topologySha256","vertexCount","triangleCount"],"additionalProperties":false},{"type":"null"}]},"evaluatedGeometry":{"anyOf":[{"type":"object","properties":{"sha256":{"$ref":"#/components/schemas/Shared_37"},"topologySha256":{"$ref":"#/components/schemas/Shared_37"},"vertexCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"triangleCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["sha256","topologySha256","vertexCount","triangleCount"],"additionalProperties":false},{"type":"null"}]},"materials":{"type":"array","items":{"type":"object","properties":{"name":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}]},"sha256":{"anyOf":[{"$ref":"#/components/schemas/Shared_37"},{"type":"null"}]},"supported":{"type":"boolean"}},"required":["name","sha256","supported"],"additionalProperties":false},"minItems":0,"maxItems":16},"visibility":{"type":"object","properties":{"viewport":{"type":"boolean"},"render":{"type":"boolean"}},"required":["viewport","render"],"additionalProperties":false},"cameraSha256":{"anyOf":[{"$ref":"#/components/schemas/Shared_37"},{"type":"null"}]},"webMapping":{"enum":["retained","excluded","missing","ambiguous"]},"unsupported":{"type":"array","items":{"type":"string","pattern":"^[A-Z_]{1,64}$"},"minItems":0,"maxItems":8},"materialAssignmentSha256":{"anyOf":[{"$ref":"#/components/schemas/Shared_37"},{"type":"null"}]},"mount":{"$ref":"#/components/schemas/Shared_57"},"generator":{"$ref":"#/components/schemas/Shared_102"}},"required":["objectId","name","type","parentId","worldMatrixMicros","boundsMicrometers","sourceGeometry","evaluatedGeometry","materials","visibility","cameraSha256","webMapping","unsupported","materialAssignmentSha256"],"additionalProperties":false},"minItems":0},"captureMilliseconds":{"type":"integer","minimum":0,"maximum":9007199254740991},"runtime":{"type":"object","properties":{"blendstraVersion":{"const":"1.0.0"}},"required":["blendstraVersion"],"additionalProperties":false}},"required":["schemaVersion","producer","coordinateScale","frame","objectCount","truncated","animated","activeCameraId","objects","captureMilliseconds"],"additionalProperties":false},"Shared_102":{"type":"object","properties":{"module":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}(\\.[A-Za-z][A-Za-z0-9_]{0,63})*$"},"function":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"version":{"$ref":"#/components/schemas/Shared_51"},"parameters":{"$ref":"#/components/schemas/Shared_52"}},"required":["module","function","version","parameters"],"additionalProperties":false},"Shared_103":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"sourceSha256":{"$ref":"#/components/schemas/Shared_37"},"settingsSha256":{"$ref":"#/components/schemas/Shared_37"},"renderer":{"const":"source_contact_sheet_v1"},"width":{"type":"integer","minimum":256,"maximum":3072},"height":{"type":"integer","minimum":256,"maximum":3072},"tileSize":{"enum":[256,512,1024]},"lighting":{"const":"inspection_studio_v1"},"views":{"type":"array","items":{"type":"object","properties":{"view":{"enum":["front","rear","left","right","top","underside","reference"]},"objectId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"frame":{"type":"integer","minimum":0,"maximum":1000000},"timeMillis":{"type":"integer","minimum":0,"maximum":9007199254740991},"region":{"type":"object","properties":{"x":{"type":"integer","minimum":0,"maximum":2048},"y":{"type":"integer","minimum":0,"maximum":2048},"width":{"enum":[256,512,1024]},"height":{"enum":[256,512,1024]}},"required":["x","y","width","height"],"additionalProperties":false},"camera":{"type":"object","properties":{"positionMicrometers":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":3,"maxItems":3},"targetMicrometers":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":3,"maxItems":3},"orthoScaleMicrometers":{"type":"integer","minimum":1,"maximum":1000000000000}},"required":["positionMicrometers","targetMicrometers","orthoScaleMicrometers"],"additionalProperties":false},"partIds":{"type":"array","items":{"$ref":"#/components/schemas/Shared_4"},"minItems":0,"maxItems":32,"uniqueItems":true},"partsTruncated":{"type":"boolean"},"observedCamera":{"$ref":"#/components/schemas/Shared_104"}},"required":["view","objectId","frame","timeMillis","region","camera","partIds","partsTruncated","observedCamera"],"additionalProperties":false},"minItems":1,"maxItems":9},"cameraPrecision":{"const":"blender_float32"}},"required":["schemaVersion","sourceSha256","settingsSha256","renderer","width","height","tileSize","lighting","views","cameraPrecision"],"additionalProperties":false},"Shared_104":{"type":"object","properties":{"positionMicrometers":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":3,"maxItems":3},"targetMicrometers":{"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000},"minItems":3,"maxItems":3},"orthoScaleMicrometers":{"type":"integer","minimum":1,"maximum":1000000000000}},"required":["positionMicrometers","targetMicrometers","orthoScaleMicrometers"],"additionalProperties":false},"UploadRecovery":{"type":"object","properties":{"state":{"enum":["complete","rejected","abandoned"]},"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["state","artifactId"],"additionalProperties":false},"Quote":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"currency":{"const":"USD"},"priceVersionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"computeProfileId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"maxChargeMicros":{"type":"integer","minimum":0},"limits":{"$ref":"#/components/schemas/Shared_22"},"outputs":{"type":"object","properties":{"poster":{"type":"boolean"},"clip":{"type":"boolean"}},"required":["poster","clip"],"additionalProperties":false}},"required":["schemaVersion","currency","priceVersionId","computeProfileId","maxChargeMicros","limits","outputs"],"additionalProperties":false},"SubmitJob":{"$ref":"#/components/schemas/Shared_108"},"Shared_108":{"type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"projectId":{"$ref":"#/components/schemas/Shared_4"},"baseVersionId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"idempotencyKey":{"$ref":"#/components/schemas/Shared_85"},"input":{"$ref":"#/components/schemas/Shared_109"},"computeClass":{"enum":["cpu","gpu"]},"limits":{"$ref":"#/components/schemas/Shared_22"},"budget":{"type":"object","properties":{"currency":{"const":"USD"},"priceVersionId":{"$ref":"#/components/schemas/Shared_4"},"maxChargeMicros":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["currency","priceVersionId","maxChargeMicros"],"additionalProperties":false},"outputs":{"$ref":"#/components/schemas/Shared_63"},"preservation":{"$ref":"#/components/schemas/Shared_65"}},"required":["schemaVersion","projectId","baseVersionId","idempotencyKey","input","computeClass","limits","budget","outputs"],"additionalProperties":false},"Shared_109":{"oneOf":[{"type":"object","properties":{"kind":{"const":"script"},"scriptArtifactId":{"$ref":"#/components/schemas/Shared_4"},"assetArtifactIds":{"type":"array","items":{"$ref":"#/components/schemas/Shared_4"},"minItems":0,"maxItems":63,"uniqueItems":true}},"required":["kind","scriptArtifactId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"enum":["import_blend","import_glb"]},"artifactId":{"$ref":"#/components/schemas/Shared_4"},"assetArtifactIds":{"type":"array","items":{"$ref":"#/components/schemas/Shared_4"},"minItems":0,"maxItems":63,"uniqueItems":true}},"required":["kind","artifactId"],"additionalProperties":false}]},"Job":{"$ref":"#/components/schemas/Shared_111"},"Shared_111":{"title":"Bounded execution of staged Blender inputs, with exactly-once settlement","type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"jobId":{"$ref":"#/components/schemas/Shared_4"},"applicationId":{"$ref":"#/components/schemas/Shared_4"},"workspaceId":{"$ref":"#/components/schemas/Shared_4"},"subjectId":{"$ref":"#/components/schemas/Shared_4"},"request":{"$ref":"#/components/schemas/Shared_108"},"requestSha256":{"$ref":"#/components/schemas/Shared_37"},"state":{"enum":["queued","running","succeeded","failed","cancelled"]},"reservation":{"$ref":"#/components/schemas/Shared_112"},"result":{"anyOf":[{"type":"object","properties":{"versionId":{"$ref":"#/components/schemas/Shared_4"},"headAdvanced":{"type":"boolean"}},"required":["versionId","headAdvanced"],"additionalProperties":false},{"type":"null"}]},"failure":{"anyOf":[{"$ref":"#/components/schemas/Shared_115"},{"type":"null"}]},"createdAt":{"$ref":"#/components/schemas/Shared_20"},"startedAt":{"anyOf":[{"$ref":"#/components/schemas/Shared_20"},{"type":"null"}]},"completedAt":{"anyOf":[{"$ref":"#/components/schemas/Shared_20"},{"type":"null"}]},"warnings":{"$ref":"#/components/schemas/Shared_92"},"preview":{"$ref":"#/components/schemas/Shared_36"},"timings":{"$ref":"#/components/schemas/Shared_38"},"sourceCheckpoint":{"$ref":"#/components/schemas/Shared_116"}},"required":["schemaVersion","jobId","applicationId","workspaceId","subjectId","request","requestSha256","state","reservation","result","failure","createdAt","startedAt","completedAt","warnings"],"additionalProperties":false,"allOf":[{"if":{"properties":{"state":{"enum":["queued"]}},"required":["state"]},"then":{"properties":{"startedAt":{"type":"null"}}}},{"if":{"properties":{"state":{"enum":["running","succeeded"]}},"required":["state"]},"then":{"properties":{"startedAt":{"$ref":"#/components/schemas/Shared_20"}}}},{"if":{"properties":{"state":{"enum":["queued","running"]}},"required":["state"]},"then":{"properties":{"completedAt":{"type":"null"},"reservation":{"properties":{"state":{"const":"held"}}},"result":{"type":"null"},"failure":{"type":"null"}}}},{"if":{"properties":{"state":{"enum":["succeeded","failed","cancelled"]}},"required":["state"]},"then":{"properties":{"completedAt":{"$ref":"#/components/schemas/Shared_20"}}}},{"if":{"properties":{"state":{"enum":["succeeded"]}},"required":["state"]},"then":{"properties":{"reservation":{"properties":{"state":{"enum":["settled","released"]}}},"result":{"type":"object"},"failure":{"type":"null"}}}},{"if":{"properties":{"state":{"enum":["failed","cancelled"]}},"required":["state"]},"then":{"properties":{"reservation":{"properties":{"state":{"enum":["settled","released"]}}},"result":{"type":"null"}}}},{"if":{"properties":{"state":{"enum":["failed"]}},"required":["state"]},"then":{"properties":{"failure":{"type":"object"}}}},{"if":{"properties":{"state":{"enum":["cancelled"]}},"required":["state"]},"then":{"properties":{"failure":{"type":"null"}}}}]},"Shared_112":{"type":"object","properties":{"reservationId":{"$ref":"#/components/schemas/Shared_4"},"state":{"enum":["held","settled","released"]},"currency":{"const":"USD"},"fundingSource":{"$ref":"#/components/schemas/Shared_113"},"priceVersionId":{"$ref":"#/components/schemas/Shared_4"},"maxChargeMicros":{"type":"integer","minimum":0,"maximum":9007199254740991},"chargedMicros":{"type":"integer","minimum":0,"maximum":9007199254740991},"releasedMicros":{"type":"integer","minimum":0,"maximum":9007199254740991},"receiptId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"expiresAt":{"$ref":"#/components/schemas/Shared_20"},"executionPolicy":{"$ref":"#/components/schemas/Shared_114"}},"required":["reservationId","state","currency","fundingSource","priceVersionId","maxChargeMicros","chargedMicros","releasedMicros","receiptId","expiresAt"],"additionalProperties":false,"allOf":[{"if":{"properties":{"state":{"enum":["held"]}},"required":["state"]},"then":{"properties":{"chargedMicros":{"const":0},"releasedMicros":{"const":0},"receiptId":{"type":"null"}}}},{"if":{"properties":{"state":{"enum":["settled","released"]}},"required":["state"]},"then":{"properties":{"receiptId":{"$ref":"#/components/schemas/Shared_4"}}}},{"if":{"properties":{"state":{"enum":["released"]}},"required":["state"]},"then":{"properties":{"chargedMicros":{"const":0}}}}]},"Shared_113":{"enum":["free_allowance","prepaid"]},"Shared_114":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"workspacePolicyId":{"$ref":"#/components/schemas/Shared_4"},"workspaceRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"projectPolicyId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"projectRevision":{"type":"integer","minimum":0,"maximum":9007199254740991},"effectiveSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"effective":{"$ref":"#/components/schemas/Shared_25"}},"required":["schemaVersion","workspacePolicyId","workspaceRevision","projectPolicyId","projectRevision","effectiveSha256","effective"],"additionalProperties":false},"Shared_115":{"type":"object","properties":{"code":{"enum":["WORKER_FAILED","TIME_LIMIT_EXCEEDED","MEMORY_LIMIT_EXCEEDED","OUTPUT_LIMIT_EXCEEDED","OUTPUT_INVALID","SERVICE_INTERRUPTED"]},"message":{"type":"string","minLength":1,"maxLength":500}},"required":["code","message"],"additionalProperties":false},"Shared_116":{"type":"object","additionalProperties":false,"properties":{"artifactId":{"$ref":"#/components/schemas/Shared_4"},"sha256":{"$ref":"#/components/schemas/Shared_37"},"byteLength":{"type":"integer","minimum":1,"maximum":536870912},"savedAt":{"$ref":"#/components/schemas/Shared_20"},"baseVersionId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]}},"required":["artifactId","sha256","byteLength","savedAt","baseVersionId"]},"ExecuteJob":{"type":"object","description":"Ordinary creation or revision. The project comes from the path. Omit schemaVersion to select released server defaults; no separate quote or price ID is required. Reuse the exact body and idempotency key after a lost response, including the original baseVersionId. The hard authorization ceiling is $20 per job.","properties":{"baseVersionId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"idempotencyKey":{"$ref":"#/components/schemas/Shared_85"},"input":{"$ref":"#/components/schemas/Shared_109"},"computeClass":{"enum":["cpu","gpu"]},"limits":{"$ref":"#/components/schemas/Shared_22"},"budget":{"type":"object","description":"Optional narrower authorization or released-price override. Omission uses workspace defaults.","properties":{"currency":{"const":"USD"},"priceVersionId":{"$ref":"#/components/schemas/Shared_4"},"maxChargeMicros":{"type":"integer","minimum":0,"maximum":20000000}},"required":["currency"],"additionalProperties":false},"outputs":{"$ref":"#/components/schemas/Shared_63"},"preservation":{"$ref":"#/components/schemas/Shared_65"}},"required":["baseVersionId","idempotencyKey","input"],"additionalProperties":false},"JobPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/Job"}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"Receipt":{"$ref":"#/components/schemas/Shared_120"},"Shared_120":{"type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"receiptId":{"$ref":"#/components/schemas/Shared_4"},"reservationId":{"$ref":"#/components/schemas/Shared_4"},"jobId":{"$ref":"#/components/schemas/Shared_4"},"applicationId":{"$ref":"#/components/schemas/Shared_4"},"workspaceId":{"$ref":"#/components/schemas/Shared_4"},"subjectId":{"$ref":"#/components/schemas/Shared_4"},"outcome":{"$ref":"#/components/schemas/Shared_121"},"currency":{"const":"USD"},"fundingSource":{"$ref":"#/components/schemas/Shared_113"},"priceVersionId":{"$ref":"#/components/schemas/Shared_4"},"maxChargeMicros":{"type":"integer","minimum":0,"maximum":9007199254740991},"chargedMicros":{"type":"integer","minimum":0,"maximum":9007199254740991},"releasedMicros":{"type":"integer","minimum":0,"maximum":9007199254740991},"usage":{"$ref":"#/components/schemas/Shared_122"},"createdAt":{"$ref":"#/components/schemas/Shared_20"},"completionId":{"$ref":"#/components/schemas/Shared_4"},"settlementState":{"enum":["settled","released"]},"terminalReason":{"$ref":"#/components/schemas/Shared_126"},"measurements":{"$ref":"#/components/schemas/Shared_127"},"usageStatus":{"$ref":"#/components/schemas/Shared_128"},"recoveryCause":{"$ref":"#/components/schemas/Shared_129"},"executionPolicy":{"$ref":"#/components/schemas/Shared_114"}},"required":["schemaVersion","receiptId","reservationId","jobId","applicationId","workspaceId","subjectId","outcome","currency","fundingSource","priceVersionId","maxChargeMicros","chargedMicros","releasedMicros","usage","createdAt","completionId","settlementState","terminalReason","measurements"],"additionalProperties":false,"allOf":[{"if":{"properties":{"settlementState":{"const":"released"}}},"then":{"properties":{"chargedMicros":{"const":0}}}},{"if":{"required":["usageStatus"],"properties":{"usageStatus":{"const":"unavailable"}}},"then":{"required":["recoveryCause"],"properties":{"terminalReason":{"const":"infrastructure_error"},"outcome":{"const":"failed"},"usage":{"maxItems":0},"chargedMicros":{"const":0},"settlementState":{"const":"released"}}},"else":{"properties":{"recoveryCause":false}}}]},"Shared_121":{"enum":["succeeded","failed","cancelled"]},"Shared_122":{"type":"array","items":{"$ref":"#/components/schemas/Shared_123"},"minItems":0,"maxItems":2,"uniqueItems":true},"Shared_123":{"type":"object","properties":{"meter":{"$ref":"#/components/schemas/Shared_124"},"quantity":{"$ref":"#/components/schemas/Shared_125"}},"required":["meter","quantity"],"additionalProperties":false},"Shared_124":{"enum":["cpu_milliseconds","gpu_milliseconds"]},"Shared_125":{"type":"integer","minimum":0,"maximum":9007199254740991},"Shared_126":{"enum":["completed","cancelled_before_start","cancelled_after_start","user_error","limit_exceeded","infrastructure_error","reservation_expired"]},"Shared_127":{"type":"object","properties":{"peakMemoryBytes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"outputBytes":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["peakMemoryBytes","outputBytes"],"additionalProperties":false},"Shared_128":{"enum":["measured","unavailable"],"description":"Absent usageStatus means measured. Unavailable execution is accepted only by authenticated stopped recovery with external provider absence proof, never as measured zero."},"Shared_129":{"enum":["reservation_expired","lease_expired","cancelled","supervisor_lost","allocation_deadline"]},"Publication":{"$ref":"#/components/schemas/Shared_131"},"Shared_131":{"title":"Explicit public publication and recipient-bound private embeds are separate","type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"publicationId":{"$ref":"#/components/schemas/Shared_4"},"applicationId":{"$ref":"#/components/schemas/Shared_4"},"workspaceId":{"$ref":"#/components/schemas/Shared_4"},"projectId":{"$ref":"#/components/schemas/Shared_4"},"versionId":{"$ref":"#/components/schemas/Shared_4"},"state":{"enum":["active","revoked"]},"publicModel":{"$ref":"#/components/schemas/Shared_132"},"createdAt":{"$ref":"#/components/schemas/Shared_20"},"revokedAt":{"anyOf":[{"$ref":"#/components/schemas/Shared_20"},{"type":"null"}]},"followCurrent":{"type":"boolean"},"followReferences":{"type":"boolean","description":"On a link that follows the current version, also show the references saved on whichever version is current. Requires followCurrent."}},"required":["schemaVersion","publicationId","applicationId","workspaceId","projectId","versionId","state","publicModel","createdAt","revokedAt"],"additionalProperties":false,"allOf":[{"if":{"properties":{"state":{"enum":["active"]}},"required":["state"]},"then":{"properties":{"revokedAt":{"type":"null"}}}},{"if":{"properties":{"state":{"enum":["revoked"]}},"required":["state"]},"then":{"properties":{"revokedAt":{"$ref":"#/components/schemas/Shared_20"}}}}]},"Shared_132":{"type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"publicationId":{"$ref":"#/components/schemas/Shared_4"},"viewer":{"$ref":"#/components/schemas/Shared_30"},"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","minLength":0,"maxLength":500},"creatorCredit":{"type":"string","minLength":1,"maxLength":80},"allowSourceDownload":{"type":"boolean"},"allowRemix":{"type":"boolean"},"createdAt":{"$ref":"#/components/schemas/Shared_20"},"updatedAt":{"$ref":"#/components/schemas/Shared_20","description":"Last known significant publication content, permission, or listing change. Omitted for older publications without a tracked modification time."},"posterSize":{"type":"object","description":"Pixel size of the pinned version’s verified poster, on single-model reads only. Omitted when unknown.","properties":{"width":{"type":"integer","minimum":1,"maximum":16384},"height":{"type":"integer","minimum":1,"maximum":16384}},"required":["width","height"],"additionalProperties":false},"hasClip":{"type":"boolean","description":"Optional public availability flag derived from the pinned version’s verified clip; no private artifact identity."},"remixedFrom":{"type":"object","description":"Server-derived public source attribution. Private grants, source version IDs and tenant identity are never projected here.","properties":{"publicationId":{"$ref":"#/components/schemas/Shared_4"},"creatorCredit":{"type":"string","minLength":1,"maxLength":80},"versionId":{"$ref":"#/components/schemas/Shared_4"}},"required":["publicationId","creatorCredit"],"additionalProperties":false},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"creatorId":{"$ref":"#/components/schemas/Shared_4"},"facts":{"$ref":"#/components/schemas/Shared_3"},"discoveryEligible":{"type":"boolean"},"modelId":{"$ref":"#/components/schemas/Shared_4"},"allowContentReference":{"type":"boolean","description":"Publisher permits renders of this fixed version to be used as references in generated images and videos. Defaults to false; does not grant editable source or remix access."}},"required":["schemaVersion","publicationId","viewer","title","description","creatorCredit","allowSourceDownload","allowRemix","createdAt"],"additionalProperties":false,"allOf":[{"properties":{"viewer":{"properties":{"access":{"const":"public"}}}}}]},"CreatePublication":{"$ref":"#/components/schemas/Shared_134"},"Shared_134":{"type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"versionId":{"$ref":"#/components/schemas/Shared_4"},"idempotencyKey":{"$ref":"#/components/schemas/Shared_85"},"confirmPublic":{"const":true},"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","minLength":0,"maxLength":500},"creatorCredit":{"type":"string","minLength":1,"maxLength":80},"allowSourceDownload":{"type":"boolean"},"allowRemix":{"type":"boolean"},"sourceReview":{"$ref":"#/components/schemas/Shared_135"},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"followCurrent":{"type":"boolean","description":"Explicitly publish future current web versions through this link. Incompatible with source download/remix."},"followReferences":{"type":"boolean","description":"On a link that follows the current version, also show the references saved on whichever version is current. Requires followCurrent."},"referenceEntryIds":{"type":"array","items":{"$ref":"#/components/schemas/Shared_4"},"maxItems":8,"uniqueItems":true},"workflows":{"type":"array","items":{"enum":["visualization","games","printing","video"]},"maxItems":4,"uniqueItems":true},"license":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":120},"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^/@\\s?#]+(?:[/?#][^\\s]*)?$"}},"required":["label","url"],"additionalProperties":false},"allowContentReference":{"type":"boolean","description":"Publisher permits renders of this fixed version to be used as references in generated images and videos. Defaults to false; does not grant editable source or remix access."}},"required":["schemaVersion","versionId","idempotencyKey","confirmPublic","title","description","creatorCredit","allowSourceDownload","allowRemix"],"additionalProperties":false},"Shared_135":{"type":"object","properties":{"artifactId":{"$ref":"#/components/schemas/Shared_4"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"acknowledgedEmbeddedContent":{"const":true}},"required":["artifactId","sha256","acknowledgedEmbeddedContent"],"additionalProperties":false},"PublicationUpdate":{"type":"object","properties":{"listed":{"type":"boolean"},"revoke":{"type":"boolean"},"sourceReview":{"$ref":"#/components/schemas/Shared_135"},"followCurrent":{"type":"boolean"},"followReferences":{"type":"boolean","description":"On a link that follows the current version, show or stop showing the references saved on whichever version is current. Requires followCurrent."},"allowContentReference":{"type":"boolean","description":"Explicitly allow rendered image/video references independently of source-download and remix rights. Requires a fixed saved version. Withdrawing or changing listing invalidates existing package capabilities."},"allowRemix":{"type":"boolean","description":"Allow or stop permitted private remixes of this fixed saved version on the same link. Turning it on requires sourceReview for this exact source (or an existing approval)."},"metadata":{"$ref":"#/components/schemas/Shared_137"}},"additionalProperties":false,"anyOf":[{"required":["metadata"]},{"required":["listed","revoke"]}],"description":"Metadata-only edits preserve listing and all reuse permissions. Read the current publication version before updating. Existing listing/revocation calls remain supported."},"Shared_137":{"type":"object","description":"Update only selected public fields on an existing URL after reading its exact viewer version. Omitted fields are preserved.","properties":{"expectedVersionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":120,"pattern":"\\S"},"description":{"anyOf":[{"const":""},{"type":"string","minLength":1,"maxLength":500,"pattern":"\\S"}],"description":"An empty string removes the description; the public page then shows its standard summary."},"creatorCredit":{"type":"string","minLength":1,"maxLength":80,"pattern":"\\S"},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"referenceEntryIds":{"type":"array","items":{"$ref":"#/components/schemas/Shared_4"},"maxItems":8,"uniqueItems":true},"workflows":{"type":"array","items":{"enum":["visualization","games","printing","video"]},"maxItems":4,"uniqueItems":true},"license":{"anyOf":[{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":120},"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^/@\\s?#]+(?:[/?#][^\\s]*)?$"}},"required":["label","url"],"additionalProperties":false},{"type":"null"}]}},"required":["expectedVersionId"],"minProperties":2,"additionalProperties":false},"Grant":{"$ref":"#/components/schemas/Shared_139"},"Shared_139":{"type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"grantId":{"$ref":"#/components/schemas/Shared_4"},"applicationId":{"$ref":"#/components/schemas/Shared_4"},"workspaceId":{"$ref":"#/components/schemas/Shared_4"},"projectId":{"$ref":"#/components/schemas/Shared_4"},"versionId":{"$ref":"#/components/schemas/Shared_4"},"recipientSubjectId":{"$ref":"#/components/schemas/Shared_4"},"origin":{"$ref":"#/components/schemas/Shared_140"},"permissions":{"$ref":"#/components/schemas/Shared_141"},"createdAt":{"$ref":"#/components/schemas/Shared_20"},"expiresAt":{"$ref":"#/components/schemas/Shared_20"},"revokedAt":{"anyOf":[{"$ref":"#/components/schemas/Shared_20"},{"type":"null"}]}},"required":["schemaVersion","grantId","applicationId","workspaceId","projectId","versionId","recipientSubjectId","origin","permissions","createdAt","expiresAt","revokedAt"],"additionalProperties":false},"Shared_140":{"type":"string","maxLength":255,"pattern":"^https://[a-z0-9]+(?:[a-z0-9.-]*[a-z0-9])?(?::[1-9][0-9]{0,4})?$"},"Shared_141":{"type":"object","properties":{"view":{"const":true},"source":{"type":"boolean"},"remix":{"type":"boolean"}},"required":["view","source","remix"],"additionalProperties":false},"CreateGrant":{"$ref":"#/components/schemas/Shared_143"},"Shared_143":{"type":"object","properties":{"schemaVersion":{"$ref":"#/components/schemas/Shared_11"},"versionId":{"$ref":"#/components/schemas/Shared_4"},"recipientSubjectId":{"$ref":"#/components/schemas/Shared_4"},"origin":{"$ref":"#/components/schemas/Shared_140"},"permissions":{"$ref":"#/components/schemas/Shared_141"},"expiresAt":{"$ref":"#/components/schemas/Shared_20"},"sourceReview":{"$ref":"#/components/schemas/Shared_135"}},"required":["schemaVersion","versionId","recipientSubjectId","origin","permissions","expiresAt"],"additionalProperties":false},"LeaseResponse":{"type":"object","properties":{"descriptor":{"$ref":"#/components/schemas/Descriptor"},"leaseId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"lease":{"$ref":"#/components/schemas/ResourceLease"}},"required":["descriptor","leaseId","lease"],"additionalProperties":false},"LeaseRequest":{"type":"object","properties":{"origin":{"type":"string","format":"uri"},"resource":{"enum":["model","poster","clip","source"]}},"required":["origin","resource"],"additionalProperties":false},"Revoked":{"type":"object","properties":{"revoked":{"const":true}},"required":["revoked"],"additionalProperties":false},"CloneResult":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/Project"},"version":{"$ref":"#/components/schemas/Version"}},"required":["project","version"],"additionalProperties":false},"CloneRequest":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"},"source":{"oneOf":[{"type":"object","properties":{"publicationId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["publicationId"],"additionalProperties":false},{"type":"object","properties":{"grantId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["grantId"],"additionalProperties":false}]},"expectedVersionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"discoveryJourneyId":{"type":"string","format":"uuid"}},"required":["title","idempotencyKey","source"],"additionalProperties":false},"AbandonedClone":{"type":"object","properties":{"state":{"const":"abandoned"},"retainedUntil":{"type":"string","format":"date-time"}},"required":["state","retainedUntil"],"additionalProperties":false},"IdempotencyKey":{"type":"object","properties":{"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"}},"required":["idempotencyKey"],"additionalProperties":false},"PurgedClone":{"type":"object","properties":{"state":{"const":"purged"}},"required":["state"],"additionalProperties":false},"PurgeResult":{"type":"object","properties":{"state":{"enum":["purging","purged"]},"purgedObjects":{"type":"integer","minimum":0}},"required":["state","purgedObjects"],"additionalProperties":false},"Deleted":{"type":"object","properties":{"deleted":{"const":true}},"required":["deleted"],"additionalProperties":false},"WebhookSecret":{"type":"object","properties":{"endpointId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"state":{"const":"pending"},"secret":{"type":"string"},"challenge":{"type":"string"}},"required":["endpointId","state","secret","challenge"],"additionalProperties":false},"CreateWebhook":{"type":"object","properties":{"url":{"type":"string","format":"uri","maxLength":2048}},"required":["url"],"additionalProperties":false},"WebhookVerified":{"type":"object","properties":{"endpointId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"state":{"const":"verified"}},"required":["endpointId","state"],"additionalProperties":false},"WebhookChallenge":{"type":"object","properties":{"challenge":{"type":"string"}},"required":["challenge"],"additionalProperties":false},"EndpointIds":{"type":"object","properties":{"endpointIds":{"type":"array","maxItems":10,"items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}},"required":["endpointIds"],"additionalProperties":false},"PublicModelPage":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PublicModel"}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"],"additionalProperties":false},"PublicModel":{"$ref":"#/components/schemas/Shared_132"},"ModelReportReceived":{"type":"object","additionalProperties":false,"required":["reportId","state","createdAt"],"properties":{"reportId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"state":{"const":"received"},"createdAt":{"type":"string","format":"date-time"}}},"ModelReportRequest":{"type":"object","additionalProperties":false,"required":["category","message"],"properties":{"category":{"type":"string","enum":["rights","privacy","abuse","other"]},"message":{"type":"string","minLength":10,"maxLength":2000}}},"SourcePreview":{"type":"object","additionalProperties":false,"properties":{"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"source":{"type":"object","additionalProperties":false,"properties":{"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"byteLength":{"type":"integer","minimum":1}},"required":["artifactId","sha256","byteLength"]},"inventory":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"imageCount":{"type":"integer","minimum":0,"maximum":1000000},"packedImageCount":{"type":"integer","minimum":0,"maximum":1000000},"textBlockCount":{"type":"integer","minimum":0,"maximum":1000000},"customPropertyBlockCount":{"type":"integer","minimum":0,"maximum":1000000},"hiddenObjectCount":{"type":"integer","minimum":0,"maximum":1000000},"imageNames":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":120}},"textBlockNames":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":120}}},"required":["schemaVersion","imageCount","packedImageCount","textBlockCount","customPropertyBlockCount","hiddenObjectCount","imageNames","textBlockNames"],"additionalProperties":false},{"type":"null"}]},"inventoryIsExhaustive":{"const":false},"disclosure":{"type":"string"}},"required":["versionId","source","inventory","inventoryIsExhaustive","disclosure"]},"UploadTransfer":{"type":"object","properties":{"uploadId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"expiresAt":{"type":"string","format":"date-time"},"state":{"enum":["pending","receiving","complete","rejected","abandoning","abandoned"]},"transfer":{"anyOf":[{"$ref":"#/components/schemas/FileTransfer"},{"type":"null"}]}},"required":["uploadId","artifactId","expiresAt","state","transfer"],"additionalProperties":false},"FileTransfer":{"type":"object","additionalProperties":false,"properties":{"transferId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"method":{"enum":["GET","PUT"]},"path":{"type":"string"},"headers":{"type":"object","additionalProperties":false,"properties":{"Authorization":{"type":"string"},"Content-Type":{"const":"application/octet-stream"},"Content-Length":{"type":"string"}},"required":["Authorization"]},"expiresAt":{"type":"string","format":"date-time"},"sha256":{"type":"string","pattern":"^[0-9a-f]{64}$"},"byteLength":{"type":"integer","minimum":1},"chunked":{"type":"object","description":"Input or prepared GLB larger than 8 MiB: send only missing fixed parts, then complete. Prepared GLBs use at most 8 parts within maxPreparedGlbBytes; larger owner-scoped retained masters keep their separate configured limit. Every part retains the existing request bound. An ordinary prepared upload requires owner/editor access, not source ownership.","additionalProperties":false,"properties":{"chunkBytes":{"const":8388608},"parts":{"type":"array","minItems":1,"maxItems":64,"items":{"type":"object","additionalProperties":false,"properties":{"index":{"type":"integer","minimum":0,"maximum":63},"start":{"type":"integer","minimum":0},"end":{"type":"integer","minimum":0},"method":{"const":"PUT"},"path":{"type":"string"},"headers":{"type":"object","additionalProperties":false,"properties":{"Authorization":{"type":"string"},"Content-Type":{"const":"application/octet-stream"},"Content-Length":{"type":"string"}},"required":["Authorization","Content-Type"]},"uploaded":{"type":"boolean","description":"Durably acknowledged part. Skip it on resume; absent on older servers means upload it. Repeat the exact prepare request and idempotency key after interruption or expiry."}},"required":["index","start","end","method","path","headers"]}},"complete":{"type":"object","additionalProperties":false,"properties":{"method":{"const":"POST"},"path":{"type":"string"},"headers":{"type":"object","additionalProperties":false,"properties":{"Authorization":{"type":"string"},"Content-Type":{"const":"application/json"},"Content-Length":{"type":"string"}},"required":["Authorization","Content-Type"]},"body":{"type":"object","additionalProperties":false}},"required":["method","path","headers","body"]}},"required":["chunkBytes","parts","complete"]}},"required":["transferId","artifactId","method","path","headers","expiresAt","sha256","byteLength"]},"ContinuationResult":{"type":"object","additionalProperties":false,"properties":{"continuation":{"anyOf":[{"$ref":"#/components/schemas/Continuation"},{"type":"null"}]},"revision":{"type":"integer","minimum":0}},"required":["continuation"]},"Continuation":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":"1.0"},"requestId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"revision":{"type":"integer","minimum":0},"state":{"enum":["pending","completed","cancelled"]},"goal":{"type":"string","minLength":1,"maxLength":2000},"projectId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"versionId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"objectId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"resultVersionId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"updatedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}},"required":["schemaVersion","requestId","revision","state","goal","projectId","versionId","objectId","resultVersionId","updatedAt","expiresAt"]},"ModelCatalogPage":{"type":"object","additionalProperties":false,"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ModelCatalogSummary"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["items","nextCursor"]},"ModelCatalogSummary":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":"1.0"},"catalogId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":120},"revision":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"description":{"type":"string","maxLength":500},"sharing":{"$ref":"#/components/schemas/CatalogSharing"},"entryCount":{"type":"integer","minimum":0,"maximum":100},"previews":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/CatalogEntry"}},"managedBy":{"const":"blendstra-kit"}},"required":["schemaVersion","catalogId","title","revision","createdAt","updatedAt","entryCount","previews"]},"CatalogSharing":{"type":"object","additionalProperties":false,"properties":{"publicId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"visibility":{"enum":["private","unlisted","public"]}},"required":["publicId","visibility"]},"CatalogEntry":{"oneOf":[{"$ref":"#/components/schemas/SavedCatalogEntry"},{"$ref":"#/components/schemas/GeneratorCatalogEntry"}]},"SavedCatalogEntry":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"label":{"type":"string","minLength":1,"maxLength":80},"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"component":{"allOf":[{"$ref":"#/components/schemas/Shared_46"},{"properties":{"source":{"properties":{"kind":{"const":"saved"}}}}}]}},"required":["key","label","projectId","versionId","tags"]},"GeneratorCatalogEntry":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"label":{"type":"string","minLength":1,"maxLength":80},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"component":{"allOf":[{"$ref":"#/components/schemas/Shared_46"},{"properties":{"source":{"properties":{"kind":{"const":"generator"}}}}}]}},"required":["key","label","tags","component"]},"ModelCatalog":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":"1.0"},"catalogId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":120},"revision":{"type":"integer","minimum":0},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"entries":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/CatalogEntry"}},"description":{"type":"string","maxLength":500},"sharing":{"$ref":"#/components/schemas/CatalogSharing"},"managedBy":{"const":"blendstra-kit"}},"required":["schemaVersion","catalogId","title","revision","createdAt","updatedAt","entries"]},"Shared_175":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"artifactId":{"description":"The lightweight prepared_glb preview to validate and display.","$ref":"#/components/schemas/Shared_4"},"baseVersionId":{"anyOf":[{"$ref":"#/components/schemas/Shared_4"},{"type":"null"}]},"idempotencyKey":{"$ref":"#/components/schemas/Shared_85"},"sourceArtifactId":{"description":"Separate retained master: input_blend, input_glb, or an unsaved prepared_glb upload, including one rejected by viewer limits. The stored master is never simplified or copied.","$ref":"#/components/schemas/Shared_4"},"provenance":{"type":"object","properties":{"origin":{"type":"string","minLength":1,"maxLength":300},"sourceUrl":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https://[^\\s]+$"},"rights":{"type":"string","minLength":1,"maxLength":2000}},"required":[],"additionalProperties":false}},"required":["schemaVersion","artifactId","baseVersionId","idempotencyKey"],"additionalProperties":false},"RecipeList":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"items":{"type":"array","maxItems":4,"items":{"$ref":"#/components/schemas/RecipeSearchItem"}},"nextCursor":{"type":"null"},"scope":{"const":"original-private-seeds"},"geometryEvaluated":{"const":false},"publishingPerformed":{"const":false}},"required":["schemaVersion","items","nextCursor","scope","geometryEvaluated","publishingPerformed"],"additionalProperties":false},"RecipeSearchItem":{"type":"object","properties":{"pin":{"$ref":"#/components/schemas/RecipePin"},"title":{"type":"string"},"kind":{"enum":["model","component"]},"parameters":{"type":"array","maxItems":8,"items":{"$ref":"#/components/schemas/RecipeParameterDefinition"}},"combinations":{"type":"array","maxItems":8,"items":{"type":"object","properties":{"parameterIds":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"allowed":{"type":"array","minItems":1,"maxItems":128,"items":{"type":"array","minItems":1,"maxItems":8,"items":{"anyOf":[{"type":"number"},{"type":"boolean"},{"type":"string","maxLength":80}]}}}},"required":["parameterIds","allowed"],"additionalProperties":false}},"rights":{"type":"object","properties":{"basis":{"const":"repository-original"},"official":{"const":false},"allowedReuse":{"const":"private-fixture"},"attribution":{"type":"string"}},"required":["basis","official","allowedReuse","attribution"],"additionalProperties":false},"evidence":{"type":"object","properties":{"level":{"const":"declared"},"nativeEvaluation":{"const":"required"},"productionEvaluation":{"const":"required"}},"required":["level","nativeEvaluation","productionEvaluation"],"additionalProperties":false},"limitations":{"type":"array","items":{"type":"string"}},"dependencySlots":{"type":"array","maxItems":1,"items":{"type":"object","properties":{"id":{"const":"latch"},"recipeId":{"const":"original-latch"},"version":{"const":"1"}},"required":["id","recipeId","version"],"additionalProperties":false}},"capabilities":{"$ref":"#/components/schemas/DeclaredDiscoveryFindings"},"matchReason":{"type":"string","maxLength":240},"animation":{"$ref":"#/components/schemas/RecipeAnimation"}},"required":["pin","title","kind","parameters","combinations","rights","evidence","limitations","dependencySlots","capabilities","matchReason"],"additionalProperties":false},"RecipePin":{"type":"object","properties":{"recipeId":{"type":"string","enum":["original-radio","adjustable-lamp","original-gate","original-latch"]},"version":{"type":"string","enum":["1","2"],"description":"Version 2 is available only for original-gate. Existing version-1 pins retain their original source bytes and never advance automatically."},"sourceSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["recipeId","version","sourceSha256"],"additionalProperties":false,"allOf":[{"if":{"properties":{"version":{"const":"2"}}},"then":{"properties":{"recipeId":{"const":"original-gate"}}}}]},"RecipeParameterDefinition":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"label":{"type":"string","minLength":1,"maxLength":160},"effect":{"type":"object","properties":{"kind":{"const":"source"}},"required":["kind"],"additionalProperties":false},"type":{"const":"number"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","exclusiveMinimum":0},"unit":{"enum":["m","mm","in","deg","rad","ratio"]},"default":{"type":"number"}},"required":["id","label","effect","type","min","max","step","unit","default"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"label":{"type":"string","minLength":1,"maxLength":160},"effect":{"type":"object","properties":{"kind":{"const":"source"}},"required":["kind"],"additionalProperties":false},"type":{"const":"enum"},"values":{"type":"array","minItems":1,"maxItems":64,"uniqueItems":true,"items":{"type":"string","maxLength":80}},"default":{"type":"string","maxLength":80}},"required":["id","label","effect","type","values","default"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"label":{"type":"string","minLength":1,"maxLength":160},"effect":{"type":"object","properties":{"kind":{"const":"source"}},"required":["kind"],"additionalProperties":false},"type":{"const":"boolean"},"default":{"type":"boolean"}},"required":["id","label","effect","type","default"],"additionalProperties":false}]},"DeclaredDiscoveryFindings":{"type":"object","properties":{"view":{"type":"object","properties":{"status":{"enum":["declared","unsupported"]},"reason":{"type":"string","maxLength":240}},"required":["status","reason"],"additionalProperties":false},"sourceEdit":{"type":"object","properties":{"status":{"enum":["declared","unsupported"]},"reason":{"type":"string","maxLength":240}},"required":["status","reason"],"additionalProperties":false},"animation":{"type":"object","properties":{"status":{"enum":["declared","unsupported"]},"reason":{"type":"string","maxLength":240}},"required":["status","reason"],"additionalProperties":false},"recipeParameters":{"type":"object","properties":{"status":{"enum":["declared","unsupported"]},"reason":{"type":"string","maxLength":240}},"required":["status","reason"],"additionalProperties":false}},"required":["view","sourceEdit","animation","recipeParameters"],"additionalProperties":false},"RecipeAnimation":{"type":"object","properties":{"id":{"const":"swing"},"componentId":{"const":"recipe_gate_hinge"},"axis":{"const":"z"},"closedDegrees":{"const":0},"openDegrees":{"const":90},"durationSeconds":{"const":2}},"required":["id","componentId","axis","closedDegrees","openDegrees","durationSeconds"],"additionalProperties":false,"description":"Declared original-gate v2 motion. It is not a saved clip or physical fit evaluation."},"PreparedRecipe":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"recipe":{"$ref":"#/components/schemas/RecipeDefinition"},"parameters":{"$ref":"#/components/schemas/RecipeParameters"},"dependencies":{"$ref":"#/components/schemas/RecipeDependencies"},"mode":{"enum":["create","revise"]},"startsCompute":{"const":false},"preservation":{"type":"object","properties":{"evidence":{"const":"required-after-execution"},"reusedComponentGeometryMayChange":{"const":false}},"required":["evidence","reusedComponentGeometryMayChange"],"additionalProperties":false},"execution":{"type":"object","properties":{"method":{"const":"POST"},"path":{"type":"string"},"request":{"$ref":"#/components/schemas/RecipeRequest"}},"required":["method","path","request"],"additionalProperties":false}},"required":["schemaVersion","recipe","parameters","dependencies","mode","startsCompute","preservation","execution"],"additionalProperties":false},"RecipeDefinition":{"type":"object","properties":{"pin":{"$ref":"#/components/schemas/RecipePin"},"title":{"type":"string"},"kind":{"enum":["model","component"]},"parameters":{"type":"array","maxItems":8,"items":{"$ref":"#/components/schemas/RecipeParameterDefinition"}},"combinations":{"type":"array","maxItems":8,"items":{"type":"object","properties":{"parameterIds":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"allowed":{"type":"array","minItems":1,"maxItems":128,"items":{"type":"array","minItems":1,"maxItems":8,"items":{"anyOf":[{"type":"number"},{"type":"boolean"},{"type":"string","maxLength":80}]}}}},"required":["parameterIds","allowed"],"additionalProperties":false}},"rights":{"type":"object","properties":{"basis":{"const":"repository-original"},"official":{"const":false},"allowedReuse":{"const":"private-fixture"},"attribution":{"type":"string"}},"required":["basis","official","allowedReuse","attribution"],"additionalProperties":false},"evidence":{"type":"object","properties":{"level":{"const":"declared"},"nativeEvaluation":{"const":"required"},"productionEvaluation":{"const":"required"}},"required":["level","nativeEvaluation","productionEvaluation"],"additionalProperties":false},"limitations":{"type":"array","items":{"type":"string"}},"dependencySlots":{"type":"array","maxItems":1,"items":{"type":"object","properties":{"id":{"const":"latch"},"recipeId":{"const":"original-latch"},"version":{"const":"1"}},"required":["id","recipeId","version"],"additionalProperties":false}},"animation":{"$ref":"#/components/schemas/RecipeAnimation"}},"required":["pin","title","kind","parameters","combinations","rights","evidence","limitations","dependencySlots"],"additionalProperties":false},"RecipeParameters":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":80},{"type":"number"},{"type":"boolean"}]}},"RecipeDependencies":{"type":"array","maxItems":16,"items":{"$ref":"#/components/schemas/RecipeDependency"}},"RecipeDependency":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"source":{"$ref":"#/components/schemas/RecipeModelPin"},"partIds":{"type":"object","properties":{"plate":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"lever":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["plate","lever"],"additionalProperties":false},"dependsOn":{"maxItems":16,"type":"array","items":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"rights":{"type":"string","const":"original-private-fixture"}},"required":["id","source","partIds","dependsOn","rights"],"additionalProperties":false},"RecipeModelPin":{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"source":{"type":"object","properties":{"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["artifactId","sha256"],"additionalProperties":false},"delivery":{"anyOf":[{"type":"object","properties":{"artifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["artifactId","sha256"],"additionalProperties":false},{"type":"null"}]}},"required":["projectId","versionId","source","delivery"],"additionalProperties":false},"RecipeRequest":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1.0"},"recipe":{"$ref":"#/components/schemas/RecipePin"},"parameters":{"$ref":"#/components/schemas/RecipeParameters"},"dependencies":{"$ref":"#/components/schemas/RecipeDependencies"},"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"baseVersionId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"title":{"type":"string","minLength":1,"maxLength":120},"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"}},"required":["schemaVersion","recipe","parameters","dependencies","idempotencyKey"],"additionalProperties":false,"oneOf":[{"required":["title"],"not":{"required":["projectId"]},"properties":{"baseVersionId":{"type":"null"}}},{"required":["projectId","baseVersionId"],"not":{"required":["title"]}}]},"RecipeOperation":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"recipe":{"$ref":"#/components/schemas/RecipePin"},"parameters":{"$ref":"#/components/schemas/RecipeParameters"},"dependencies":{"$ref":"#/components/schemas/RecipeDependencies"},"operation":{"$ref":"#/components/schemas/CreationOperation"},"continuation":{"anyOf":[{"type":"null"},{"type":"object","properties":{"method":{"const":"GET"},"path":{"type":"string"}},"required":["method","path"],"additionalProperties":false}]},"evidence":{"type":"object","properties":{"geometry":{"const":"not-verified"},"productionAcceptance":{"const":"not-inferred"}},"required":["geometry","productionAcceptance"],"additionalProperties":false}},"required":["schemaVersion","recipe","parameters","dependencies","operation","continuation","evidence"],"additionalProperties":false},"RecipeReceipt":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"recipe":{"$ref":"#/components/schemas/RecipePin"},"parameters":{"$ref":"#/components/schemas/RecipeParameters"},"dependencies":{"$ref":"#/components/schemas/RecipeDependencies"},"instanceId":{"type":"string"},"identity":{"$ref":"#/components/schemas/RecipeModelPin"},"evidence":{"type":"object","properties":{"method":{"const":"retained-script-match"},"geometry":{"const":"not-verified"},"fit":{"const":"unknown"},"official":{"const":false}},"required":["method","geometry","fit","official"],"additionalProperties":false},"manifest":{"anyOf":[{"type":"null"},{"type":"object","description":"Version-pinned ObjectManifest from contracts/v1/object-controls.ts. Source parameters remain separate from prepared playback. Gate v2 exposes its swing only after the exact saved GLB is verified, and carries original noncommercial width-configuration references. No supplier authority or physical fit is inferred."}]},"playback":{"$ref":"#/components/schemas/RecipePlayback"},"reuse":{"type":"object","properties":{"status":{"enum":["supported","unavailable","restricted"]},"reason":{"type":"string"},"dependency":{"$ref":"#/components/schemas/RecipeDependency"},"attribution":{"type":"string"}},"required":["status","reason","attribution"],"additionalProperties":false}},"required":["schemaVersion","recipe","parameters","dependencies","instanceId","identity","evidence","manifest"],"additionalProperties":false},"RecipePlayback":{"type":"object","properties":{"animationId":{"const":"swing"},"status":{"enum":["verified","unavailable","restricted"]},"reason":{"type":"string","maxLength":240},"clipId":{"type":"string","pattern":"^clip:[0-9]{1,4}$"}},"required":["animationId","status","reason"],"additionalProperties":false,"oneOf":[{"properties":{"status":{"const":"verified"}},"required":["clipId"]},{"properties":{"status":{"enum":["unavailable","restricted"]}},"not":{"required":["clipId"]}}],"description":"Playback finding for the exact retained saved GLB. Only verified hinge animation exposes a clip; missing evidence or view permission grants no playback."},"CatalogSearchPage":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"catalogId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"catalogTitle":{"type":"string","minLength":1,"maxLength":120},"catalogRevision":{"type":"integer","minimum":0},"items":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/CatalogSearchItem"}},"nextCursor":{"type":["string","null"],"maxLength":2048}},"required":["schemaVersion","catalogId","catalogTitle","catalogRevision","items","nextCursor"],"additionalProperties":false},"CatalogSearchItem":{"oneOf":[{"$ref":"#/components/schemas/SavedCatalogSearchItem"},{"$ref":"#/components/schemas/GeneratorCatalogSearchItem"}]},"SavedCatalogSearchItem":{"type":"object","properties":{"key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"label":{"type":"string","minLength":1,"maxLength":80},"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"identity":{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"assetId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["projectId","versionId","assetId","sha256"],"additionalProperties":false},"capabilities":{"$ref":"#/components/schemas/DiscoveryFindings"},"recipe":{"type":"object","properties":{"pin":{"$ref":"#/components/schemas/RecipePin"},"parameters":{"type":"array","maxItems":8,"items":{"$ref":"#/components/schemas/RecipeParameterDefinition"}},"values":{"$ref":"#/components/schemas/RecipeParameters"}},"required":["pin","parameters","values"],"additionalProperties":false},"compatibility":{"type":"object","properties":{"official":{"const":"not-established"},"fit":{"const":"not-evaluated"}},"required":["official","fit"],"additionalProperties":false},"matchReason":{"type":"string","maxLength":240},"versionPath":{"type":"string","pattern":"^/studio\\?workspace=[A-Za-z0-9_-]+&project=[A-Za-z0-9_-]+&version=[A-Za-z0-9_-]+$"},"referenceMatches":{"$ref":"#/components/schemas/CatalogReferenceMatches"},"use":{"type":"object","properties":{"label":{"enum":["Use saved component","Use recipe"]},"tool":{"const":"recipe_get"},"arguments":{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["projectId","versionId"],"additionalProperties":false}},"required":["label","tool","arguments"],"additionalProperties":false},"component":{"allOf":[{"$ref":"#/components/schemas/Shared_46"},{"properties":{"source":{"properties":{"kind":{"const":"saved"}}}}}]},"catalogEntryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}:[A-Za-z0-9_-]{1,128}:[a-f0-9]{64}$","maxLength":322},"componentUse":{"type":"object","additionalProperties":false,"required":["label","tool","arguments","inspect"],"properties":{"label":{"const":"Use saved component"},"tool":{"const":"model_create"},"arguments":{"type":"object","additionalProperties":false,"required":["components"],"properties":{"components":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","additionalProperties":false,"required":["ref","as"],"properties":{"ref":{"type":"object","additionalProperties":false,"required":["catalogEntryId"],"properties":{"catalogEntryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}:[A-Za-z0-9_-]{1,128}:[a-f0-9]{64}$","maxLength":322}}},"as":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,47}$"}}}}}},"inspect":{"type":"object","additionalProperties":false,"required":["tool","arguments"],"properties":{"tool":{"const":"scene_inspect"},"arguments":{"type":"object","additionalProperties":false,"required":["projectId","versionId","representation","maxObjects"],"properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"representation":{"const":"source"},"maxObjects":{"const":20}}}}}},"description":"Argument-ready candidate descriptor only: inspect exact saved design and dimensions, then explicitly merge components into model_create. Actual import eligibility and current dependencies are revalidated at submission. No import or fit guarantee."}},"required":["key","label","projectId","versionId","tags","identity","capabilities","compatibility","matchReason","versionPath"],"additionalProperties":false},"DiscoveryFindings":{"type":"object","properties":{"view":{"$ref":"#/components/schemas/DiscoveryFinding"},"sourceEdit":{"$ref":"#/components/schemas/DiscoveryFinding"},"animation":{"$ref":"#/components/schemas/DiscoveryFinding"},"recipeParameters":{"$ref":"#/components/schemas/DiscoveryFinding"}},"required":["view","sourceEdit","animation","recipeParameters"],"additionalProperties":false},"DiscoveryFinding":{"type":"object","properties":{"status":{"enum":["supported","unsupported","unknown","restricted"]},"reason":{"type":"string","maxLength":240}},"required":["status","reason"],"additionalProperties":false},"CatalogReferenceMatches":{"type":"object","properties":{"selection":{"enum":["current","accepted"]},"reviewRevision":{"type":"integer","minimum":1,"maximum":200},"acceptance":{"type":"object","properties":{"entryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"revision":{"type":"integer","minimum":1,"maximum":200}},"required":["entryId","revision"],"additionalProperties":false},"items":{"type":"array","minItems":1,"maxItems":5,"items":{"$ref":"#/components/schemas/CatalogReferenceMatch"}},"truncated":{"type":"boolean","description":"Additional predicate-matching facts were not evaluated or projected. This is not a count or a guarantee that more retained matches exist; use the exact review journal for detail."}},"required":["selection","reviewRevision","truncated","items"],"additionalProperties":false,"allOf":[{"if":{"properties":{"selection":{"const":"accepted"}}},"then":{"required":["acceptance"]},"else":{"not":{"required":["acceptance"]}}}]},"CatalogReferenceMatch":{"type":"object","properties":{"entryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"revision":{"type":"integer","minimum":1,"maximum":200},"referenceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"objectId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"title":{"$ref":"#/components/schemas/Shared_199"},"identity":{"$ref":"#/components/schemas/Shared_200"},"publisher":{"type":"object","properties":{"name":{"$ref":"#/components/schemas/Shared_201"}},"required":["name"],"additionalProperties":false},"measurements":{"$ref":"#/components/schemas/Shared_202"},"evidenceKinds":{"type":"array","maxItems":3,"uniqueItems":true,"items":{"enum":["page","image","document"]}},"approximateMeasurements":{"type":"integer","minimum":0,"maximum":16},"unresolvedAssumptions":{"type":"integer","minimum":0,"maximum":16}},"required":["entryId","revision","referenceId","versionId","objectId","title","identity","publisher","measurements","evidenceKinds","approximateMeasurements","unresolvedAssumptions"],"additionalProperties":false,"description":"Compact attributed reference facts from one exact private review entry. No evidence URLs, artifact IDs or hashes. Object anchors are unverified; recorded facts do not establish official authority or engineering fit."},"Shared_199":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"Shared_200":{"type":"object","properties":{"namespace":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"catalogId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"productId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"variantId":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"variantState":{"type":"string","enum":["resolved","unresolved"]}},"required":["namespace","variantState"],"additionalProperties":false,"allOf":[{"if":{"properties":{"variantState":{"const":"resolved"}}},"then":{"required":["productId","variantId"]},"else":{"not":{"required":["variantId"]}}}]},"Shared_201":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"Shared_202":{"maxItems":16,"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[^\\u0000-\\u001f\\u007f]+$"},"basis":{"type":"string","enum":["nominal","documented","modeled"]},"value":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,8})(?:\\.[0-9]{1,6})?$"},"unit":{"type":"string","enum":["mm","cm","m","in","ft","deg"]},"approximate":{"type":"boolean"},"evidenceId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["label","basis","value","unit","approximate"],"additionalProperties":false,"allOf":[{"if":{"properties":{"basis":{"const":"documented"}}},"then":{"required":["evidenceId"]}}]}},"GeneratorCatalogSearchItem":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"label":{"type":"string","minLength":1,"maxLength":80},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"component":{"allOf":[{"$ref":"#/components/schemas/Shared_46"},{"properties":{"source":{"properties":{"kind":{"const":"generator"}}}}}]},"capabilities":{"$ref":"#/components/schemas/DiscoveryFindings"},"compatibility":{"type":"object","properties":{"official":{"const":"not-established"},"fit":{"const":"not-evaluated"}},"required":["official","fit"],"additionalProperties":false},"matchReason":{"type":"string","maxLength":240},"catalogEntryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}:[A-Za-z0-9_-]{1,128}:[a-f0-9]{64}$","maxLength":322},"use":{"type":"object","additionalProperties":false,"required":["label","tool","arguments"],"properties":{"label":{"const":"Use kit component"},"tool":{"const":"model_create"},"arguments":{"type":"object","additionalProperties":false,"required":["components"],"properties":{"components":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","additionalProperties":false,"required":["ref","as"],"properties":{"ref":{"type":"object","additionalProperties":false,"required":["catalogEntryId"],"properties":{"catalogEntryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}:[A-Za-z0-9_-]{1,128}:[a-f0-9]{64}$","maxLength":322}}},"as":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}}}}}}}},"required":["key","label","tags","component","capabilities","compatibility","matchReason","catalogEntryId","use"]},"ViewerRenderResult":{"type":"object","additionalProperties":false,"properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"modelArtifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"modelSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"rendererSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cached":{"type":"boolean"},"startsBlenderJob":{"const":false},"changesModel":{"const":false},"metadata":{"$ref":"#/components/schemas/ViewerRenderMetadata"},"mimeType":{"const":"image/png"},"imageBase64":{"type":"string","maxLength":12582912}},"required":["projectId","versionId","modelArtifactId","modelSha256","imageSha256","rendererSha256","cached","startsBlenderJob","changesModel","metadata","mimeType","imageBase64"]},"ViewerRenderMetadata":{"type":"object","additionalProperties":false,"properties":{"renderer":{"const":"blendstra_web_viewer_v1"},"representation":{"const":"delivered_web_model"},"coordinateSystem":{"const":"gltf_y_up"},"mode":{"enum":["textured","clay","normals","wireframe","matcap"]},"camera":{"$ref":"#/components/schemas/ViewerRenderCamera"},"objectId":{"anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"isolated":{"type":"boolean"},"animationId":{"type":["string","null"]},"timeSeconds":{"type":"number"},"width":{"enum":[512,1024]},"height":{"enum":[512,1024]},"animations":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"label":{"type":"string"},"duration":{"type":"number"}},"required":["id","label","duration"]}}},"required":["renderer","representation","coordinateSystem","mode","camera","objectId","isolated","animationId","timeSeconds","width","height","animations"]},"TargetedEditRequest":{"type":"object","properties":{"baseVersionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"idempotencyKey":{"type":"string","pattern":"^[A-Za-z0-9_-]{8,128}$"},"coordinateBasis":{"type":"string","const":"source_z_up"},"unit":{"type":"string","const":"meters"},"operations":{"minItems":1,"maxItems":16,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"transform"},"objectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"translationMeters":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"number","minimum":-1000,"maximum":1000}},"rotationDegrees":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"number","minimum":-360,"maximum":360}},"scaleFactors":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"number","minimum":0.001,"maximum":1000}}},"required":["kind","objectId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"material_assignment"},"objectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"slot":{"type":"integer","minimum":0,"maximum":31},"sourceObjectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"sourceSlot":{"type":"integer","minimum":0,"maximum":31}},"required":["kind","objectId","slot","sourceObjectId","sourceSlot"],"additionalProperties":false}]}},"outputs":{"type":"object","properties":{"poster":{"type":"boolean"},"clip":{"type":"boolean"},"inspection":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1.0"},"views":{"minItems":1,"maxItems":9,"type":"array","items":{"type":"object","properties":{"view":{"type":"string","enum":["front","rear","left","right","top","underside","reference"]},"objectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"frame":{"type":"integer","minimum":0,"maximum":1000000},"camera":{"type":"object","properties":{"positionMicrometers":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000}},"targetMicrometers":{"minItems":3,"maxItems":3,"type":"array","items":{"type":"integer","minimum":-1000000000000,"maximum":1000000000000}},"orthoScaleMicrometers":{"type":"integer","minimum":1,"maximum":1000000000000}},"required":["positionMicrometers","targetMicrometers","orthoScaleMicrometers"],"additionalProperties":false}},"required":["view"],"additionalProperties":false}}},"required":["schemaVersion","views"],"additionalProperties":false}},"required":["poster","clip"],"additionalProperties":false}},"required":["baseVersionId","idempotencyKey","coordinateBasis","unit","operations"],"additionalProperties":false,"description":"Supported simple-mesh source edits; runtime validates target IDs, one operation per target, transform fields, material slots and exact-base preservation before compute. Animated or unsupported source requires scoped Python."},"ModelContext":{"type":"object","description":"Bounded private editor projection from existing source, review and recipe contracts; authored and measured facts are distinct. Missing access yields restricted source/controls. Exact response contract is contracts/v1/model-context.ts. No extra store or compute.","properties":{"schemaVersion":{"const":"1.0"},"visibility":{"const":"private_editor"},"projectId":{"type":"string"},"selectedVersionId":{"type":["string","null"]},"currentVersionId":{"type":["string","null"]},"acceptedVersionId":{"type":["string","null"]},"reviewRevision":{"type":"integer","minimum":0},"startsCompute":{"const":false},"brief":{"type":["object","null"]},"corrections":{"type":"array","maxItems":5,"items":{"type":"object"}},"openCounts":{"type":"object"},"references":{"type":"array","maxItems":5,"items":{"type":"object"}},"source":{"type":"object"},"parts":{"type":"array","maxItems":20,"items":{"type":"object","properties":{"targetedEdits":{"$ref":"#/components/schemas/ModelPartEditEligibility"}},"required":["targetedEdits"]}},"partPage":{"type":"object"},"changes":{"type":"object"},"verification":{"type":["object","null"]},"controls":{"type":"object"},"unknowns":{"type":"array","items":{"type":"string"}},"details":{"type":"object"},"supportedEdits":{"type":"object","properties":{"targetedEdit":{"$ref":"#/components/schemas/ModelTargetedEditContext"}},"required":["targetedEdit"]},"summaryTruncated":{"type":"boolean"},"executionAvailability":{"$ref":"#/components/schemas/AccountFeatureAvailability"}},"additionalProperties":false,"required":["schemaVersion","visibility","projectId","selectedVersionId","currentVersionId","acceptedVersionId","reviewRevision","startsCompute","brief","corrections","openCounts","references","source","parts","partPage","changes","verification","controls","unknowns","details","supportedEdits","summaryTruncated"]},"ModelPartEditEligibility":{"type":"object","additionalProperties":false,"properties":{"transform":{"$ref":"#/components/schemas/ModelEditEligibility"},"material_assignment":{"type":"object","additionalProperties":false,"properties":{"status":{"enum":["eligible","unsupported","unknown"]},"reason":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string"},"message":{"type":"string"},"fallback":{"enum":["model_create","inspect_source"]}},"required":["code","message","fallback"]},{"type":"null"}]},"targetSlots":{"type":"array","maxItems":32,"items":{"type":"integer","minimum":0,"maximum":31}}},"required":["status","reason","targetSlots"]}},"required":["transform","material_assignment"]},"ModelEditEligibility":{"type":"object","additionalProperties":false,"properties":{"status":{"enum":["eligible","unsupported","unknown"]},"reason":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string"},"message":{"type":"string"},"fallback":{"enum":["model_create","inspect_source"]}},"required":["code","message","fallback"]},{"type":"null"}]}},"required":["status","reason"]},"ModelTargetedEditContext":{"type":"object","additionalProperties":false,"properties":{"tool":{"const":"model_edit"},"baseVersionId":{"type":["string","null"]},"coordinateBasis":{"const":"source_z_up"},"unit":{"const":"meters"},"available":{"type":"boolean"},"requiredScopes":{"const":["project:write","job:submit","artifact:source"]},"scene":{"$ref":"#/components/schemas/ModelEditEligibility"},"selection":{"type":"object","additionalProperties":false,"properties":{"currentBase":{"type":"boolean"},"authorized":{"type":"boolean"}},"required":["currentBase","authorized"]},"eligiblePartCount":{"type":"object","additionalProperties":false,"properties":{"transform":{"type":"integer","minimum":0},"material_assignment":{"type":"integer","minimum":0}},"required":["transform","material_assignment"]},"unavailableReason":{"type":["string","null"]},"remainingChecks":{"const":["request_arguments","current_head_and_permissions","source_runtime","result_preservation"]},"guaranteesPreservation":{"const":false},"guaranteesRequestedChange":{"const":false},"materialSources":{"type":"object","additionalProperties":false,"properties":{"items":{"type":"array","maxItems":8,"items":{"type":"object","additionalProperties":false,"properties":{"objectId":{"type":"string"},"slot":{"type":"integer","minimum":0,"maximum":31},"name":{"type":"string"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["objectId","slot","name","sha256"]}},"total":{"type":"integer","minimum":0},"truncated":{"type":"boolean"}},"required":["items","total","truncated"]}},"required":["tool","baseVersionId","coordinateBasis","unit","available","requiredScopes","scene","selection","eligiblePartCount","unavailableReason","remainingChecks","guaranteesPreservation","guaranteesRequestedChange","materialSources"]},"CatalogsSearchPage":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"scope":{"const":"private-catalogs"},"items":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/CatalogsSearchItem"}},"catalogsExamined":{"type":"integer","minimum":0,"maximum":3},"nextCursor":{"type":["string","null"]}},"required":["schemaVersion","scope","items","catalogsExamined","nextCursor"],"additionalProperties":false},"CatalogsSearchItem":{"oneOf":[{"$ref":"#/components/schemas/SavedCatalogsSearchItem"},{"$ref":"#/components/schemas/GeneratorCatalogsSearchItem"}]},"SavedCatalogsSearchItem":{"type":"object","properties":{"key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"label":{"type":"string","minLength":1,"maxLength":80},"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"identity":{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"assetId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["projectId","versionId","assetId","sha256"],"additionalProperties":false},"capabilities":{"$ref":"#/components/schemas/DiscoveryFindings"},"recipe":{"type":"object","properties":{"pin":{"$ref":"#/components/schemas/RecipePin"},"parameters":{"type":"array","maxItems":8,"items":{"$ref":"#/components/schemas/RecipeParameterDefinition"}},"values":{"$ref":"#/components/schemas/RecipeParameters"}},"required":["pin","parameters","values"],"additionalProperties":false},"compatibility":{"type":"object","properties":{"official":{"const":"not-established"},"fit":{"const":"not-evaluated"}},"required":["official","fit"],"additionalProperties":false},"matchReason":{"type":"string","maxLength":240},"versionPath":{"type":"string","pattern":"^/studio\\?workspace=[A-Za-z0-9_-]+&project=[A-Za-z0-9_-]+&version=[A-Za-z0-9_-]+$"},"referenceMatches":{"$ref":"#/components/schemas/CatalogReferenceMatches"},"use":{"type":"object","properties":{"label":{"enum":["Use saved component","Use recipe"]},"tool":{"const":"recipe_get"},"arguments":{"type":"object","properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["projectId","versionId"],"additionalProperties":false}},"required":["label","tool","arguments"],"additionalProperties":false},"catalog":{"type":"object","properties":{"catalogId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string"},"revision":{"type":"integer","minimum":0}},"required":["catalogId","title","revision"],"additionalProperties":false},"component":{"allOf":[{"$ref":"#/components/schemas/Shared_46"},{"properties":{"source":{"properties":{"kind":{"const":"saved"}}}}}]},"catalogEntryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}:[A-Za-z0-9_-]{1,128}:[a-f0-9]{64}$","maxLength":322},"componentUse":{"type":"object","additionalProperties":false,"required":["label","tool","arguments","inspect"],"properties":{"label":{"const":"Use saved component"},"tool":{"const":"model_create"},"arguments":{"type":"object","additionalProperties":false,"required":["components"],"properties":{"components":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","additionalProperties":false,"required":["ref","as"],"properties":{"ref":{"type":"object","additionalProperties":false,"required":["catalogEntryId"],"properties":{"catalogEntryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}:[A-Za-z0-9_-]{1,128}:[a-f0-9]{64}$","maxLength":322}}},"as":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,47}$"}}}}}},"inspect":{"type":"object","additionalProperties":false,"required":["tool","arguments"],"properties":{"tool":{"const":"scene_inspect"},"arguments":{"type":"object","additionalProperties":false,"required":["projectId","versionId","representation","maxObjects"],"properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"representation":{"const":"source"},"maxObjects":{"const":20}}}}}},"description":"Argument-ready candidate descriptor only: inspect exact saved design and dimensions, then explicitly merge components into model_create. Actual import eligibility and current dependencies are revalidated at submission. No import or fit guarantee."}},"required":["key","label","projectId","versionId","tags","identity","capabilities","compatibility","matchReason","versionPath","catalog"],"additionalProperties":false},"GeneratorCatalogsSearchItem":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"label":{"type":"string","minLength":1,"maxLength":80},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"component":{"allOf":[{"$ref":"#/components/schemas/Shared_46"},{"properties":{"source":{"properties":{"kind":{"const":"generator"}}}}}]},"capabilities":{"$ref":"#/components/schemas/DiscoveryFindings"},"compatibility":{"type":"object","properties":{"official":{"const":"not-established"},"fit":{"const":"not-evaluated"}},"required":["official","fit"],"additionalProperties":false},"matchReason":{"type":"string","maxLength":240},"catalog":{"type":"object","properties":{"catalogId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string"},"revision":{"type":"integer","minimum":0}},"required":["catalogId","title","revision"],"additionalProperties":false},"catalogEntryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}:[A-Za-z0-9_-]{1,128}:[a-f0-9]{64}$","maxLength":322},"use":{"type":"object","additionalProperties":false,"required":["label","tool","arguments"],"properties":{"label":{"const":"Use kit component"},"tool":{"const":"model_create"},"arguments":{"type":"object","additionalProperties":false,"required":["components"],"properties":{"components":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"object","additionalProperties":false,"required":["ref","as"],"properties":{"ref":{"type":"object","additionalProperties":false,"required":["catalogEntryId"],"properties":{"catalogEntryId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}:[A-Za-z0-9_-]{1,128}:[a-f0-9]{64}$","maxLength":322}}},"as":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}}}}}}}},"required":["key","label","tags","component","capabilities","compatibility","matchReason","catalogEntryId","use","catalog"]},"ViewerRenderBatchResult":{"type":"object","additionalProperties":false,"required":["views"],"properties":{"views":{"type":"array","minItems":1,"maxItems":4,"items":{"type":"object","additionalProperties":false,"properties":{"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"modelArtifactId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"modelSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"imageSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"rendererSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"cached":{"type":"boolean"},"startsBlenderJob":{"const":false},"changesModel":{"const":false},"metadata":{"$ref":"#/components/schemas/ViewerRenderMetadata"},"mimeType":{"const":"image/png"},"imageBase64":{"type":"string","maxLength":12582912},"index":{"type":"integer","minimum":0,"maximum":3}},"required":["projectId","versionId","modelArtifactId","modelSha256","imageSha256","rendererSha256","cached","startsBlenderJob","changesModel","metadata","mimeType","imageBase64","index"]}}}},"ViewerRenderBatchRequest":{"type":"object","additionalProperties":false,"required":["views"],"properties":{"views":{"type":"array","minItems":1,"maxItems":4,"items":{"$ref":"#/components/schemas/ViewerRenderRequest"},"description":"All views must use the same resolution; omitted resolution is 1024."}}},"PosterRefreshStatus":{"type":"object","additionalProperties":false,"required":["versionId","state","posterArtifactId","message"],"properties":{"versionId":{"type":"string"},"operationId":{"type":"string"},"startedAt":{"type":"string","format":"date-time"},"deadlineAt":{"type":"string","format":"date-time"},"state":{"enum":["idle","pending","succeeded","failed","interrupted"]},"posterArtifactId":{"type":["string","null"]},"message":{"type":"string"}}},"PublicReference":{"$ref":"#/components/schemas/Shared_5"},"CatalogSharePreview":{"type":"object","additionalProperties":false,"properties":{"revision":{"type":"integer","minimum":0},"items":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/CatalogShowcaseItem"}},"omittedCount":{"type":"integer","minimum":0,"maximum":100},"sharing":{"anyOf":[{"$ref":"#/components/schemas/CatalogSharing"},{"type":"null"}]},"publish":{"type":"array","maxItems":100,"description":"Pins the share action makes available as fixed, view-only model pages: link-only for a link-only catalog, listed in Explore for a public catalog","items":{"$ref":"#/components/schemas/CatalogSharePublish"}}},"required":["revision","items","omittedCount","sharing","publish"]},"CatalogShowcaseItem":{"type":"object","additionalProperties":false,"properties":{"publicationId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string","maxLength":120},"description":{"type":"string","maxLength":500},"creatorCredit":{"type":"string","maxLength":80},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"hasPoster":{"type":"boolean"},"allowRemix":{"type":"boolean"},"allowSourceDownload":{"type":"boolean"},"hasClip":{"type":"boolean"}},"required":["publicationId","versionId","title","description","creatorCredit","tags","hasPoster","allowRemix","allowSourceDownload","hasClip"]},"CatalogSharePublish":{"type":"object","additionalProperties":false,"properties":{"key":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":120},"publicationId":{"description":"An existing link-only page of this exact version that will be reused; null creates a new one","anyOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},{"type":"null"}]},"current":{"allOf":[{"$ref":"#/components/schemas/CatalogShareDetails"}],"description":"What the page shows when sharing leaves its details as they are. A new page shows neither."},"withDetails":{"allOf":[{"$ref":"#/components/schemas/CatalogShareDetails"}],"description":"What the page shows when sharing includes model details. A description or sources already chosen for an existing page are kept."}},"required":["key","versionId","title","publicationId","current","withDetails"]},"CatalogShareDetails":{"type":"object","additionalProperties":false,"properties":{"description":{"type":"boolean"},"references":{"type":"integer","minimum":0,"maximum":8}},"required":["description","references"],"description":"What one model page shows besides the 3D model, title and credit: a description, and how many published references (sources & specs)"},"CatalogShowcasePage":{"type":"object","additionalProperties":false,"properties":{"items":{"type":"array","maxItems":24,"items":{"$ref":"#/components/schemas/CatalogShowcaseSummary"}},"nextCursor":{"type":["string","null"]}},"required":["items","nextCursor"]},"CatalogShowcaseSummary":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":"1.0"},"publicId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"creatorCredit":{"type":"string","minLength":1,"maxLength":80},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"visibility":{"enum":["unlisted","public"]},"updatedAt":{"type":"string","format":"date-time"},"itemCount":{"type":"integer","minimum":0,"maximum":100},"previews":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/CatalogShowcaseItem"}}},"required":["schemaVersion","publicId","title","description","creatorCredit","tags","visibility","updatedAt","itemCount","previews"]},"CatalogShowcase":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":"1.0"},"publicId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":500},"creatorCredit":{"type":"string","minLength":1,"maxLength":80},"tags":{"type":"array","maxItems":8,"uniqueItems":true,"items":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,23}$"}},"visibility":{"enum":["unlisted","public"]},"updatedAt":{"type":"string","format":"date-time"},"items":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/CatalogShowcaseItem"}}},"required":["schemaVersion","publicId","title","description","creatorCredit","tags","visibility","updatedAt","items"]},"Shared_226":{"type":"object","properties":{"schemaVersion":{"const":"1.0"},"components":{"type":"array","items":{"$ref":"#/components/schemas/Shared_45"},"maxItems":64},"evidence":{"type":"object","properties":{"provenance":{"const":"retained_creation_inputs"},"geometry":{"const":"not-verified"},"modification":{"const":"allowed-derived"},"authorization":{"const":"current-access-required"},"publicReuse":{"const":"not-granted"}},"required":["provenance","geometry","modification","authorization","publicReuse"],"additionalProperties":false},"projectId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"versionId":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}},"required":["schemaVersion","components","evidence","projectId","versionId"],"additionalProperties":false,"description":"Private bounded creation provenance, rechecked against current source access. It grants no public reuse or preservation assurance."}},"securitySchemes":{"UserBearer":{"type":"http","scheme":"bearer","description":"Verified Firebase or scoped OAuth credential; server resolves workspace membership."},"LeaseBearer":{"type":"http","scheme":"bearer","description":"Opaque short-lived private resource lease; exact Origin and fresh persisted authority required."},"TransferBearer":{"type":"http","scheme":"bearer","description":"Artifact-only capability from upload-transfers or artifact transfer. This is never the connector OAuth token."}}},"externalDocs":{"url":"https://blendstra.com/connect","description":"OAuth connection setup, permission and revocation guidance"}}