Files
step-ca-webui/shared/api_models.py
2024-09-26 23:09:05 +05:00

74 lines
1.6 KiB
Python

import uuid
from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel, Field
from shared.models import LogSeverity, KeyType
class CertificateDTO(BaseModel):
id: str
name: str
status: str
expirationDate: datetime
class CertificateGenerateRequest(BaseModel):
keyName: str = Field(..., pattern=r"^[a-zA-Z0-9_-]+$", description="Alphanumeric characters, dashes, and underscores only")
keyType: KeyType
duration: int = Field(..., gt=0, description="Duration in seconds")
class CommandPreviewDTO(BaseModel):
command: str
class CertificateGenerateResult(BaseModel):
success: bool
message: str
logEntryId: int = Field(..., gt=0)
certificateId: str
certificateName: str
expirationDate: datetime
class CertificateRenewResult(BaseModel):
success: bool
message: str
logEntryId: int = Field(..., gt=0)
certificateId: str
newExpirationDate: datetime
class CertificateRevokeResult(BaseModel):
success: bool
message: str
logEntryId: int = Field(..., gt=0)
certificateId: str
revocationDate: datetime
class CommandInfoDTO(BaseModel):
command: str
output: str
exitCode: int
action: str
class LogEntryDTO(BaseModel):
entryId: int = Field(..., gt=0)
timestamp: datetime
severity: LogSeverity
message: str
traceId: uuid.UUID
commandInfo: Optional[CommandInfoDTO]
class LogsRequest(BaseModel):
traceId: Optional[uuid.UUID]
commandsOnly: bool
severity: List[LogSeverity]
page: int = Field(..., gt=0)
pageSize: int = Field(..., gt=0)