"""Schemas for universal entity permissions.""" from __future__ import annotations from datetime import datetime from pydantic import BaseModel, Field class EntityPermissionCreate(BaseModel): principal_type: str = Field(..., pattern="^(user|group|role|guest)$") principal_id: str permission_level: str = Field("read", pattern="^(none|read|write|admin|delete)$") expires_at: datetime | None = None class EntityPermissionUpdate(BaseModel): permission_level: str = Field(..., pattern="^(none|read|write|admin|delete)$") expires_at: datetime | None = None class EntityPermissionResponse(BaseModel): id: str entity_type: str entity_id: str principal_type: str principal_id: str principal_name: str | None = None permission_level: str expires_at: str | None = None created_by: str | None = None created_at: str | None = None class EntityPermissionListResponse(BaseModel): items: list[EntityPermissionResponse] total: int class EntityAccessResponse(BaseModel): entity_type: str entity_id: str access_level: str is_owner: bool is_shared: bool