from pydantic import BaseModel class SystemCreateRequest(BaseModel): system_key: str name: str status: str = "active" class SystemUpdateRequest(BaseModel): name: str | None = None status: str | None = None class SystemItem(BaseModel): id: str system_key: str name: str status: str class ModuleCreateRequest(BaseModel): system_key: str module_key: str name: str status: str = "active" class ModuleUpdateRequest(BaseModel): name: str | None = None status: str | None = None class ModuleItem(BaseModel): id: str system_key: str | None = None module_key: str name: str status: str class CompanyCreateRequest(BaseModel): company_key: str name: str status: str = "active" class CompanyUpdateRequest(BaseModel): name: str | None = None status: str | None = None class CompanyItem(BaseModel): id: str company_key: str name: str status: str class SiteCreateRequest(BaseModel): site_key: str company_key: str name: str status: str = "active" class SiteUpdateRequest(BaseModel): company_key: str | None = None name: str | None = None status: str | None = None class SiteItem(BaseModel): id: str site_key: str company_key: str name: str status: str class MemberItem(BaseModel): id: str authentik_sub: str email: str | None = None display_name: str | None = None is_active: bool class MemberUpsertRequest(BaseModel): authentik_sub: str | None = None email: str | None = None display_name: str | None = None is_active: bool = True sync_to_authentik: bool = True class MemberUpdateRequest(BaseModel): email: str | None = None display_name: str | None = None is_active: bool | None = None sync_to_authentik: bool = True class ListResponse(BaseModel): items: list total: int limit: int offset: int class PermissionGroupCreateRequest(BaseModel): group_key: str name: str status: str = "active" class PermissionGroupUpdateRequest(BaseModel): name: str | None = None status: str | None = None class PermissionGroupItem(BaseModel): id: str group_key: str name: str status: str