40 lines
1.2 KiB
Python
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 |