Manim-Agent / shared /schemas /render_api.py
github-actions[bot]
[API] Cuong2004/Manim-Agent @ 1d7c417 (run 25583057312)
9bed109
from __future__ import annotations
from datetime import datetime
from typing import Any, Literal
from uuid import UUID
from pydantic import BaseModel, ConfigDict, Field, HttpUrl
from shared.schemas.render_job import RenderQuality
class RenderEnqueueBody(BaseModel):
model_config = ConfigDict(extra="forbid")
render_type: Literal["preview", "full"] = "preview"
quality: RenderQuality = "720p"
webhook_url: HttpUrl | None = None
scene_id: UUID | None = Field(
default=None,
description="When set, worker renders `manim_code` from this scene (class GeneratedScene).",
)
class RenderEnqueueResponse(BaseModel):
model_config = ConfigDict(extra="forbid")
job_id: UUID
status: Literal["queued"] = "queued"
class RenderJobStatusResponse(BaseModel):
"""`RenderJob` fields exposed by `GET /v1/jobs/{job_id}`."""
model_config = ConfigDict(extra="forbid")
id: UUID
project_id: UUID
scene_id: UUID | None = Field(
default=None,
description="Source scene when render was enqueued with scene_id.",
)
job_type: Literal["preview", "full"]
render_quality: RenderQuality | None = None
status: Literal["queued", "rendering", "completed", "failed", "cancelled"]
progress: int = Field(default=0, ge=0, le=100)
logs: str | None = None
asset_url: str | None = None
error_code: str | None = None
webhook_url: str | None = None
docker_image_tag: str | None = None
created_at: datetime
started_at: datetime | None = None
completed_at: datetime | None = None
metadata: dict[str, Any] = Field(default_factory=dict)