44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
"""Schemas for contact folder permissions (ACLs)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class FolderPermissionCreate(BaseModel):
|
|
user_id: str | None = None
|
|
group_id: str | None = None
|
|
permission_level: str = Field("read", pattern="^(none|read|write|admin)$")
|
|
inherit_to_subfolders: bool = True
|
|
|
|
|
|
class FolderPermissionUpdate(BaseModel):
|
|
permission_level: str = Field(..., pattern="^(none|read|write|admin)$")
|
|
inherit_to_subfolders: bool | None = None
|
|
|
|
|
|
class FolderPermissionResponse(BaseModel):
|
|
id: str
|
|
folder_id: str
|
|
user_id: str | None = None
|
|
group_id: str | None = None
|
|
user_name: str | None = None
|
|
group_name: str | None = None
|
|
permission_level: str
|
|
inherit_to_subfolders: bool
|
|
created_at: str | None = None
|
|
|
|
|
|
class FolderPermissionListResponse(BaseModel):
|
|
items: list[FolderPermissionResponse]
|
|
total: int
|
|
|
|
|
|
class FolderAccessInfo(BaseModel):
|
|
"""Effective access level for the current user on a folder."""
|
|
folder_id: str
|
|
access_level: str # none | read | write | admin | owner
|
|
is_owner: bool
|
|
is_shared: bool
|
|
inherited_from: str | None = None # parent folder id if inherited
|