Files

45 lines
1.2 KiB
Python

"""Pydantic schemas for DATEV export request and response bodies."""
import uuid
from datetime import date, datetime
from decimal import Decimal
from typing import Optional
from pydantic import BaseModel, ConfigDict, Field, model_validator
class DATEVExportCreate(BaseModel):
"""POST /api/v1/datev/export request body."""
start_date: date = Field(..., description="Start date of the export range")
end_date: date = Field(..., description="End date of the export range (inclusive)")
@model_validator(mode="after")
def validate_date_range(self) -> "DATEVExportCreate":
"""Ensure start_date is not after end_date."""
if self.start_date > self.end_date:
raise ValueError("start_date must not be after end_date")
return self
class DATEVExportResponse(BaseModel):
"""DATEV export response schema."""
model_config = ConfigDict(from_attributes=True)
id: uuid.UUID
start_date: date
end_date: date
file_path: Optional[str] = None
total_amount: Decimal
created_at: Optional[datetime] = None
class DATEVExportListResponse(BaseModel):
"""Paginated DATEV export list response."""
items: list[DATEVExportResponse]
total: int
page: int
page_size: int