42 lines
938 B
Python
42 lines
938 B
Python
|
|
"""Pydantic schemas for the Permissions plugin."""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from datetime import datetime
|
||
|
|
|
||
|
|
from pydantic import BaseModel, Field
|
||
|
|
|
||
|
|
|
||
|
|
class PermissionGrantRequest(BaseModel):
|
||
|
|
user_id: str
|
||
|
|
group_id: str | None = None
|
||
|
|
access_level: str = Field("read", pattern="^(read|write)$")
|
||
|
|
|
||
|
|
|
||
|
|
class PermissionResponse(BaseModel):
|
||
|
|
id: str
|
||
|
|
file_id: str
|
||
|
|
user_id: str
|
||
|
|
group_id: str | None = None
|
||
|
|
access_level: str
|
||
|
|
|
||
|
|
|
||
|
|
class ShareLinkCreateRequest(BaseModel):
|
||
|
|
password: str | None = Field(None, min_length=4, max_length=100)
|
||
|
|
expires_at: datetime | None = None
|
||
|
|
access_level: str = Field("download", pattern="^(download|preview)$")
|
||
|
|
|
||
|
|
|
||
|
|
class ShareLinkResponse(BaseModel):
|
||
|
|
id: str
|
||
|
|
file_id: str
|
||
|
|
token: str
|
||
|
|
public_url: str
|
||
|
|
expires_at: datetime | None = None
|
||
|
|
access_level: str
|
||
|
|
has_password: bool
|
||
|
|
|
||
|
|
|
||
|
|
class ShareLinkVerifyRequest(BaseModel):
|
||
|
|
password: str | None = None
|