{
  "paths": {
    "/api/v1/capabilities": {
      "get": {
        "operationId": "listCapabilities",
        "summary": "지금 쓸 수 있는 기능 보기",
        "tags": [
          "지원 기능"
        ],
        "description": "현재 API 환경에서 사용할 수 있는 기능·모델·업로드 형식과 제작 한도를 조회합니다.",
        "x-required-scope": "projects:read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicCapabilityPage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works": {
      "get": {
        "operationId": "listProjects",
        "summary": "내 작품 목록 보기",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "접근할 수 있는 작품 목록을 조회합니다. state로 활성·보관 상태를 고르고 cursor와 limit으로 나누어 조회할 수 있습니다.",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "active",
                "archived"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicProjectPage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "post": {
        "operationId": "createProject",
        "summary": "새 작품 만들기",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "입력한 name으로 새 작품을 만듭니다. 반환된 작품 ID로 자료를 등록하고 제작을 진행할 수 있습니다.",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicProject"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}": {
      "get": {
        "operationId": "getProject",
        "summary": "작품 정보 보기",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "작품의 이름·상태·현재 revision을 조회합니다. 작품을 수정하거나 제작을 요청하기 전에 최신 버전을 확인할 때 사용합니다.",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicProject"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "patch": {
        "operationId": "updateProject",
        "summary": "작품 정보 수정",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "작품 이름을 바꾸거나 상태를 active·archived로 변경합니다. If-Match에 최신 응답의 ETag를 넣어 주세요.",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "description": "최신 응답의 ETag를 따옴표까지 포함해 입력하세요.",
            "schema": {
              "type": "string",
              "pattern": "^\"[1-9][0-9]*\"$",
              "example": "\"1\""
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ProjectPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicProject"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/resources": {
      "get": {
        "operationId": "listResources",
        "summary": "올린 자료 목록 보기",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "작품에 등록된 대본·캐릭터·장면·소품·에피소드·샷 자료를 조회합니다. kind로 자료 종류를 선택할 수 있습니다.",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "kind",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "script",
                "character",
                "scene",
                "prop",
                "episode",
                "shot"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicResourcePage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "post": {
        "operationId": "createResource",
        "summary": "대본·이미지 같은 자료 올리기",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "kind와 data로 대본 본문이나 샷 정보 같은 제작 자료를 작품에 등록합니다. 파일 자체를 전송하려면 /uploads를 사용하세요.",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicResource"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/resources/{resource_id}": {
      "get": {
        "operationId": "getResource",
        "summary": "자료 하나 보기",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "작품 안에서 resource_id로 지정한 자료 하나의 종류·내용·revision을 조회합니다.",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resource_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicResource"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "patch": {
        "operationId": "updateResource",
        "summary": "자료 수정하기",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "자료의 kind와 data를 수정합니다. 다른 수정과 충돌하지 않도록 해당 자료의 최신 ETag를 If-Match로 전달하세요.",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "resource_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "description": "최신 응답의 ETag를 따옴표까지 포함해 입력하세요.",
            "schema": {
              "type": "string",
              "pattern": "^\"[1-9][0-9]*\"$",
              "example": "\"1\""
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicResource"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/uploads": {
      "post": {
        "operationId": "createUpload",
        "summary": "파일 올릴 주소 받기",
        "tags": [
          "업로드"
        ],
        "description": "파일 정보를 등록하고 upload_url을 받습니다. 이 주소로 파일 내용을 PUT한 뒤 업로드 완료 API를 호출하세요. TXT·Markdown·DOCX·PNG·JPEG·WebP·AVIF·WAV·ZIP을 지원합니다. 파일별 바이트 한도는 UI와 같은 설정을 사용하며 GET /capabilities의 upload_limits에서 확인합니다. 대본은 최대 5,000,000자입니다. 파일명에 경로 구분자를 넣을 수 없습니다. WAV는 PCM 또는 IEEE float 형식이어야 합니다.",
        "x-required-scope": "assets:write",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UploadInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicUploadTicket"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/uploads/{upload_id}/complete": {
      "post": {
        "operationId": "completeUpload",
        "summary": "파일 다 올렸다고 알리기",
        "tags": [
          "업로드"
        ],
        "description": "전송된 파일이 등록한 파일 정보와 맞는지 검증하고, 제작에 사용할 자산 정보를 반환합니다.",
        "x-required-scope": "assets:write",
        "parameters": [
          {
            "name": "upload_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicAsset"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/assets/{asset_id}": {
      "get": {
        "operationId": "getAsset",
        "summary": "결과물 정보와 내려받기 링크 보기",
        "tags": [
          "자산·결과"
        ],
        "description": "자산의 파일 정보와 다운로드 가능한 경우 서명된 download_url을 조회합니다. 반환된 주소의 유효 시간 안에 파일을 받으세요.",
        "x-required-scope": "assets:read",
        "parameters": [
          {
            "name": "asset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicAsset"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/plans": {
      "post": {
        "operationId": "createPlan",
        "deprecated": true,
        "summary": "제작 계획과 예상 크레딧 확인",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "실제 제작을 시작하지 않고, 무엇을 만들지와 예상 크레딧만 먼저 확인합니다.",
        "x-required-scope": "runs:write",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicPlan"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/runs": {
      "post": {
        "operationId": "createRun",
        "deprecated": true,
        "summary": "제작 시작하기",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "미리 만든 plan_id의 제작 계획을 실행하고 실행 ID를 반환합니다. getRun으로 진행 상태와 결과를 확인하세요.",
        "x-required-scope": "runs:write",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicRun"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/runs": {
      "get": {
        "operationId": "listRuns",
        "summary": "제작 목록 보기",
        "tags": [
          "제작 실행"
        ],
        "description": "제작 실행 목록을 조회합니다. 작품·실행 상태·client_reference·기간으로 필요한 실행을 찾을 수 있습니다.",
        "x-required-scope": "runs:read",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "project_id",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "state",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "queued",
                "running",
                "awaiting_review",
                "stopping",
                "paused",
                "needs_attention",
                "partially_succeeded",
                "succeeded",
                "failed",
                "cancelled"
              ]
            }
          },
          {
            "name": "client_reference",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicRunPage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/runs/{run_id}": {
      "get": {
        "operationId": "getRun",
        "summary": "제작 진행 상태 보기",
        "tags": [
          "제작 실행"
        ],
        "description": "제작 실행의 현재 상태·버전·준비된 결과를 조회합니다. 승인·중지 같은 결정을 보낼 때 이 버전을 사용하세요.",
        "x-required-scope": "runs:read",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicRun"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/runs/{run_id}/steps": {
      "get": {
        "operationId": "listRunSteps",
        "summary": "단계별 진행 상황 보기",
        "tags": [
          "제작 실행"
        ],
        "description": "제작 실행의 개별 단계와 상태를 조회합니다. 어느 단계가 대기·진행·완료 상태인지 확인할 수 있습니다.",
        "x-required-scope": "runs:read",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStepPage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/runs/{run_id}/events": {
      "get": {
        "operationId": "listRunEvents",
        "summary": "제작 중 남은 기록 보기",
        "tags": [
          "제작 실행"
        ],
        "description": "상태 변경·검토 요청 등 제작 실행 중 발생한 이벤트를 조회합니다. 제작이 어떤 과정을 거쳤는지 확인할 때 사용합니다.",
        "x-required-scope": "runs:read",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicRunEventPage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/runs/{run_id}/decisions": {
      "post": {
        "operationId": "decideRun",
        "summary": "계속할지 승인하거나 멈추기",
        "tags": [
          "제작 실행"
        ],
        "description": "제작 실행을 승인·중지·재개하거나 남은 단계를 취소하고, 영상 결과 조회를 재개합니다. action으로 동작을 선택하고 최신 실행 버전을 expected_version으로 전달하세요. retry_result는 저장된 영상 작업의 결과 조회만 재개합니다. 최신 expected_version과 step_id를 보내세요. 기존 작업과 크레딧 예약을 유지하며 새 영상을 생성하지 않습니다. 접수 후 24시간 이내의 재조회 가능한 영상만 지원합니다. 결과·사용량이 불명확한 다른 작업은 운영자 확인이 필요합니다.",
        "x-required-scope": "runs:write",
        "parameters": [
          {
            "name": "run_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DecisionInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicRun"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/jobs": {
      "post": {
        "operationId": "createJob",
        "deprecated": true,
        "summary": "기능 하나만 바로 실행하기",
        "tags": [
          "워크플로 기능"
        ],
        "description": "전체 제작을 돌리지 않고 기능 하나만 골라 바로 실행합니다. analyze_script는 대본을 읽어 샷을 만들고, generate_image는 캐릭터·장면·소품·샷 이미지를 만듭니다. generate_video는 이미지를 고른 샷의 영상을 만들고, assemble_video는 샷 영상이 모두 준비된 에피소드를 하나로 잇습니다. 요청에는 항상 작품의 최신 revision을 넣어 주세요. Live로 보내면 크레딧을 먼저 잡아 둡니다.",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/jobs/{job_id}": {
      "get": {
        "operationId": "getJob",
        "summary": "실행한 작업의 상태와 결과 보기",
        "tags": [
          "워크플로 기능"
        ],
        "description": "접수한 작업의 현재 상태와 결과 자산 ID를 조회합니다. 완료되면 getAsset으로 결과 파일을 받으세요.",
        "x-required-scope": "jobs:read",
        "parameters": [
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/requests": {
      "get": {
        "operationId": "listRequests",
        "summary": "보낸 요청 기록 목록 보기",
        "tags": [
          "요청 로그"
        ],
        "description": "API 요청의 HTTP 상태와 처리 시간 등 호출 기록을 조회합니다. 작품·기간으로 범위를 좁혀 호출 내역을 확인할 수 있습니다.",
        "x-required-scope": "requests:read",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          },
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "project_id",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "run_id",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "job_id",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "key_id",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "status_code",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 100,
              "maximum": 599
            }
          },
          {
            "name": "method",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "GET",
                "POST",
                "PATCH",
                "PUT"
              ]
            }
          },
          {
            "name": "route_template",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 300
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicRequestLogPage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/requests/{request_id}": {
      "get": {
        "operationId": "getRequest",
        "summary": "보낸 요청 기록 하나 보기",
        "tags": [
          "요청 로그"
        ],
        "description": "request_id로 API 호출 하나의 HTTP 상태·처리 시간·연결된 실행 또는 작업을 조회합니다.",
        "x-required-scope": "requests:read",
        "parameters": [
          {
            "name": "request_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicRequestLog"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/usage": {
      "get": {
        "operationId": "getUsage",
        "summary": "크레딧 사용량 보기",
        "tags": [
          "사용량"
        ],
        "description": "조회 기간의 사용량 합계를 확인합니다. 예약된 금액과 정산된 금액을 함께 조회할 수 있습니다.",
        "x-required-scope": "usage:read",
        "parameters": [],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicUsage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/webhook-endpoints": {
      "get": {
        "operationId": "listWebhookEndpoints",
        "summary": "Webhook 알림 주소 목록 보기",
        "tags": [
          "Webhook"
        ],
        "description": "등록된 Webhook 수신 주소와 구독 이벤트·활성 상태를 조회합니다.",
        "x-required-scope": "webhooks:read",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicWebhookEndpointPage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "post": {
        "operationId": "createWebhookEndpoint",
        "summary": "Webhook 알림 주소 등록",
        "tags": [
          "Webhook"
        ],
        "description": "지정한 작품에서 선택한 제작 이벤트가 발생하면 알림을 받을 Webhook 주소를 등록합니다.",
        "x-required-scope": "webhooks:write",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookCreate"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicWebhookIssued"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/webhook-endpoints/{endpoint_id}": {
      "patch": {
        "operationId": "updateWebhookEndpoint",
        "summary": "Webhook 알림 주소 수정",
        "tags": [
          "Webhook"
        ],
        "description": "Webhook의 알림 수신을 켜거나 끄고, 수신할 이벤트 종류를 변경합니다.",
        "x-required-scope": "webhooks:write",
        "parameters": [
          {
            "name": "endpoint_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "If-Match",
            "in": "header",
            "required": true,
            "description": "최신 응답의 ETag를 따옴표까지 포함해 입력하세요.",
            "schema": {
              "type": "string",
              "pattern": "^\"[1-9][0-9]*\"$",
              "example": "\"1\""
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicWebhookEndpoint"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/webhook-deliveries": {
      "get": {
        "operationId": "listWebhookDeliveries",
        "summary": "Webhook 보낸 기록 보기",
        "tags": [
          "Webhook 전송"
        ],
        "description": "Webhook 전송 시도와 상태를 조회합니다. 알림이 정상 전달됐는지 확인할 때 사용합니다.",
        "x-required-scope": "webhooks:read",
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicWebhookDeliveryPage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/webhook-deliveries/{delivery_id}/redeliver": {
      "post": {
        "operationId": "redeliverWebhook",
        "summary": "Webhook 다시 보내기",
        "tags": [
          "Webhook 전송"
        ],
        "description": "delivery_id로 지정한 기존 Webhook 알림을 다시 전송하도록 요청합니다.",
        "x-required-scope": "webhooks:write",
        "parameters": [
          {
            "name": "delivery_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Empty"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicWebhookDelivery"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/uploads/{upload_id}/content": {
      "put": {
        "operationId": "uploadContent",
        "summary": "파일 내용 올리기",
        "tags": [
          "업로드"
        ],
        "description": "발급받은 업로드 주소에 파일 바이트를 application/octet-stream으로 전송합니다. 전송 성공 후 completeUpload를 호출하세요.",
        "x-required-scope": "assets:write",
        "parameters": [
          {
            "name": "upload_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicUploaded"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/workflow": {
      "get": {
        "operationId": "getStudioWorkflow",
        "summary": "스튜디오 제작 데이터 조회",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "작품의 대본·에피소드·캐릭터·씬·소품·그리드·스토리보드 장면·자산·테이크·컷 선택과 최신 revision을 한 번에 조회합니다.",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioWorkflow"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/workflow/commands": {
      "post": {
        "operationId": "executeStudioCommand",
        "deprecated": true,
        "summary": "스튜디오 제작 편집",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "대본·스토리보드 장면·캐릭터·씬·소품·그리드·테이크 선택 등 작품의 제작 정보를 편집합니다. operation으로 할 일을 고르고 해당 input과 최신 revision을 전달하세요.",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioCommand"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/script/analyses": {
      "post": {
        "operationId": "analyzeStudioScript",
        "summary": "스튜디오 대본 분석",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "작품 대본을 분석해 제작에 필요한 구조를 추출합니다. script_text를 보내면 대본을 갱신한 뒤 분석하고, 생략하면 저장된 대본을 사용합니다. 반환된 작업은 getJob으로 조회하세요.",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioAnalysis"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/cut/exports": {
      "post": {
        "operationId": "exportStudioCut",
        "deprecated": true,
        "summary": "스튜디오 컷 내보내기",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "선택한 장면 영상을 회차·장면 순서대로 합칩니다. selections로 테이크를 직접 지정하고 allow_partial로 영상이 없는 장면을 건너뛸지 정합니다. getJob에서 완료와 결과를 확인하세요.",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioCutExport"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/storyboard/videos": {
      "post": {
        "operationId": "generateStudioVideo",
        "deprecated": true,
        "summary": "스토리보드 장면 영상 생성",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "scene_id로 지정한 장면의 영상을 선택한 모델·길이·해상도로 생성합니다. anchor_asset_id로 시작 이미지를 지정할 수 있습니다. 반환된 작업은 getJob으로 조회하세요.",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioVideo"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/designs/images": {
      "post": {
        "operationId": "generateStudioImage",
        "deprecated": true,
        "summary": "캐릭터·씬·소품·그리드 이미지 생성",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "design_id로 지정한 캐릭터·씬·소품·그리드 항목에 이미지 1~4장을 생성합니다. 프롬프트·참조 이미지를 지정하고 기본 이미지 또는 변형 슬롯을 선택할 수 있습니다. getJob에서 결과를 확인하세요.",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioImage"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/script/builds": {
      "post": {
        "operationId": "buildStudioScript",
        "summary": "작품 빌드",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "UI의 ‘작품 빌드’와 같은 기능입니다. 검증된 script_asset_ids와 revision으로 업로드한 대본을 읽어 작품 개요·에피소드·씬·캐릭터·소품·스토리보드를 구성합니다. 대본 업로드만으로 실행되지 않으며 별도로 요청해야 합니다. full_rebuild는 기존 구성을 교체하므로 직접 편집한 내용이 덮어써질 수 있습니다. 이미지와 영상은 별도로 생성합니다. UI와 같은 가격표로 AI가 반환한 실제 입력·출력 토큰을 정산합니다. 요청별 크레딧 한도는 지정하지 않습니다. GET /jobs/{job_id} → output_asset_ids.",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioBuild"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/library": {
      "get": {
        "operationId": "listStudioLibrary",
        "summary": "공용 라이브러리 자료 조회",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "작품으로 가져올 수 있는 자료를 조회합니다. scope=personal은 본인 개인 자료실, 기본값인 scope=studio는 제작사 공용 자료실을 조회합니다.",
        "x-required-scope": "assets:read",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "cursor",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "schema": {
              "type": "string",
              "enum": [
                "studio",
                "personal"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioLibrary"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/imports": {
      "post": {
        "operationId": "importStudioAsset",
        "summary": "자료를 작품에 가져오기",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "asset_id로 지정한 개인·공용 자료를 작품 소유 사본으로 복사하고 사본 정보를 반환합니다. 이후 원본이 수정되거나 삭제돼도 사본은 유지됩니다.",
        "x-required-scope": "assets:write",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioImport"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicAsset"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{project_id}/script/drafts": {
      "post": {
        "operationId": "draftStudioScript",
        "summary": "대본 초안 생성",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "instructions, 선택적인 source_text, revision, max_output_tokens를 전달합니다. 기존 대본을 덮어쓰지 않고 새 대본 자료로 저장합니다. UI와 같은 가격표로 AI가 반환한 실제 입력·출력 토큰을 정산합니다. 요청별 크레딧 한도는 지정하지 않습니다. GET /jobs/{job_id} → output_asset_ids.",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "project_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StudioDraft"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/jobs/{job_id}/build": {
      "get": {
        "operationId": "getStudioBuildProgress",
        "summary": "작품 빌드 진행·자료 조회",
        "tags": [
          "워크플로 기능"
        ],
        "description": "작품 빌드 작업의 현재 단계·진행 메시지·원문 자료와 처리용으로 준비된 텍스트를 조회합니다.",
        "x-required-scope": "jobs:read",
        "parameters": [
          {
            "name": "job_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioBuildProgress"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/characters": {
      "get": {
        "operationId": "listCharacters",
        "summary": "캐릭터 · 조회 (list)",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "캐릭터 · 조회 (list). GET /api/v1/works/{work_id}/characters. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicReferencePage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "post": {
        "operationId": "createCharacter",
        "summary": "캐릭터 · 등록",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "캐릭터 · 등록. POST /api/v1/works/{work_id}/characters. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/createCharacterInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/characters/{reference_id}": {
      "get": {
        "operationId": "getCharacter",
        "summary": "캐릭터 · 조회",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "캐릭터 · 조회. GET /api/v1/works/{work_id}/characters/{reference_id}. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicReference"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "patch": {
        "operationId": "updateCharacter",
        "summary": "캐릭터 · 수정",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "캐릭터 · 수정. PATCH /api/v1/works/{work_id}/characters/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/updateCharacterInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "delete": {
        "operationId": "deleteCharacter",
        "summary": "캐릭터 · 삭제",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "캐릭터 · 삭제. DELETE /api/v1/works/{work_id}/characters/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/deleteCharacterInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/characters/{reference_id}/primary-image": {
      "put": {
        "operationId": "setCharacterImage",
        "summary": "캐릭터 · 참조 이미지 설정",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "캐릭터 · 참조 이미지 설정. PUT /api/v1/works/{work_id}/characters/{reference_id}/primary-image. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/setCharacterImageInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/characters/{reference_id}/image-generations": {
      "post": {
        "operationId": "generateCharacterImage",
        "summary": "캐릭터 · 참조 이미지 생성",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "캐릭터 · 참조 이미지 생성. POST /api/v1/works/{work_id}/characters/{reference_id}/image-generations. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/generateCharacterImageInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/scenes/{scene_id}/references/characters/{reference_id}": {
      "put": {
        "operationId": "attachSceneCharacter",
        "summary": "캐릭터 · 씬에 연결",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "캐릭터 · 씬에 연결. PUT /api/v1/works/{work_id}/scenes/{scene_id}/references/characters/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/attachSceneCharacterInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "delete": {
        "operationId": "detachSceneCharacter",
        "summary": "캐릭터 · 씬에서 연결 해제",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "캐릭터 · 씬에서 연결 해제. DELETE /api/v1/works/{work_id}/scenes/{scene_id}/references/characters/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/detachSceneCharacterInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/background-scenes": {
      "get": {
        "operationId": "listBackgroundScenes",
        "summary": "배경 씬 · 조회 (list)",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "배경 씬 · 조회 (list). GET /api/v1/works/{work_id}/background-scenes. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicReferencePage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "post": {
        "operationId": "createBackgroundScene",
        "summary": "배경 씬 · 등록",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "배경 씬 · 등록. POST /api/v1/works/{work_id}/background-scenes. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/createBackgroundSceneInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/background-scenes/{reference_id}": {
      "get": {
        "operationId": "getBackgroundScene",
        "summary": "배경 씬 · 조회",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "배경 씬 · 조회. GET /api/v1/works/{work_id}/background-scenes/{reference_id}. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicReference"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "patch": {
        "operationId": "updateBackgroundScene",
        "summary": "배경 씬 · 수정",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "배경 씬 · 수정. PATCH /api/v1/works/{work_id}/background-scenes/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/updateBackgroundSceneInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "delete": {
        "operationId": "deleteBackgroundScene",
        "summary": "배경 씬 · 삭제",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "배경 씬 · 삭제. DELETE /api/v1/works/{work_id}/background-scenes/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/deleteBackgroundSceneInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/background-scenes/{reference_id}/primary-image": {
      "put": {
        "operationId": "setBackgroundSceneImage",
        "summary": "배경 씬 · 참조 이미지 설정",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "배경 씬 · 참조 이미지 설정. PUT /api/v1/works/{work_id}/background-scenes/{reference_id}/primary-image. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/setBackgroundSceneImageInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/background-scenes/{reference_id}/image-generations": {
      "post": {
        "operationId": "generateBackgroundSceneImage",
        "summary": "배경 씬 · 참조 이미지 생성",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "배경 씬 · 참조 이미지 생성. POST /api/v1/works/{work_id}/background-scenes/{reference_id}/image-generations. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/generateBackgroundSceneImageInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/scenes/{scene_id}/references/background-scenes/{reference_id}": {
      "put": {
        "operationId": "attachSceneBackgroundScene",
        "summary": "배경 씬 · 씬에 연결",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "배경 씬 · 씬에 연결. PUT /api/v1/works/{work_id}/scenes/{scene_id}/references/background-scenes/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/attachSceneBackgroundSceneInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "delete": {
        "operationId": "detachSceneBackgroundScene",
        "summary": "배경 씬 · 씬에서 연결 해제",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "배경 씬 · 씬에서 연결 해제. DELETE /api/v1/works/{work_id}/scenes/{scene_id}/references/background-scenes/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/detachSceneBackgroundSceneInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/props": {
      "get": {
        "operationId": "listProps",
        "summary": "소품 · 조회 (list)",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "소품 · 조회 (list). GET /api/v1/works/{work_id}/props. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicReferencePage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "post": {
        "operationId": "createProp",
        "summary": "소품 · 등록",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "소품 · 등록. POST /api/v1/works/{work_id}/props. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/createPropInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/props/{reference_id}": {
      "get": {
        "operationId": "getProp",
        "summary": "소품 · 조회",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "소품 · 조회. GET /api/v1/works/{work_id}/props/{reference_id}. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicReference"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "patch": {
        "operationId": "updateProp",
        "summary": "소품 · 수정",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "소품 · 수정. PATCH /api/v1/works/{work_id}/props/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/updatePropInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "delete": {
        "operationId": "deleteProp",
        "summary": "소품 · 삭제",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "소품 · 삭제. DELETE /api/v1/works/{work_id}/props/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/deletePropInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/props/{reference_id}/primary-image": {
      "put": {
        "operationId": "setPropImage",
        "summary": "소품 · 참조 이미지 설정",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "소품 · 참조 이미지 설정. PUT /api/v1/works/{work_id}/props/{reference_id}/primary-image. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/setPropImageInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/props/{reference_id}/image-generations": {
      "post": {
        "operationId": "generatePropImage",
        "summary": "소품 · 참조 이미지 생성",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "소품 · 참조 이미지 생성. POST /api/v1/works/{work_id}/props/{reference_id}/image-generations. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/generatePropImageInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/scenes/{scene_id}/references/props/{reference_id}": {
      "put": {
        "operationId": "attachSceneProp",
        "summary": "소품 · 씬에 연결",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "소품 · 씬에 연결. PUT /api/v1/works/{work_id}/scenes/{scene_id}/references/props/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/attachScenePropInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "delete": {
        "operationId": "detachSceneProp",
        "summary": "소품 · 씬에서 연결 해제",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "소품 · 씬에서 연결 해제. DELETE /api/v1/works/{work_id}/scenes/{scene_id}/references/props/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/detachScenePropInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/grids": {
      "get": {
        "operationId": "listGrids",
        "summary": "그리드 · 조회 (list)",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "그리드 · 조회 (list). GET /api/v1/works/{work_id}/grids. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicReferencePage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "post": {
        "operationId": "createGrid",
        "summary": "그리드 · 등록",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "그리드 · 등록. POST /api/v1/works/{work_id}/grids. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/createGridInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/grids/{reference_id}": {
      "get": {
        "operationId": "getGrid",
        "summary": "그리드 · 조회",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "그리드 · 조회. GET /api/v1/works/{work_id}/grids/{reference_id}. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicReference"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "patch": {
        "operationId": "updateGrid",
        "summary": "그리드 · 수정",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "그리드 · 수정. PATCH /api/v1/works/{work_id}/grids/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/updateGridInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "delete": {
        "operationId": "deleteGrid",
        "summary": "그리드 · 삭제",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "그리드 · 삭제. DELETE /api/v1/works/{work_id}/grids/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/deleteGridInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/grids/{reference_id}/primary-image": {
      "put": {
        "operationId": "setGridImage",
        "summary": "그리드 · 참조 이미지 설정",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "그리드 · 참조 이미지 설정. PUT /api/v1/works/{work_id}/grids/{reference_id}/primary-image. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/setGridImageInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/grids/{reference_id}/image-generations": {
      "post": {
        "operationId": "generateGridImage",
        "summary": "그리드 · 참조 이미지 생성",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "그리드 · 참조 이미지 생성. POST /api/v1/works/{work_id}/grids/{reference_id}/image-generations. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/generateGridImageInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/scenes/{scene_id}/references/grids/{reference_id}": {
      "put": {
        "operationId": "attachSceneGrid",
        "summary": "그리드 · 씬에 연결",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "그리드 · 씬에 연결. PUT /api/v1/works/{work_id}/scenes/{scene_id}/references/grids/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/attachSceneGridInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "delete": {
        "operationId": "detachSceneGrid",
        "summary": "그리드 · 씬에서 연결 해제",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "그리드 · 씬에서 연결 해제. DELETE /api/v1/works/{work_id}/scenes/{scene_id}/references/grids/{reference_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "reference_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/detachSceneGridInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/episodes": {
      "get": {
        "operationId": "listEpisodes",
        "summary": "에피소드 · 조회 (list)",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "에피소드 · 조회 (list). GET /api/v1/works/{work_id}/episodes. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicEpisodePage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "post": {
        "operationId": "createEpisode",
        "summary": "에피소드 생성",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "에피소드 생성. POST /api/v1/works/{work_id}/episodes. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/createEpisodeInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/episodes/{episode_id}": {
      "get": {
        "operationId": "getEpisode",
        "summary": "에피소드 · 조회",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "에피소드 · 조회. GET /api/v1/works/{work_id}/episodes/{episode_id}. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "episode_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicEpisode"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "patch": {
        "operationId": "updateEpisode",
        "summary": "에피소드 · 수정",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "에피소드 · 수정. PATCH /api/v1/works/{work_id}/episodes/{episode_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "episode_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/updateEpisodeInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "delete": {
        "operationId": "deleteEpisode",
        "summary": "에피소드 · 삭제",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "에피소드 · 삭제. DELETE /api/v1/works/{work_id}/episodes/{episode_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "episode_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/deleteEpisodeInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/episodes/{episode_id}/scenes": {
      "get": {
        "operationId": "listScenes",
        "summary": "씬 · 조회 (list)",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "씬 · 조회 (list). GET /api/v1/works/{work_id}/episodes/{episode_id}/scenes. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "episode_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicScenePage"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "post": {
        "operationId": "createScene",
        "summary": "씬 생성",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "씬 생성. POST /api/v1/works/{work_id}/episodes/{episode_id}/scenes. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "episode_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/createSceneInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/episodes/{episode_id}/scenes/{scene_id}": {
      "get": {
        "operationId": "getScene",
        "summary": "씬 · 조회",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "씬 · 조회. GET /api/v1/works/{work_id}/episodes/{episode_id}/scenes/{scene_id}. GET",
        "x-required-scope": "projects:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "episode_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicScene"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      },
      "patch": {
        "operationId": "updateScene",
        "summary": "씬 · 수정",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "씬 · 수정. PATCH /api/v1/works/{work_id}/episodes/{episode_id}/scenes/{scene_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "episode_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/updateSceneInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/archive-imports": {
      "post": {
        "operationId": "createArchiveImport",
        "summary": "ZIP 자료 가져오기",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "ZIP 자료 가져오기. POST /api/v1/works/{work_id}/archive-imports. 검증 완료된 ZIP asset_id와 최신 revision을 사용합니다. 원본은 유지되며 UI와 같은 이름의 자료를 갱신하는 가져오기 규칙을 적용합니다. 완료 후 imported, failed, asset_ids를 확인하세요. 가져오기 요청에는 jobs:create, assets:read, assets:write, projects:write가 필요합니다. Idempotency-Key; GET /api/v1/works/{work_id}/archive-imports/{import_id}",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/createArchiveImportInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicArchiveImport"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/archive-imports/{import_id}": {
      "get": {
        "operationId": "getArchiveImport",
        "summary": "ZIP 가져오기 진행 조회",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "ZIP 가져오기 진행 조회. GET /api/v1/works/{work_id}/archive-imports/{import_id}. 검증 완료된 ZIP asset_id와 최신 revision을 사용합니다. 원본은 유지되며 UI와 같은 이름의 자료를 갱신하는 가져오기 규칙을 적용합니다. 완료 후 imported, failed, asset_ids를 확인하세요. 가져오기 요청에는 jobs:create, assets:read, assets:write, projects:write가 필요합니다. jobs:read",
        "x-required-scope": "jobs:read",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "import_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicArchiveImport"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/uploads": {
      "post": {
        "operationId": "createWorkUploads",
        "summary": "작품 자료 묶음 업로드 준비",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "작품 자료 묶음 업로드 준비. POST /api/v1/works/{work_id}/uploads. Idempotency-Key + files (1–20) → PUT upload_url → POST /api/v1/uploads/{upload_id}/complete",
        "x-required-scope": "assets:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/createWorkUploadsInput"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicUploadBatch"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/scenes/{scene_id}": {
      "delete": {
        "operationId": "deleteScene",
        "summary": "씬 · 삭제",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "씬 · 삭제. DELETE /api/v1/works/{work_id}/scenes/{scene_id}. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/deleteSceneInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/episodes/{episode_id}/scene-order": {
      "put": {
        "operationId": "reorderScenes",
        "summary": "씬 순서 변경",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "씬 순서 변경. PUT /api/v1/works/{work_id}/episodes/{episode_id}/scene-order. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "episode_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/reorderScenesInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/script": {
      "put": {
        "operationId": "saveScript",
        "summary": "대본 저장",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "대본 저장. PUT /api/v1/works/{work_id}/script. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/saveScriptInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/scenes/{scene_id}/video-generations": {
      "post": {
        "operationId": "generateSceneVideo",
        "summary": "씬 영상 생성",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "씬 영상 생성. POST /api/v1/works/{work_id}/scenes/{scene_id}/video-generations. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/generateSceneVideoInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/scenes/{scene_id}/selected-take": {
      "put": {
        "operationId": "selectSceneTake",
        "summary": "최종 테이크 선택",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "최종 테이크 선택. PUT /api/v1/works/{work_id}/scenes/{scene_id}/selected-take. revision + Idempotency-Key",
        "x-required-scope": "projects:write",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "scene_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/selectSceneTakeInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicStudioMutation"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/works/{work_id}/exports": {
      "post": {
        "operationId": "exportWork",
        "summary": "최종본 생성",
        "tags": [
          "작품·제작 자료"
        ],
        "description": "최종본 생성. POST /api/v1/works/{work_id}/exports. revision + Idempotency-Key → GET /api/v1/jobs/{job_id}",
        "x-required-scope": "jobs:create",
        "parameters": [
          {
            "name": "work_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "재시도 시 같은 Idempotency-Key와 요청 본문을 사용하세요.",
            "schema": {
              "type": "string",
              "minLength": 16,
              "maxLength": 128,
              "pattern": "^[A-Za-z0-9._:-]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/exportWorkInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "성공",
            "headers": {
              "X-Request-Id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "ETag": {
                "description": "수정 가능한 자료의 버전입니다.",
                "schema": {
                  "type": "string"
                }
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "권장 상태 조회 간격(초)입니다."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "request_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "data": {
                      "$ref": "#/components/schemas/PublicJob"
                    }
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    },
    "/api/v1/openapi.json": {
      "get": {
        "operationId": "openapiDocument",
        "summary": "API 명세 내려받기",
        "description": "API 경로·요청 필드·응답 구조가 담긴 OpenAPI 명세를 내려받습니다.",
        "tags": [
          "명세서"
        ],
        "security": [],
        "responses": {
          "200": {
            "description": "OpenAPI 명세",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/downloads/{asset_id}": {
      "get": {
        "operationId": "downloadAsset",
        "summary": "완성된 파일 내려받기",
        "tags": [
          "자산·결과"
        ],
        "security": [],
        "description": "getAsset에서 받은 서명된 download_url 전체 주소로 파일을 내려받습니다. 링크의 유효 시간은 5분입니다.",
        "parameters": [
          {
            "name": "asset_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "expires",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "signature",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "파일 바이트",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "default": {
            "$ref": "#/components/responses/ApiError"
          }
        }
      }
    }
  },
  "openapi": "3.1.0",
  "info": {
    "title": "FECINE Open API",
    "version": "1.1.0",
    "description": "FECINE 제작 워크플로 API입니다. 로그인 없이 열람하고 FECINE API Key로 호출합니다. GET /capabilities에서 지원 기능을 확인하세요. Live는 크레딧을 사용하고 샌드박스는 테스트 결과를 반환합니다. POST 재시도 시 같은 Idempotency-Key를 사용하세요. 이 명세는 실제 요청·응답 계약에서 생성됩니다."
  },
  "servers": [
    {
      "url": "/",
      "description": "현재 FECINE 서버"
    }
  ],
  "security": [
    {
      "PartnerApiKey": []
    }
  ],
  "components": {
    "responses": {
      "ApiError": {
        "description": "2xx 응답은 요청이 잘 전달됐다는 뜻입니다. 201은 새로 만들어졌다는 뜻이고, 202는 접수는 됐지만 아직 만드는 중이라 결과가 나오지 않았다는 뜻입니다. 202를 받으면 작업 상태를 조회해 끝났는지 확인하세요.\n성공 응답에는 request_id와 data가 들어 있습니다. 파일 다운로드와 API 명세 응답만 예외입니다.\n실패하면 어떤 엔드포인트든 똑같은 모양의 error를 돌려줍니다. 코드에서 분기할 때는 error.code를 쓰고, message는 원인과 해결 방법을 사람이 읽으라고 넣은 문장입니다.\n다시 보내도 되는지는 retryable로 판단하세요. true일 때만 자동으로 재시도하고, retry_after_seconds나 Retry-After에 적힌 시간만큼 기다린 뒤 보냅니다. POST를 다시 보낼 때는 처음과 같은 Idempotency-Key와 같은 본문을 써야 중복 결제나 중복 생성이 생기지 않습니다.\n처음 보는 error.code가 오면 HTTP 상태와 retryable만 보고 처리하면 됩니다. 문의할 때는 request_id를 함께 알려 주세요. 작업이 접수된 뒤에 생긴 실패는 이 응답이 아니라 작업 상태와 결과에서 확인할 수 있습니다.",
        "headers": {
          "X-Request-Id": {
            "description": "Request identifier for support.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          "Retry-After": {
            "description": "Optional retry delay in seconds; check error.retryable.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            },
            "example": {
              "request_id": "11111111-1111-4111-8111-111111111111",
              "error": {
                "code": "INVALID_REQUEST",
                "message": "Invalid input. Check the required fields, types and values.",
                "retryable": false
              }
            }
          }
        },
        "x-error-codes": [
          {
            "code": "INVALID_REFERENCE",
            "status": "422",
            "description": "선택한 참조 이미지를 사용할 수 없습니다. 이 작품의 준비된 이미지를 다시 선택하세요."
          },
          {
            "code": "MODEL_UNAVAILABLE",
            "status": "422",
            "description": "선택한 모델을 사용할 수 없습니다. 모델 목록을 새로고침한 뒤 다시 선택해 주세요."
          },
          {
            "code": "MODEL_POLICY_REQUIRED",
            "status": "503",
            "description": "기본 모델 정책이 설정되지 않았습니다. 모델을 지정하거나 관리자에게 설정을 요청해 주세요."
          },
          {
            "code": "BUILD_REPLAY_CONFLICT",
            "status": "409",
            "description": "빌드 입력이 변경되었습니다. 저장된 작업을 확인하세요."
          },
          {
            "code": "INVALID_REQUEST",
            "status": "400,422",
            "description": "입력값이 잘못되었습니다. 필수 필드, 타입과 값을 확인하세요."
          },
          {
            "code": "INVALID_API_KEY",
            "status": "401",
            "description": "API 키 또는 다운로드 서명이 유효하지 않습니다. 키를 확인하거나 다운로드 URL을 새로 발급받으세요."
          },
          {
            "code": "INSUFFICIENT_SCOPE",
            "status": "403",
            "description": "권한이 부족합니다. 키의 scope와 작품 접근 권한을 확인하세요."
          },
          {
            "code": "PARTNER_BLOCKED",
            "status": "403",
            "description": "계정이 차단되었습니다. 지원팀에 문의하세요."
          },
          {
            "code": "PARTNER_PAUSED",
            "status": "403",
            "description": "계정이 일시 중지되었습니다. 관리자에게 재개를 요청하세요."
          },
          {
            "code": "RESOURCE_NOT_FOUND",
            "status": "404",
            "description": "리소스를 찾을 수 없습니다. ID와 접근 권한을 확인하세요."
          },
          {
            "code": "METHOD_NOT_ALLOWED",
            "status": "405",
            "description": "지원하지 않는 HTTP 메서드입니다. 명세의 메서드를 사용하세요."
          },
          {
            "code": "REQUEST_TIMEOUT",
            "status": "408",
            "description": "요청 본문 수신 시간이 초과되었습니다. 연결과 업로드 크기를 확인하세요."
          },
          {
            "code": "IDEMPOTENCY_KEY_REQUIRED",
            "status": "400",
            "description": "유효한 Idempotency-Key 헤더를 지정하세요."
          },
          {
            "code": "IDEMPOTENCY_CONFLICT",
            "status": "409",
            "description": "같은 Idempotency-Key에 다른 요청이 전달되었습니다. 원래 요청에만 같은 키를 사용하세요."
          },
          {
            "code": "IDEMPOTENCY_KEY_EXPIRED",
            "status": "409",
            "description": "멱등성 기록이 만료되었습니다. 새 작업을 시작하기 전에 기존 결과를 확인하세요."
          },
          {
            "code": "PRECONDITION_FAILED",
            "status": "412",
            "description": "최신 ETag를 따옴표와 함께 If-Match에 지정하세요."
          },
          {
            "code": "REVISION_CONFLICT",
            "status": "409",
            "description": "리소스가 변경되었습니다. 최신 버전을 조회한 뒤 수정하세요."
          },
          {
            "code": "RESOURCE_CONFLICT",
            "status": "409",
            "description": "기존 데이터와 충돌합니다. 현재 리소스를 확인하세요."
          },
          {
            "code": "INVALID_TRANSITION",
            "status": "409",
            "description": "현재 상태에서 실행할 수 없는 작업입니다. 최신 상태를 확인하세요."
          },
          {
            "code": "RUN_IN_PROGRESS",
            "status": "409",
            "description": "실행 중인 작업이 있습니다. 진행 상태를 확인하세요."
          },
          {
            "code": "JOB_RUNNING",
            "status": "409",
            "description": "작업이 실행 중입니다. 완료 후 수정하세요."
          },
          {
            "code": "PLAN_EXPIRED",
            "status": "409",
            "description": "계획이 만료되었습니다. 새 계획과 견적을 확인하세요."
          },
          {
            "code": "INSUFFICIENT_CREDITS",
            "status": "402",
            "description": "크레딧이 부족합니다. 잔액과 필요한 크레딧을 확인하세요."
          },
          {
            "code": "BUDGET_EXCEEDED",
            "status": "409,429",
            "description": "예산 한도를 초과했습니다. 사용량과 설정된 예산을 확인하세요."
          },
          {
            "code": "RATE_LIMITED",
            "status": "429",
            "description": "요청 빈도를 초과했습니다. retryable과 Retry-After를 확인하세요."
          },
          {
            "code": "CAPACITY_EXCEEDED",
            "status": "429",
            "description": "처리 한도를 초과했습니다. 작업량을 줄이거나 실행 중인 작업의 완료를 기다리세요."
          },
          {
            "code": "PAYLOAD_TOO_LARGE",
            "status": "413",
            "description": "요청 본문이 너무 큽니다. 명세의 크기 제한에 맞게 줄이세요."
          },
          {
            "code": "UNSUPPORTED_MEDIA_TYPE",
            "status": "415",
            "description": "지원하지 않는 형식 또는 인코딩입니다. 명세의 Content-Type을 사용하고 Content-Encoding을 제거하세요."
          },
          {
            "code": "UPLOAD_TOO_LARGE",
            "status": "422",
            "description": "업로드 콘텐츠가 처리 제한을 초과합니다. 파일 크기를 줄이세요."
          },
          {
            "code": "UPLOAD_NOT_VERIFIED",
            "status": "422",
            "description": "업로드가 미완료, 만료 또는 검증 실패 상태입니다. 업로드와 검증 단계를 확인하세요."
          },
          {
            "code": "ASSET_KIND_MISMATCH",
            "status": "422",
            "description": "에셋 종류가 작업과 맞지 않습니다. 호환되는 에셋을 선택하세요."
          },
          {
            "code": "SELECTED_IMAGE_REQUIRED",
            "status": "422",
            "description": "영상 생성 전에 유효한 이미지를 선택하세요."
          },
          {
            "code": "SELECTED_VIDEO_REQUIRED",
            "status": "422",
            "description": "합성할 샷에 유효한 영상을 선택하세요."
          },
          {
            "code": "REFERENCE_LIMIT_EXCEEDED",
            "status": "422",
            "description": "참조 에셋이 너무 많습니다. 모델 제한에 맞게 줄이세요."
          },
          {
            "code": "REFERENCE_IMAGE_REQUIRED",
            "status": "422",
            "description": "이 모델에는 참조 이미지가 필요합니다. 이미지를 추가하거나 텍스트로 이미지를 생성하는 모델을 선택하세요."
          },
          {
            "code": "INVALID_GENERATION_OPTIONS",
            "status": "422",
            "description": "생성 옵션이 유효하지 않습니다. 모델이 지원하는 옵션을 확인하세요."
          },
          {
            "code": "PROMPT_REQUIRED",
            "status": "422",
            "description": "생성 프롬프트를 입력하세요."
          },
          {
            "code": "SCRIPT_TEXT_REQUIRED",
            "status": "422",
            "description": "작업 시작 전에 대본 내용을 입력하세요."
          },
          {
            "code": "SCENES_REQUIRED",
            "status": "422",
            "description": "작업 시작 전에 씬을 생성하세요."
          },
          {
            "code": "VARIANT_NAME_REQUIRED",
            "status": "422",
            "description": "변형 이름을 입력하세요."
          },
          {
            "code": "EPISODE_ALREADY_STRUCTURED",
            "status": "409",
            "description": "에피소드에 이미 샷이 있습니다. 기존 구성을 확인하세요."
          },
          {
            "code": "ONE_SCRIPT_PER_PROJECT",
            "status": "409",
            "description": "작품는 대본 하나를 지원합니다. 기존 대본을 사용하세요."
          },
          {
            "code": "MULTIPLE_SCRIPTS_REQUIRE_REVIEW",
            "status": "409",
            "description": "여러 대본이 있어 진행 전 검토가 필요합니다."
          },
          {
            "code": "NATIVE_CONTENT_ALREADY_EXISTS",
            "status": "409",
            "description": "Studio 콘텐츠가 이미 있습니다. 기존 내용을 확인하세요."
          },
          {
            "code": "LIVE_PROJECT_REQUIRED",
            "status": "409",
            "description": "이 작업에는 라이브 작품가 필요합니다."
          },
          {
            "code": "STUDIO_MIGRATION_REQUIRED",
            "status": "409",
            "description": "작품의 Studio 전환이 필요합니다. 지원팀에 문의하세요."
          },
          {
            "code": "UNSUPPORTED_CAPABILITY",
            "status": "422",
            "description": "지원하지 않는 기능 또는 프로필입니다. GET /capabilities를 확인하세요."
          },
          {
            "code": "CAPABILITY_UNAVAILABLE",
            "status": "503",
            "description": "현재 기능을 사용할 수 없습니다. GET /capabilities를 확인하세요."
          },
          {
            "code": "API_NOT_ACCEPTING",
            "status": "503",
            "description": "새 요청 접수가 중지되었습니다. 서비스 상태를 확인하세요."
          },
          {
            "code": "DEPENDENCY_UNAVAILABLE",
            "status": "503",
            "description": "필수 서비스를 사용할 수 없습니다. 재시도 안내를 따르거나 지원팀에 문의하세요."
          },
          {
            "code": "PRICING_UNAVAILABLE",
            "status": "503",
            "description": "가격을 확인할 수 없습니다. 진행하려면 유효한 견적이 필요합니다."
          },
          {
            "code": "MEDIA_TOOLS_UNAVAILABLE",
            "status": "503",
            "description": "미디어 처리를 사용할 수 없습니다. 지원팀에 문의하세요."
          },
          {
            "code": "STORAGE_READ_FAILED",
            "status": "503",
            "description": "저장된 에셋을 읽지 못했습니다. request_id와 함께 지원팀에 문의하세요."
          },
          {
            "code": "STORAGE_WRITE_FAILED",
            "status": "503",
            "description": "에셋 저장에 실패했습니다. 재시도 전에 결과를 확인하세요."
          },
          {
            "code": "INTERNAL_ERROR",
            "status": "500",
            "description": "내부 오류입니다. 재시도 안내를 따르고 문의 시 request_id를 전달하세요."
          },
          {
            "code": "RESPONSE_CONTRACT_VIOLATION",
            "status": "500",
            "description": "서버 응답 검증에 실패했습니다. request_id와 함께 지원팀에 문의하세요."
          },
          {
            "code": "INVALID_EXECUTION_CONTEXT",
            "status": "500",
            "description": "실행 정보가 유효하지 않습니다. 지원팀에 문의하세요."
          },
          {
            "code": "RETRY_TRANSACTION",
            "status": "503",
            "description": "트랜잭션을 완료하지 못했습니다. 응답의 재시도 안내를 따르세요."
          },
          {
            "code": "CLAIM_LOST",
            "status": "409",
            "description": "작업 실행 담당이 변경되었습니다. 현재 작업 상태를 확인하세요."
          },
          {
            "code": "PROVIDER_TIMEOUT",
            "status": "504",
            "description": "생성 서비스 응답 시간이 초과되었습니다. 재요청 전에 기존 작업을 확인하세요."
          },
          {
            "code": "PROVIDER_TERMINAL_FAILURE",
            "status": "422",
            "description": "생성이 실패했습니다. 작업 결과와 입력을 확인하세요."
          },
          {
            "code": "PROVIDER_RESULT_UNAVAILABLE",
            "status": "502",
            "description": "생성 결과를 가져올 수 없습니다. 기존 작업과 복구 가능 여부를 확인하세요."
          },
          {
            "code": "INVALID_RESULT",
            "status": "422,503",
            "description": "결과 검증에 실패했습니다. 작업을 확인하거나 지원팀에 문의하세요."
          },
          {
            "code": "RESULT_TOO_LARGE",
            "status": "422",
            "description": "결과가 처리 제한을 초과합니다. 출력 규모를 줄이세요."
          },
          {
            "code": "EXPORT_TOO_LARGE",
            "status": "422",
            "description": "내보내기 크기가 제한을 초과합니다. 선택 범위를 줄이세요."
          },
          {
            "code": "RECOVERY_BACKOFF",
            "status": "409",
            "description": "기존 결과 조회의 재시도 대기 중입니다. 새로 생성하지 말고 잠시 후 다시 확인하세요."
          },
          {
            "code": "VIDEO_RECOVERY_REVIEW_REQUIRED",
            "status": "503",
            "description": "기존 영상 작업의 결과를 복구하거나 운영 점검해야 합니다. 새로 생성하지 마세요."
          },
          {
            "code": "RESULT_RECOVERY_REQUIRED",
            "status": "409,503",
            "description": "기존 결과 복구가 필요합니다. 재요청 전에 실행의 복구 옵션을 확인하세요."
          },
          {
            "code": "RESULT_NOT_RECOVERABLE",
            "status": "409",
            "description": "이 작업으로 결과를 복구할 수 없습니다. 실행을 확인하거나 지원팀에 문의하세요."
          },
          {
            "code": "RECOVERY_CAPACITY_EXCEEDED",
            "status": "409",
            "description": "복구 한도에 도달했습니다. 추가 시도 전에 지원팀에 문의하세요."
          },
          {
            "code": "USAGE_RECOVERY_REQUIRED",
            "status": "503",
            "description": "사용량 확인이 필요합니다. 생성을 반복 요청하지 말고 지원팀에 문의하세요."
          }
        ]
      }
    },
    "securitySchemes": {
      "PartnerApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "FECINE API Key",
        "description": "발급받은 fec_live_* 또는 fec_test_* FECINE 키를 입력하세요."
      }
    },
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string",
                "description": "Stable error identifier. See components.responses.ApiError.x-error-codes; handle unknown codes safely."
              },
              "message": {
                "type": "string",
                "description": "Human-readable cause and action. Use code, not message, for program logic."
              },
              "retryable": {
                "type": "boolean",
                "description": "Whether automatic retry is allowed. Do not infer this from the HTTP status alone."
              },
              "retry_after_seconds": {
                "type": "integer",
                "minimum": 1,
                "description": "Wait at least this many seconds before an allowed retry."
              }
            },
            "required": [
              "code",
              "message",
              "retryable"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "request_id",
          "error"
        ],
        "additionalProperties": false
      },
      "Money": {
        "type": "object",
        "properties": {
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$"
          },
          "micro_units": {
            "type": "string",
            "pattern": "^[0-9]+$"
          }
        },
        "required": [
          "currency",
          "micro_units"
        ],
        "additionalProperties": false
      },
      "ProjectCreate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "client_reference": {
            "type": "string",
            "maxLength": 128
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      },
      "ProjectPatch": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "state": {
            "type": "string",
            "enum": [
              "active",
              "archived"
            ]
          }
        },
        "additionalProperties": false,
        "description": "하나 이상의 필드가 필요합니다."
      },
      "Project": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "revision": {
            "type": "integer",
            "minimum": 1
          },
          "state": {
            "type": "string",
            "enum": [
              "active",
              "archived"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "client_reference": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "revision",
          "state",
          "created_at",
          "client_reference"
        ],
        "additionalProperties": false
      },
      "ResourceInput": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "script"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "data": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 900000
                  },
                  "source_asset_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "language": {
                    "type": "string",
                    "minLength": 2,
                    "maxLength": 16
                  }
                },
                "required": [
                  "language"
                ],
                "additionalProperties": false,
                "description": "text 또는 source_asset_id 중 하나만 입력하세요."
              }
            },
            "required": [
              "kind",
              "name",
              "data"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "character"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "data": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string",
                    "maxLength": 4000
                  },
                  "reference_asset_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 8,
                    "default": []
                  }
                },
                "required": [
                  "description"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "kind",
              "name",
              "data"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "scene"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "data": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string",
                    "maxLength": 4000
                  },
                  "reference_asset_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 8,
                    "default": []
                  }
                },
                "required": [
                  "description"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "kind",
              "name",
              "data"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "prop"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "data": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string",
                    "maxLength": 4000
                  },
                  "reference_asset_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 8,
                    "default": []
                  }
                },
                "required": [
                  "description"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "kind",
              "name",
              "data"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "episode"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "data": {
                "type": "object",
                "properties": {
                  "script_resource_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "sequence": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  },
                  "raw_content": {
                    "type": "string",
                    "maxLength": 20000
                  },
                  "description": {
                    "type": "string",
                    "maxLength": 4000
                  }
                },
                "required": [
                  "script_resource_id",
                  "sequence"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "kind",
              "name",
              "data"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "shot"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 80
              },
              "data": {
                "type": "object",
                "properties": {
                  "episode_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "scene_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "character_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 8,
                    "default": []
                  },
                  "prop_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "maxItems": 8,
                    "default": []
                  },
                  "description": {
                    "type": "string",
                    "maxLength": 4000
                  },
                  "video_prompt": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 4000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "sequence": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 100
                  },
                  "duration_seconds": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 60
                  },
                  "selected_image_asset_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "selected_video_asset_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "episode_id",
                  "description",
                  "duration_seconds"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "kind",
              "name",
              "data"
            ],
            "additionalProperties": false
          }
        ]
      },
      "Resource": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "minimum": 1
          },
          "content": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "script"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "text": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 900000
                      },
                      "source_asset_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "language": {
                        "type": "string",
                        "minLength": 2,
                        "maxLength": 16
                      }
                    },
                    "required": [
                      "language"
                    ],
                    "additionalProperties": false,
                    "description": "text 또는 source_asset_id 중 하나만 입력하세요."
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "character"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "description": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "reference_asset_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "maxItems": 8,
                        "default": []
                      }
                    },
                    "required": [
                      "description"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "scene"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "description": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "reference_asset_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "maxItems": 8,
                        "default": []
                      }
                    },
                    "required": [
                      "description"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "prop"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "description": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "reference_asset_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "maxItems": 8,
                        "default": []
                      }
                    },
                    "required": [
                      "description"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "episode"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "script_resource_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "sequence": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 100
                      },
                      "raw_content": {
                        "type": "string",
                        "maxLength": 20000
                      },
                      "description": {
                        "type": "string",
                        "maxLength": 4000
                      }
                    },
                    "required": [
                      "script_resource_id",
                      "sequence"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "shot"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "episode_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "scene_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "character_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "maxItems": 8,
                        "default": []
                      },
                      "prop_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "maxItems": 8,
                        "default": []
                      },
                      "description": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "video_prompt": {
                        "anyOf": [
                          {
                            "type": "string",
                            "maxLength": 4000
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "sequence": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 100
                      },
                      "duration_seconds": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 60
                      },
                      "selected_image_asset_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "selected_video_asset_id": {
                        "type": "string",
                        "format": "uuid"
                      }
                    },
                    "required": [
                      "episode_id",
                      "description",
                      "duration_seconds"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "project_id",
          "revision",
          "content",
          "created_at"
        ],
        "additionalProperties": false
      },
      "Capability": {
        "type": "object",
        "properties": {
          "studio_workflow": {
            "type": "object",
            "properties": {
              "equivalent": {
                "type": "boolean"
              },
              "stages": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "script",
                    "designs",
                    "storyboard",
                    "cut"
                  ]
                }
              },
              "project_access": {
                "type": "string",
                "enum": [
                  "read_only",
                  "read_write",
                  "mixed"
                ]
              },
              "gaps": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "operations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "path": {
                      "type": "string"
                    },
                    "enabled": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "id",
                    "path",
                    "enabled"
                  ],
                  "additionalProperties": false
                },
                "default": []
              },
              "commands": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "default": []
              },
              "image_models": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "aspect_ratios": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "image_sizes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "max_reference_images": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "max_variants": {
                      "type": "integer",
                      "exclusiveMinimum": 0
                    }
                  },
                  "required": [
                    "id",
                    "enabled",
                    "aspect_ratios",
                    "image_sizes",
                    "max_reference_images",
                    "max_variants"
                  ],
                  "additionalProperties": false
                },
                "default": []
              }
            },
            "required": [
              "equivalent",
              "stages",
              "project_access",
              "gaps"
            ],
            "additionalProperties": false
          },
          "template_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "template_version": {
            "type": "integer",
            "minimum": 1
          },
          "enabled": {
            "type": "boolean"
          },
          "stages": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          "output_profiles": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          "unsupported_reasons": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          },
          "max_shots": {
            "type": "integer",
            "minimum": 1
          },
          "max_episode_seconds": {
            "type": "integer",
            "minimum": 1
          },
          "upload_mime_types": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          "max_upload_bytes": {
            "type": "integer",
            "minimum": 1
          },
          "upload_limits": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "exclusiveMinimum": 0
            }
          },
          "job_types": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "analyze_script",
                "generate_image",
                "generate_video",
                "assemble_video"
              ]
            }
          },
          "operations": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string"
                },
                "enabled": {
                  "type": "boolean"
                }
              },
              "required": [
                "type",
                "enabled"
              ],
              "additionalProperties": false
            }
          },
          "image_size": {
            "type": "string"
          },
          "max_reference_images": {
            "type": "integer"
          }
        },
        "required": [
          "studio_workflow",
          "template_id",
          "template_version",
          "enabled",
          "stages",
          "output_profiles",
          "unsupported_reasons",
          "max_shots",
          "max_episode_seconds",
          "upload_mime_types",
          "max_upload_bytes"
        ],
        "additionalProperties": false
      },
      "PlanInput": {
        "type": "object",
        "properties": {
          "template_id": {
            "type": "string",
            "const": "episode-production"
          },
          "template_version": {
            "type": "number",
            "const": 1
          },
          "project_revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "episode_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "minItems": 1,
            "maxItems": 10,
            "description": "에피소드 ID는 중복될 수 없습니다."
          },
          "mode": {
            "type": "string",
            "enum": [
              "reviewed",
              "automatic"
            ]
          },
          "output_profile": {
            "type": "string",
            "enum": [
              "sandbox-episode-v1",
              "episode-standard-v1"
            ]
          }
        },
        "required": [
          "template_id",
          "template_version",
          "project_revision",
          "episode_ids",
          "mode",
          "output_profile"
        ],
        "additionalProperties": false
      },
      "PlannedStep": {
        "type": "object",
        "properties": {
          "stage_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "target_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "depends_on": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          "requires_review": {
            "type": "boolean"
          },
          "max_cost": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$"
                  },
                  "micro_units": {
                    "type": "string",
                    "pattern": "^[0-9]+$"
                  }
                },
                "required": [
                  "currency",
                  "micro_units"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "stage_key",
          "target_ids",
          "depends_on",
          "requires_review",
          "max_cost"
        ],
        "additionalProperties": false
      },
      "Plan": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "project_revision": {
            "type": "integer",
            "minimum": 1
          },
          "template_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "template_version": {
            "type": "integer",
            "minimum": 1
          },
          "executable": {
            "type": "boolean"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "budget_ceiling": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$"
                  },
                  "micro_units": {
                    "type": "string",
                    "pattern": "^[0-9]+$"
                  }
                },
                "required": [
                  "currency",
                  "micro_units"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "steps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "stage_key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100
                },
                "target_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "depends_on": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "requires_review": {
                  "type": "boolean"
                },
                "max_cost": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "currency": {
                          "type": "string",
                          "pattern": "^[A-Z]{3}$"
                        },
                        "micro_units": {
                          "type": "string",
                          "pattern": "^[0-9]+$"
                        }
                      },
                      "required": [
                        "currency",
                        "micro_units"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "stage_key",
                "target_ids",
                "depends_on",
                "requires_review",
                "max_cost"
              ],
              "additionalProperties": false
            }
          },
          "unsupported_reasons": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          }
        },
        "required": [
          "id",
          "project_id",
          "project_revision",
          "template_id",
          "template_version",
          "executable",
          "expires_at",
          "budget_ceiling",
          "steps",
          "unsupported_reasons"
        ],
        "additionalProperties": false
      },
      "RunInput": {
        "type": "object",
        "properties": {
          "plan_id": {
            "type": "string",
            "format": "uuid"
          },
          "client_reference": {
            "type": "string",
            "maxLength": 128
          }
        },
        "required": [
          "plan_id"
        ],
        "additionalProperties": false
      },
      "Run": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "plan_id": {
            "type": "string",
            "format": "uuid"
          },
          "version": {
            "type": "integer",
            "minimum": 1
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "awaiting_review",
              "stopping",
              "paused",
              "needs_attention",
              "partially_succeeded",
              "succeeded",
              "failed",
              "cancelled"
            ]
          },
          "client_reference": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "budget_remaining": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "pattern": "^[A-Z]{3}$"
              },
              "micro_units": {
                "type": "string",
                "pattern": "^[0-9]+$"
              }
            },
            "required": [
              "currency",
              "micro_units"
            ],
            "additionalProperties": false
          },
          "committed_cost": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$"
                  },
                  "micro_units": {
                    "type": "string",
                    "pattern": "^[0-9]+$"
                  }
                },
                "required": [
                  "currency",
                  "micro_units"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "unresolved_cost": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$"
                  },
                  "micro_units": {
                    "type": "string",
                    "pattern": "^[0-9]+$"
                  }
                },
                "required": [
                  "currency",
                  "micro_units"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "output_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "id",
          "project_id",
          "plan_id",
          "version",
          "state",
          "client_reference",
          "created_at",
          "completed_at",
          "budget_remaining",
          "committed_cost",
          "unresolved_cost",
          "output_asset_ids"
        ],
        "additionalProperties": false
      },
      "Step": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "run_id": {
            "type": "string",
            "format": "uuid"
          },
          "stage_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "target_id": {
            "type": "string",
            "format": "uuid"
          },
          "job_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "type": "string",
            "enum": [
              "blocked",
              "ready",
              "queued",
              "running",
              "awaiting_review",
              "succeeded",
              "failed",
              "cancelled",
              "unknown"
            ]
          },
          "output_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "ordinal": {
            "type": "integer"
          }
        },
        "required": [
          "id",
          "run_id",
          "stage_key",
          "target_id",
          "job_id",
          "state",
          "output_asset_ids",
          "error_code",
          "ordinal"
        ],
        "additionalProperties": false
      },
      "RunEvent": {
        "type": "object",
        "properties": {
          "event_id": {
            "type": "string",
            "format": "uuid"
          },
          "run_id": {
            "type": "string",
            "format": "uuid"
          },
          "sequence": {
            "type": "integer",
            "minimum": 1
          },
          "type": {
            "type": "string",
            "enum": [
              "run.state_changed",
              "run.review_required",
              "run.result_ready",
              "run.needs_attention"
            ]
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "awaiting_review",
              "stopping",
              "paused",
              "needs_attention",
              "partially_succeeded",
              "succeeded",
              "failed",
              "cancelled"
            ]
          },
          "step_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "event_id",
          "run_id",
          "sequence",
          "type",
          "state",
          "step_id",
          "created_at"
        ],
        "additionalProperties": false
      },
      "DecisionInput": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "approve",
              "stop",
              "resume",
              "cancel_remaining",
              "retry_result"
            ],
            "description": "retry_result resumes result polling for an accepted Studio video on the original reservation; requires step_id and expected_version. It never resubmits generation. Unconfirmed usage without a saved video task requires operator review."
          },
          "expected_version": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "step_id": {
            "type": "string",
            "format": "uuid"
          },
          "selected_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 10
          }
        },
        "required": [
          "action",
          "expected_version"
        ],
        "additionalProperties": false
      },
      "JobInput": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "project_revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "target_id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "enum": [
              "analyze_script",
              "generate_image",
              "generate_video",
              "assemble_video"
            ]
          },
          "profile_id": {
            "type": "string",
            "maxLength": 100
          },
          "client_reference": {
            "type": "string",
            "maxLength": 128
          }
        },
        "required": [
          "project_id",
          "project_revision",
          "target_id",
          "type",
          "profile_id"
        ],
        "additionalProperties": false
      },
      "Job": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "run_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "ready",
              "blocked",
              "processing",
              "awaiting_review",
              "succeeded",
              "failed",
              "cancelled",
              "needs_review"
            ]
          },
          "output_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "resource_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "skipped_scene_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "id",
          "project_id",
          "run_id",
          "state",
          "output_asset_ids",
          "error_code"
        ],
        "additionalProperties": false
      },
      "UploadInput": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "filename": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "pattern": "^[^\\\\/\\x00-\\x1f]+$"
          },
          "mime_type": {
            "type": "string",
            "enum": [
              "text/plain",
              "text/markdown",
              "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
              "image/png",
              "image/jpeg",
              "image/webp",
              "image/avif",
              "audio/wav",
              "application/zip"
            ]
          },
          "size_bytes": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "maximum": 1073741824
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          }
        },
        "required": [
          "project_id",
          "filename",
          "mime_type",
          "size_bytes",
          "sha256"
        ],
        "additionalProperties": false,
        "description": "TXT·Markdown·DOCX·PNG·JPEG·WebP·AVIF·WAV·ZIP을 지원합니다. 파일별 바이트 한도는 UI와 같은 설정을 사용하며 GET /capabilities의 upload_limits에서 확인합니다. 대본은 최대 5,000,000자입니다. 파일명에 경로 구분자를 넣을 수 없습니다. WAV는 PCM 또는 IEEE float 형식이어야 합니다."
      },
      "UploadTicket": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "asset_id": {
            "type": "string",
            "format": "uuid"
          },
          "upload_url": {
            "type": "string",
            "format": "uri"
          },
          "method": {
            "type": "string",
            "enum": [
              "PUT"
            ]
          },
          "content_type": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "asset_id",
          "upload_url",
          "method",
          "content_type",
          "expires_at"
        ],
        "additionalProperties": false
      },
      "Asset": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "state": {
            "type": "string",
            "enum": [
              "pending",
              "verified",
              "ready",
              "errored",
              "expired"
            ]
          },
          "mime_type": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "size_bytes": {
            "type": "integer",
            "minimum": 0
          },
          "download_url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "project_id",
          "state",
          "mime_type",
          "size_bytes",
          "download_url",
          "expires_at"
        ],
        "additionalProperties": false
      },
      "RequestLog": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "method": {
            "type": "string",
            "enum": [
              "GET",
              "POST",
              "PATCH",
              "PUT"
            ]
          },
          "route_template": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300
          },
          "status_code": {
            "type": "integer",
            "minimum": 100,
            "maximum": 599
          },
          "duration_ms": {
            "type": "integer",
            "minimum": 0
          },
          "actor_kind": {
            "type": "string",
            "enum": [
              "api_key",
              "console"
            ]
          },
          "project_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "run_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "replayed": {
            "type": "boolean"
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "request_id",
          "created_at",
          "method",
          "route_template",
          "status_code",
          "duration_ms",
          "actor_kind",
          "project_id",
          "run_id",
          "job_id",
          "replayed",
          "error_code"
        ],
        "additionalProperties": false
      },
      "Usage": {
        "type": "object",
        "properties": {
          "period_start": {
            "type": "string",
            "format": "date-time"
          },
          "period_end": {
            "type": "string",
            "format": "date-time"
          },
          "as_of": {
            "type": "string",
            "format": "date-time"
          },
          "http_requests": {
            "type": "integer",
            "minimum": 0
          },
          "runs": {
            "type": "integer",
            "minimum": 0
          },
          "jobs": {
            "type": "integer",
            "minimum": 0
          },
          "reserved": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "pattern": "^[A-Z]{3}$"
              },
              "micro_units": {
                "type": "string",
                "pattern": "^[0-9]+$"
              }
            },
            "required": [
              "currency",
              "micro_units"
            ],
            "additionalProperties": false
          },
          "committed": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "pattern": "^[A-Z]{3}$"
              },
              "micro_units": {
                "type": "string",
                "pattern": "^[0-9]+$"
              }
            },
            "required": [
              "currency",
              "micro_units"
            ],
            "additionalProperties": false
          },
          "unresolved": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$"
                  },
                  "micro_units": {
                    "type": "string",
                    "pattern": "^[0-9]+$"
                  }
                },
                "required": [
                  "currency",
                  "micro_units"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "remaining": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "pattern": "^[A-Z]{3}$"
              },
              "micro_units": {
                "type": "string",
                "pattern": "^[0-9]+$"
              }
            },
            "required": [
              "currency",
              "micro_units"
            ],
            "additionalProperties": false
          },
          "amount_basis": {
            "type": "string",
            "enum": [
              "partner_limit"
            ]
          },
          "billing_mode": {
            "type": "string",
            "enum": [
              "pilot",
              "contract"
            ]
          }
        },
        "required": [
          "period_start",
          "period_end",
          "as_of",
          "http_requests",
          "runs",
          "jobs",
          "reserved",
          "committed",
          "unresolved",
          "remaining",
          "amount_basis",
          "billing_mode"
        ],
        "additionalProperties": false
      },
      "WebhookCreate": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "format": "uri",
            "maxLength": 2000
          },
          "project_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 100
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "run.state_changed",
                "run.review_required",
                "run.result_ready",
                "run.needs_attention"
              ]
            },
            "minItems": 1,
            "maxItems": 4
          }
        },
        "required": [
          "url",
          "project_ids",
          "events"
        ],
        "additionalProperties": false
      },
      "WebhookPatch": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "run.state_changed",
                "run.review_required",
                "run.result_ready",
                "run.needs_attention"
              ]
            },
            "minItems": 1,
            "maxItems": 4
          }
        },
        "additionalProperties": false,
        "description": "하나 이상의 필드가 필요합니다."
      },
      "WebhookEndpoint": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "project_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "run.state_changed",
                "run.review_required",
                "run.result_ready",
                "run.needs_attention"
              ]
            }
          },
          "enabled": {
            "type": "boolean"
          },
          "verified": {
            "type": "boolean"
          },
          "secret_version": {
            "type": "integer",
            "minimum": 1
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "url",
          "project_ids",
          "events",
          "enabled",
          "verified",
          "secret_version",
          "created_at"
        ],
        "additionalProperties": false
      },
      "WebhookIssued": {
        "type": "object",
        "properties": {
          "endpoint": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "project_ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "events": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "run.state_changed",
                    "run.review_required",
                    "run.result_ready",
                    "run.needs_attention"
                  ]
                }
              },
              "enabled": {
                "type": "boolean"
              },
              "verified": {
                "type": "boolean"
              },
              "secret_version": {
                "type": "integer",
                "minimum": 1
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "url",
              "project_ids",
              "events",
              "enabled",
              "verified",
              "secret_version",
              "created_at"
            ],
            "additionalProperties": false
          },
          "signing_secret": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          }
        },
        "required": [
          "endpoint"
        ],
        "additionalProperties": false
      },
      "WebhookDelivery": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "endpoint_id": {
            "type": "string",
            "format": "uuid"
          },
          "event_id": {
            "type": "string",
            "format": "uuid"
          },
          "state": {
            "type": "string",
            "enum": [
              "pending",
              "sending",
              "succeeded",
              "retrying",
              "exhausted"
            ]
          },
          "attempt": {
            "type": "integer",
            "minimum": 0
          },
          "http_status": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "next_attempt_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "endpoint_id",
          "event_id",
          "state",
          "attempt",
          "http_status",
          "next_attempt_at",
          "created_at"
        ],
        "additionalProperties": false
      },
      "Empty": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "CapabilityPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "studio_workflow": {
                  "type": "object",
                  "properties": {
                    "equivalent": {
                      "type": "boolean"
                    },
                    "stages": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "script",
                          "designs",
                          "storyboard",
                          "cut"
                        ]
                      }
                    },
                    "project_access": {
                      "type": "string",
                      "enum": [
                        "read_only",
                        "read_write",
                        "mixed"
                      ]
                    },
                    "gaps": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "operations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "path": {
                            "type": "string"
                          },
                          "enabled": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "id",
                          "path",
                          "enabled"
                        ],
                        "additionalProperties": false
                      },
                      "default": []
                    },
                    "commands": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "default": []
                    },
                    "image_models": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "enabled": {
                            "type": "boolean"
                          },
                          "aspect_ratios": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "image_sizes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "max_reference_images": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "max_variants": {
                            "type": "integer",
                            "exclusiveMinimum": 0
                          }
                        },
                        "required": [
                          "id",
                          "enabled",
                          "aspect_ratios",
                          "image_sizes",
                          "max_reference_images",
                          "max_variants"
                        ],
                        "additionalProperties": false
                      },
                      "default": []
                    }
                  },
                  "required": [
                    "equivalent",
                    "stages",
                    "project_access",
                    "gaps"
                  ],
                  "additionalProperties": false
                },
                "template_id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100
                },
                "template_version": {
                  "type": "integer",
                  "minimum": 1
                },
                "enabled": {
                  "type": "boolean"
                },
                "stages": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "output_profiles": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "unsupported_reasons": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500
                  }
                },
                "max_shots": {
                  "type": "integer",
                  "minimum": 1
                },
                "max_episode_seconds": {
                  "type": "integer",
                  "minimum": 1
                },
                "upload_mime_types": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "max_upload_bytes": {
                  "type": "integer",
                  "minimum": 1
                },
                "upload_limits": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "integer",
                    "exclusiveMinimum": 0
                  }
                },
                "job_types": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "analyze_script",
                      "generate_image",
                      "generate_video",
                      "assemble_video"
                    ]
                  }
                },
                "operations": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string"
                      },
                      "enabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "type",
                      "enabled"
                    ],
                    "additionalProperties": false
                  }
                },
                "image_size": {
                  "type": "string"
                },
                "max_reference_images": {
                  "type": "integer"
                }
              },
              "required": [
                "studio_workflow",
                "template_id",
                "template_version",
                "enabled",
                "stages",
                "output_profiles",
                "unsupported_reasons",
                "max_shots",
                "max_episode_seconds",
                "upload_mime_types",
                "max_upload_bytes"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "ProjectPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "revision": {
                  "type": "integer",
                  "minimum": 1
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "active",
                    "archived"
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "client_reference": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 128
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "name",
                "revision",
                "state",
                "created_at",
                "client_reference"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "ResourcePage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "project_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "revision": {
                  "type": "integer",
                  "minimum": 1
                },
                "content": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "script"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "text": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 900000
                            },
                            "source_asset_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "language": {
                              "type": "string",
                              "minLength": 2,
                              "maxLength": 16
                            }
                          },
                          "required": [
                            "language"
                          ],
                          "additionalProperties": false,
                          "description": "text 또는 source_asset_id 중 하나만 입력하세요."
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "character"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "description": {
                              "type": "string",
                              "maxLength": 4000
                            },
                            "reference_asset_ids": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "maxItems": 8,
                              "default": []
                            }
                          },
                          "required": [
                            "description"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "scene"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "description": {
                              "type": "string",
                              "maxLength": 4000
                            },
                            "reference_asset_ids": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "maxItems": 8,
                              "default": []
                            }
                          },
                          "required": [
                            "description"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "prop"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "description": {
                              "type": "string",
                              "maxLength": 4000
                            },
                            "reference_asset_ids": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "maxItems": 8,
                              "default": []
                            }
                          },
                          "required": [
                            "description"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "episode"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "script_resource_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "sequence": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 100
                            },
                            "raw_content": {
                              "type": "string",
                              "maxLength": 20000
                            },
                            "description": {
                              "type": "string",
                              "maxLength": 4000
                            }
                          },
                          "required": [
                            "script_resource_id",
                            "sequence"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "shot"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "episode_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "scene_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "character_ids": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "maxItems": 8,
                              "default": []
                            },
                            "prop_ids": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "maxItems": 8,
                              "default": []
                            },
                            "description": {
                              "type": "string",
                              "maxLength": 4000
                            },
                            "video_prompt": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "maxLength": 4000
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "sequence": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 100
                            },
                            "duration_seconds": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60
                            },
                            "selected_image_asset_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "selected_video_asset_id": {
                              "type": "string",
                              "format": "uuid"
                            }
                          },
                          "required": [
                            "episode_id",
                            "description",
                            "duration_seconds"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "project_id",
                "revision",
                "content",
                "created_at"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "RunPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "project_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "plan_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "version": {
                  "type": "integer",
                  "minimum": 1
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "queued",
                    "running",
                    "awaiting_review",
                    "stopping",
                    "paused",
                    "needs_attention",
                    "partially_succeeded",
                    "succeeded",
                    "failed",
                    "cancelled"
                  ]
                },
                "client_reference": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 128
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "completed_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "budget_remaining": {
                  "type": "object",
                  "properties": {
                    "currency": {
                      "type": "string",
                      "pattern": "^[A-Z]{3}$"
                    },
                    "micro_units": {
                      "type": "string",
                      "pattern": "^[0-9]+$"
                    }
                  },
                  "required": [
                    "currency",
                    "micro_units"
                  ],
                  "additionalProperties": false
                },
                "committed_cost": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "currency": {
                          "type": "string",
                          "pattern": "^[A-Z]{3}$"
                        },
                        "micro_units": {
                          "type": "string",
                          "pattern": "^[0-9]+$"
                        }
                      },
                      "required": [
                        "currency",
                        "micro_units"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "unresolved_cost": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "currency": {
                          "type": "string",
                          "pattern": "^[A-Z]{3}$"
                        },
                        "micro_units": {
                          "type": "string",
                          "pattern": "^[0-9]+$"
                        }
                      },
                      "required": [
                        "currency",
                        "micro_units"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "output_asset_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              },
              "required": [
                "id",
                "project_id",
                "plan_id",
                "version",
                "state",
                "client_reference",
                "created_at",
                "completed_at",
                "budget_remaining",
                "committed_cost",
                "unresolved_cost",
                "output_asset_ids"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "StepPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "run_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "stage_key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100
                },
                "target_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "job_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "blocked",
                    "ready",
                    "queued",
                    "running",
                    "awaiting_review",
                    "succeeded",
                    "failed",
                    "cancelled",
                    "unknown"
                  ]
                },
                "output_asset_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "error_code": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "ordinal": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "run_id",
                "stage_key",
                "target_id",
                "job_id",
                "state",
                "output_asset_ids",
                "error_code",
                "ordinal"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "RunEventPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "event_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "run_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "sequence": {
                  "type": "integer",
                  "minimum": 1
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "run.state_changed",
                    "run.review_required",
                    "run.result_ready",
                    "run.needs_attention"
                  ]
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "queued",
                    "running",
                    "awaiting_review",
                    "stopping",
                    "paused",
                    "needs_attention",
                    "partially_succeeded",
                    "succeeded",
                    "failed",
                    "cancelled"
                  ]
                },
                "step_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "event_id",
                "run_id",
                "sequence",
                "type",
                "state",
                "step_id",
                "created_at"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "RequestLogPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "request_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "method": {
                  "type": "string",
                  "enum": [
                    "GET",
                    "POST",
                    "PATCH",
                    "PUT"
                  ]
                },
                "route_template": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 300
                },
                "status_code": {
                  "type": "integer",
                  "minimum": 100,
                  "maximum": 599
                },
                "duration_ms": {
                  "type": "integer",
                  "minimum": 0
                },
                "actor_kind": {
                  "type": "string",
                  "enum": [
                    "api_key",
                    "console"
                  ]
                },
                "project_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "run_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "job_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "replayed": {
                  "type": "boolean"
                },
                "error_code": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "request_id",
                "created_at",
                "method",
                "route_template",
                "status_code",
                "duration_ms",
                "actor_kind",
                "project_id",
                "run_id",
                "job_id",
                "replayed",
                "error_code"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "WebhookEndpointPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "project_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "events": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "run.state_changed",
                      "run.review_required",
                      "run.result_ready",
                      "run.needs_attention"
                    ]
                  }
                },
                "enabled": {
                  "type": "boolean"
                },
                "verified": {
                  "type": "boolean"
                },
                "secret_version": {
                  "type": "integer",
                  "minimum": 1
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "url",
                "project_ids",
                "events",
                "enabled",
                "verified",
                "secret_version",
                "created_at"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "WebhookDeliveryPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "endpoint_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "event_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "pending",
                    "sending",
                    "succeeded",
                    "retrying",
                    "exhausted"
                  ]
                },
                "attempt": {
                  "type": "integer",
                  "minimum": 0
                },
                "http_status": {
                  "anyOf": [
                    {
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "next_attempt_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "endpoint_id",
                "event_id",
                "state",
                "attempt",
                "http_status",
                "next_attempt_at",
                "created_at"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "ArchiveImport": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "deferred",
              "succeeded",
              "failed",
              "cancelled"
            ]
          },
          "progress": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "phase": {
                    "type": "string",
                    "enum": [
                      "extracting",
                      "importing"
                    ]
                  },
                  "current": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "total": {
                    "type": "integer",
                    "minimum": 0
                  }
                },
                "required": [
                  "phase",
                  "current",
                  "total"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "imported": {
            "type": "integer",
            "minimum": 0
          },
          "failed": {
            "type": "integer",
            "minimum": 0
          },
          "asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "error_code": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "work_id",
          "state",
          "progress",
          "imported",
          "failed",
          "asset_ids",
          "error_code"
        ],
        "additionalProperties": false
      },
      "Episode": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "title": {
            "type": "string"
          },
          "raw_content": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "number",
          "title",
          "raw_content",
          "description"
        ],
        "additionalProperties": false
      },
      "Scene": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "episode_id": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "heading": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "video_prompt": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "episode_id",
          "number",
          "heading",
          "description",
          "video_prompt"
        ],
        "additionalProperties": false
      },
      "EpisodePage": {
        "type": "object",
        "properties": {
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "number": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "title": {
                  "type": "string"
                },
                "raw_content": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "number",
                "title",
                "raw_content",
                "description"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "work_id",
          "revision",
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "ScenePage": {
        "type": "object",
        "properties": {
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "episode_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "number": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "heading": {
                  "type": "string"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "video_prompt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "episode_id",
                "number",
                "heading",
                "description",
                "video_prompt"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "work_id",
          "revision",
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "Reference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string",
            "enum": [
              "character",
              "scene",
              "prop",
              "grid"
            ]
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "primary_asset_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "kind",
          "name",
          "description",
          "tags",
          "primary_asset_id"
        ],
        "additionalProperties": false
      },
      "ReferencePage": {
        "type": "object",
        "properties": {
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "character",
                    "scene",
                    "prop",
                    "grid"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "primary_asset_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "kind",
                "name",
                "description",
                "tags",
                "primary_asset_id"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "work_id",
          "revision",
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "UploadBatch": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "filename": {
                  "type": "string"
                },
                "ticket": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "asset_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "upload_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "method": {
                      "type": "string",
                      "enum": [
                        "PUT"
                      ]
                    },
                    "content_type": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "expires_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "id",
                    "asset_id",
                    "upload_url",
                    "method",
                    "content_type",
                    "expires_at"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "filename",
                "ticket"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "project_id",
          "items"
        ],
        "additionalProperties": false
      },
      "listCharactersInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "getCharacterInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "createCharacterInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "maxItems": 8
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "name",
          "revision"
        ],
        "additionalProperties": false
      },
      "updateCharacterInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "maxItems": 8
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "name",
          "revision"
        ],
        "additionalProperties": false
      },
      "deleteCharacterInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "setCharacterImageInput": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string",
            "format": "uuid"
          },
          "current_asset_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "asset_id",
          "current_asset_id",
          "revision"
        ],
        "additionalProperties": false
      },
      "generateCharacterImageInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "variants": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "default": "image-standard"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20000
          },
          "aspect_ratio": {
            "type": "string",
            "pattern": "^(auto|[1-9]\\d*:[1-9]\\d*)$"
          },
          "image_size": {
            "type": "string",
            "maxLength": 40
          },
          "quality": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ]
          },
          "background": {
            "type": "string",
            "enum": [
              "auto",
              "opaque",
              "transparent"
            ]
          },
          "output_format": {
            "type": "string",
            "enum": [
              "png",
              "jpeg"
            ]
          },
          "reference_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 16,
            "default": []
          },
          "slot": {
            "type": "string",
            "enum": [
              "primary",
              "variant"
            ],
            "default": "primary"
          },
          "variant_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "current_asset_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "attachSceneCharacterInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "detachSceneCharacterInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "listBackgroundScenesInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "getBackgroundSceneInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "createBackgroundSceneInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "maxItems": 8
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "name",
          "revision"
        ],
        "additionalProperties": false
      },
      "updateBackgroundSceneInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "maxItems": 8
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "name",
          "revision"
        ],
        "additionalProperties": false
      },
      "deleteBackgroundSceneInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "setBackgroundSceneImageInput": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string",
            "format": "uuid"
          },
          "current_asset_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "asset_id",
          "current_asset_id",
          "revision"
        ],
        "additionalProperties": false
      },
      "generateBackgroundSceneImageInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "variants": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "default": "image-standard"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20000
          },
          "aspect_ratio": {
            "type": "string",
            "pattern": "^(auto|[1-9]\\d*:[1-9]\\d*)$"
          },
          "image_size": {
            "type": "string",
            "maxLength": 40
          },
          "quality": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ]
          },
          "background": {
            "type": "string",
            "enum": [
              "auto",
              "opaque",
              "transparent"
            ]
          },
          "output_format": {
            "type": "string",
            "enum": [
              "png",
              "jpeg"
            ]
          },
          "reference_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 16,
            "default": []
          },
          "slot": {
            "type": "string",
            "enum": [
              "primary",
              "variant"
            ],
            "default": "primary"
          },
          "variant_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "current_asset_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "attachSceneBackgroundSceneInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "detachSceneBackgroundSceneInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "listPropsInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "getPropInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "createPropInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "maxItems": 8
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "name",
          "revision"
        ],
        "additionalProperties": false
      },
      "updatePropInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "maxItems": 8
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "name",
          "revision"
        ],
        "additionalProperties": false
      },
      "deletePropInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "setPropImageInput": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string",
            "format": "uuid"
          },
          "current_asset_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "asset_id",
          "current_asset_id",
          "revision"
        ],
        "additionalProperties": false
      },
      "generatePropImageInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "variants": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "default": "image-standard"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20000
          },
          "aspect_ratio": {
            "type": "string",
            "pattern": "^(auto|[1-9]\\d*:[1-9]\\d*)$"
          },
          "image_size": {
            "type": "string",
            "maxLength": 40
          },
          "quality": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ]
          },
          "background": {
            "type": "string",
            "enum": [
              "auto",
              "opaque",
              "transparent"
            ]
          },
          "output_format": {
            "type": "string",
            "enum": [
              "png",
              "jpeg"
            ]
          },
          "reference_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 16,
            "default": []
          },
          "slot": {
            "type": "string",
            "enum": [
              "primary",
              "variant"
            ],
            "default": "primary"
          },
          "variant_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "current_asset_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "attachScenePropInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "detachScenePropInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "listGridsInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "getGridInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "createGridInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "maxItems": 8
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "name",
          "revision"
        ],
        "additionalProperties": false
      },
      "updateGridInput": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "maxItems": 8
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "name",
          "revision"
        ],
        "additionalProperties": false
      },
      "deleteGridInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "setGridImageInput": {
        "type": "object",
        "properties": {
          "asset_id": {
            "type": "string",
            "format": "uuid"
          },
          "current_asset_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "asset_id",
          "current_asset_id",
          "revision"
        ],
        "additionalProperties": false
      },
      "generateGridImageInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "variants": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "default": "image-standard"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20000
          },
          "aspect_ratio": {
            "type": "string",
            "pattern": "^(auto|[1-9]\\d*:[1-9]\\d*)$"
          },
          "image_size": {
            "type": "string",
            "maxLength": 40
          },
          "quality": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ]
          },
          "background": {
            "type": "string",
            "enum": [
              "auto",
              "opaque",
              "transparent"
            ]
          },
          "output_format": {
            "type": "string",
            "enum": [
              "png",
              "jpeg"
            ]
          },
          "reference_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 16,
            "default": []
          },
          "slot": {
            "type": "string",
            "enum": [
              "primary",
              "variant"
            ],
            "default": "primary"
          },
          "variant_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "current_asset_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "attachSceneGridInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "detachSceneGridInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "listEpisodesInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "getEpisodeInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "listScenesInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "getSceneInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "createArchiveImportInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "asset_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "revision",
          "asset_id"
        ],
        "additionalProperties": false
      },
      "getArchiveImportInput": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "createWorkUploadsInput": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "filename": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200,
                  "pattern": "^[^\\\\/\\x00-\\x1f]+$"
                },
                "mime_type": {
                  "type": "string",
                  "enum": [
                    "text/plain",
                    "text/markdown",
                    "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
                    "image/png",
                    "image/jpeg",
                    "image/webp",
                    "image/avif",
                    "audio/wav",
                    "application/zip"
                  ]
                },
                "size_bytes": {
                  "type": "integer",
                  "exclusiveMinimum": 0,
                  "maximum": 1073741824
                },
                "sha256": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              },
              "required": [
                "filename",
                "mime_type",
                "size_bytes",
                "sha256"
              ],
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 20
          }
        },
        "required": [
          "files"
        ],
        "additionalProperties": false
      },
      "updateEpisodeInput": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "number": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "raw_content": {
            "type": "string",
            "maxLength": 20000
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "title",
          "revision"
        ],
        "additionalProperties": false
      },
      "deleteEpisodeInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "updateSceneInput": {
        "type": "object",
        "properties": {
          "heading": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "number": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "video_prompt": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 4000
              },
              {
                "type": "null"
              }
            ]
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "heading",
          "revision"
        ],
        "additionalProperties": false
      },
      "deleteSceneInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "reorderScenesInput": {
        "type": "object",
        "properties": {
          "scene_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "minItems": 1,
            "maxItems": 500
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "scene_ids",
          "revision"
        ],
        "additionalProperties": false
      },
      "createEpisodeInput": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "number": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "raw_content": {
            "type": "string",
            "maxLength": 20000
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "title",
          "revision"
        ],
        "additionalProperties": false
      },
      "createSceneInput": {
        "type": "object",
        "properties": {
          "heading": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "number": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "description": {
            "type": "string",
            "maxLength": 4000
          },
          "video_prompt": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 4000
              },
              {
                "type": "null"
              }
            ]
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "heading",
          "revision"
        ],
        "additionalProperties": false
      },
      "saveScriptInput": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "maxLength": 5000000
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          }
        },
        "required": [
          "text",
          "revision"
        ],
        "additionalProperties": false
      },
      "generateSceneVideoInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "anchor_asset_id": {
            "type": "string",
            "format": "uuid"
          },
          "reference_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 12
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "default": "video-standard"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "duration_seconds": {
            "type": "integer",
            "minimum": 1,
            "maximum": 60
          },
          "resolution": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20
          },
          "aspect_ratio": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20
          },
          "generate_audio": {
            "type": "boolean"
          }
        },
        "required": [
          "revision",
          "duration_seconds",
          "resolution",
          "aspect_ratio"
        ],
        "additionalProperties": false
      },
      "selectSceneTakeInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "take_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "revision",
          "take_id"
        ],
        "additionalProperties": false
      },
      "exportWorkInput": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "allow_partial": {
            "type": "boolean",
            "default": true
          },
          "selections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "scene_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "asset_id": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "required": [
                "scene_id",
                "asset_id"
              ],
              "additionalProperties": false
            },
            "maxItems": 200
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "StudioBuildProgress": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "run_id": {
            "type": "string",
            "format": "uuid"
          },
          "run_version": {
            "type": "integer"
          },
          "state": {
            "type": "string"
          },
          "wait_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "stage": {
            "type": [
              "string",
              "null"
            ]
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "role": {
                  "type": "string",
                  "enum": [
                    "assistant",
                    "system_note"
                  ]
                },
                "stage": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "content": {
                  "type": "string"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "streaming",
                    "final"
                  ]
                },
                "seq": {
                  "type": "number"
                },
                "created_at": {
                  "type": "string"
                },
                "updated_at": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "role",
                "stage",
                "content",
                "status",
                "seq",
                "created_at",
                "updated_at"
              ],
              "additionalProperties": false
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "filterMode": {
                  "type": "string",
                  "enum": [
                    "prompt_index",
                    "full_text"
                  ]
                },
                "sourceText": {
                  "type": "string"
                },
                "llmText": {
                  "type": "string"
                },
                "originalChars": {
                  "type": "number"
                },
                "preparedChars": {
                  "type": "number"
                }
              },
              "required": [
                "id",
                "name",
                "filterMode",
                "sourceText",
                "llmText",
                "originalChars",
                "preparedChars"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "id",
          "state",
          "stage",
          "messages",
          "sources"
        ],
        "additionalProperties": false
      },
      "StudioDraft": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "instructions": {
            "type": "string",
            "minLength": 1,
            "maxLength": 8000
          },
          "source_text": {
            "type": "string",
            "maxLength": 50000
          },
          "max_output_tokens": {
            "type": "integer",
            "minimum": 256,
            "maximum": 8192,
            "default": 2048
          }
        },
        "required": [
          "revision",
          "instructions"
        ],
        "additionalProperties": false
      },
      "StudioImport": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "asset_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "revision",
          "asset_id"
        ],
        "additionalProperties": false
      },
      "StudioLibrary": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "kind": {
                  "type": "string"
                },
                "media_type": {
                  "type": "string"
                },
                "mime": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "version": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "is_current_version": {
                  "type": "boolean"
                }
              },
              "required": [
                "id",
                "name",
                "kind",
                "media_type",
                "mime",
                "version",
                "is_current_version"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "StudioCommand": {
        "anyOf": [
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "design.asset.set"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "asset_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "primary",
                      "variant"
                    ]
                  },
                  "current_asset_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  }
                },
                "required": [
                  "id",
                  "asset_id",
                  "kind",
                  "current_asset_id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "asset.delete"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "trash.restore"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "entity_type": {
                    "type": "string",
                    "enum": [
                      "asset",
                      "design"
                    ]
                  }
                },
                "required": [
                  "id",
                  "entity_type"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "scene.duplicate"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "project.settings.update"
              },
              "input": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 24
                    },
                    "maxItems": 8
                  },
                  "cover": {
                    "type": "string",
                    "enum": [
                      "amber",
                      "indigo",
                      "teal",
                      "rust",
                      "moss",
                      "ink",
                      "sage",
                      "bone",
                      "wine",
                      "wash",
                      "blush",
                      "void"
                    ]
                  },
                  "aspect": {
                    "type": "string",
                    "enum": [
                      "16:9",
                      "9:16",
                      "1:1",
                      "4:3",
                      "21:9"
                    ]
                  },
                  "resolution": {
                    "type": "string",
                    "enum": [
                      "480p",
                      "720p",
                      "1080p",
                      "2k"
                    ]
                  },
                  "style": {
                    "type": "string",
                    "enum": [
                      "realistic_general",
                      "realistic_urban",
                      "realistic_cinematic",
                      "2d_japanese_manga",
                      "2d_korean_urban",
                      "2d_korean",
                      "2d_otome",
                      "2d_chinese_manga",
                      "2d_classical",
                      "3d_chinese",
                      "3d_xianxia",
                      "3d_cartoon",
                      "cg_general",
                      "cg_cyberpunk",
                      "ink_gongbi",
                      "custom"
                    ]
                  },
                  "style_prompt": {
                    "type": "string",
                    "maxLength": 1000
                  }
                },
                "required": [
                  "title",
                  "tags",
                  "cover",
                  "aspect",
                  "resolution",
                  "style",
                  "style_prompt"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "project.rename"
              },
              "input": {
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "project.state.set"
              },
              "input": {
                "type": "object",
                "properties": {
                  "state": {
                    "type": "string",
                    "enum": [
                      "active",
                      "archived"
                    ]
                  }
                },
                "required": [
                  "state"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "script.update"
              },
              "input": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "string",
                    "maxLength": 5000000
                  }
                },
                "required": [
                  "text"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "script.bible.update"
              },
              "input": {
                "type": "object",
                "properties": {
                  "logline": {
                    "type": "string",
                    "maxLength": 500
                  },
                  "synopsis": {
                    "type": "string",
                    "maxLength": 4000
                  }
                },
                "required": [
                  "logline",
                  "synopsis"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "episode.save"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "number": {
                    "type": "integer",
                    "exclusiveMinimum": 0
                  },
                  "raw_content": {
                    "type": "string",
                    "maxLength": 20000
                  },
                  "description": {
                    "type": "string",
                    "maxLength": 4000
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "episode.delete"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "scene.save"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "episode_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "heading": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "number": {
                    "type": "integer",
                    "exclusiveMinimum": 0
                  },
                  "description": {
                    "type": "string",
                    "maxLength": 4000
                  },
                  "video_prompt": {
                    "anyOf": [
                      {
                        "type": "string",
                        "maxLength": 4000
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "episode_id",
                  "heading"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "scene.delete"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "scene.reorder"
              },
              "input": {
                "type": "object",
                "properties": {
                  "episode_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "scene_ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "minItems": 1,
                    "maxItems": 500
                  }
                },
                "required": [
                  "episode_id",
                  "scene_ids"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "design.save"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "character",
                      "scene",
                      "prop",
                      "grid"
                    ]
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "description": {
                    "type": "string",
                    "maxLength": 4000
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "maxItems": 8
                  }
                },
                "required": [
                  "kind",
                  "name"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "design.delete"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "design.voice.set"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "asset_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "id",
                  "asset_id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "design.asset.detach"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "asset_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "primary",
                      "variant",
                      "voice"
                    ]
                  }
                },
                "required": [
                  "id",
                  "asset_id",
                  "kind"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "design.asset.restore"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "current_asset_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "restore_asset_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "kind": {
                    "type": "string",
                    "enum": [
                      "primary",
                      "variant"
                    ]
                  }
                },
                "required": [
                  "id",
                  "current_asset_id",
                  "restore_asset_id",
                  "kind"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "design.variant.rename"
              },
              "input": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "asset_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  }
                },
                "required": [
                  "id",
                  "asset_id",
                  "name"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "scene.design.attach"
              },
              "input": {
                "type": "object",
                "properties": {
                  "scene_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "design_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "scene_id",
                  "design_id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "scene.design.detach"
              },
              "input": {
                "type": "object",
                "properties": {
                  "scene_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "design_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "scene_id",
                  "design_id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "cut.take.select"
              },
              "input": {
                "type": "object",
                "properties": {
                  "scene_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "asset_id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "format": "uuid"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "required": [
                  "scene_id",
                  "asset_id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "revision": {
                "type": "integer",
                "exclusiveMinimum": 0
              },
              "operation": {
                "type": "string",
                "const": "take.delete"
              },
              "input": {
                "type": "object",
                "properties": {
                  "scene_id": {
                    "type": "string",
                    "format": "uuid"
                  },
                  "asset_id": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "required": [
                  "scene_id",
                  "asset_id"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "revision",
              "operation",
              "input"
            ],
            "additionalProperties": false
          }
        ]
      },
      "StudioMutation": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "changed_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "studio_url": {
            "type": "string"
          }
        },
        "required": [
          "project_id",
          "changed_id",
          "revision",
          "studio_url"
        ],
        "additionalProperties": false
      },
      "StudioWorkflow": {
        "type": "object",
        "properties": {
          "api_runs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "state": {
                  "type": "string"
                },
                "created_at": {
                  "type": "string"
                },
                "completed_at": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "total_steps": {
                  "type": "integer",
                  "minimum": 0
                },
                "completed_steps": {
                  "type": "integer",
                  "minimum": 0
                },
                "error_code": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "state",
                "created_at",
                "completed_at",
                "total_steps",
                "completed_steps",
                "error_code"
              ],
              "additionalProperties": false
            }
          },
          "project_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "studio_url": {
            "type": "string"
          },
          "trash": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "entity_type": {
                  "type": "string",
                  "enum": [
                    "asset",
                    "design"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "deleted_at": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "entity_type",
                "name",
                "deleted_at"
              ],
              "additionalProperties": false
            }
          },
          "assets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "kind": {
                  "type": "string"
                },
                "media_type": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "mime": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "lineage_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "version": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "is_current_version": {
                  "type": "boolean"
                }
              },
              "required": [
                "id",
                "name",
                "kind",
                "media_type",
                "status",
                "mime",
                "lineage_id",
                "version",
                "is_current_version"
              ],
              "additionalProperties": false
            }
          },
          "settings": {
            "type": "object",
            "properties": {
              "title": {
                "type": "string"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "cover": {
                "type": "string"
              },
              "aspect": {
                "type": "string"
              },
              "resolution": {
                "type": "string"
              },
              "style": {
                "type": "string"
              },
              "style_prompt": {
                "type": "string"
              },
              "state": {
                "type": "string"
              }
            },
            "required": [
              "title",
              "tags",
              "cover",
              "aspect",
              "resolution",
              "style",
              "style_prompt",
              "state"
            ],
            "additionalProperties": false
          },
          "script": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string"
              },
              "logline": {
                "type": "string"
              },
              "synopsis": {
                "type": "string"
              }
            },
            "required": [
              "text",
              "logline",
              "synopsis"
            ],
            "additionalProperties": false
          },
          "episodes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "number": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "title": {
                  "type": "string"
                },
                "raw_content": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "number",
                "title",
                "raw_content",
                "description"
              ],
              "additionalProperties": false
            }
          },
          "designs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "character",
                    "scene",
                    "prop",
                    "grid"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "primary_asset_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "kind",
                "name",
                "description",
                "tags",
                "primary_asset_id"
              ],
              "additionalProperties": false
            }
          },
          "scenes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "episode_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "number": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "heading": {
                  "type": "string"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "video_prompt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "episode_id",
                "number",
                "heading",
                "description",
                "video_prompt"
              ],
              "additionalProperties": false
            }
          },
          "scene_designs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "scene_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "design_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "kind": {
                  "type": "string"
                },
                "position": {
                  "type": "integer"
                }
              },
              "required": [
                "scene_id",
                "design_id",
                "kind",
                "position"
              ],
              "additionalProperties": false
            }
          },
          "takes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "scene_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "asset_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "position": {
                  "type": "integer"
                }
              },
              "required": [
                "scene_id",
                "asset_id",
                "position"
              ],
              "additionalProperties": false
            }
          },
          "cut_selections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "scene_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "asset_id": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "required": [
                "scene_id",
                "asset_id"
              ],
              "additionalProperties": false
            }
          },
          "design_assets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "design_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "asset_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "kind": {
                  "type": "string"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "position": {
                  "type": "integer"
                }
              },
              "required": [
                "design_id",
                "asset_id",
                "kind",
                "name",
                "position"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "api_runs",
          "project_id",
          "revision",
          "studio_url",
          "trash",
          "assets",
          "settings",
          "script",
          "episodes",
          "designs",
          "scenes",
          "scene_designs",
          "takes",
          "cut_selections",
          "design_assets"
        ],
        "additionalProperties": false
      },
      "StudioAnalysis": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "script_text": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000000
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "StudioBuild": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "script_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "default": []
          },
          "material_scope": {
            "type": "string",
            "enum": [
              "unclassified",
              "all"
            ],
            "default": "unclassified"
          },
          "preprocess": {
            "type": "object",
            "properties": {
              "ignoreAttachments": {
                "type": "boolean",
                "default": true
              },
              "discardKeywords": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 80
                },
                "maxItems": 100,
                "default": [
                  "提示词",
                  "prompt",
                  "Midjourney",
                  "Stable Diffusion",
                  "DALL-E",
                  "Image1",
                  "Image2",
                  "正向提示词",
                  "负向提示词",
                  "视觉描述",
                  "出图要求",
                  "技术规格",
                  "画面描述",
                  "镜头提示词",
                  "请生成",
                  "角色三视图",
                  "服装本体展示",
                  "局部材质与细节放大"
                ]
              },
              "keepLabels": {
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 80
                },
                "maxItems": 100,
                "default": [
                  "资产名称",
                  "资产ID",
                  "资产版本",
                  "关联角色资产名称",
                  "关联角色资产ID",
                  "关联场景资产名称",
                  "关联场景资产ID",
                  "关联道具资产名称",
                  "关联道具资产ID",
                  "服装变体ID",
                  "服装名称",
                  "道具资产ID",
                  "道具名称",
                  "场景资产ID",
                  "场景名称",
                  "宫格图ID",
                  "集数",
                  "主题",
                  "场景",
                  "角色名称",
                  "用途"
                ]
              }
            },
            "additionalProperties": false
          },
          "rebuild_policy": {
            "type": "string",
            "const": "full_rebuild"
          }
        },
        "required": [
          "revision",
          "rebuild_policy"
        ],
        "additionalProperties": false
      },
      "StudioCutExport": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "allow_partial": {
            "type": "boolean",
            "default": true
          },
          "selections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "scene_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "asset_id": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "required": [
                "scene_id",
                "asset_id"
              ],
              "additionalProperties": false
            },
            "maxItems": 200
          }
        },
        "required": [
          "revision"
        ],
        "additionalProperties": false
      },
      "StudioVideo": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "scene_id": {
            "type": "string",
            "format": "uuid"
          },
          "anchor_asset_id": {
            "type": "string",
            "format": "uuid"
          },
          "reference_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 12
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "default": "video-standard"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 10000
          },
          "duration_seconds": {
            "type": "integer",
            "minimum": 1,
            "maximum": 60
          },
          "resolution": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20
          },
          "aspect_ratio": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20
          },
          "generate_audio": {
            "type": "boolean"
          }
        },
        "required": [
          "revision",
          "scene_id",
          "duration_seconds",
          "resolution",
          "aspect_ratio"
        ],
        "additionalProperties": false
      },
      "StudioImage": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "design_id": {
            "type": "string",
            "format": "uuid"
          },
          "variants": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4,
            "default": 1
          },
          "model": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "default": "image-standard"
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20000
          },
          "aspect_ratio": {
            "type": "string",
            "pattern": "^(auto|[1-9]\\d*:[1-9]\\d*)$"
          },
          "image_size": {
            "type": "string",
            "maxLength": 40
          },
          "quality": {
            "type": "string",
            "enum": [
              "low",
              "medium",
              "high"
            ]
          },
          "background": {
            "type": "string",
            "enum": [
              "auto",
              "opaque",
              "transparent"
            ]
          },
          "output_format": {
            "type": "string",
            "enum": [
              "png",
              "jpeg"
            ]
          },
          "reference_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "maxItems": 16,
            "default": []
          },
          "slot": {
            "type": "string",
            "enum": [
              "primary",
              "variant"
            ],
            "default": "primary"
          },
          "variant_name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "current_asset_id": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "revision",
          "design_id"
        ],
        "additionalProperties": false
      },
      "Uploaded": {
        "type": "object",
        "properties": {
          "uploaded": {
            "type": "boolean",
            "const": true
          }
        },
        "required": [
          "uploaded"
        ],
        "additionalProperties": false
      },
      "PublicCapabilityPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "studio_workflow": {
                  "type": "object",
                  "properties": {
                    "equivalent": {
                      "type": "boolean"
                    },
                    "stages": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "script",
                          "designs",
                          "storyboard",
                          "cut"
                        ]
                      }
                    },
                    "project_access": {
                      "type": "string",
                      "enum": [
                        "read_only",
                        "read_write",
                        "mixed"
                      ]
                    },
                    "gaps": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "operations": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "path": {
                            "type": "string"
                          },
                          "enabled": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "id",
                          "path",
                          "enabled"
                        ],
                        "additionalProperties": false
                      },
                      "default": []
                    },
                    "commands": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "default": []
                    },
                    "image_models": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "enabled": {
                            "type": "boolean"
                          },
                          "aspect_ratios": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "image_sizes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "max_reference_images": {
                            "type": "integer",
                            "minimum": 0
                          },
                          "max_variants": {
                            "type": "integer",
                            "exclusiveMinimum": 0
                          }
                        },
                        "required": [
                          "id",
                          "enabled",
                          "aspect_ratios",
                          "image_sizes",
                          "max_reference_images",
                          "max_variants"
                        ],
                        "additionalProperties": false
                      },
                      "default": []
                    }
                  },
                  "required": [
                    "equivalent",
                    "stages",
                    "project_access",
                    "gaps"
                  ],
                  "additionalProperties": false
                },
                "template_id": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100
                },
                "template_version": {
                  "type": "integer",
                  "minimum": 1
                },
                "enabled": {
                  "type": "boolean"
                },
                "stages": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "output_profiles": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "unsupported_reasons": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 500
                  }
                },
                "max_shots": {
                  "type": "integer",
                  "minimum": 1
                },
                "max_episode_seconds": {
                  "type": "integer",
                  "minimum": 1
                },
                "upload_mime_types": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "max_upload_bytes": {
                  "type": "integer",
                  "minimum": 1
                },
                "upload_limits": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "integer",
                    "exclusiveMinimum": 0
                  }
                },
                "job_types": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "analyze_script",
                      "generate_image",
                      "generate_video",
                      "assemble_video"
                    ]
                  }
                },
                "operations": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string"
                      },
                      "enabled": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "type",
                      "enabled"
                    ],
                    "additionalProperties": false
                  }
                },
                "image_size": {
                  "type": "string"
                },
                "max_reference_images": {
                  "type": "integer"
                }
              },
              "required": [
                "studio_workflow",
                "template_id",
                "template_version",
                "enabled",
                "stages",
                "output_profiles",
                "unsupported_reasons",
                "max_shots",
                "max_episode_seconds",
                "upload_mime_types",
                "max_upload_bytes"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicProjectPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 120
                },
                "revision": {
                  "type": "integer",
                  "minimum": 1
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "active",
                    "archived"
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "client_reference": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 128
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "name",
                "revision",
                "state",
                "created_at",
                "client_reference"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicProject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120
          },
          "revision": {
            "type": "integer",
            "minimum": 1
          },
          "state": {
            "type": "string",
            "enum": [
              "active",
              "archived"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "client_reference": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "name",
          "revision",
          "state",
          "created_at",
          "client_reference"
        ],
        "additionalProperties": false
      },
      "PublicResourcePage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "work_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "revision": {
                  "type": "integer",
                  "minimum": 1
                },
                "content": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "script"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "text": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 900000
                            },
                            "source_asset_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "language": {
                              "type": "string",
                              "minLength": 2,
                              "maxLength": 16
                            }
                          },
                          "required": [
                            "language"
                          ],
                          "additionalProperties": false,
                          "description": "text 또는 source_asset_id 중 하나만 입력하세요."
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "character"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "description": {
                              "type": "string",
                              "maxLength": 4000
                            },
                            "reference_asset_ids": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "maxItems": 8,
                              "default": []
                            }
                          },
                          "required": [
                            "description"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "scene"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "description": {
                              "type": "string",
                              "maxLength": 4000
                            },
                            "reference_asset_ids": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "maxItems": 8,
                              "default": []
                            }
                          },
                          "required": [
                            "description"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "prop"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "description": {
                              "type": "string",
                              "maxLength": 4000
                            },
                            "reference_asset_ids": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "maxItems": 8,
                              "default": []
                            }
                          },
                          "required": [
                            "description"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "episode"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "script_resource_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "sequence": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 100
                            },
                            "raw_content": {
                              "type": "string",
                              "maxLength": 20000
                            },
                            "description": {
                              "type": "string",
                              "maxLength": 4000
                            }
                          },
                          "required": [
                            "script_resource_id",
                            "sequence"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "object",
                      "properties": {
                        "kind": {
                          "type": "string",
                          "const": "shot"
                        },
                        "name": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 80
                        },
                        "data": {
                          "type": "object",
                          "properties": {
                            "episode_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "scene_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "character_ids": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "maxItems": 8,
                              "default": []
                            },
                            "prop_ids": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "format": "uuid"
                              },
                              "maxItems": 8,
                              "default": []
                            },
                            "description": {
                              "type": "string",
                              "maxLength": 4000
                            },
                            "video_prompt": {
                              "anyOf": [
                                {
                                  "type": "string",
                                  "maxLength": 4000
                                },
                                {
                                  "type": "null"
                                }
                              ]
                            },
                            "sequence": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 100
                            },
                            "duration_seconds": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60
                            },
                            "selected_image_asset_id": {
                              "type": "string",
                              "format": "uuid"
                            },
                            "selected_video_asset_id": {
                              "type": "string",
                              "format": "uuid"
                            }
                          },
                          "required": [
                            "episode_id",
                            "description",
                            "duration_seconds"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "required": [
                        "kind",
                        "name",
                        "data"
                      ],
                      "additionalProperties": false
                    }
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "work_id",
                "revision",
                "content",
                "created_at"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicResource": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "minimum": 1
          },
          "content": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "script"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "text": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 900000
                      },
                      "source_asset_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "language": {
                        "type": "string",
                        "minLength": 2,
                        "maxLength": 16
                      }
                    },
                    "required": [
                      "language"
                    ],
                    "additionalProperties": false,
                    "description": "text 또는 source_asset_id 중 하나만 입력하세요."
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "character"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "description": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "reference_asset_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "maxItems": 8,
                        "default": []
                      }
                    },
                    "required": [
                      "description"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "scene"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "description": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "reference_asset_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "maxItems": 8,
                        "default": []
                      }
                    },
                    "required": [
                      "description"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "prop"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "description": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "reference_asset_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "maxItems": 8,
                        "default": []
                      }
                    },
                    "required": [
                      "description"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "episode"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "script_resource_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "sequence": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 100
                      },
                      "raw_content": {
                        "type": "string",
                        "maxLength": 20000
                      },
                      "description": {
                        "type": "string",
                        "maxLength": 4000
                      }
                    },
                    "required": [
                      "script_resource_id",
                      "sequence"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "shot"
                  },
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 80
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "episode_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "scene_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "character_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "maxItems": 8,
                        "default": []
                      },
                      "prop_ids": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "format": "uuid"
                        },
                        "maxItems": 8,
                        "default": []
                      },
                      "description": {
                        "type": "string",
                        "maxLength": 4000
                      },
                      "video_prompt": {
                        "anyOf": [
                          {
                            "type": "string",
                            "maxLength": 4000
                          },
                          {
                            "type": "null"
                          }
                        ]
                      },
                      "sequence": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 100
                      },
                      "duration_seconds": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 60
                      },
                      "selected_image_asset_id": {
                        "type": "string",
                        "format": "uuid"
                      },
                      "selected_video_asset_id": {
                        "type": "string",
                        "format": "uuid"
                      }
                    },
                    "required": [
                      "episode_id",
                      "description",
                      "duration_seconds"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "name",
                  "data"
                ],
                "additionalProperties": false
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "work_id",
          "revision",
          "content",
          "created_at"
        ],
        "additionalProperties": false
      },
      "PublicUploadTicket": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "asset_id": {
            "type": "string",
            "format": "uuid"
          },
          "upload_url": {
            "type": "string",
            "format": "uri"
          },
          "method": {
            "type": "string",
            "enum": [
              "PUT"
            ]
          },
          "content_type": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "asset_id",
          "upload_url",
          "method",
          "content_type",
          "expires_at"
        ],
        "additionalProperties": false
      },
      "PublicAsset": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "state": {
            "type": "string",
            "enum": [
              "pending",
              "verified",
              "ready",
              "errored",
              "expired"
            ]
          },
          "mime_type": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "size_bytes": {
            "type": "integer",
            "minimum": 0
          },
          "download_url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "expires_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "work_id",
          "state",
          "mime_type",
          "size_bytes",
          "download_url",
          "expires_at"
        ],
        "additionalProperties": false
      },
      "PublicPlan": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "project_revision": {
            "type": "integer",
            "minimum": 1
          },
          "template_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "template_version": {
            "type": "integer",
            "minimum": 1
          },
          "executable": {
            "type": "boolean"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "budget_ceiling": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$"
                  },
                  "micro_units": {
                    "type": "string",
                    "pattern": "^[0-9]+$"
                  }
                },
                "required": [
                  "currency",
                  "micro_units"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "steps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "stage_key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100
                },
                "target_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "depends_on": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 100
                  }
                },
                "requires_review": {
                  "type": "boolean"
                },
                "max_cost": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "currency": {
                          "type": "string",
                          "pattern": "^[A-Z]{3}$"
                        },
                        "micro_units": {
                          "type": "string",
                          "pattern": "^[0-9]+$"
                        }
                      },
                      "required": [
                        "currency",
                        "micro_units"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "stage_key",
                "target_ids",
                "depends_on",
                "requires_review",
                "max_cost"
              ],
              "additionalProperties": false
            }
          },
          "unsupported_reasons": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 500
            }
          }
        },
        "required": [
          "id",
          "work_id",
          "project_revision",
          "template_id",
          "template_version",
          "executable",
          "expires_at",
          "budget_ceiling",
          "steps",
          "unsupported_reasons"
        ],
        "additionalProperties": false
      },
      "PublicRun": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "plan_id": {
            "type": "string",
            "format": "uuid"
          },
          "version": {
            "type": "integer",
            "minimum": 1
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "awaiting_review",
              "stopping",
              "paused",
              "needs_attention",
              "partially_succeeded",
              "succeeded",
              "failed",
              "cancelled"
            ]
          },
          "client_reference": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "budget_remaining": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "pattern": "^[A-Z]{3}$"
              },
              "micro_units": {
                "type": "string",
                "pattern": "^[0-9]+$"
              }
            },
            "required": [
              "currency",
              "micro_units"
            ],
            "additionalProperties": false
          },
          "committed_cost": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$"
                  },
                  "micro_units": {
                    "type": "string",
                    "pattern": "^[0-9]+$"
                  }
                },
                "required": [
                  "currency",
                  "micro_units"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "unresolved_cost": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$"
                  },
                  "micro_units": {
                    "type": "string",
                    "pattern": "^[0-9]+$"
                  }
                },
                "required": [
                  "currency",
                  "micro_units"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "output_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "id",
          "work_id",
          "plan_id",
          "version",
          "state",
          "client_reference",
          "created_at",
          "completed_at",
          "budget_remaining",
          "committed_cost",
          "unresolved_cost",
          "output_asset_ids"
        ],
        "additionalProperties": false
      },
      "PublicRunPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "work_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "plan_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "version": {
                  "type": "integer",
                  "minimum": 1
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "queued",
                    "running",
                    "awaiting_review",
                    "stopping",
                    "paused",
                    "needs_attention",
                    "partially_succeeded",
                    "succeeded",
                    "failed",
                    "cancelled"
                  ]
                },
                "client_reference": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 128
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "completed_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "budget_remaining": {
                  "type": "object",
                  "properties": {
                    "currency": {
                      "type": "string",
                      "pattern": "^[A-Z]{3}$"
                    },
                    "micro_units": {
                      "type": "string",
                      "pattern": "^[0-9]+$"
                    }
                  },
                  "required": [
                    "currency",
                    "micro_units"
                  ],
                  "additionalProperties": false
                },
                "committed_cost": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "currency": {
                          "type": "string",
                          "pattern": "^[A-Z]{3}$"
                        },
                        "micro_units": {
                          "type": "string",
                          "pattern": "^[0-9]+$"
                        }
                      },
                      "required": [
                        "currency",
                        "micro_units"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "unresolved_cost": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "currency": {
                          "type": "string",
                          "pattern": "^[A-Z]{3}$"
                        },
                        "micro_units": {
                          "type": "string",
                          "pattern": "^[0-9]+$"
                        }
                      },
                      "required": [
                        "currency",
                        "micro_units"
                      ],
                      "additionalProperties": false
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "output_asset_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                }
              },
              "required": [
                "id",
                "work_id",
                "plan_id",
                "version",
                "state",
                "client_reference",
                "created_at",
                "completed_at",
                "budget_remaining",
                "committed_cost",
                "unresolved_cost",
                "output_asset_ids"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicStepPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "run_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "stage_key": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 100
                },
                "target_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "job_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "blocked",
                    "ready",
                    "queued",
                    "running",
                    "awaiting_review",
                    "succeeded",
                    "failed",
                    "cancelled",
                    "unknown"
                  ]
                },
                "output_asset_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "error_code": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "ordinal": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "run_id",
                "stage_key",
                "target_id",
                "job_id",
                "state",
                "output_asset_ids",
                "error_code",
                "ordinal"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicRunEventPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "event_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "run_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "sequence": {
                  "type": "integer",
                  "minimum": 1
                },
                "type": {
                  "type": "string",
                  "enum": [
                    "run.state_changed",
                    "run.review_required",
                    "run.result_ready",
                    "run.needs_attention"
                  ]
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "queued",
                    "running",
                    "awaiting_review",
                    "stopping",
                    "paused",
                    "needs_attention",
                    "partially_succeeded",
                    "succeeded",
                    "failed",
                    "cancelled"
                  ]
                },
                "step_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "event_id",
                "run_id",
                "sequence",
                "type",
                "state",
                "step_id",
                "created_at"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicJob": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "run_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "ready",
              "blocked",
              "processing",
              "awaiting_review",
              "succeeded",
              "failed",
              "cancelled",
              "needs_review"
            ]
          },
          "output_asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "resource_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "skipped_scene_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          }
        },
        "required": [
          "id",
          "work_id",
          "run_id",
          "state",
          "output_asset_ids",
          "error_code"
        ],
        "additionalProperties": false
      },
      "PublicRequestLogPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "request_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "method": {
                  "type": "string",
                  "enum": [
                    "GET",
                    "POST",
                    "PATCH",
                    "PUT"
                  ]
                },
                "route_template": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 300
                },
                "status_code": {
                  "type": "integer",
                  "minimum": 100,
                  "maximum": 599
                },
                "duration_ms": {
                  "type": "integer",
                  "minimum": 0
                },
                "actor_kind": {
                  "type": "string",
                  "enum": [
                    "api_key",
                    "console"
                  ]
                },
                "work_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "run_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "job_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "replayed": {
                  "type": "boolean"
                },
                "error_code": {
                  "anyOf": [
                    {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "request_id",
                "created_at",
                "method",
                "route_template",
                "status_code",
                "duration_ms",
                "actor_kind",
                "work_id",
                "run_id",
                "job_id",
                "replayed",
                "error_code"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicRequestLog": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string",
            "format": "uuid"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "method": {
            "type": "string",
            "enum": [
              "GET",
              "POST",
              "PATCH",
              "PUT"
            ]
          },
          "route_template": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300
          },
          "status_code": {
            "type": "integer",
            "minimum": 100,
            "maximum": 599
          },
          "duration_ms": {
            "type": "integer",
            "minimum": 0
          },
          "actor_kind": {
            "type": "string",
            "enum": [
              "api_key",
              "console"
            ]
          },
          "work_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "run_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "job_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          },
          "replayed": {
            "type": "boolean"
          },
          "error_code": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 100
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "request_id",
          "created_at",
          "method",
          "route_template",
          "status_code",
          "duration_ms",
          "actor_kind",
          "work_id",
          "run_id",
          "job_id",
          "replayed",
          "error_code"
        ],
        "additionalProperties": false
      },
      "PublicUsage": {
        "type": "object",
        "properties": {
          "period_start": {
            "type": "string",
            "format": "date-time"
          },
          "period_end": {
            "type": "string",
            "format": "date-time"
          },
          "as_of": {
            "type": "string",
            "format": "date-time"
          },
          "http_requests": {
            "type": "integer",
            "minimum": 0
          },
          "runs": {
            "type": "integer",
            "minimum": 0
          },
          "jobs": {
            "type": "integer",
            "minimum": 0
          },
          "reserved": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "pattern": "^[A-Z]{3}$"
              },
              "micro_units": {
                "type": "string",
                "pattern": "^[0-9]+$"
              }
            },
            "required": [
              "currency",
              "micro_units"
            ],
            "additionalProperties": false
          },
          "committed": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "pattern": "^[A-Z]{3}$"
              },
              "micro_units": {
                "type": "string",
                "pattern": "^[0-9]+$"
              }
            },
            "required": [
              "currency",
              "micro_units"
            ],
            "additionalProperties": false
          },
          "unresolved": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "currency": {
                    "type": "string",
                    "pattern": "^[A-Z]{3}$"
                  },
                  "micro_units": {
                    "type": "string",
                    "pattern": "^[0-9]+$"
                  }
                },
                "required": [
                  "currency",
                  "micro_units"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "remaining": {
            "type": "object",
            "properties": {
              "currency": {
                "type": "string",
                "pattern": "^[A-Z]{3}$"
              },
              "micro_units": {
                "type": "string",
                "pattern": "^[0-9]+$"
              }
            },
            "required": [
              "currency",
              "micro_units"
            ],
            "additionalProperties": false
          },
          "amount_basis": {
            "type": "string",
            "enum": [
              "partner_limit"
            ]
          },
          "billing_mode": {
            "type": "string",
            "enum": [
              "pilot",
              "contract"
            ]
          }
        },
        "required": [
          "period_start",
          "period_end",
          "as_of",
          "http_requests",
          "runs",
          "jobs",
          "reserved",
          "committed",
          "unresolved",
          "remaining",
          "amount_basis",
          "billing_mode"
        ],
        "additionalProperties": false
      },
      "PublicWebhookEndpointPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "work_ids": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "format": "uuid"
                  }
                },
                "events": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "run.state_changed",
                      "run.review_required",
                      "run.result_ready",
                      "run.needs_attention"
                    ]
                  }
                },
                "enabled": {
                  "type": "boolean"
                },
                "verified": {
                  "type": "boolean"
                },
                "secret_version": {
                  "type": "integer",
                  "minimum": 1
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "url",
                "work_ids",
                "events",
                "enabled",
                "verified",
                "secret_version",
                "created_at"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicWebhookIssued": {
        "type": "object",
        "properties": {
          "endpoint": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "work_ids": {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "events": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "run.state_changed",
                    "run.review_required",
                    "run.result_ready",
                    "run.needs_attention"
                  ]
                }
              },
              "enabled": {
                "type": "boolean"
              },
              "verified": {
                "type": "boolean"
              },
              "secret_version": {
                "type": "integer",
                "minimum": 1
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "required": [
              "id",
              "url",
              "work_ids",
              "events",
              "enabled",
              "verified",
              "secret_version",
              "created_at"
            ],
            "additionalProperties": false
          },
          "signing_secret": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          }
        },
        "required": [
          "endpoint"
        ],
        "additionalProperties": false
      },
      "PublicWebhookEndpoint": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "work_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "run.state_changed",
                "run.review_required",
                "run.result_ready",
                "run.needs_attention"
              ]
            }
          },
          "enabled": {
            "type": "boolean"
          },
          "verified": {
            "type": "boolean"
          },
          "secret_version": {
            "type": "integer",
            "minimum": 1
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "url",
          "work_ids",
          "events",
          "enabled",
          "verified",
          "secret_version",
          "created_at"
        ],
        "additionalProperties": false
      },
      "PublicWebhookDeliveryPage": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "endpoint_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "event_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "pending",
                    "sending",
                    "succeeded",
                    "retrying",
                    "exhausted"
                  ]
                },
                "attempt": {
                  "type": "integer",
                  "minimum": 0
                },
                "http_status": {
                  "anyOf": [
                    {
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "next_attempt_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "date-time"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "endpoint_id",
                "event_id",
                "state",
                "attempt",
                "http_status",
                "next_attempt_at",
                "created_at"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "maxLength": 500
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicWebhookDelivery": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "endpoint_id": {
            "type": "string",
            "format": "uuid"
          },
          "event_id": {
            "type": "string",
            "format": "uuid"
          },
          "state": {
            "type": "string",
            "enum": [
              "pending",
              "sending",
              "succeeded",
              "retrying",
              "exhausted"
            ]
          },
          "attempt": {
            "type": "integer",
            "minimum": 0
          },
          "http_status": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "next_attempt_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "endpoint_id",
          "event_id",
          "state",
          "attempt",
          "http_status",
          "next_attempt_at",
          "created_at"
        ],
        "additionalProperties": false
      },
      "PublicUploaded": {
        "type": "object",
        "properties": {
          "uploaded": {
            "type": "boolean",
            "const": true
          }
        },
        "required": [
          "uploaded"
        ],
        "additionalProperties": false
      },
      "PublicStudioWorkflow": {
        "type": "object",
        "properties": {
          "api_runs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "state": {
                  "type": "string"
                },
                "created_at": {
                  "type": "string"
                },
                "completed_at": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "total_steps": {
                  "type": "integer",
                  "minimum": 0
                },
                "completed_steps": {
                  "type": "integer",
                  "minimum": 0
                },
                "error_code": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "state",
                "created_at",
                "completed_at",
                "total_steps",
                "completed_steps",
                "error_code"
              ],
              "additionalProperties": false
            }
          },
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "studio_url": {
            "type": "string"
          },
          "trash": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "entity_type": {
                  "type": "string",
                  "enum": [
                    "asset",
                    "design"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "deleted_at": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "entity_type",
                "name",
                "deleted_at"
              ],
              "additionalProperties": false
            }
          },
          "assets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "kind": {
                  "type": "string"
                },
                "media_type": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "mime": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "lineage_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "version": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "is_current_version": {
                  "type": "boolean"
                }
              },
              "required": [
                "id",
                "name",
                "kind",
                "media_type",
                "status",
                "mime",
                "lineage_id",
                "version",
                "is_current_version"
              ],
              "additionalProperties": false
            }
          },
          "settings": {
            "type": "object",
            "properties": {
              "title": {
                "type": "string"
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "cover": {
                "type": "string"
              },
              "aspect": {
                "type": "string"
              },
              "resolution": {
                "type": "string"
              },
              "style": {
                "type": "string"
              },
              "style_prompt": {
                "type": "string"
              },
              "state": {
                "type": "string"
              }
            },
            "required": [
              "title",
              "tags",
              "cover",
              "aspect",
              "resolution",
              "style",
              "style_prompt",
              "state"
            ],
            "additionalProperties": false
          },
          "script": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string"
              },
              "logline": {
                "type": "string"
              },
              "synopsis": {
                "type": "string"
              }
            },
            "required": [
              "text",
              "logline",
              "synopsis"
            ],
            "additionalProperties": false
          },
          "episodes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "number": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "title": {
                  "type": "string"
                },
                "raw_content": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "number",
                "title",
                "raw_content",
                "description"
              ],
              "additionalProperties": false
            }
          },
          "designs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "character",
                    "scene",
                    "prop",
                    "grid"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "primary_asset_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "kind",
                "name",
                "description",
                "tags",
                "primary_asset_id"
              ],
              "additionalProperties": false
            }
          },
          "scenes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "episode_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "number": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "heading": {
                  "type": "string"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "video_prompt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "episode_id",
                "number",
                "heading",
                "description",
                "video_prompt"
              ],
              "additionalProperties": false
            }
          },
          "scene_designs": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "scene_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "design_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "kind": {
                  "type": "string"
                },
                "position": {
                  "type": "integer"
                }
              },
              "required": [
                "scene_id",
                "design_id",
                "kind",
                "position"
              ],
              "additionalProperties": false
            }
          },
          "takes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "scene_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "asset_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "position": {
                  "type": "integer"
                }
              },
              "required": [
                "scene_id",
                "asset_id",
                "position"
              ],
              "additionalProperties": false
            }
          },
          "cut_selections": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "scene_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "asset_id": {
                  "type": "string",
                  "format": "uuid"
                }
              },
              "required": [
                "scene_id",
                "asset_id"
              ],
              "additionalProperties": false
            }
          },
          "design_assets": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "design_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "asset_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "kind": {
                  "type": "string"
                },
                "name": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "position": {
                  "type": "integer"
                }
              },
              "required": [
                "design_id",
                "asset_id",
                "kind",
                "name",
                "position"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "api_runs",
          "work_id",
          "revision",
          "studio_url",
          "trash",
          "assets",
          "settings",
          "script",
          "episodes",
          "designs",
          "scenes",
          "scene_designs",
          "takes",
          "cut_selections",
          "design_assets"
        ],
        "additionalProperties": false
      },
      "PublicStudioMutation": {
        "type": "object",
        "properties": {
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "changed_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "studio_url": {
            "type": "string"
          }
        },
        "required": [
          "work_id",
          "changed_id",
          "revision",
          "studio_url"
        ],
        "additionalProperties": false
      },
      "PublicStudioLibrary": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "kind": {
                  "type": "string"
                },
                "media_type": {
                  "type": "string"
                },
                "mime": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "version": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "is_current_version": {
                  "type": "boolean"
                }
              },
              "required": [
                "id",
                "name",
                "kind",
                "media_type",
                "mime",
                "version",
                "is_current_version"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicStudioBuildProgress": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "run_id": {
            "type": "string",
            "format": "uuid"
          },
          "run_version": {
            "type": "integer"
          },
          "state": {
            "type": "string"
          },
          "wait_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "stage": {
            "type": [
              "string",
              "null"
            ]
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "role": {
                  "type": "string",
                  "enum": [
                    "assistant",
                    "system_note"
                  ]
                },
                "stage": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "content": {
                  "type": "string"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "streaming",
                    "final"
                  ]
                },
                "seq": {
                  "type": "number"
                },
                "created_at": {
                  "type": "string"
                },
                "updated_at": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "role",
                "stage",
                "content",
                "status",
                "seq",
                "created_at",
                "updated_at"
              ],
              "additionalProperties": false
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "name": {
                  "type": "string"
                },
                "filterMode": {
                  "type": "string",
                  "enum": [
                    "prompt_index",
                    "full_text"
                  ]
                },
                "sourceText": {
                  "type": "string"
                },
                "llmText": {
                  "type": "string"
                },
                "originalChars": {
                  "type": "number"
                },
                "preparedChars": {
                  "type": "number"
                }
              },
              "required": [
                "id",
                "name",
                "filterMode",
                "sourceText",
                "llmText",
                "originalChars",
                "preparedChars"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "id",
          "state",
          "stage",
          "messages",
          "sources"
        ],
        "additionalProperties": false
      },
      "PublicReferencePage": {
        "type": "object",
        "properties": {
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "kind": {
                  "type": "string",
                  "enum": [
                    "character",
                    "scene",
                    "prop",
                    "grid"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "tags": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "primary_asset_id": {
                  "anyOf": [
                    {
                      "type": "string",
                      "format": "uuid"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "id",
                "kind",
                "name",
                "description",
                "tags",
                "primary_asset_id"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "work_id",
          "revision",
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicReference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string",
            "enum": [
              "character",
              "scene",
              "prop",
              "grid"
            ]
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "primary_asset_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "kind",
          "name",
          "description",
          "tags",
          "primary_asset_id"
        ],
        "additionalProperties": false
      },
      "PublicEpisodePage": {
        "type": "object",
        "properties": {
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "number": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "title": {
                  "type": "string"
                },
                "raw_content": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "number",
                "title",
                "raw_content",
                "description"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "work_id",
          "revision",
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicEpisode": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "title": {
            "type": "string"
          },
          "raw_content": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "number",
          "title",
          "raw_content",
          "description"
        ],
        "additionalProperties": false
      },
      "PublicScenePage": {
        "type": "object",
        "properties": {
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "revision": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "episode_id": {
                  "type": "string",
                  "format": "uuid"
                },
                "number": {
                  "type": "integer",
                  "exclusiveMinimum": 0
                },
                "heading": {
                  "type": "string"
                },
                "description": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "video_prompt": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "episode_id",
                "number",
                "heading",
                "description",
                "video_prompt"
              ],
              "additionalProperties": false
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "work_id",
          "revision",
          "items",
          "next_cursor"
        ],
        "additionalProperties": false
      },
      "PublicScene": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "episode_id": {
            "type": "string",
            "format": "uuid"
          },
          "number": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "heading": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "video_prompt": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "episode_id",
          "number",
          "heading",
          "description",
          "video_prompt"
        ],
        "additionalProperties": false
      },
      "PublicArchiveImport": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "state": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "deferred",
              "succeeded",
              "failed",
              "cancelled"
            ]
          },
          "progress": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "phase": {
                    "type": "string",
                    "enum": [
                      "extracting",
                      "importing"
                    ]
                  },
                  "current": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "total": {
                    "type": "integer",
                    "minimum": 0
                  }
                },
                "required": [
                  "phase",
                  "current",
                  "total"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "imported": {
            "type": "integer",
            "minimum": 0
          },
          "failed": {
            "type": "integer",
            "minimum": 0
          },
          "asset_ids": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "error_code": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "work_id",
          "state",
          "progress",
          "imported",
          "failed",
          "asset_ids",
          "error_code"
        ],
        "additionalProperties": false
      },
      "PublicUploadBatch": {
        "type": "object",
        "properties": {
          "work_id": {
            "type": "string",
            "format": "uuid"
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "filename": {
                  "type": "string"
                },
                "ticket": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "asset_id": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "upload_url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "method": {
                      "type": "string",
                      "enum": [
                        "PUT"
                      ]
                    },
                    "content_type": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "expires_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  },
                  "required": [
                    "id",
                    "asset_id",
                    "upload_url",
                    "method",
                    "content_type",
                    "expires_at"
                  ],
                  "additionalProperties": false
                }
              },
              "required": [
                "filename",
                "ticket"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "work_id",
          "items"
        ],
        "additionalProperties": false
      }
    }
  },
  "x-documentation-language": "ko",
  "tags": [
    {
      "name": "지원 기능",
      "description": "지원 기능",
      "x-tag-id": "capabilities"
    },
    {
      "name": "작품·제작 자료",
      "description": "작품·제작 자료",
      "x-tag-id": "projects"
    },
    {
      "name": "업로드",
      "description": "업로드",
      "x-tag-id": "uploads"
    },
    {
      "name": "자산·결과",
      "description": "자산·결과",
      "x-tag-id": "assets"
    },
    {
      "name": "제작 실행",
      "description": "제작 실행",
      "x-tag-id": "runs"
    },
    {
      "name": "워크플로 기능",
      "description": "워크플로 기능",
      "x-tag-id": "jobs"
    },
    {
      "name": "요청 로그",
      "description": "요청 로그",
      "x-tag-id": "requests"
    },
    {
      "name": "사용량",
      "description": "사용량",
      "x-tag-id": "usage"
    },
    {
      "name": "Webhook",
      "description": "Webhook",
      "x-tag-id": "webhook-endpoints"
    },
    {
      "name": "Webhook 전송",
      "description": "Webhook 전송",
      "x-tag-id": "webhook-deliveries"
    },
    {
      "name": "명세서",
      "description": "명세서",
      "x-tag-id": "Documentation"
    }
  ]
}
