"""Organization schemas""" from pydantic import BaseModel, Field from typing import Optional, Dict, Any, List from datetime import datetime from app.models.organization import OrganizationPlatformEnum class OrganizationBase(BaseModel): """Base organization schema""" name: str = Field(..., description="Organization name") platform: OrganizationPlatformEnum = Field(..., description="Git platform") base_url: str = Field(..., description="Base URL (e.g., https://git.example.com)") config: Optional[Dict[str, Any]] = Field(default_factory=dict, description="Review configuration") class OrganizationCreate(OrganizationBase): """Schema for creating organization""" api_token: Optional[str] = Field(None, description="API token (optional, uses master token if not set)") webhook_secret: Optional[str] = Field(None, description="Webhook secret (generated if not provided)") class OrganizationUpdate(BaseModel): """Schema for updating organization""" name: Optional[str] = None base_url: Optional[str] = None api_token: Optional[str] = None webhook_secret: Optional[str] = None config: Optional[Dict[str, Any]] = None is_active: Optional[bool] = None class OrganizationResponse(OrganizationBase): """Schema for organization response""" id: int is_active: bool last_scan_at: Optional[datetime] created_at: datetime updated_at: datetime webhook_url: str = Field(..., description="Webhook URL for this organization") class Config: from_attributes = True class OrganizationList(BaseModel): """Schema for organization list response""" items: List[OrganizationResponse] total: int class OrganizationScanResult(BaseModel): """Schema for organization scan result""" organization_id: int repositories_found: int repositories_added: int pull_requests_found: int tasks_created: int errors: List[str] = []