70 lines
1.6 KiB
Python
70 lines
1.6 KiB
Python
"""Revision API schemas."""
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel
|
|
|
|
from app.domain.enums import ReviewDecision, ReviewTaskStatus
|
|
|
|
|
|
class RegisterRevisionRequest(BaseModel):
|
|
"""Request payload for registering a manual revision asset."""
|
|
|
|
parent_asset_id: int
|
|
uploaded_uri: str
|
|
reviewer_id: int
|
|
comment: str | None = None
|
|
|
|
|
|
class RegisterRevisionResponse(BaseModel):
|
|
"""Response returned after a manual revision has been registered."""
|
|
|
|
order_id: int
|
|
workflow_id: str
|
|
asset_id: int
|
|
parent_asset_id: int
|
|
root_asset_id: int
|
|
version_no: int
|
|
review_task_status: ReviewTaskStatus
|
|
latest_revision_asset_id: int
|
|
revision_count: int
|
|
|
|
|
|
class RevisionChainItem(BaseModel):
|
|
"""One item in the manual revision chain."""
|
|
|
|
asset_id: int
|
|
order_id: int
|
|
parent_asset_id: int | None
|
|
root_asset_id: int | None
|
|
version_no: int
|
|
is_current_version: bool
|
|
uri: str
|
|
created_at: datetime
|
|
|
|
|
|
class RevisionChainResponse(BaseModel):
|
|
"""Response returned when listing a revision chain."""
|
|
|
|
order_id: int
|
|
latest_revision_asset_id: int | None = None
|
|
revision_count: int = 0
|
|
items: list[RevisionChainItem]
|
|
|
|
|
|
class ConfirmRevisionRequest(BaseModel):
|
|
"""Request payload for confirming a manual revision."""
|
|
|
|
reviewer_id: int
|
|
comment: str | None = None
|
|
|
|
|
|
class ConfirmRevisionResponse(BaseModel):
|
|
"""Response returned after confirming a manual revision."""
|
|
|
|
order_id: int
|
|
workflow_id: str
|
|
revision_asset_id: int
|
|
decision: ReviewDecision
|
|
status: str
|