40 lines
1.2 KiB
Python

from datetime import datetime
from typing import Optional
from pydantic import BaseModel, Field, validator
class SecretBase(BaseModel):
content: str = Field(..., description="The secret content to be shared")
ttl_hours: Optional[int] = Field(24, description="Time to live in hours. Default is 24 hours.")
@validator("ttl_hours")
def validate_ttl_hours(cls, v):
if v is not None and (v < 1 or v > 168): # Max 7 days (168 hours)
raise ValueError("TTL must be between 1 and 168 hours (7 days)")
return v
class SecretCreate(SecretBase):
pass
class SecretRetrieve(BaseModel):
access_key: str = Field(..., description="The access key to retrieve the secret")
class SecretCreated(BaseModel):
access_key: str = Field(..., description="The access key to retrieve the secret")
expires_at: datetime = Field(..., description="When the secret will expire")
secret_url: Optional[str] = Field(None, description="Full URL to retrieve the secret")
class Config:
orm_mode = True
class SecretRead(BaseModel):
content: str = Field(..., description="The secret content")
created_at: datetime = Field(..., description="When the secret was created")
class Config:
orm_mode = True