from typing import Any from pydantic import BaseModel, Field from app.modules.writebacks.constants import WRITEBACK_DEFAULT_ACTION class WritebackCreateRequest(BaseModel): domain: str = Field(..., min_length=1) record_id: str | None = None action: str = Field(default=WRITEBACK_DEFAULT_ACTION, min_length=1) payload: dict[str, Any] = Field(default_factory=dict) idempotency_key: str | None = None class WritebackSubmitRequest(BaseModel): approval_ticket_id: str | None = None class WritebackRead(BaseModel): code: str domain: str record_id: str | None action: str actor: str status: str approval_ticket_id: str | None idempotency_key: str | None request_payload: dict[str, Any] | None provider_response: dict[str, Any] | None error_message: str | None created_at: str updated_at: str submitted_at: str | None sent_at: str | None