main
py 86 lines 2 KB
Raw
1 from typing import List
2 from typing import Literal
3 from typing import Optional
4
5 from pydantic import BaseModel
6 from pydantic import Field
7
8 from app.agents.velociraptor.schema.agents import VelociraptorAgent
9 from app.agents.wazuh.schema.agents import WazuhAgent
10 from app.db.universal_models import Agents
11
12
13 class AgentsResponse(BaseModel):
14 agents: List[Agents]
15 success: bool
16 message: str
17
18
19 class SyncedAgent(WazuhAgent, VelociraptorAgent):
20 pass
21
22
23 class SyncedWazuhAgent(WazuhAgent):
24 pass
25
26
27 class SyncedAgentsResponse(BaseModel):
28 # agents_added: List[SyncedAgent]
29 success: bool
30 message: str
31
32
33 class AgentModifyResponse(BaseModel):
34 success: bool
35 message: str
36
37
38 class OutdatedWazuhAgentsResponse(BaseModel):
39 outdated_wazuh_agents: List[Agents]
40 success: bool
41 message: str
42
43
44 class OutdatedVelociraptorAgentsResponse(BaseModel):
45 outdated_velociraptor_agents: List[Agents]
46 success: bool
47 message: str
48
49
50 class AgentUpdateCustomerCodeBody(BaseModel):
51 customer_code: str = Field(None, description="Customer code to be updated")
52
53
54 class AgentUpdateCustomerCodeResponse(BaseModel):
55 success: bool
56 message: str
57
58
59 class AgentWazuhUpgradeResponse(BaseModel):
60 success: bool
61 message: str
62
63
64 class BulkDeleteAgentRequest(BaseModel):
65 agent_ids: List[str] = Field(..., description="List of agent IDs to delete")
66
67
68 class BulkDeleteFilterRequest(BaseModel):
69 customer_code: Optional[str] = Field(None, description="Filter by customer code")
70 status: Optional[Literal["disconnected", "never_connected", "active"]] = Field(None, description="Filter by agent status")
71 disconnected_days: Optional[int] = Field(None, description="Filter agents disconnected for more than X days", ge=1)
72
73
74 class BulkDeleteAgentResult(BaseModel):
75 agent_id: str
76 success: bool
77 message: str
78
79
80 class BulkDeleteAgentsResponse(BaseModel):
81 success: bool
82 message: str
83 total_requested: int
84 successful_deletions: int
85 failed_deletions: int
86 results: List[BulkDeleteAgentResult]