@cryptotaxi247 / CoPilot / commits / e495c54c

agents mkdocs

Taylor committed Jul 11, 2023 at 16:57 UTC e495c54c4bb12136e25f409677f511a4ce3c4f32
3 files changed +2526 -2484
backend/docs/agents.md
+100
@@ -2,14 +2,114 @@
2
3 ### <span style="color:blue">Agent Model</span>
4
5 +# agents.py
6 +
7 +The `agents.py` file is a Python module within a larger Flask application. It is primarily responsible for handling and managing agent metadata in the system.
8 +
9 +## Class Definitions
10 +
11 +### `AgentMetadata` Class
12 +
13 +`AgentMetadata` is a SQLAlchemy model class that represents an agent's metadata. The class has the following attributes:
14 +
15 +- `id`: Primary key ID of an agent.
16 +- `agent_id`: ID of the agent.
17 +- `ip_address`: IP address of the agent.
18 +- `os`: Operating system of the agent.
19 +- `hostname`: Hostname of the agent.
20 +- `critical_asset`: A boolean flag indicating if the agent is considered a critical asset.
21 +- `last_seen`: The timestamp of when the agent was last seen.
22 +
23 +In addition to these, the class defines a constructor for initializing these attributes, a `__repr__` method for providing a human-readable string representation of the instance, and several methods for manipulating the instance:
24 +
25 +- `mark_as_critical()`: Marks the agent as a critical asset.
26 +- `mark_as_non_critical()`: Marks the agent as a non-critical asset.
27 +- `commit_wazuh_agent_to_db()`: Commits the agent instance to the database.
28 +
29 +### `AgentMetadataSchema` Class
30 +
31 +`AgentMetadataSchema` is a Marshmallow Schema class used for serializing and deserializing `AgentMetadata` instances. It defines the fields that should be included when an `AgentMetadata` instance is serialized or deserialized.
32 +
33 +## Global Variables
34 +
35 +There are two global variables defined in the module:
36 +
37 +- `agent_metadata_schema`: An instance of `AgentMetadataSchema` for handling single `AgentMetadata` instances.
38 +- `agent_metadatas_schema`: An instance of `AgentMetadataSchema` configured for handling multiple `AgentMetadata` instances (specified with `many=True`).
39 +
40 +## Overall Purpose
41 +
42 +The `agents.py` module interacts with and manages agent metadata within the context of a database. Depending on the larger application, this module is used whenever the application needs to create, read, update, or delete agent metadata in the database.
43 +
44 ::: app.models.agents
45 <br>
46
47 ### <span style="color:green">Agent Routes</span>
48
49 +# agents.py - Python Module Overview
50 +
51 +The `agents.py` file is a Python module that primarily acts as a Flask Blueprint for defining routes related to the "agents" endpoint in a Flask web application. The main functionalities provided by this module are to list all available agents, to fetch information related to a specific agent, to sync agents, and to get agent metadata and vulnerabilities.
52 +
53 +Below are the details of the main components and functionalities of this Python module:
54 +
55 +## Import Section
56 +
57 +The module starts by importing the necessary libraries, including Flask's `Blueprint` and `jsonify`, and a variety of services from the application. The services imported are:
58 +
59 +- `AgentService`: This service is expected to include methods that handle the main logic and operations related to the agents.
60 +- `AgentSyncService`: This service is expected to handle the synchronization of agents.
61 +- `WazuhManagerAgentService`: This service is expected to handle operations related to Wazuh Manager's agents.
62 +- `UniversalService`: A universal service from the Wazuh Manager.
63 +- `VulnerabilityService`: This service is expected to handle operations related to vulnerabilities of the agents.
64 +
65 +## Blueprint Definition
66 +
67 +A Flask Blueprint named "agents" is defined. This Blueprint is used to create modular components in the Flask application, in this case, all the routes related to the "agents" endpoint.
68 +
69 +## Route Definitions
70 +
71 +Several route decorators are used on the methods to define the endpoints for the Flask application:
72 +
73 +- `@bp.route("/agents", methods=["GET"])`: This route is associated with the `get_agents` function. This endpoint is expected to return a list of all agents when a GET request is made to "/agents".
74 +
75 +- `@bp.route("/agents/<agent_id>", methods=["GET"])`: This route is associated with the `get_agent` function. This endpoint is expected to return information related to a specific agent when a GET request is made to "/agents/<agent_id>".
76 +
77 +- `@bp.route("/agents/sync", methods=["POST"])`: This route is associated with the `sync_agents` function. This endpoint is expected to trigger a synchronization of the agents when a POST request is made to "/agents/sync".
78 +
79 +- `@bp.route("/agents/<agent_id>/metadata", methods=["GET"])`: This route is associated with the `get_agent_metadata` function. This endpoint is expected to return metadata related to a specific agent when a GET request is made to "/agents/<agent_id>/metadata".
80 +
81 +- `@bp.route("/agents/<agent_id>/vulnerabilities", methods=["GET"])`: This route is associated with the `get_agent_vulnerabilities` function. This endpoint is expected to return vulnerabilities related to a specific agent when a GET request is made to "/agents/<agent_id>/vulnerabilities".
82 +
83 +Each of these methods is expected to create an instance of the respective service, call the appropriate method on the service, and return the results in JSON format using Flask's `jsonify` function. In case of an error, these methods are expected to return a JSON response with a message indicating the failure and a success status set to False.
84 +
85 ::: app.routes.agents
86 <br>
87
88 ### <span style="color:red">Agent Services</span>
89
90 +# agents.py
91 +
92 +This file defines two primary classes, `AgentService` and `AgentSyncService`, used for managing and synchronizing agents.
93 +
94 +## AgentService
95 +
96 +The `AgentService` class provides several methods for managing agent records in the application's database.
97 +
98 +- `get_all_agents()`: Retrieves all agents from the database.
99 +- `get_agent(agent_id: str)`: Retrieves a specific agent from the database using its ID.
100 +- `mark_agent_as_critical(agent_id: str)`: Marks a specific agent as critical.
101 +- `mark_agent_as_non_critical(agent_id: str)`: Marks a specific agent as non-critical.
102 +- `create_agent(agent: Dict[str, str])`: Creates a new agent in the database.
103 +- `delete_agent_db(agent_id: str)`: Deletes a specific agent from the database using its ID.
104 +
105 +## AgentSyncService
106 +
107 +The `AgentSyncService` class is used for synchronizing the state of agents between the application's database and the Wazuh API. It uses the `AgentService` for manipulating the agents in the database.
108 +
109 +- `collect_wazuh_details(connector_name: str)`: Collects the information of all Wazuh API credentials using the `WazuhIndexerConnector` class details.
110 +- `collect_wazuh_agents(connection_url: str, wazuh_auth_token: str)`: Collects the information of all agents from the Wazuh API.
111 +- `sync_agents()`: Syncs the agents between the database and the Wazuh API. It collects the agents from the Wazuh API and creates them in the database if they don't already exist.
112 +
113 +These classes and methods allow the application to maintain a consistent state of agents between the local database and the Wazuh API.
114 +
115 ::: app.services.agents.agents
backend/site/agents/index.html
+2426 -2484
@@ -1,582 +1,934 @@
1 +
2 <!doctype html>
3 <html lang="en" class="no-js">
3 - <head>
4 - <meta charset="utf-8" />
5 - <meta name="viewport" content="width=device-width,initial-scale=1" />
4 + <head>
5 +
6 + <meta charset="utf-8">
7 + <meta name="viewport" content="width=device-width,initial-scale=1">
8 +
9 +
10 +
11 +
12 + <link rel="prev" href="../connectors/">
13 +
14 +
15 + <link rel="next" href="../wazuhindexer/">
16
7 - <link rel="prev" href="../connectors/" />
17 + <link rel="icon" href="../assets/images/favicon.png">
18 + <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.18">
19
9 - <link rel="next" href="../wazuhindexer/" />
20
11 - <link rel="icon" href="../assets/images/favicon.png" />
12 - <meta name="generator" content="mkdocs-1.4.3, mkdocs-material-9.1.18" />
21
22 <title>Agents - SOCFortress CoPilot</title>
23
16 - <link rel="stylesheet" href="../assets/stylesheets/main.26e3688c.min.css" />
17 -
18 - <link rel="stylesheet" href="../assets/stylesheets/palette.ecc896b0.min.css" />
19 -
20 - <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
21 - <link
22 - rel="stylesheet"
23 - href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"
24 - />
25 - <style>
26 - :root {
27 - --md-text-font: "Roboto";
28 - --md-code-font: "Roboto Mono";
29 - }
30 - </style>
31 -
32 - <link rel="stylesheet" href="../assets/_mkdocstrings.css" />
33 -
34 - <script>
35 - ;(__md_scope = new URL("..", location)),
36 - (__md_hash = e => [...e].reduce((e, _) => (e << 5) - e + _.charCodeAt(0), 0)),
37 - (__md_get = (e, _ = localStorage, t = __md_scope) => JSON.parse(_.getItem(t.pathname + "." + e))),
38 - (__md_set = (e, _, t = localStorage, a = __md_scope) => {
39 - try {
40 - t.setItem(a.pathname + "." + e, JSON.stringify(_))
41 - } catch (e) {}
42 - })
43 - </script>
44 - </head>
24 +
25 +
26 + <link rel="stylesheet" href="../assets/stylesheets/main.26e3688c.min.css">
27 +
28 +
29 + <link rel="stylesheet" href="../assets/stylesheets/palette.ecc896b0.min.css">
30 +
31 +
32 +
33 +
34 +
35 +
36 +
37 +
38 +
39 + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
40 + <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
41 + <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
42 +
43 +
44 +
45 + <link rel="stylesheet" href="../assets/_mkdocstrings.css">
46 +
47 + <script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
48 +
49 +
50 +
51 +
52 +
53 +
54 + </head>
55 +
56 +
57 +
58 +
59 +
60 +
61 +
62 +
63
64 <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="purple">
47 - <script>
48 - var palette = __md_get("__palette")
49 - if (palette && "object" == typeof palette.color)
50 - for (var key of Object.keys(palette.color))
51 - document.body.setAttribute("data-md-color-" + key, palette.color[key])
52 - </script>
53 -
54 - <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off" />
55 - <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off" />
56 - <label class="md-overlay" for="__drawer"></label>
57 - <div data-md-component="skip">
58 - <a href="#agents-overview" class="md-skip"> Skip to content </a>
65 +
66 +
67 +
68 + <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
69 +
70 + <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
71 + <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
72 + <label class="md-overlay" for="__drawer"></label>
73 + <div data-md-component="skip">
74 +
75 +
76 + <a href="#agents-overview" class="md-skip">
77 + Skip to content
78 + </a>
79 +
80 + </div>
81 + <div data-md-component="announce">
82 +
83 + </div>
84 +
85 +
86 +
87 +
88 +<header class="md-header" data-md-component="header">
89 + <nav class="md-header__inner md-grid" aria-label="Header">
90 + <a href=".." title="SOCFortress CoPilot" class="md-header__button md-logo" aria-label="SOCFortress CoPilot" data-md-component="logo">
91 +
92 +
93 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
94 +
95 + </a>
96 + <label class="md-header__button md-icon" for="__drawer">
97 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
98 + </label>
99 + <div class="md-header__title" data-md-component="header-title">
100 + <div class="md-header__ellipsis">
101 + <div class="md-header__topic">
102 + <span class="md-ellipsis">
103 + SOCFortress CoPilot
104 + </span>
105 </div>
60 - <div data-md-component="announce"></div>
61 -
62 - <header class="md-header" data-md-component="header">
63 - <nav class="md-header__inner md-grid" aria-label="Header">
64 - <a
65 - href=".."
66 - title="SOCFortress CoPilot"
67 - class="md-header__button md-logo"
68 - aria-label="SOCFortress CoPilot"
69 - data-md-component="logo"
70 - >
71 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
72 - <path
73 - d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"
74 - />
75 - </svg>
76 - </a>
77 - <label class="md-header__button md-icon" for="__drawer">
78 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
79 - <path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z" />
80 - </svg>
81 - </label>
82 - <div class="md-header__title" data-md-component="header-title">
83 - <div class="md-header__ellipsis">
84 - <div class="md-header__topic">
85 - <span class="md-ellipsis"> SOCFortress CoPilot </span>
86 - </div>
87 - <div class="md-header__topic" data-md-component="header-topic">
88 - <span class="md-ellipsis"> Agents </span>
89 - </div>
90 - </div>
91 - </div>
106 + <div class="md-header__topic" data-md-component="header-topic">
107 + <span class="md-ellipsis">
108 +
109 + Agents
110 +
111 + </span>
112 + </div>
113 + </div>
114 + </div>
115 +
116 +
117 + <form class="md-header__option" data-md-component="palette">
118 +
119 +
120 +
121 +
122 + <input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="purple" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
123 +
124 + <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
125 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/></svg>
126 + </label>
127 +
128 +
129 +
130 +
131 +
132 + <input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="teal" data-md-color-accent="lime" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
133 +
134 + <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
135 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3Z"/></svg>
136 + </label>
137 +
138 +
139 + </form>
140 +
141 +
142 +
143 +
144 +
145 + </nav>
146 +
147 +</header>
148 +
149 + <div class="md-container" data-md-component="container">
150 +
151 +
152 +
153 +
154 +
155 +<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
156 + <div class="md-grid">
157 + <ul class="md-tabs__list">
158 +
159 +
160 +
161 +
162 +
163 +
164 + <li class="md-tabs__item">
165 + <a href=".." class="md-tabs__link">
166 + Home
167 + </a>
168 + </li>
169 +
170 +
171 +
172 +
173 +
174 +
175 +
176 + <li class="md-tabs__item">
177 + <a href="../connectors/" class="md-tabs__link">
178 + Connectors
179 + </a>
180 + </li>
181 +
182 +
183 +
184 +
185 +
186 +
187 +
188 +
189 +
190 + <li class="md-tabs__item">
191 + <a href="./" class="md-tabs__link md-tabs__link--active">
192 + Agents
193 + </a>
194 + </li>
195 +
196 +
197 +
198 +
199 +
200 +
201 +
202 + <li class="md-tabs__item">
203 + <a href="../wazuhindexer/" class="md-tabs__link">
204 + Wazuh-Indexer
205 + </a>
206 + </li>
207 +
208 +
209 +
210 +
211 +
212 +
213 +
214 + <li class="md-tabs__item">
215 + <a href="../dfiriris/" class="md-tabs__link">
216 + Dfir-Iris
217 + </a>
218 + </li>
219 +
220 +
221 +
222 +
223 +
224 +
225 +
226 + <li class="md-tabs__item">
227 + <a href="../graylog/" class="md-tabs__link">
228 + Graylog
229 + </a>
230 + </li>
231 +
232 +
233 +
234 +
235 +
236 +
237 +
238 + <li class="md-tabs__item">
239 + <a href="../wazuhmanager/" class="md-tabs__link">
240 + Wazuh-Manager
241 + </a>
242 + </li>
243 +
244 +
245 +
246 +
247 +
248 +
249 +
250 + <li class="md-tabs__item">
251 + <a href="../velociraptor/" class="md-tabs__link">
252 + Velociraptor
253 + </a>
254 + </li>
255 +
256 +
257 +
258 +
259 +
260 +
261 +
262 + <li class="md-tabs__item">
263 + <a href="../shuffle/" class="md-tabs__link">
264 + Shuffle
265 + </a>
266 + </li>
267 +
268 +
269 + </ul>
270 + </div>
271 +</nav>
272 +
273 +
274 +
275 + <main class="md-main" data-md-component="main">
276 + <div class="md-main__inner md-grid">
277 +
278 +
279 +
280 + <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
281 + <div class="md-sidebar__scrollwrap">
282 + <div class="md-sidebar__inner">
283 +
284 +
285 +
286 +
287 +
288 +
289 +
290 +<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="Navigation" data-md-level="0">
291 + <label class="md-nav__title" for="__drawer">
292 + <a href=".." title="SOCFortress CoPilot" class="md-nav__button md-logo" aria-label="SOCFortress CoPilot" data-md-component="logo">
293 +
294 +
295 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
296 +
297 + </a>
298 + SOCFortress CoPilot
299 + </label>
300 +
301 + <ul class="md-nav__list" data-md-scrollfix>
302 +
303 +
304 +
305 +
306 +
307 +
308 +
309 +
310 + <li class="md-nav__item">
311 + <a href=".." class="md-nav__link">
312 + Home
313 + </a>
314 + </li>
315 +
316 +
317 +
318 +
319 +
320 +
321 +
322 +
323 +
324 +
325 + <li class="md-nav__item">
326 + <a href="../connectors/" class="md-nav__link">
327 + Connectors
328 + </a>
329 + </li>
330 +
331 +
332 +
333 +
334 +
335 +
336 +
337 +
338 +
339 +
340 +
341 +
342 + <li class="md-nav__item md-nav__item--active">
343 +
344 + <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
345 +
346 +
347 +
348 + <label class="md-nav__link md-nav__link--active" for="__toc">
349 + Agents
350 + <span class="md-nav__icon md-icon"></span>
351 + </label>
352 +
353 + <a href="./" class="md-nav__link md-nav__link--active">
354 + Agents
355 + </a>
356 +
357 +
358 +
359 +<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
360 +
361 +
362 +
363 +
364 + <label class="md-nav__title" for="__toc">
365 + <span class="md-nav__icon md-icon"></span>
366 + Table of contents
367 + </label>
368 + <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
369 +
370 + <li class="md-nav__item">
371 + <a href="#agents-overview" class="md-nav__link">
372 + Agents Overview
373 + </a>
374 +
375 + <nav class="md-nav" aria-label="Agents Overview">
376 + <ul class="md-nav__list">
377 +
378 + <li class="md-nav__item">
379 + <a href="#agent-model" class="md-nav__link">
380 + Agent Model
381 + </a>
382 +
383 +</li>
384 +
385 + </ul>
386 + </nav>
387 +
388 +</li>
389 +
390 + <li class="md-nav__item">
391 + <a href="#agentspy" class="md-nav__link">
392 + agents.py
393 + </a>
394 +
395 + <nav class="md-nav" aria-label="agents.py">
396 + <ul class="md-nav__list">
397 +
398 + <li class="md-nav__item">
399 + <a href="#class-definitions" class="md-nav__link">
400 + Class Definitions
401 + </a>
402 +
403 + <nav class="md-nav" aria-label="Class Definitions">
404 + <ul class="md-nav__list">
405 +
406 + <li class="md-nav__item">
407 + <a href="#agentmetadata-class" class="md-nav__link">
408 + AgentMetadata Class
409 + </a>
410 +
411 +</li>
412 +
413 + <li class="md-nav__item">
414 + <a href="#agentmetadataschema-class" class="md-nav__link">
415 + AgentMetadataSchema Class
416 + </a>
417 +
418 +</li>
419 +
420 + </ul>
421 + </nav>
422 +
423 +</li>
424 +
425 + <li class="md-nav__item">
426 + <a href="#global-variables" class="md-nav__link">
427 + Global Variables
428 + </a>
429 +
430 +</li>
431 +
432 + <li class="md-nav__item">
433 + <a href="#overall-purpose" class="md-nav__link">
434 + Overall Purpose
435 + </a>
436 +
437 +</li>
438 +
439 + <li class="md-nav__item">
440 + <a href="#app.models.agents" class="md-nav__link">
441 + app.models.agents
442 + </a>
443 +
444 +</li>
445 +
446 + <li class="md-nav__item">
447 + <a href="#app.models.agents.AgentMetadata" class="md-nav__link">
448 + AgentMetadata
449 + </a>
450 +
451 + <nav class="md-nav" aria-label="AgentMetadata">
452 + <ul class="md-nav__list">
453 +
454 + <li class="md-nav__item">
455 + <a href="#app.models.agents.AgentMetadata.__init__" class="md-nav__link">
456 + __init__()
457 + </a>
458 +
459 +</li>
460 +
461 + <li class="md-nav__item">
462 + <a href="#app.models.agents.AgentMetadata.__repr__" class="md-nav__link">
463 + __repr__()
464 + </a>
465 +
466 +</li>
467 +
468 + <li class="md-nav__item">
469 + <a href="#app.models.agents.AgentMetadata.commit_wazuh_agent_to_db" class="md-nav__link">
470 + commit_wazuh_agent_to_db()
471 + </a>
472 +
473 +</li>
474 +
475 + <li class="md-nav__item">
476 + <a href="#app.models.agents.AgentMetadata.mark_as_critical" class="md-nav__link">
477 + mark_as_critical()
478 + </a>
479 +
480 +</li>
481 +
482 + <li class="md-nav__item">
483 + <a href="#app.models.agents.AgentMetadata.mark_as_non_critical" class="md-nav__link">
484 + mark_as_non_critical()
485 + </a>
486 +
487 +</li>
488 +
489 + </ul>
490 + </nav>
491
93 - <form class="md-header__option" data-md-component="palette">
94 - <input
95 - class="md-option"
96 - data-md-color-media=""
97 - data-md-color-scheme="default"
98 - data-md-color-primary="teal"
99 - data-md-color-accent="purple"
100 - aria-label="Switch to dark mode"
101 - type="radio"
102 - name="__palette"
103 - id="__palette_1"
104 - />
105 -
106 - <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
107 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
108 - <path
109 - d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"
110 - />
111 - </svg>
112 - </label>
113 -
114 - <input
115 - class="md-option"
116 - data-md-color-media=""
117 - data-md-color-scheme="slate"
118 - data-md-color-primary="teal"
119 - data-md-color-accent="lime"
120 - aria-label="Switch to light mode"
121 - type="radio"
122 - name="__palette"
123 - id="__palette_2"
124 - />
125 -
126 - <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
127 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
128 - <path
129 - d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3Z"
130 - />
131 - </svg>
132 - </label>
133 - </form>
134 - </nav>
135 - </header>
136 -
137 - <div class="md-container" data-md-component="container">
138 - <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
139 - <div class="md-grid">
140 - <ul class="md-tabs__list">
141 - <li class="md-tabs__item">
142 - <a href=".." class="md-tabs__link"> Home </a>
143 - </li>
144 -
145 - <li class="md-tabs__item">
146 - <a href="../connectors/" class="md-tabs__link"> Connectors </a>
147 - </li>
148 -
149 - <li class="md-tabs__item">
150 - <a href="./" class="md-tabs__link md-tabs__link--active"> Agents </a>
151 - </li>
152 -
153 - <li class="md-tabs__item">
154 - <a href="../wazuhindexer/" class="md-tabs__link"> Wazuh-Indexer </a>
155 - </li>
156 -
157 - <li class="md-tabs__item">
158 - <a href="../dfiriris/" class="md-tabs__link"> Dfir-Iris </a>
159 - </li>
160 -
161 - <li class="md-tabs__item">
162 - <a href="../graylog/" class="md-tabs__link"> Graylog </a>
163 - </li>
164 -
165 - <li class="md-tabs__item">
166 - <a href="../wazuhmanager/" class="md-tabs__link"> Wazuh-Manager </a>
167 - </li>
168 -
169 - <li class="md-tabs__item">
170 - <a href="../velociraptor/" class="md-tabs__link"> Velociraptor </a>
171 - </li>
172 -
173 - <li class="md-tabs__item">
174 - <a href="../shuffle/" class="md-tabs__link"> Shuffle </a>
175 - </li>
176 - </ul>
492 +</li>
493 +
494 + <li class="md-nav__item">
495 + <a href="#app.models.agents.AgentMetadataSchema" class="md-nav__link">
496 + AgentMetadataSchema
497 + </a>
498 +
499 + <nav class="md-nav" aria-label="AgentMetadataSchema">
500 + <ul class="md-nav__list">
501 +
502 + <li class="md-nav__item">
503 + <a href="#app.models.agents.AgentMetadataSchema.Meta" class="md-nav__link">
504 + Meta
505 + </a>
506 +
507 +</li>
508 +
509 + <li class="md-nav__item">
510 + <a href="#agent-routes" class="md-nav__link">
511 + Agent Routes
512 + </a>
513 +
514 +</li>
515 +
516 + </ul>
517 + </nav>
518 +
519 +</li>
520 +
521 + </ul>
522 + </nav>
523 +
524 +</li>
525 +
526 + <li class="md-nav__item">
527 + <a href="#agentspy-python-module-overview" class="md-nav__link">
528 + agents.py - Python Module Overview
529 + </a>
530 +
531 + <nav class="md-nav" aria-label="agents.py - Python Module Overview">
532 + <ul class="md-nav__list">
533 +
534 + <li class="md-nav__item">
535 + <a href="#import-section" class="md-nav__link">
536 + Import Section
537 + </a>
538 +
539 +</li>
540 +
541 + <li class="md-nav__item">
542 + <a href="#blueprint-definition" class="md-nav__link">
543 + Blueprint Definition
544 + </a>
545 +
546 +</li>
547 +
548 + <li class="md-nav__item">
549 + <a href="#route-definitions" class="md-nav__link">
550 + Route Definitions
551 + </a>
552 +
553 +</li>
554 +
555 + <li class="md-nav__item">
556 + <a href="#app.routes.agents" class="md-nav__link">
557 + app.routes.agents
558 + </a>
559 +
560 +</li>
561 +
562 + <li class="md-nav__item">
563 + <a href="#app.routes.agents.delete_agent" class="md-nav__link">
564 + delete_agent()
565 + </a>
566 +
567 +</li>
568 +
569 + <li class="md-nav__item">
570 + <a href="#app.routes.agents.get_agent" class="md-nav__link">
571 + get_agent()
572 + </a>
573 +
574 +</li>
575 +
576 + <li class="md-nav__item">
577 + <a href="#app.routes.agents.get_agent_vulnerabilities" class="md-nav__link">
578 + get_agent_vulnerabilities()
579 + </a>
580 +
581 +</li>
582 +
583 + <li class="md-nav__item">
584 + <a href="#app.routes.agents.get_agents" class="md-nav__link">
585 + get_agents()
586 + </a>
587 +
588 +</li>
589 +
590 + <li class="md-nav__item">
591 + <a href="#app.routes.agents.mark_as_critical" class="md-nav__link">
592 + mark_as_critical()
593 + </a>
594 +
595 +</li>
596 +
597 + <li class="md-nav__item">
598 + <a href="#app.routes.agents.sync_agents" class="md-nav__link">
599 + sync_agents()
600 + </a>
601 +
602 +</li>
603 +
604 + <li class="md-nav__item">
605 + <a href="#app.routes.agents.unmark_agent_critical" class="md-nav__link">
606 + unmark_agent_critical()
607 + </a>
608 +
609 + <nav class="md-nav" aria-label="unmark_agent_critical()">
610 + <ul class="md-nav__list">
611 +
612 + <li class="md-nav__item">
613 + <a href="#agent-services" class="md-nav__link">
614 + Agent Services
615 + </a>
616 +
617 +</li>
618 +
619 + </ul>
620 + </nav>
621 +
622 +</li>
623 +
624 + </ul>
625 + </nav>
626 +
627 +</li>
628 +
629 + <li class="md-nav__item">
630 + <a href="#agentspy_1" class="md-nav__link">
631 + agents.py
632 + </a>
633 +
634 + <nav class="md-nav" aria-label="agents.py">
635 + <ul class="md-nav__list">
636 +
637 + <li class="md-nav__item">
638 + <a href="#agentservice" class="md-nav__link">
639 + AgentService
640 + </a>
641 +
642 +</li>
643 +
644 + <li class="md-nav__item">
645 + <a href="#agentsyncservice" class="md-nav__link">
646 + AgentSyncService
647 + </a>
648 +
649 +</li>
650 +
651 + <li class="md-nav__item">
652 + <a href="#app.services.agents.agents" class="md-nav__link">
653 + app.services.agents.agents
654 + </a>
655 +
656 +</li>
657 +
658 + <li class="md-nav__item">
659 + <a href="#app.services.agents.agents.AgentService" class="md-nav__link">
660 + AgentService
661 + </a>
662 +
663 + <nav class="md-nav" aria-label="AgentService">
664 + <ul class="md-nav__list">
665 +
666 + <li class="md-nav__item">
667 + <a href="#app.services.agents.agents.AgentService.create_agent" class="md-nav__link">
668 + create_agent()
669 + </a>
670 +
671 +</li>
672 +
673 + <li class="md-nav__item">
674 + <a href="#app.services.agents.agents.AgentService.delete_agent_db" class="md-nav__link">
675 + delete_agent_db()
676 + </a>
677 +
678 +</li>
679 +
680 + <li class="md-nav__item">
681 + <a href="#app.services.agents.agents.AgentService.get_agent" class="md-nav__link">
682 + get_agent()
683 + </a>
684 +
685 +</li>
686 +
687 + <li class="md-nav__item">
688 + <a href="#app.services.agents.agents.AgentService.get_all_agents" class="md-nav__link">
689 + get_all_agents()
690 + </a>
691 +
692 +</li>
693 +
694 + <li class="md-nav__item">
695 + <a href="#app.services.agents.agents.AgentService.mark_agent_as_critical" class="md-nav__link">
696 + mark_agent_as_critical()
697 + </a>
698 +
699 +</li>
700 +
701 + <li class="md-nav__item">
702 + <a href="#app.services.agents.agents.AgentService.mark_agent_as_non_critical" class="md-nav__link">
703 + mark_agent_as_non_critical()
704 + </a>
705 +
706 +</li>
707 +
708 + </ul>
709 + </nav>
710 +
711 +</li>
712 +
713 + <li class="md-nav__item">
714 + <a href="#app.services.agents.agents.AgentSyncService" class="md-nav__link">
715 + AgentSyncService
716 + </a>
717 +
718 + <nav class="md-nav" aria-label="AgentSyncService">
719 + <ul class="md-nav__list">
720 +
721 + <li class="md-nav__item">
722 + <a href="#app.services.agents.agents.AgentSyncService.collect_wazuh_agents" class="md-nav__link">
723 + collect_wazuh_agents()
724 + </a>
725 +
726 +</li>
727 +
728 + <li class="md-nav__item">
729 + <a href="#app.services.agents.agents.AgentSyncService.collect_wazuh_details" class="md-nav__link">
730 + collect_wazuh_details()
731 + </a>
732 +
733 +</li>
734 +
735 + </ul>
736 + </nav>
737 +
738 +</li>
739 +
740 + </ul>
741 + </nav>
742 +
743 +</li>
744 +
745 + </ul>
746 +
747 +</nav>
748 +
749 + </li>
750 +
751 +
752 +
753 +
754 +
755 +
756 +
757 +
758 +
759 +
760 + <li class="md-nav__item">
761 + <a href="../wazuhindexer/" class="md-nav__link">
762 + Wazuh-Indexer
763 + </a>
764 + </li>
765 +
766 +
767 +
768 +
769 +
770 +
771 +
772 +
773 +
774 +
775 + <li class="md-nav__item">
776 + <a href="../dfiriris/" class="md-nav__link">
777 + Dfir-Iris
778 + </a>
779 + </li>
780 +
781 +
782 +
783 +
784 +
785 +
786 +
787 +
788 +
789 +
790 + <li class="md-nav__item">
791 + <a href="../graylog/" class="md-nav__link">
792 + Graylog
793 + </a>
794 + </li>
795 +
796 +
797 +
798 +
799 +
800 +
801 +
802 +
803 +
804 +
805 + <li class="md-nav__item">
806 + <a href="../wazuhmanager/" class="md-nav__link">
807 + Wazuh-Manager
808 + </a>
809 + </li>
810 +
811 +
812 +
813 +
814 +
815 +
816 +
817 +
818 +
819 +
820 + <li class="md-nav__item">
821 + <a href="../velociraptor/" class="md-nav__link">
822 + Velociraptor
823 + </a>
824 + </li>
825 +
826 +
827 +
828 +
829 +
830 +
831 +
832 +
833 +
834 +
835 + <li class="md-nav__item">
836 + <a href="../shuffle/" class="md-nav__link">
837 + Shuffle
838 + </a>
839 + </li>
840 +
841 +
842 +
843 + </ul>
844 +</nav>
845 + </div>
846 </div>
178 - </nav>
179 -
180 - <main class="md-main" data-md-component="main">
181 - <div class="md-main__inner md-grid">
182 - <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation">
183 - <div class="md-sidebar__scrollwrap">
184 - <div class="md-sidebar__inner">
185 - <nav
186 - class="md-nav md-nav--primary md-nav--lifted md-nav--integrated"
187 - aria-label="Navigation"
188 - data-md-level="0"
189 - >
190 - <label class="md-nav__title" for="__drawer">
191 - <a
192 - href=".."
193 - title="SOCFortress CoPilot"
194 - class="md-nav__button md-logo"
195 - aria-label="SOCFortress CoPilot"
196 - data-md-component="logo"
197 - >
198 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
199 - <path
200 - d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"
201 - />
202 - </svg>
203 - </a>
204 - SOCFortress CoPilot
205 - </label>
206 -
207 - <ul class="md-nav__list" data-md-scrollfix>
208 - <li class="md-nav__item">
209 - <a href=".." class="md-nav__link"> Home </a>
210 - </li>
211 -
212 - <li class="md-nav__item">
213 - <a href="../connectors/" class="md-nav__link"> Connectors </a>
214 - </li>
215 -
216 - <li class="md-nav__item md-nav__item--active">
217 - <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc" />
218 -
219 - <label class="md-nav__link md-nav__link--active" for="__toc">
220 - Agents
221 - <span class="md-nav__icon md-icon"></span>
222 - </label>
223 -
224 - <a href="./" class="md-nav__link md-nav__link--active"> Agents </a>
225 -
226 - <nav class="md-nav md-nav--secondary" aria-label="Table of contents">
227 - <label class="md-nav__title" for="__toc">
228 - <span class="md-nav__icon md-icon"></span>
229 - Table of contents
230 - </label>
231 - <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
232 - <li class="md-nav__item">
233 - <a href="#agents-overview" class="md-nav__link">
234 - Agents Overview
235 - </a>
236 -
237 - <nav class="md-nav" aria-label="Agents Overview">
238 - <ul class="md-nav__list">
239 - <li class="md-nav__item">
240 - <a href="#agent-model" class="md-nav__link">
241 - Agent Model
242 - </a>
243 - </li>
244 - </ul>
245 - </nav>
246 - </li>
247 -
248 - <li class="md-nav__item">
249 - <a href="#app.models.agents" class="md-nav__link">
250 - app.models.agents
251 - </a>
252 - </li>
253 -
254 - <li class="md-nav__item">
255 - <a href="#app.models.agents.AgentMetadata" class="md-nav__link">
256 - AgentMetadata
257 - </a>
258 -
259 - <nav class="md-nav" aria-label="AgentMetadata">
260 - <ul class="md-nav__list">
261 - <li class="md-nav__item">
262 - <a
263 - href="#app.models.agents.AgentMetadata.__init__"
264 - class="md-nav__link"
265 - >
266 - __init__()
267 - </a>
268 - </li>
269 -
270 - <li class="md-nav__item">
271 - <a
272 - href="#app.models.agents.AgentMetadata.__repr__"
273 - class="md-nav__link"
274 - >
275 - __repr__()
276 - </a>
277 - </li>
278 -
279 - <li class="md-nav__item">
280 - <a
281 - href="#app.models.agents.AgentMetadata.commit_wazuh_agent_to_db"
282 - class="md-nav__link"
283 - >
284 - commit_wazuh_agent_to_db()
285 - </a>
286 - </li>
287 -
288 - <li class="md-nav__item">
289 - <a
290 - href="#app.models.agents.AgentMetadata.mark_as_critical"
291 - class="md-nav__link"
292 - >
293 - mark_as_critical()
294 - </a>
295 - </li>
296 -
297 - <li class="md-nav__item">
298 - <a
299 - href="#app.models.agents.AgentMetadata.mark_as_non_critical"
300 - class="md-nav__link"
301 - >
302 - mark_as_non_critical()
303 - </a>
304 - </li>
305 - </ul>
306 - </nav>
307 - </li>
308 -
309 - <li class="md-nav__item">
310 - <a
311 - href="#app.models.agents.AgentMetadataSchema"
312 - class="md-nav__link"
313 - >
314 - AgentMetadataSchema
315 - </a>
316 -
317 - <nav class="md-nav" aria-label="AgentMetadataSchema">
318 - <ul class="md-nav__list">
319 - <li class="md-nav__item">
320 - <a
321 - href="#app.models.agents.AgentMetadataSchema.Meta"
322 - class="md-nav__link"
323 - >
324 - Meta
325 - </a>
326 - </li>
327 -
328 - <li class="md-nav__item">
329 - <a href="#agent-routes" class="md-nav__link">
330 - Agent Routes
331 - </a>
332 - </li>
333 - </ul>
334 - </nav>
335 - </li>
336 -
337 - <li class="md-nav__item">
338 - <a href="#app.routes.agents" class="md-nav__link">
339 - app.routes.agents
340 - </a>
341 - </li>
342 -
343 - <li class="md-nav__item">
344 - <a href="#app.routes.agents.delete_agent" class="md-nav__link">
345 - delete_agent()
346 - </a>
347 - </li>
348 -
349 - <li class="md-nav__item">
350 - <a href="#app.routes.agents.get_agent" class="md-nav__link">
351 - get_agent()
352 - </a>
353 - </li>
354 -
355 - <li class="md-nav__item">
356 - <a
357 - href="#app.routes.agents.get_agent_vulnerabilities"
358 - class="md-nav__link"
359 - >
360 - get_agent_vulnerabilities()
361 - </a>
362 - </li>
363 -
364 - <li class="md-nav__item">
365 - <a href="#app.routes.agents.get_agents" class="md-nav__link">
366 - get_agents()
367 - </a>
368 - </li>
369 -
370 - <li class="md-nav__item">
371 - <a
372 - href="#app.routes.agents.mark_as_critical"
373 - class="md-nav__link"
374 - >
375 - mark_as_critical()
376 - </a>
377 - </li>
378 -
379 - <li class="md-nav__item">
380 - <a href="#app.routes.agents.sync_agents" class="md-nav__link">
381 - sync_agents()
382 - </a>
383 - </li>
384 -
385 - <li class="md-nav__item">
386 - <a
387 - href="#app.routes.agents.unmark_agent_critical"
388 - class="md-nav__link"
389 - >
390 - unmark_agent_critical()
391 - </a>
392 -
393 - <nav class="md-nav" aria-label="unmark_agent_critical()">
394 - <ul class="md-nav__list">
395 - <li class="md-nav__item">
396 - <a href="#agent-services" class="md-nav__link">
397 - Agent Services
398 - </a>
399 - </li>
400 - </ul>
401 - </nav>
402 - </li>
403 -
404 - <li class="md-nav__item">
405 - <a href="#app.services.agents.agents" class="md-nav__link">
406 - app.services.agents.agents
407 - </a>
408 - </li>
409 -
410 - <li class="md-nav__item">
411 - <a
412 - href="#app.services.agents.agents.AgentService"
413 - class="md-nav__link"
414 - >
415 - AgentService
416 - </a>
417 -
418 - <nav class="md-nav" aria-label="AgentService">
419 - <ul class="md-nav__list">
420 - <li class="md-nav__item">
421 - <a
422 - href="#app.services.agents.agents.AgentService.create_agent"
423 - class="md-nav__link"
424 - >
425 - create_agent()
426 - </a>
427 - </li>
428 -
429 - <li class="md-nav__item">
430 - <a
431 - href="#app.services.agents.agents.AgentService.delete_agent_db"
432 - class="md-nav__link"
433 - >
434 - delete_agent_db()
435 - </a>
436 - </li>
437 -
438 - <li class="md-nav__item">
439 - <a
440 - href="#app.services.agents.agents.AgentService.get_agent"
441 - class="md-nav__link"
442 - >
443 - get_agent()
444 - </a>
445 - </li>
446 -
447 - <li class="md-nav__item">
448 - <a
449 - href="#app.services.agents.agents.AgentService.get_all_agents"
450 - class="md-nav__link"
451 - >
452 - get_all_agents()
453 - </a>
454 - </li>
455 -
456 - <li class="md-nav__item">
457 - <a
458 - href="#app.services.agents.agents.AgentService.mark_agent_as_critical"
459 - class="md-nav__link"
460 - >
461 - mark_agent_as_critical()
462 - </a>
463 - </li>
464 -
465 - <li class="md-nav__item">
466 - <a
467 - href="#app.services.agents.agents.AgentService.mark_agent_as_non_critical"
468 - class="md-nav__link"
469 - >
470 - mark_agent_as_non_critical()
471 - </a>
472 - </li>
473 - </ul>
474 - </nav>
475 - </li>
476 -
477 - <li class="md-nav__item">
478 - <a
479 - href="#app.services.agents.agents.AgentSyncService"
480 - class="md-nav__link"
481 - >
482 - AgentSyncService
483 - </a>
484 -
485 - <nav class="md-nav" aria-label="AgentSyncService">
486 - <ul class="md-nav__list">
487 - <li class="md-nav__item">
488 - <a
489 - href="#app.services.agents.agents.AgentSyncService.collect_wazuh_agents"
490 - class="md-nav__link"
491 - >
492 - collect_wazuh_agents()
493 - </a>
494 - </li>
495 -
496 - <li class="md-nav__item">
497 - <a
498 - href="#app.services.agents.agents.AgentSyncService.collect_wazuh_details"
499 - class="md-nav__link"
500 - >
501 - collect_wazuh_details()
502 - </a>
503 - </li>
504 - </ul>
505 - </nav>
506 - </li>
507 - </ul>
508 - </nav>
509 - </li>
510 -
511 - <li class="md-nav__item">
512 - <a href="../wazuhindexer/" class="md-nav__link"> Wazuh-Indexer </a>
513 - </li>
514 -
515 - <li class="md-nav__item">
516 - <a href="../dfiriris/" class="md-nav__link"> Dfir-Iris </a>
517 - </li>
518 -
519 - <li class="md-nav__item">
520 - <a href="../graylog/" class="md-nav__link"> Graylog </a>
521 - </li>
522 -
523 - <li class="md-nav__item">
524 - <a href="../wazuhmanager/" class="md-nav__link"> Wazuh-Manager </a>
525 - </li>
526 -
527 - <li class="md-nav__item">
528 - <a href="../velociraptor/" class="md-nav__link"> Velociraptor </a>
529 - </li>
530 -
531 - <li class="md-nav__item">
532 - <a href="../shuffle/" class="md-nav__link"> Shuffle </a>
533 - </li>
534 - </ul>
535 - </nav>
536 - </div>
537 - </div>
538 - </div>
539 -
540 - <div class="md-content" data-md-component="content">
541 - <article class="md-content__inner md-typeset">
542 - <h1>Agents</h1>
543 -
544 - <h2 id="agents-overview">Agents Overview</h2>
545 - <h3 id="agent-model"><span style="color: blue">Agent Model</span></h3>
546 -
547 - <div class="doc doc-object doc-module">
548 - <a id="app.models.agents"></a>
549 - <div class="doc doc-contents first">
550 - <div class="doc doc-children">
551 - <div class="doc doc-object doc-class">
552 - <h2 id="app.models.agents.AgentMetadata" class="doc doc-heading">
553 - <code>AgentMetadata</code>
554 - </h2>
555 -
556 - <div class="doc doc-contents">
557 - <p class="doc doc-class-bases">
558 - Bases:
559 - <code
560 - ><span title="app.db">db</span>.<span title="app.db.Model"
561 - >Model</span
562 - ></code
563 - >
564 - </p>
565 -
566 - <p>
567 - Class for agent metadata which stores the agent ID, IP address,
568 - hostname, OS, last seen timestamp, and boolean for critical asset.
569 - This class inherits from SQLAlchemy's Model class.
570 - </p>
571 -
572 - <details class="quote">
573 - <summary>Source code in <code>app\models\agents.py</code></summary>
574 - <div class="highlight">
575 - <table class="highlighttable">
576 - <tr>
577 - <td class="linenos">
578 - <div class="linenodiv">
579 - <pre><span></span><span class="normal"><a href="#__codelineno-0-14">14</a></span>
847 + </div>
848 +
849 +
850 +
851 +
852 + <div class="md-content" data-md-component="content">
853 + <article class="md-content__inner md-typeset">
854 +
855 +
856 +
857 +
858 +<h2 id="agents-overview">Agents Overview</h2>
859 +<h3 id="agent-model"><span style="color:blue">Agent Model</span></h3>
860 +<h1 id="agentspy">agents.py</h1>
861 +<p>The <code>agents.py</code> file is a Python module within a larger Flask application. It is primarily responsible for handling and managing agent metadata in the system.</p>
862 +<h2 id="class-definitions">Class Definitions</h2>
863 +<h3 id="agentmetadata-class"><code>AgentMetadata</code> Class</h3>
864 +<p><code>AgentMetadata</code> is a SQLAlchemy model class that represents an agent's metadata. The class has the following attributes:</p>
865 +<ul>
866 +<li><code>id</code>: Primary key ID of an agent.</li>
867 +<li><code>agent_id</code>: ID of the agent.</li>
868 +<li><code>ip_address</code>: IP address of the agent.</li>
869 +<li><code>os</code>: Operating system of the agent.</li>
870 +<li><code>hostname</code>: Hostname of the agent.</li>
871 +<li><code>critical_asset</code>: A boolean flag indicating if the agent is considered a critical asset.</li>
872 +<li><code>last_seen</code>: The timestamp of when the agent was last seen.</li>
873 +</ul>
874 +<p>In addition to these, the class defines a constructor for initializing these attributes, a <code>__repr__</code> method for providing a human-readable string representation of the instance, and several methods for manipulating the instance:</p>
875 +<ul>
876 +<li><code>mark_as_critical()</code>: Marks the agent as a critical asset.</li>
877 +<li><code>mark_as_non_critical()</code>: Marks the agent as a non-critical asset.</li>
878 +<li><code>commit_wazuh_agent_to_db()</code>: Commits the agent instance to the database.</li>
879 +</ul>
880 +<h3 id="agentmetadataschema-class"><code>AgentMetadataSchema</code> Class</h3>
881 +<p><code>AgentMetadataSchema</code> is a Marshmallow Schema class used for serializing and deserializing <code>AgentMetadata</code> instances. It defines the fields that should be included when an <code>AgentMetadata</code> instance is serialized or deserialized.</p>
882 +<h2 id="global-variables">Global Variables</h2>
883 +<p>There are two global variables defined in the module:</p>
884 +<ul>
885 +<li><code>agent_metadata_schema</code>: An instance of <code>AgentMetadataSchema</code> for handling single <code>AgentMetadata</code> instances.</li>
886 +<li><code>agent_metadatas_schema</code>: An instance of <code>AgentMetadataSchema</code> configured for handling multiple <code>AgentMetadata</code> instances (specified with <code>many=True</code>).</li>
887 +</ul>
888 +<h2 id="overall-purpose">Overall Purpose</h2>
889 +<p>The <code>agents.py</code> module interacts with and manages agent metadata within the context of a database. Depending on the larger application, this module is used whenever the application needs to create, read, update, or delete agent metadata in the database.</p>
890 +
891 +
892 +<div class="doc doc-object doc-module">
893 +
894 +
895 +<a id="app.models.agents"></a>
896 + <div class="doc doc-contents first">
897 +
898 +
899 +
900 + <div class="doc doc-children">
901 +
902 +
903 +
904 +
905 +
906 +
907 +
908 +
909 +<div class="doc doc-object doc-class">
910 +
911 +
912 +
913 +<h2 id="app.models.agents.AgentMetadata" class="doc doc-heading">
914 + <code>AgentMetadata</code>
915 +
916 +
917 +</h2>
918 +
919 +
920 + <div class="doc doc-contents ">
921 + <p class="doc doc-class-bases">
922 + Bases: <code><span title="app.db">db</span>.<span title="app.db.Model">Model</span></code></p>
923 +
924 +
925 + <p>Class for agent metadata which stores the agent ID, IP address, hostname, OS, last seen timestamp,
926 +and boolean for critical asset. This class inherits from SQLAlchemy's Model class.</p>
927 +
928 +
929 + <details class="quote">
930 + <summary>Source code in <code>app\models\agents.py</code></summary>
931 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-14">14</a></span>
932 <span class="normal"><a href="#__codelineno-0-15">15</a></span>
933 <span class="normal"><a href="#__codelineno-0-16">16</a></span>
934 <span class="normal"><a href="#__codelineno-0-17">17</a></span>
@@ -643,12 +995,7 @@
995 <span class="normal"><a href="#__codelineno-0-78">78</a></span>
996 <span class="normal"><a href="#__codelineno-0-79">79</a></span>
997 <span class="normal"><a href="#__codelineno-0-80">80</a></span>
646 -<span class="normal"><a href="#__codelineno-0-81">81</a></span></pre>
647 - </div>
648 - </td>
649 - <td class="code">
650 - <div>
651 - <pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">class</span> <span class="nc">AgentMetadata</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
998 +<span class="normal"><a href="#__codelineno-0-81">81</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-14" name="__codelineno-0-14"></a><span class="k">class</span> <span class="nc">AgentMetadata</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
999 <a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1000 <a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="sd"> Class for agent metadata which stores the agent ID, IP address, hostname, OS, last seen timestamp,</span>
1001 <a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="sd"> and boolean for critical asset. This class inherits from SQLAlchemy&#39;s Model class.</span>
@@ -716,56 +1063,44 @@
1063 <a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> &quot;&quot;&quot;</span>
1064 <a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
1065 <a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
719 -</code></pre>
720 - </div>
721 - </td>
722 - </tr>
723 - </table>
724 - </div>
725 - </details>
726 -
727 - <div class="doc doc-children">
728 - <div class="doc doc-object doc-function">
729 - <h3
730 - id="app.models.agents.AgentMetadata.__init__"
731 - class="doc doc-heading"
732 - >
733 - <code class="highlight language-python"
734 - ><span class="fm">__init__</span><span class="p">(</span
735 - ><span class="n">agent_id</span
736 - ><span class="p">,</span>
737 - <span class="n">ip_address</span
738 - ><span class="p">,</span> <span class="n">os</span
739 - ><span class="p">,</span> <span class="n">hostname</span
740 - ><span class="p">,</span>
741 - <span class="n">critical_asset</span
742 - ><span class="p">,</span>
743 - <span class="n">last_seen</span
744 - ><span class="p">)</span></code
745 - >
746 - </h3>
747 -
748 - <div class="doc doc-contents">
749 - <p>Initialize a new instance of the AgentMetadata class.</p>
750 - <p>
751 - :param agent_id: Unique ID for the agent. :param
752 - ip_address: IP address of the agent. :param os:
753 - Operating system of the agent. :param hostname: Hostname
754 - of the agent. :param critical_asset: Boolean value
755 - indicating if the agent is a critical asset. :param
756 - last_seen: Timestamp of when the agent was last seen.
757 - </p>
758 -
759 - <details class="quote">
760 - <summary>
761 - Source code in <code>app\models\agents.py</code>
762 - </summary>
763 - <div class="highlight">
764 - <table class="highlighttable">
765 - <tr>
766 - <td class="linenos">
767 - <div class="linenodiv">
768 - <pre><span></span><span class="normal"><a href="#__codelineno-0-28">28</a></span>
1066 +</code></pre></div></td></tr></table></div>
1067 + </details>
1068 +
1069 +
1070 +
1071 + <div class="doc doc-children">
1072 +
1073 +
1074 +
1075 +
1076 +
1077 +
1078 +
1079 +
1080 +
1081 +<div class="doc doc-object doc-function">
1082 +
1083 +
1084 +
1085 +<h3 id="app.models.agents.AgentMetadata.__init__" class="doc doc-heading">
1086 +<code class="highlight language-python"><span class="fm">__init__</span><span class="p">(</span><span class="n">agent_id</span><span class="p">,</span> <span class="n">ip_address</span><span class="p">,</span> <span class="n">os</span><span class="p">,</span> <span class="n">hostname</span><span class="p">,</span> <span class="n">critical_asset</span><span class="p">,</span> <span class="n">last_seen</span><span class="p">)</span></code>
1087 +
1088 +</h3>
1089 +
1090 +
1091 + <div class="doc doc-contents ">
1092 +
1093 + <p>Initialize a new instance of the AgentMetadata class.</p>
1094 +<p>:param agent_id: Unique ID for the agent.
1095 +:param ip_address: IP address of the agent.
1096 +:param os: Operating system of the agent.
1097 +:param hostname: Hostname of the agent.
1098 +:param critical_asset: Boolean value indicating if the agent is a critical asset.
1099 +:param last_seen: Timestamp of when the agent was last seen.</p>
1100 +
1101 + <details class="quote">
1102 + <summary>Source code in <code>app\models\agents.py</code></summary>
1103 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-28">28</a></span>
1104 <span class="normal"><a href="#__codelineno-0-29">29</a></span>
1105 <span class="normal"><a href="#__codelineno-0-30">30</a></span>
1106 <span class="normal"><a href="#__codelineno-0-31">31</a></span>
@@ -789,12 +1124,7 @@
1124 <span class="normal"><a href="#__codelineno-0-49">49</a></span>
1125 <span class="normal"><a href="#__codelineno-0-50">50</a></span>
1126 <span class="normal"><a href="#__codelineno-0-51">51</a></span>
792 -<span class="normal"><a href="#__codelineno-0-52">52</a></span></pre>
793 - </div>
794 - </td>
795 - <td class="code">
796 - <div>
797 - <pre><span></span><code><a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
1127 +<span class="normal"><a href="#__codelineno-0-52">52</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
1128 <a id="__codelineno-0-29" name="__codelineno-0-29"></a> <span class="bp">self</span><span class="p">,</span>
1129 <a id="__codelineno-0-30" name="__codelineno-0-30"></a> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
1130 <a id="__codelineno-0-31" name="__codelineno-0-31"></a> <span class="n">ip_address</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
@@ -819,249 +1149,177 @@
1149 <a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="bp">self</span><span class="o">.</span><span class="n">hostname</span> <span class="o">=</span> <span class="n">hostname</span>
1150 <a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="bp">self</span><span class="o">.</span><span class="n">critical_asset</span> <span class="o">=</span> <span class="n">critical_asset</span>
1151 <a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="bp">self</span><span class="o">.</span><span class="n">last_seen</span> <span class="o">=</span> <span class="n">last_seen</span>
822 -</code></pre>
823 - </div>
824 - </td>
825 - </tr>
826 - </table>
827 - </div>
828 - </details>
829 - </div>
830 - </div>
831 -
832 - <div class="doc doc-object doc-function">
833 - <h3
834 - id="app.models.agents.AgentMetadata.__repr__"
835 - class="doc doc-heading"
836 - >
837 - <code class="highlight language-python"
838 - ><span class="fm">__repr__</span
839 - ><span class="p">()</span></code
840 - >
841 - </h3>
842 -
843 - <div class="doc doc-contents">
844 - <p>
845 - Returns a string representation of the AgentMetadata
846 - instance.
847 - </p>
848 - <p>:return: A string representation of the agent ID.</p>
849 -
850 - <details class="quote">
851 - <summary>
852 - Source code in <code>app\models\agents.py</code>
853 - </summary>
854 - <div class="highlight">
855 - <table class="highlighttable">
856 - <tr>
857 - <td class="linenos">
858 - <div class="linenodiv">
859 - <pre><span></span><span class="normal"><a href="#__codelineno-0-54">54</a></span>
1152 +</code></pre></div></td></tr></table></div>
1153 + </details>
1154 + </div>
1155 +
1156 +</div>
1157 +
1158 +<div class="doc doc-object doc-function">
1159 +
1160 +
1161 +
1162 +<h3 id="app.models.agents.AgentMetadata.__repr__" class="doc doc-heading">
1163 +<code class="highlight language-python"><span class="fm">__repr__</span><span class="p">()</span></code>
1164 +
1165 +</h3>
1166 +
1167 +
1168 + <div class="doc doc-contents ">
1169 +
1170 + <p>Returns a string representation of the AgentMetadata instance.</p>
1171 +<p>:return: A string representation of the agent ID.</p>
1172 +
1173 + <details class="quote">
1174 + <summary>Source code in <code>app\models\agents.py</code></summary>
1175 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-54">54</a></span>
1176 <span class="normal"><a href="#__codelineno-0-55">55</a></span>
1177 <span class="normal"><a href="#__codelineno-0-56">56</a></span>
1178 <span class="normal"><a href="#__codelineno-0-57">57</a></span>
1179 <span class="normal"><a href="#__codelineno-0-58">58</a></span>
1180 <span class="normal"><a href="#__codelineno-0-59">59</a></span>
865 -<span class="normal"><a href="#__codelineno-0-60">60</a></span></pre>
866 - </div>
867 - </td>
868 - <td class="code">
869 - <div>
870 - <pre><span></span><code><a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
1181 +<span class="normal"><a href="#__codelineno-0-60">60</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
1182 <a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1183 <a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="sd"> Returns a string representation of the AgentMetadata instance.</span>
1184 <a id="__codelineno-0-57" name="__codelineno-0-57"></a>
1185 <a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> :return: A string representation of the agent ID.</span>
1186 <a id="__codelineno-0-59" name="__codelineno-0-59"></a><span class="sd"> &quot;&quot;&quot;</span>
1187 <a id="__codelineno-0-60" name="__codelineno-0-60"></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;&lt;AgentMetadata </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">&gt;&quot;</span>
877 -</code></pre>
878 - </div>
879 - </td>
880 - </tr>
881 - </table>
882 - </div>
883 - </details>
884 - </div>
885 - </div>
886 -
887 - <div class="doc doc-object doc-function">
888 - <h3
889 - id="app.models.agents.AgentMetadata.commit_wazuh_agent_to_db"
890 - class="doc doc-heading"
891 - >
892 - <code class="highlight language-python"
893 - ><span class="n">commit_wazuh_agent_to_db</span
894 - ><span class="p">()</span></code
895 - >
896 - </h3>
897 -
898 - <div class="doc doc-contents">
899 - <p>Commits the agent to the database.</p>
900 -
901 - <details class="quote">
902 - <summary>
903 - Source code in <code>app\models\agents.py</code>
904 - </summary>
905 - <div class="highlight">
906 - <table class="highlighttable">
907 - <tr>
908 - <td class="linenos">
909 - <div class="linenodiv">
910 - <pre><span></span><span class="normal"><a href="#__codelineno-0-76">76</a></span>
1188 +</code></pre></div></td></tr></table></div>
1189 + </details>
1190 + </div>
1191 +
1192 +</div>
1193 +
1194 +<div class="doc doc-object doc-function">
1195 +
1196 +
1197 +
1198 +<h3 id="app.models.agents.AgentMetadata.commit_wazuh_agent_to_db" class="doc doc-heading">
1199 +<code class="highlight language-python"><span class="n">commit_wazuh_agent_to_db</span><span class="p">()</span></code>
1200 +
1201 +</h3>
1202 +
1203 +
1204 + <div class="doc doc-contents ">
1205 +
1206 + <p>Commits the agent to the database.</p>
1207 +
1208 + <details class="quote">
1209 + <summary>Source code in <code>app\models\agents.py</code></summary>
1210 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-76">76</a></span>
1211 <span class="normal"><a href="#__codelineno-0-77">77</a></span>
1212 <span class="normal"><a href="#__codelineno-0-78">78</a></span>
1213 <span class="normal"><a href="#__codelineno-0-79">79</a></span>
1214 <span class="normal"><a href="#__codelineno-0-80">80</a></span>
915 -<span class="normal"><a href="#__codelineno-0-81">81</a></span></pre>
916 - </div>
917 - </td>
918 - <td class="code">
919 - <div>
920 - <pre><span></span><code><a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="k">def</span> <span class="nf">commit_wazuh_agent_to_db</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1215 +<span class="normal"><a href="#__codelineno-0-81">81</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-76" name="__codelineno-0-76"></a><span class="k">def</span> <span class="nf">commit_wazuh_agent_to_db</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1216 <a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1217 <a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="sd"> Commits the agent to the database.</span>
1218 <a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> &quot;&quot;&quot;</span>
1219 <a id="__codelineno-0-80" name="__codelineno-0-80"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
1220 <a id="__codelineno-0-81" name="__codelineno-0-81"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
926 -</code></pre>
927 - </div>
928 - </td>
929 - </tr>
930 - </table>
931 - </div>
932 - </details>
933 - </div>
934 - </div>
935 -
936 - <div class="doc doc-object doc-function">
937 - <h3
938 - id="app.models.agents.AgentMetadata.mark_as_critical"
939 - class="doc doc-heading"
940 - >
941 - <code class="highlight language-python"
942 - ><span class="n">mark_as_critical</span
943 - ><span class="p">()</span></code
944 - >
945 - </h3>
946 -
947 - <div class="doc doc-contents">
948 - <p>Marks the agent as a critical asset.</p>
949 -
950 - <details class="quote">
951 - <summary>
952 - Source code in <code>app\models\agents.py</code>
953 - </summary>
954 - <div class="highlight">
955 - <table class="highlighttable">
956 - <tr>
957 - <td class="linenos">
958 - <div class="linenodiv">
959 - <pre><span></span><span class="normal"><a href="#__codelineno-0-62">62</a></span>
1221 +</code></pre></div></td></tr></table></div>
1222 + </details>
1223 + </div>
1224 +
1225 +</div>
1226 +
1227 +<div class="doc doc-object doc-function">
1228 +
1229 +
1230 +
1231 +<h3 id="app.models.agents.AgentMetadata.mark_as_critical" class="doc doc-heading">
1232 +<code class="highlight language-python"><span class="n">mark_as_critical</span><span class="p">()</span></code>
1233 +
1234 +</h3>
1235 +
1236 +
1237 + <div class="doc doc-contents ">
1238 +
1239 + <p>Marks the agent as a critical asset.</p>
1240 +
1241 + <details class="quote">
1242 + <summary>Source code in <code>app\models\agents.py</code></summary>
1243 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-62">62</a></span>
1244 <span class="normal"><a href="#__codelineno-0-63">63</a></span>
1245 <span class="normal"><a href="#__codelineno-0-64">64</a></span>
1246 <span class="normal"><a href="#__codelineno-0-65">65</a></span>
1247 <span class="normal"><a href="#__codelineno-0-66">66</a></span>
964 -<span class="normal"><a href="#__codelineno-0-67">67</a></span></pre>
965 - </div>
966 - </td>
967 - <td class="code">
968 - <div>
969 - <pre><span></span><code><a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="k">def</span> <span class="nf">mark_as_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1248 +<span class="normal"><a href="#__codelineno-0-67">67</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-62" name="__codelineno-0-62"></a><span class="k">def</span> <span class="nf">mark_as_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1249 <a id="__codelineno-0-63" name="__codelineno-0-63"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1250 <a id="__codelineno-0-64" name="__codelineno-0-64"></a><span class="sd"> Marks the agent as a critical asset.</span>
1251 <a id="__codelineno-0-65" name="__codelineno-0-65"></a><span class="sd"> &quot;&quot;&quot;</span>
1252 <a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="bp">self</span><span class="o">.</span><span class="n">critical_asset</span> <span class="o">=</span> <span class="kc">True</span>
1253 <a id="__codelineno-0-67" name="__codelineno-0-67"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
975 -</code></pre>
976 - </div>
977 - </td>
978 - </tr>
979 - </table>
980 - </div>
981 - </details>
982 - </div>
983 - </div>
984 -
985 - <div class="doc doc-object doc-function">
986 - <h3
987 - id="app.models.agents.AgentMetadata.mark_as_non_critical"
988 - class="doc doc-heading"
989 - >
990 - <code class="highlight language-python"
991 - ><span class="n">mark_as_non_critical</span
992 - ><span class="p">()</span></code
993 - >
994 - </h3>
995 -
996 - <div class="doc doc-contents">
997 - <p>Marks the agent as a non-critical asset.</p>
998 -
999 - <details class="quote">
1000 - <summary>
1001 - Source code in <code>app\models\agents.py</code>
1002 - </summary>
1003 - <div class="highlight">
1004 - <table class="highlighttable">
1005 - <tr>
1006 - <td class="linenos">
1007 - <div class="linenodiv">
1008 - <pre><span></span><span class="normal"><a href="#__codelineno-0-69">69</a></span>
1254 +</code></pre></div></td></tr></table></div>
1255 + </details>
1256 + </div>
1257 +
1258 +</div>
1259 +
1260 +<div class="doc doc-object doc-function">
1261 +
1262 +
1263 +
1264 +<h3 id="app.models.agents.AgentMetadata.mark_as_non_critical" class="doc doc-heading">
1265 +<code class="highlight language-python"><span class="n">mark_as_non_critical</span><span class="p">()</span></code>
1266 +
1267 +</h3>
1268 +
1269 +
1270 + <div class="doc doc-contents ">
1271 +
1272 + <p>Marks the agent as a non-critical asset.</p>
1273 +
1274 + <details class="quote">
1275 + <summary>Source code in <code>app\models\agents.py</code></summary>
1276 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-69">69</a></span>
1277 <span class="normal"><a href="#__codelineno-0-70">70</a></span>
1278 <span class="normal"><a href="#__codelineno-0-71">71</a></span>
1279 <span class="normal"><a href="#__codelineno-0-72">72</a></span>
1280 <span class="normal"><a href="#__codelineno-0-73">73</a></span>
1013 -<span class="normal"><a href="#__codelineno-0-74">74</a></span></pre>
1014 - </div>
1015 - </td>
1016 - <td class="code">
1017 - <div>
1018 - <pre><span></span><code><a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="k">def</span> <span class="nf">mark_as_non_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1281 +<span class="normal"><a href="#__codelineno-0-74">74</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="k">def</span> <span class="nf">mark_as_non_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
1282 <a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1283 <a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="sd"> Marks the agent as a non-critical asset.</span>
1284 <a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> &quot;&quot;&quot;</span>
1285 <a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="bp">self</span><span class="o">.</span><span class="n">critical_asset</span> <span class="o">=</span> <span class="kc">False</span>
1286 <a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
1024 -</code></pre>
1025 - </div>
1026 - </td>
1027 - </tr>
1028 - </table>
1029 - </div>
1030 - </details>
1031 - </div>
1032 - </div>
1033 - </div>
1034 - </div>
1035 - </div>
1036 -
1037 - <div class="doc doc-object doc-class">
1038 - <h2 id="app.models.agents.AgentMetadataSchema" class="doc doc-heading">
1039 - <code>AgentMetadataSchema</code>
1040 - </h2>
1041 -
1042 - <div class="doc doc-contents">
1043 - <p class="doc doc-class-bases">
1044 - Bases:
1045 - <code
1046 - ><span title="app.ma">ma</span>.<span title="app.ma.Schema"
1047 - >Schema</span
1048 - ></code
1049 - >
1050 - </p>
1051 -
1052 - <p>
1053 - Schema for serializing and deserializing instances of the
1054 - AgentMetadata class.
1055 - </p>
1056 -
1057 - <details class="quote">
1058 - <summary>Source code in <code>app\models\agents.py</code></summary>
1059 - <div class="highlight">
1060 - <table class="highlighttable">
1061 - <tr>
1062 - <td class="linenos">
1063 - <div class="linenodiv">
1064 - <pre><span></span><span class="normal"><a href="#__codelineno-0-84"> 84</a></span>
1287 +</code></pre></div></td></tr></table></div>
1288 + </details>
1289 + </div>
1290 +
1291 +</div>
1292 +
1293 +
1294 +
1295 + </div>
1296 +
1297 + </div>
1298 +
1299 +</div>
1300 +
1301 +<div class="doc doc-object doc-class">
1302 +
1303 +
1304 +
1305 +<h2 id="app.models.agents.AgentMetadataSchema" class="doc doc-heading">
1306 + <code>AgentMetadataSchema</code>
1307 +
1308 +
1309 +</h2>
1310 +
1311 +
1312 + <div class="doc doc-contents ">
1313 + <p class="doc doc-class-bases">
1314 + Bases: <code><span title="app.ma">ma</span>.<span title="app.ma.Schema">Schema</span></code></p>
1315 +
1316 +
1317 + <p>Schema for serializing and deserializing instances of the AgentMetadata class.</p>
1318 +
1319 +
1320 + <details class="quote">
1321 + <summary>Source code in <code>app\models\agents.py</code></summary>
1322 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-84"> 84</a></span>
1323 <span class="normal"><a href="#__codelineno-0-85"> 85</a></span>
1324 <span class="normal"><a href="#__codelineno-0-86"> 86</a></span>
1325 <span class="normal"><a href="#__codelineno-0-87"> 87</a></span>
@@ -1079,12 +1337,7 @@
1337 <span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
1338 <span class="normal"><a href="#__codelineno-0-100">100</a></span>
1339 <span class="normal"><a href="#__codelineno-0-101">101</a></span>
1082 -<span class="normal"><a href="#__codelineno-0-102">102</a></span></pre>
1083 - </div>
1084 - </td>
1085 - <td class="code">
1086 - <div>
1087 - <pre><span></span><code><a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="k">class</span> <span class="nc">AgentMetadataSchema</span><span class="p">(</span><span class="n">ma</span><span class="o">.</span><span class="n">Schema</span><span class="p">):</span>
1340 +<span class="normal"><a href="#__codelineno-0-102">102</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="k">class</span> <span class="nc">AgentMetadataSchema</span><span class="p">(</span><span class="n">ma</span><span class="o">.</span><span class="n">Schema</span><span class="p">):</span>
1341 <a id="__codelineno-0-85" name="__codelineno-0-85"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1342 <a id="__codelineno-0-86" name="__codelineno-0-86"></a><span class="sd"> Schema for serializing and deserializing instances of the AgentMetadata class.</span>
1343 <a id="__codelineno-0-87" name="__codelineno-0-87"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -1103,39 +1356,40 @@
1356 <a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="s2">&quot;critical_asset&quot;</span><span class="p">,</span>
1357 <a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="s2">&quot;last_seen&quot;</span><span class="p">,</span>
1358 <a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="p">)</span>
1106 -</code></pre>
1107 - </div>
1108 - </td>
1109 - </tr>
1110 - </table>
1111 - </div>
1112 - </details>
1113 -
1114 - <div class="doc doc-children">
1115 - <div class="doc doc-object doc-class">
1116 - <h3
1117 - id="app.models.agents.AgentMetadataSchema.Meta"
1118 - class="doc doc-heading"
1119 - >
1120 - <code>Meta</code>
1121 - </h3>
1122 -
1123 - <div class="doc doc-contents">
1124 - <p>
1125 - Meta class defines the fields to be
1126 - serialized/deserialized.
1127 - </p>
1128 -
1129 - <details class="quote">
1130 - <summary>
1131 - Source code in <code>app\models\agents.py</code>
1132 - </summary>
1133 - <div class="highlight">
1134 - <table class="highlighttable">
1135 - <tr>
1136 - <td class="linenos">
1137 - <div class="linenodiv">
1138 - <pre><span></span><span class="normal"><a href="#__codelineno-0-89"> 89</a></span>
1359 +</code></pre></div></td></tr></table></div>
1360 + </details>
1361 +
1362 +
1363 +
1364 + <div class="doc doc-children">
1365 +
1366 +
1367 +
1368 +
1369 +
1370 +
1371 +
1372 +
1373 +<div class="doc doc-object doc-class">
1374 +
1375 +
1376 +
1377 +<h3 id="app.models.agents.AgentMetadataSchema.Meta" class="doc doc-heading">
1378 + <code>Meta</code>
1379 +
1380 +
1381 +</h3>
1382 +
1383 +
1384 + <div class="doc doc-contents ">
1385 +
1386 +
1387 + <p>Meta class defines the fields to be serialized/deserialized.</p>
1388 +
1389 +
1390 + <details class="quote">
1391 + <summary>Source code in <code>app\models\agents.py</code></summary>
1392 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-89"> 89</a></span>
1393 <span class="normal"><a href="#__codelineno-0-90"> 90</a></span>
1394 <span class="normal"><a href="#__codelineno-0-91"> 91</a></span>
1395 <span class="normal"><a href="#__codelineno-0-92"> 92</a></span>
@@ -1148,12 +1402,7 @@
1402 <span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
1403 <span class="normal"><a href="#__codelineno-0-100">100</a></span>
1404 <span class="normal"><a href="#__codelineno-0-101">101</a></span>
1151 -<span class="normal"><a href="#__codelineno-0-102">102</a></span></pre>
1152 - </div>
1153 - </td>
1154 - <td class="code">
1155 - <div>
1156 - <pre><span></span><code><a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
1405 +<span class="normal"><a href="#__codelineno-0-102">102</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-89" name="__codelineno-0-89"></a><span class="k">class</span> <span class="nc">Meta</span><span class="p">:</span>
1406 <a id="__codelineno-0-90" name="__codelineno-0-90"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1407 <a id="__codelineno-0-91" name="__codelineno-0-91"></a><span class="sd"> Meta class defines the fields to be serialized/deserialized.</span>
1408 <a id="__codelineno-0-92" name="__codelineno-0-92"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -1167,104 +1416,168 @@
1416 <a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="s2">&quot;critical_asset&quot;</span><span class="p">,</span>
1417 <a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="s2">&quot;last_seen&quot;</span><span class="p">,</span>
1418 <a id="__codelineno-0-102" name="__codelineno-0-102"></a> <span class="p">)</span>
1170 -</code></pre>
1171 - </div>
1172 - </td>
1173 - </tr>
1174 - </table>
1175 - </div>
1176 - </details>
1177 -
1178 - <div class="doc doc-children"></div>
1179 - </div>
1180 - </div>
1181 - </div>
1182 - </div>
1183 - </div>
1184 - </div>
1185 - </div>
1186 - </div>
1187 - <p><br /></p>
1188 - <h3 id="agent-routes"><span style="color: green">Agent Routes</span></h3>
1189 -
1190 - <div class="doc doc-object doc-module">
1191 - <a id="app.routes.agents"></a>
1192 - <div class="doc doc-contents first">
1193 - <div class="doc doc-children">
1194 - <div class="doc doc-object doc-function">
1195 - <h2 id="app.routes.agents.delete_agent" class="doc doc-heading">
1196 - <code class="highlight language-python"
1197 - ><span class="n">delete_agent</span><span class="p">(</span
1198 - ><span class="n">agent_id</span><span class="p">)</span></code
1199 - >
1200 - </h2>
1201 -
1202 - <div class="doc doc-contents">
1203 - <p>Endpoint to delete an agent.</p>
1204 -
1205 - <p><strong>Parameters:</strong></p>
1206 - <table>
1207 - <thead>
1208 - <tr>
1209 - <th>Name</th>
1210 - <th>Type</th>
1211 - <th>Description</th>
1212 - <th>Default</th>
1213 - </tr>
1214 - </thead>
1215 - <tbody>
1216 - <tr>
1217 - <td><code>agent_id</code></td>
1218 - <td>
1219 - <code>str</code>
1220 - </td>
1221 - <td>
1222 - <div class="doc-md-description">
1223 - <p>The ID of the agent to be deleted.</p>
1224 - </div>
1225 - </td>
1226 - <td>
1227 - <em>required</em>
1228 - </td>
1229 - </tr>
1230 - </tbody>
1231 - </table>
1232 -
1233 - <p><strong>Returns:</strong></p>
1234 - <table>
1235 - <thead>
1236 - <tr>
1237 - <th>Name</th>
1238 - <th>Type</th>
1239 - <th>Description</th>
1240 - </tr>
1241 - </thead>
1242 - <tbody>
1243 - <tr>
1244 - <td><code>json</code></td>
1245 - <td>
1246 - <code><span title="typing.Any">Any</span></code>
1247 - </td>
1248 - <td>
1249 - <div class="doc-md-description">
1250 - <p>
1251 - A JSON response indicating whether the deletion
1252 - was successful.
1253 - </p>
1254 - </div>
1255 - </td>
1256 - </tr>
1257 - </tbody>
1258 - </table>
1259 -
1260 - <details class="quote">
1261 - <summary>Source code in <code>app\routes\agents.py</code></summary>
1262 - <div class="highlight">
1263 - <table class="highlighttable">
1264 - <tr>
1265 - <td class="linenos">
1266 - <div class="linenodiv">
1267 - <pre><span></span><span class="normal"><a href="#__codelineno-0-81">81</a></span>
1419 +</code></pre></div></td></tr></table></div>
1420 + </details>
1421 +
1422 +
1423 +
1424 + <div class="doc doc-children">
1425 +
1426 +
1427 +
1428 +
1429 +
1430 +
1431 +
1432 +
1433 +
1434 +
1435 +
1436 + </div>
1437 +
1438 + </div>
1439 +
1440 +</div>
1441 +
1442 +
1443 +
1444 +
1445 + </div>
1446 +
1447 + </div>
1448 +
1449 +</div>
1450 +
1451 +
1452 +
1453 +
1454 + </div>
1455 +
1456 + </div>
1457 +
1458 +</div><p><br></p>
1459 +<h3 id="agent-routes"><span style="color:green">Agent Routes</span></h3>
1460 +<h1 id="agentspy-python-module-overview">agents.py - Python Module Overview</h1>
1461 +<p>The <code>agents.py</code> file is a Python module that primarily acts as a Flask Blueprint for defining routes related to the "agents" endpoint in a Flask web application. The main functionalities provided by this module are to list all available agents, to fetch information related to a specific agent, to sync agents, and to get agent metadata and vulnerabilities.</p>
1462 +<p>Below are the details of the main components and functionalities of this Python module:</p>
1463 +<h2 id="import-section">Import Section</h2>
1464 +<p>The module starts by importing the necessary libraries, including Flask's <code>Blueprint</code> and <code>jsonify</code>, and a variety of services from the application. The services imported are:</p>
1465 +<ul>
1466 +<li><code>AgentService</code>: This service is expected to include methods that handle the main logic and operations related to the agents.</li>
1467 +<li><code>AgentSyncService</code>: This service is expected to handle the synchronization of agents.</li>
1468 +<li><code>WazuhManagerAgentService</code>: This service is expected to handle operations related to Wazuh Manager's agents.</li>
1469 +<li><code>UniversalService</code>: A universal service from the Wazuh Manager.</li>
1470 +<li><code>VulnerabilityService</code>: This service is expected to handle operations related to vulnerabilities of the agents.</li>
1471 +</ul>
1472 +<h2 id="blueprint-definition">Blueprint Definition</h2>
1473 +<p>A Flask Blueprint named "agents" is defined. This Blueprint is used to create modular components in the Flask application, in this case, all the routes related to the "agents" endpoint.</p>
1474 +<h2 id="route-definitions">Route Definitions</h2>
1475 +<p>Several route decorators are used on the methods to define the endpoints for the Flask application:</p>
1476 +<ul>
1477 +<li>
1478 +<p><code>@bp.route("/agents", methods=["GET"])</code>: This route is associated with the <code>get_agents</code> function. This endpoint is expected to return a list of all agents when a GET request is made to "/agents".</p>
1479 +</li>
1480 +<li>
1481 +<p><code>@bp.route("/agents/&lt;agent_id&gt;", methods=["GET"])</code>: This route is associated with the <code>get_agent</code> function. This endpoint is expected to return information related to a specific agent when a GET request is made to "/agents/<agent_id>".</p>
1482 +</li>
1483 +<li>
1484 +<p><code>@bp.route("/agents/sync", methods=["POST"])</code>: This route is associated with the <code>sync_agents</code> function. This endpoint is expected to trigger a synchronization of the agents when a POST request is made to "/agents/sync".</p>
1485 +</li>
1486 +<li>
1487 +<p><code>@bp.route("/agents/&lt;agent_id&gt;/metadata", methods=["GET"])</code>: This route is associated with the <code>get_agent_metadata</code> function. This endpoint is expected to return metadata related to a specific agent when a GET request is made to "/agents/<agent_id>/metadata".</p>
1488 +</li>
1489 +<li>
1490 +<p><code>@bp.route("/agents/&lt;agent_id&gt;/vulnerabilities", methods=["GET"])</code>: This route is associated with the <code>get_agent_vulnerabilities</code> function. This endpoint is expected to return vulnerabilities related to a specific agent when a GET request is made to "/agents/<agent_id>/vulnerabilities".</p>
1491 +</li>
1492 +</ul>
1493 +<p>Each of these methods is expected to create an instance of the respective service, call the appropriate method on the service, and return the results in JSON format using Flask's <code>jsonify</code> function. In case of an error, these methods are expected to return a JSON response with a message indicating the failure and a success status set to False.</p>
1494 +
1495 +
1496 +<div class="doc doc-object doc-module">
1497 +
1498 +
1499 +<a id="app.routes.agents"></a>
1500 + <div class="doc doc-contents first">
1501 +
1502 +
1503 +
1504 + <div class="doc doc-children">
1505 +
1506 +
1507 +
1508 +
1509 +
1510 +
1511 +
1512 +
1513 +
1514 +<div class="doc doc-object doc-function">
1515 +
1516 +
1517 +
1518 +<h2 id="app.routes.agents.delete_agent" class="doc doc-heading">
1519 +<code class="highlight language-python"><span class="n">delete_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="p">)</span></code>
1520 +
1521 +</h2>
1522 +
1523 +
1524 + <div class="doc doc-contents ">
1525 +
1526 + <p>Endpoint to delete an agent.</p>
1527 +
1528 + <p><strong>Parameters:</strong></p>
1529 + <table>
1530 + <thead>
1531 + <tr>
1532 + <th>Name</th>
1533 + <th>Type</th>
1534 + <th>Description</th>
1535 + <th>Default</th>
1536 + </tr>
1537 + </thead>
1538 + <tbody>
1539 + <tr>
1540 + <td><code>agent_id</code></td>
1541 + <td>
1542 + <code>str</code>
1543 + </td>
1544 + <td>
1545 + <div class="doc-md-description">
1546 + <p>The ID of the agent to be deleted.</p>
1547 + </div>
1548 + </td>
1549 + <td>
1550 + <em>required</em>
1551 + </td>
1552 + </tr>
1553 + </tbody>
1554 + </table>
1555 +
1556 + <p><strong>Returns:</strong></p>
1557 + <table>
1558 + <thead>
1559 + <tr>
1560 +<th>Name</th> <th>Type</th>
1561 + <th>Description</th>
1562 + </tr>
1563 + </thead>
1564 + <tbody>
1565 + <tr>
1566 +<td><code>json</code></td> <td>
1567 + <code><span title="typing.Any">Any</span></code>
1568 + </td>
1569 + <td>
1570 + <div class="doc-md-description">
1571 + <p>A JSON response indicating whether the deletion was successful.</p>
1572 + </div>
1573 + </td>
1574 + </tr>
1575 + </tbody>
1576 + </table>
1577 +
1578 + <details class="quote">
1579 + <summary>Source code in <code>app\routes\agents.py</code></summary>
1580 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-81">81</a></span>
1581 <span class="normal"><a href="#__codelineno-0-82">82</a></span>
1582 <span class="normal"><a href="#__codelineno-0-83">83</a></span>
1583 <span class="normal"><a href="#__codelineno-0-84">84</a></span>
@@ -1280,12 +1593,7 @@
1593 <span class="normal"><a href="#__codelineno-0-94">94</a></span>
1594 <span class="normal"><a href="#__codelineno-0-95">95</a></span>
1595 <span class="normal"><a href="#__codelineno-0-96">96</a></span>
1283 -<span class="normal"><a href="#__codelineno-0-97">97</a></span></pre>
1284 - </div>
1285 - </td>
1286 - <td class="code">
1287 - <div>
1288 - <pre><span></span><code><a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/&lt;agent_id&gt;/delete&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;POST&quot;</span><span class="p">])</span>
1596 +<span class="normal"><a href="#__codelineno-0-97">97</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-81" name="__codelineno-0-81"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/&lt;agent_id&gt;/delete&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;POST&quot;</span><span class="p">])</span>
1597 <a id="__codelineno-0-82" name="__codelineno-0-82"></a><span class="k">def</span> <span class="nf">delete_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
1598 <a id="__codelineno-0-83" name="__codelineno-0-83"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1599 <a id="__codelineno-0-84" name="__codelineno-0-84"></a><span class="sd"> Endpoint to delete an agent.</span>
@@ -1302,90 +1610,79 @@
1610 <a id="__codelineno-0-95" name="__codelineno-0-95"></a> <span class="n">agent_service</span><span class="o">.</span><span class="n">delete_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1611 <a id="__codelineno-0-96" name="__codelineno-0-96"></a>
1612 <a id="__codelineno-0-97" name="__codelineno-0-97"></a> <span class="k">return</span> <span class="n">result</span>
1305 -</code></pre>
1306 - </div>
1307 - </td>
1308 - </tr>
1309 - </table>
1310 - </div>
1311 - </details>
1312 - </div>
1313 - </div>
1314 -
1315 - <div class="doc doc-object doc-function">
1316 - <h2 id="app.routes.agents.get_agent" class="doc doc-heading">
1317 - <code class="highlight language-python"
1318 - ><span class="n">get_agent</span><span class="p">(</span
1319 - ><span class="n">agent_id</span><span class="p">)</span></code
1320 - >
1321 - </h2>
1322 -
1323 - <div class="doc doc-contents">
1324 - <p>Endpoint to get the details of a specific agent.</p>
1325 -
1326 - <p><strong>Parameters:</strong></p>
1327 - <table>
1328 - <thead>
1329 - <tr>
1330 - <th>Name</th>
1331 - <th>Type</th>
1332 - <th>Description</th>
1333 - <th>Default</th>
1334 - </tr>
1335 - </thead>
1336 - <tbody>
1337 - <tr>
1338 - <td><code>agent_id</code></td>
1339 - <td>
1340 - <code>str</code>
1341 - </td>
1342 - <td>
1343 - <div class="doc-md-description">
1344 - <p>The ID of the agent to retrieve.</p>
1345 - </div>
1346 - </td>
1347 - <td>
1348 - <em>required</em>
1349 - </td>
1350 - </tr>
1351 - </tbody>
1352 - </table>
1353 -
1354 - <p><strong>Returns:</strong></p>
1355 - <table>
1356 - <thead>
1357 - <tr>
1358 - <th>Name</th>
1359 - <th>Type</th>
1360 - <th>Description</th>
1361 - </tr>
1362 - </thead>
1363 - <tbody>
1364 - <tr>
1365 - <td><code>json</code></td>
1366 - <td>
1367 - <code><span title="typing.Any">Any</span></code>
1368 - </td>
1369 - <td>
1370 - <div class="doc-md-description">
1371 - <p>
1372 - A JSON response containing the details of the
1373 - agent.
1374 - </p>
1375 - </div>
1376 - </td>
1377 - </tr>
1378 - </tbody>
1379 - </table>
1380 -
1381 - <details class="quote">
1382 - <summary>Source code in <code>app\routes\agents.py</code></summary>
1383 - <div class="highlight">
1384 - <table class="highlighttable">
1385 - <tr>
1386 - <td class="linenos">
1387 - <div class="linenodiv">
1388 - <pre><span></span><span class="normal"><a href="#__codelineno-0-27">27</a></span>
1613 +</code></pre></div></td></tr></table></div>
1614 + </details>
1615 + </div>
1616 +
1617 +</div>
1618 +
1619 +<div class="doc doc-object doc-function">
1620 +
1621 +
1622 +
1623 +<h2 id="app.routes.agents.get_agent" class="doc doc-heading">
1624 +<code class="highlight language-python"><span class="n">get_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="p">)</span></code>
1625 +
1626 +</h2>
1627 +
1628 +
1629 + <div class="doc doc-contents ">
1630 +
1631 + <p>Endpoint to get the details of a specific agent.</p>
1632 +
1633 + <p><strong>Parameters:</strong></p>
1634 + <table>
1635 + <thead>
1636 + <tr>
1637 + <th>Name</th>
1638 + <th>Type</th>
1639 + <th>Description</th>
1640 + <th>Default</th>
1641 + </tr>
1642 + </thead>
1643 + <tbody>
1644 + <tr>
1645 + <td><code>agent_id</code></td>
1646 + <td>
1647 + <code>str</code>
1648 + </td>
1649 + <td>
1650 + <div class="doc-md-description">
1651 + <p>The ID of the agent to retrieve.</p>
1652 + </div>
1653 + </td>
1654 + <td>
1655 + <em>required</em>
1656 + </td>
1657 + </tr>
1658 + </tbody>
1659 + </table>
1660 +
1661 + <p><strong>Returns:</strong></p>
1662 + <table>
1663 + <thead>
1664 + <tr>
1665 +<th>Name</th> <th>Type</th>
1666 + <th>Description</th>
1667 + </tr>
1668 + </thead>
1669 + <tbody>
1670 + <tr>
1671 +<td><code>json</code></td> <td>
1672 + <code><span title="typing.Any">Any</span></code>
1673 + </td>
1674 + <td>
1675 + <div class="doc-md-description">
1676 + <p>A JSON response containing the details of the agent.</p>
1677 + </div>
1678 + </td>
1679 + </tr>
1680 + </tbody>
1681 + </table>
1682 +
1683 + <details class="quote">
1684 + <summary>Source code in <code>app\routes\agents.py</code></summary>
1685 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-27">27</a></span>
1686 <span class="normal"><a href="#__codelineno-0-28">28</a></span>
1687 <span class="normal"><a href="#__codelineno-0-29">29</a></span>
1688 <span class="normal"><a href="#__codelineno-0-30">30</a></span>
@@ -1396,12 +1693,7 @@
1693 <span class="normal"><a href="#__codelineno-0-35">35</a></span>
1694 <span class="normal"><a href="#__codelineno-0-36">36</a></span>
1695 <span class="normal"><a href="#__codelineno-0-37">37</a></span>
1399 -<span class="normal"><a href="#__codelineno-0-38">38</a></span></pre>
1400 - </div>
1401 - </td>
1402 - <td class="code">
1403 - <div>
1404 - <pre><span></span><code><a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/&lt;agent_id&gt;&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1696 +<span class="normal"><a href="#__codelineno-0-38">38</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/&lt;agent_id&gt;&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1697 <a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="k">def</span> <span class="nf">get_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
1698 <a id="__codelineno-0-29" name="__codelineno-0-29"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1699 <a id="__codelineno-0-30" name="__codelineno-0-30"></a><span class="sd"> Endpoint to get the details of a specific agent.</span>
@@ -1413,97 +1705,79 @@
1705 <a id="__codelineno-0-36" name="__codelineno-0-36"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1706 <a id="__codelineno-0-37" name="__codelineno-0-37"></a> <span class="n">agent</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">get_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1707 <a id="__codelineno-0-38" name="__codelineno-0-38"></a> <span class="k">return</span> <span class="n">agent</span>
1416 -</code></pre>
1417 - </div>
1418 - </td>
1419 - </tr>
1420 - </table>
1421 - </div>
1422 - </details>
1423 - </div>
1424 - </div>
1425 -
1426 - <div class="doc doc-object doc-function">
1427 - <h2
1428 - id="app.routes.agents.get_agent_vulnerabilities"
1429 - class="doc doc-heading"
1430 - >
1431 - <code class="highlight language-python"
1432 - ><span class="n">get_agent_vulnerabilities</span
1433 - ><span class="p">(</span><span class="n">agent_id</span
1434 - ><span class="p">)</span></code
1435 - >
1436 - </h2>
1437 -
1438 - <div class="doc doc-contents">
1439 - <p>Endpoint to get the vulnerabilities of a specific agent.</p>
1440 -
1441 - <p><strong>Parameters:</strong></p>
1442 - <table>
1443 - <thead>
1444 - <tr>
1445 - <th>Name</th>
1446 - <th>Type</th>
1447 - <th>Description</th>
1448 - <th>Default</th>
1449 - </tr>
1450 - </thead>
1451 - <tbody>
1452 - <tr>
1453 - <td><code>agent_id</code></td>
1454 - <td>
1455 - <code>str</code>
1456 - </td>
1457 - <td>
1458 - <div class="doc-md-description">
1459 - <p>
1460 - The ID of the agent whose vulnerabilities are to
1461 - be fetched.
1462 - </p>
1463 - </div>
1464 - </td>
1465 - <td>
1466 - <em>required</em>
1467 - </td>
1468 - </tr>
1469 - </tbody>
1470 - </table>
1471 -
1472 - <p><strong>Returns:</strong></p>
1473 - <table>
1474 - <thead>
1475 - <tr>
1476 - <th>Name</th>
1477 - <th>Type</th>
1478 - <th>Description</th>
1479 - </tr>
1480 - </thead>
1481 - <tbody>
1482 - <tr>
1483 - <td><code>json</code></td>
1484 - <td>
1485 - <code><span title="typing.Any">Any</span></code>
1486 - </td>
1487 - <td>
1488 - <div class="doc-md-description">
1489 - <p>
1490 - A JSON response containing the vulnerabilities
1491 - of the agent.
1492 - </p>
1493 - </div>
1494 - </td>
1495 - </tr>
1496 - </tbody>
1497 - </table>
1498 -
1499 - <details class="quote">
1500 - <summary>Source code in <code>app\routes\agents.py</code></summary>
1501 - <div class="highlight">
1502 - <table class="highlighttable">
1503 - <tr>
1504 - <td class="linenos">
1505 - <div class="linenodiv">
1506 - <pre><span></span><span class="normal"><a href="#__codelineno-0-100">100</a></span>
1708 +</code></pre></div></td></tr></table></div>
1709 + </details>
1710 + </div>
1711 +
1712 +</div>
1713 +
1714 +<div class="doc doc-object doc-function">
1715 +
1716 +
1717 +
1718 +<h2 id="app.routes.agents.get_agent_vulnerabilities" class="doc doc-heading">
1719 +<code class="highlight language-python"><span class="n">get_agent_vulnerabilities</span><span class="p">(</span><span class="n">agent_id</span><span class="p">)</span></code>
1720 +
1721 +</h2>
1722 +
1723 +
1724 + <div class="doc doc-contents ">
1725 +
1726 + <p>Endpoint to get the vulnerabilities of a specific agent.</p>
1727 +
1728 + <p><strong>Parameters:</strong></p>
1729 + <table>
1730 + <thead>
1731 + <tr>
1732 + <th>Name</th>
1733 + <th>Type</th>
1734 + <th>Description</th>
1735 + <th>Default</th>
1736 + </tr>
1737 + </thead>
1738 + <tbody>
1739 + <tr>
1740 + <td><code>agent_id</code></td>
1741 + <td>
1742 + <code>str</code>
1743 + </td>
1744 + <td>
1745 + <div class="doc-md-description">
1746 + <p>The ID of the agent whose vulnerabilities are to be fetched.</p>
1747 + </div>
1748 + </td>
1749 + <td>
1750 + <em>required</em>
1751 + </td>
1752 + </tr>
1753 + </tbody>
1754 + </table>
1755 +
1756 + <p><strong>Returns:</strong></p>
1757 + <table>
1758 + <thead>
1759 + <tr>
1760 +<th>Name</th> <th>Type</th>
1761 + <th>Description</th>
1762 + </tr>
1763 + </thead>
1764 + <tbody>
1765 + <tr>
1766 +<td><code>json</code></td> <td>
1767 + <code><span title="typing.Any">Any</span></code>
1768 + </td>
1769 + <td>
1770 + <div class="doc-md-description">
1771 + <p>A JSON response containing the vulnerabilities of the agent.</p>
1772 + </div>
1773 + </td>
1774 + </tr>
1775 + </tbody>
1776 + </table>
1777 +
1778 + <details class="quote">
1779 + <summary>Source code in <code>app\routes\agents.py</code></summary>
1780 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-100">100</a></span>
1781 <span class="normal"><a href="#__codelineno-0-101">101</a></span>
1782 <span class="normal"><a href="#__codelineno-0-102">102</a></span>
1783 <span class="normal"><a href="#__codelineno-0-103">103</a></span>
@@ -1518,12 +1792,7 @@
1792 <span class="normal"><a href="#__codelineno-0-112">112</a></span>
1793 <span class="normal"><a href="#__codelineno-0-113">113</a></span>
1794 <span class="normal"><a href="#__codelineno-0-114">114</a></span>
1521 -<span class="normal"><a href="#__codelineno-0-115">115</a></span></pre>
1522 - </div>
1523 - </td>
1524 - <td class="code">
1525 - <div>
1526 - <pre><span></span><code><a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/&lt;agent_id&gt;/vulnerabilities&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1795 +<span class="normal"><a href="#__codelineno-0-115">115</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-100" name="__codelineno-0-100"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/&lt;agent_id&gt;/vulnerabilities&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1796 <a id="__codelineno-0-101" name="__codelineno-0-101"></a><span class="k">def</span> <span class="nf">get_agent_vulnerabilities</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
1797 <a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1798 <a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="sd"> Endpoint to get the vulnerabilities of a specific agent.</span>
@@ -1539,65 +1808,51 @@
1808 <a id="__codelineno-0-113" name="__codelineno-0-113"></a> <span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">,</span>
1809 <a id="__codelineno-0-114" name="__codelineno-0-114"></a> <span class="p">)</span>
1810 <a id="__codelineno-0-115" name="__codelineno-0-115"></a> <span class="k">return</span> <span class="n">agent_vulnerabilities</span>
1542 -</code></pre>
1543 - </div>
1544 - </td>
1545 - </tr>
1546 - </table>
1547 - </div>
1548 - </details>
1549 - </div>
1550 - </div>
1551 -
1552 - <div class="doc doc-object doc-function">
1553 - <h2 id="app.routes.agents.get_agents" class="doc doc-heading">
1554 - <code class="highlight language-python"
1555 - ><span class="n">get_agents</span><span class="p">()</span></code
1556 - >
1557 - </h2>
1558 -
1559 - <div class="doc doc-contents">
1560 - <p>
1561 - Endpoint to get a list of all agents. It processes each agent and
1562 - returns the results.
1563 - </p>
1564 -
1565 - <p><strong>Returns:</strong></p>
1566 - <table>
1567 - <thead>
1568 - <tr>
1569 - <th>Name</th>
1570 - <th>Type</th>
1571 - <th>Description</th>
1572 - </tr>
1573 - </thead>
1574 - <tbody>
1575 - <tr>
1576 - <td><code>json</code></td>
1577 - <td>
1578 - <code><span title="typing.Any">Any</span></code>
1579 - </td>
1580 - <td>
1581 - <div class="doc-md-description">
1582 - <p>
1583 - A JSON response containing the list of all
1584 - available agents along with their connection
1585 - verification status.
1586 - </p>
1587 - </div>
1588 - </td>
1589 - </tr>
1590 - </tbody>
1591 - </table>
1592 -
1593 - <details class="quote">
1594 - <summary>Source code in <code>app\routes\agents.py</code></summary>
1595 - <div class="highlight">
1596 - <table class="highlighttable">
1597 - <tr>
1598 - <td class="linenos">
1599 - <div class="linenodiv">
1600 - <pre><span></span><span class="normal"><a href="#__codelineno-0-15">15</a></span>
1811 +</code></pre></div></td></tr></table></div>
1812 + </details>
1813 + </div>
1814 +
1815 +</div>
1816 +
1817 +<div class="doc doc-object doc-function">
1818 +
1819 +
1820 +
1821 +<h2 id="app.routes.agents.get_agents" class="doc doc-heading">
1822 +<code class="highlight language-python"><span class="n">get_agents</span><span class="p">()</span></code>
1823 +
1824 +</h2>
1825 +
1826 +
1827 + <div class="doc doc-contents ">
1828 +
1829 + <p>Endpoint to get a list of all agents. It processes each agent and returns the results.</p>
1830 +
1831 + <p><strong>Returns:</strong></p>
1832 + <table>
1833 + <thead>
1834 + <tr>
1835 +<th>Name</th> <th>Type</th>
1836 + <th>Description</th>
1837 + </tr>
1838 + </thead>
1839 + <tbody>
1840 + <tr>
1841 +<td><code>json</code></td> <td>
1842 + <code><span title="typing.Any">Any</span></code>
1843 + </td>
1844 + <td>
1845 + <div class="doc-md-description">
1846 + <p>A JSON response containing the list of all available agents along with their connection verification status.</p>
1847 + </div>
1848 + </td>
1849 + </tr>
1850 + </tbody>
1851 + </table>
1852 +
1853 + <details class="quote">
1854 + <summary>Source code in <code>app\routes\agents.py</code></summary>
1855 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-15">15</a></span>
1856 <span class="normal"><a href="#__codelineno-0-16">16</a></span>
1857 <span class="normal"><a href="#__codelineno-0-17">17</a></span>
1858 <span class="normal"><a href="#__codelineno-0-18">18</a></span>
@@ -1606,12 +1861,7 @@
1861 <span class="normal"><a href="#__codelineno-0-21">21</a></span>
1862 <span class="normal"><a href="#__codelineno-0-22">22</a></span>
1863 <span class="normal"><a href="#__codelineno-0-23">23</a></span>
1609 -<span class="normal"><a href="#__codelineno-0-24">24</a></span></pre>
1610 - </div>
1611 - </td>
1612 - <td class="code">
1613 - <div>
1614 - <pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1864 +<span class="normal"><a href="#__codelineno-0-24">24</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-15" name="__codelineno-0-15"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GET&quot;</span><span class="p">])</span>
1865 <a id="__codelineno-0-16" name="__codelineno-0-16"></a><span class="k">def</span> <span class="nf">get_agents</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
1866 <a id="__codelineno-0-17" name="__codelineno-0-17"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1867 <a id="__codelineno-0-18" name="__codelineno-0-18"></a><span class="sd"> Endpoint to get a list of all agents. It processes each agent and returns the results.</span>
@@ -1621,90 +1871,79 @@
1871 <a id="__codelineno-0-22" name="__codelineno-0-22"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1872 <a id="__codelineno-0-23" name="__codelineno-0-23"></a> <span class="n">agents</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">get_all_agents</span><span class="p">()</span>
1873 <a id="__codelineno-0-24" name="__codelineno-0-24"></a> <span class="k">return</span> <span class="n">agents</span>
1624 -</code></pre>
1625 - </div>
1626 - </td>
1627 - </tr>
1628 - </table>
1629 - </div>
1630 - </details>
1631 - </div>
1632 - </div>
1633 -
1634 - <div class="doc doc-object doc-function">
1635 - <h2 id="app.routes.agents.mark_as_critical" class="doc doc-heading">
1636 - <code class="highlight language-python"
1637 - ><span class="n">mark_as_critical</span><span class="p">(</span
1638 - ><span class="n">agent_id</span><span class="p">)</span></code
1639 - >
1640 - </h2>
1641 -
1642 - <div class="doc doc-contents">
1643 - <p>Endpoint to mark an agent as critical.</p>
1644 -
1645 - <p><strong>Parameters:</strong></p>
1646 - <table>
1647 - <thead>
1648 - <tr>
1649 - <th>Name</th>
1650 - <th>Type</th>
1651 - <th>Description</th>
1652 - <th>Default</th>
1653 - </tr>
1654 - </thead>
1655 - <tbody>
1656 - <tr>
1657 - <td><code>agent_id</code></td>
1658 - <td>
1659 - <code>str</code>
1660 - </td>
1661 - <td>
1662 - <div class="doc-md-description">
1663 - <p>The ID of the agent to mark as critical.</p>
1664 - </div>
1665 - </td>
1666 - <td>
1667 - <em>required</em>
1668 - </td>
1669 - </tr>
1670 - </tbody>
1671 - </table>
1672 -
1673 - <p><strong>Returns:</strong></p>
1674 - <table>
1675 - <thead>
1676 - <tr>
1677 - <th>Name</th>
1678 - <th>Type</th>
1679 - <th>Description</th>
1680 - </tr>
1681 - </thead>
1682 - <tbody>
1683 - <tr>
1684 - <td><code>json</code></td>
1685 - <td>
1686 - <code><span title="typing.Any">Any</span></code>
1687 - </td>
1688 - <td>
1689 - <div class="doc-md-description">
1690 - <p>
1691 - A JSON response containing the updated agent
1692 - information after being marked as critical.
1693 - </p>
1694 - </div>
1695 - </td>
1696 - </tr>
1697 - </tbody>
1698 - </table>
1699 -
1700 - <details class="quote">
1701 - <summary>Source code in <code>app\routes\agents.py</code></summary>
1702 - <div class="highlight">
1703 - <table class="highlighttable">
1704 - <tr>
1705 - <td class="linenos">
1706 - <div class="linenodiv">
1707 - <pre><span></span><span class="normal"><a href="#__codelineno-0-41">41</a></span>
1874 +</code></pre></div></td></tr></table></div>
1875 + </details>
1876 + </div>
1877 +
1878 +</div>
1879 +
1880 +<div class="doc doc-object doc-function">
1881 +
1882 +
1883 +
1884 +<h2 id="app.routes.agents.mark_as_critical" class="doc doc-heading">
1885 +<code class="highlight language-python"><span class="n">mark_as_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="p">)</span></code>
1886 +
1887 +</h2>
1888 +
1889 +
1890 + <div class="doc doc-contents ">
1891 +
1892 + <p>Endpoint to mark an agent as critical.</p>
1893 +
1894 + <p><strong>Parameters:</strong></p>
1895 + <table>
1896 + <thead>
1897 + <tr>
1898 + <th>Name</th>
1899 + <th>Type</th>
1900 + <th>Description</th>
1901 + <th>Default</th>
1902 + </tr>
1903 + </thead>
1904 + <tbody>
1905 + <tr>
1906 + <td><code>agent_id</code></td>
1907 + <td>
1908 + <code>str</code>
1909 + </td>
1910 + <td>
1911 + <div class="doc-md-description">
1912 + <p>The ID of the agent to mark as critical.</p>
1913 + </div>
1914 + </td>
1915 + <td>
1916 + <em>required</em>
1917 + </td>
1918 + </tr>
1919 + </tbody>
1920 + </table>
1921 +
1922 + <p><strong>Returns:</strong></p>
1923 + <table>
1924 + <thead>
1925 + <tr>
1926 +<th>Name</th> <th>Type</th>
1927 + <th>Description</th>
1928 + </tr>
1929 + </thead>
1930 + <tbody>
1931 + <tr>
1932 +<td><code>json</code></td> <td>
1933 + <code><span title="typing.Any">Any</span></code>
1934 + </td>
1935 + <td>
1936 + <div class="doc-md-description">
1937 + <p>A JSON response containing the updated agent information after being marked as critical.</p>
1938 + </div>
1939 + </td>
1940 + </tr>
1941 + </tbody>
1942 + </table>
1943 +
1944 + <details class="quote">
1945 + <summary>Source code in <code>app\routes\agents.py</code></summary>
1946 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-41">41</a></span>
1947 <span class="normal"><a href="#__codelineno-0-42">42</a></span>
1948 <span class="normal"><a href="#__codelineno-0-43">43</a></span>
1949 <span class="normal"><a href="#__codelineno-0-44">44</a></span>
@@ -1715,12 +1954,7 @@
1954 <span class="normal"><a href="#__codelineno-0-49">49</a></span>
1955 <span class="normal"><a href="#__codelineno-0-50">50</a></span>
1956 <span class="normal"><a href="#__codelineno-0-51">51</a></span>
1718 -<span class="normal"><a href="#__codelineno-0-52">52</a></span></pre>
1719 - </div>
1720 - </td>
1721 - <td class="code">
1722 - <div>
1723 - <pre><span></span><code><a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/&lt;agent_id&gt;/critical&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;POST&quot;</span><span class="p">])</span>
1957 +<span class="normal"><a href="#__codelineno-0-52">52</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-41" name="__codelineno-0-41"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/&lt;agent_id&gt;/critical&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;POST&quot;</span><span class="p">])</span>
1958 <a id="__codelineno-0-42" name="__codelineno-0-42"></a><span class="k">def</span> <span class="nf">mark_as_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
1959 <a id="__codelineno-0-43" name="__codelineno-0-43"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
1960 <a id="__codelineno-0-44" name="__codelineno-0-44"></a><span class="sd"> Endpoint to mark an agent as critical.</span>
@@ -1732,61 +1966,51 @@
1966 <a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
1967 <a id="__codelineno-0-51" name="__codelineno-0-51"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">mark_agent_as_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
1968 <a id="__codelineno-0-52" name="__codelineno-0-52"></a> <span class="k">return</span> <span class="n">result</span>
1735 -</code></pre>
1736 - </div>
1737 - </td>
1738 - </tr>
1739 - </table>
1740 - </div>
1741 - </details>
1742 - </div>
1743 - </div>
1744 -
1745 - <div class="doc doc-object doc-function">
1746 - <h2 id="app.routes.agents.sync_agents" class="doc doc-heading">
1747 - <code class="highlight language-python"
1748 - ><span class="n">sync_agents</span><span class="p">()</span></code
1749 - >
1750 - </h2>
1751 -
1752 - <div class="doc doc-contents">
1753 - <p>Endpoint to synchronize all agents.</p>
1754 -
1755 - <p><strong>Returns:</strong></p>
1756 - <table>
1757 - <thead>
1758 - <tr>
1759 - <th>Name</th>
1760 - <th>Type</th>
1761 - <th>Description</th>
1762 - </tr>
1763 - </thead>
1764 - <tbody>
1765 - <tr>
1766 - <td><code>json</code></td>
1767 - <td>
1768 - <code><span title="typing.Any">Any</span></code>
1769 - </td>
1770 - <td>
1771 - <div class="doc-md-description">
1772 - <p>
1773 - A JSON response containing the updated
1774 - information of all synchronized agents.
1775 - </p>
1776 - </div>
1777 - </td>
1778 - </tr>
1779 - </tbody>
1780 - </table>
1781 -
1782 - <details class="quote">
1783 - <summary>Source code in <code>app\routes\agents.py</code></summary>
1784 - <div class="highlight">
1785 - <table class="highlighttable">
1786 - <tr>
1787 - <td class="linenos">
1788 - <div class="linenodiv">
1789 - <pre><span></span><span class="normal"><a href="#__codelineno-0-69">69</a></span>
1969 +</code></pre></div></td></tr></table></div>
1970 + </details>
1971 + </div>
1972 +
1973 +</div>
1974 +
1975 +<div class="doc doc-object doc-function">
1976 +
1977 +
1978 +
1979 +<h2 id="app.routes.agents.sync_agents" class="doc doc-heading">
1980 +<code class="highlight language-python"><span class="n">sync_agents</span><span class="p">()</span></code>
1981 +
1982 +</h2>
1983 +
1984 +
1985 + <div class="doc doc-contents ">
1986 +
1987 + <p>Endpoint to synchronize all agents.</p>
1988 +
1989 + <p><strong>Returns:</strong></p>
1990 + <table>
1991 + <thead>
1992 + <tr>
1993 +<th>Name</th> <th>Type</th>
1994 + <th>Description</th>
1995 + </tr>
1996 + </thead>
1997 + <tbody>
1998 + <tr>
1999 +<td><code>json</code></td> <td>
2000 + <code><span title="typing.Any">Any</span></code>
2001 + </td>
2002 + <td>
2003 + <div class="doc-md-description">
2004 + <p>A JSON response containing the updated information of all synchronized agents.</p>
2005 + </div>
2006 + </td>
2007 + </tr>
2008 + </tbody>
2009 + </table>
2010 +
2011 + <details class="quote">
2012 + <summary>Source code in <code>app\routes\agents.py</code></summary>
2013 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-69">69</a></span>
2014 <span class="normal"><a href="#__codelineno-0-70">70</a></span>
2015 <span class="normal"><a href="#__codelineno-0-71">71</a></span>
2016 <span class="normal"><a href="#__codelineno-0-72">72</a></span>
@@ -1795,12 +2019,7 @@
2019 <span class="normal"><a href="#__codelineno-0-75">75</a></span>
2020 <span class="normal"><a href="#__codelineno-0-76">76</a></span>
2021 <span class="normal"><a href="#__codelineno-0-77">77</a></span>
1798 -<span class="normal"><a href="#__codelineno-0-78">78</a></span></pre>
1799 - </div>
1800 - </td>
1801 - <td class="code">
1802 - <div>
1803 - <pre><span></span><code><a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/sync&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;POST&quot;</span><span class="p">])</span>
2022 +<span class="normal"><a href="#__codelineno-0-78">78</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-69" name="__codelineno-0-69"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/sync&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;POST&quot;</span><span class="p">])</span>
2023 <a id="__codelineno-0-70" name="__codelineno-0-70"></a><span class="k">def</span> <span class="nf">sync_agents</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
2024 <a id="__codelineno-0-71" name="__codelineno-0-71"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2025 <a id="__codelineno-0-72" name="__codelineno-0-72"></a><span class="sd"> Endpoint to synchronize all agents.</span>
@@ -1810,90 +2029,79 @@
2029 <a id="__codelineno-0-76" name="__codelineno-0-76"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentSyncService</span><span class="p">()</span>
2030 <a id="__codelineno-0-77" name="__codelineno-0-77"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">sync_agents</span><span class="p">()</span>
2031 <a id="__codelineno-0-78" name="__codelineno-0-78"></a> <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
1813 -</code></pre>
1814 - </div>
1815 - </td>
1816 - </tr>
1817 - </table>
1818 - </div>
1819 - </details>
1820 - </div>
1821 - </div>
1822 -
1823 - <div class="doc doc-object doc-function">
1824 - <h2 id="app.routes.agents.unmark_agent_critical" class="doc doc-heading">
1825 - <code class="highlight language-python"
1826 - ><span class="n">unmark_agent_critical</span><span class="p">(</span
1827 - ><span class="n">agent_id</span><span class="p">)</span></code
1828 - >
1829 - </h2>
1830 -
1831 - <div class="doc doc-contents">
1832 - <p>Endpoint to unmark an agent as critical.</p>
1833 -
1834 - <p><strong>Parameters:</strong></p>
1835 - <table>
1836 - <thead>
1837 - <tr>
1838 - <th>Name</th>
1839 - <th>Type</th>
1840 - <th>Description</th>
1841 - <th>Default</th>
1842 - </tr>
1843 - </thead>
1844 - <tbody>
1845 - <tr>
1846 - <td><code>agent_id</code></td>
1847 - <td>
1848 - <code>str</code>
1849 - </td>
1850 - <td>
1851 - <div class="doc-md-description">
1852 - <p>The ID of the agent to unmark as critical.</p>
1853 - </div>
1854 - </td>
1855 - <td>
1856 - <em>required</em>
1857 - </td>
1858 - </tr>
1859 - </tbody>
1860 - </table>
1861 -
1862 - <p><strong>Returns:</strong></p>
1863 - <table>
1864 - <thead>
1865 - <tr>
1866 - <th>Name</th>
1867 - <th>Type</th>
1868 - <th>Description</th>
1869 - </tr>
1870 - </thead>
1871 - <tbody>
1872 - <tr>
1873 - <td><code>json</code></td>
1874 - <td>
1875 - <code><span title="typing.Any">Any</span></code>
1876 - </td>
1877 - <td>
1878 - <div class="doc-md-description">
1879 - <p>
1880 - A JSON response containing the updated agent
1881 - information after being unmarked as critical.
1882 - </p>
1883 - </div>
1884 - </td>
1885 - </tr>
1886 - </tbody>
1887 - </table>
1888 -
1889 - <details class="quote">
1890 - <summary>Source code in <code>app\routes\agents.py</code></summary>
1891 - <div class="highlight">
1892 - <table class="highlighttable">
1893 - <tr>
1894 - <td class="linenos">
1895 - <div class="linenodiv">
1896 - <pre><span></span><span class="normal"><a href="#__codelineno-0-55">55</a></span>
2032 +</code></pre></div></td></tr></table></div>
2033 + </details>
2034 + </div>
2035 +
2036 +</div>
2037 +
2038 +<div class="doc doc-object doc-function">
2039 +
2040 +
2041 +
2042 +<h2 id="app.routes.agents.unmark_agent_critical" class="doc doc-heading">
2043 +<code class="highlight language-python"><span class="n">unmark_agent_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="p">)</span></code>
2044 +
2045 +</h2>
2046 +
2047 +
2048 + <div class="doc doc-contents ">
2049 +
2050 + <p>Endpoint to unmark an agent as critical.</p>
2051 +
2052 + <p><strong>Parameters:</strong></p>
2053 + <table>
2054 + <thead>
2055 + <tr>
2056 + <th>Name</th>
2057 + <th>Type</th>
2058 + <th>Description</th>
2059 + <th>Default</th>
2060 + </tr>
2061 + </thead>
2062 + <tbody>
2063 + <tr>
2064 + <td><code>agent_id</code></td>
2065 + <td>
2066 + <code>str</code>
2067 + </td>
2068 + <td>
2069 + <div class="doc-md-description">
2070 + <p>The ID of the agent to unmark as critical.</p>
2071 + </div>
2072 + </td>
2073 + <td>
2074 + <em>required</em>
2075 + </td>
2076 + </tr>
2077 + </tbody>
2078 + </table>
2079 +
2080 + <p><strong>Returns:</strong></p>
2081 + <table>
2082 + <thead>
2083 + <tr>
2084 +<th>Name</th> <th>Type</th>
2085 + <th>Description</th>
2086 + </tr>
2087 + </thead>
2088 + <tbody>
2089 + <tr>
2090 +<td><code>json</code></td> <td>
2091 + <code><span title="typing.Any">Any</span></code>
2092 + </td>
2093 + <td>
2094 + <div class="doc-md-description">
2095 + <p>A JSON response containing the updated agent information after being unmarked as critical.</p>
2096 + </div>
2097 + </td>
2098 + </tr>
2099 + </tbody>
2100 + </table>
2101 +
2102 + <details class="quote">
2103 + <summary>Source code in <code>app\routes\agents.py</code></summary>
2104 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-55">55</a></span>
2105 <span class="normal"><a href="#__codelineno-0-56">56</a></span>
2106 <span class="normal"><a href="#__codelineno-0-57">57</a></span>
2107 <span class="normal"><a href="#__codelineno-0-58">58</a></span>
@@ -1904,12 +2112,7 @@
2112 <span class="normal"><a href="#__codelineno-0-63">63</a></span>
2113 <span class="normal"><a href="#__codelineno-0-64">64</a></span>
2114 <span class="normal"><a href="#__codelineno-0-65">65</a></span>
1907 -<span class="normal"><a href="#__codelineno-0-66">66</a></span></pre>
1908 - </div>
1909 - </td>
1910 - <td class="code">
1911 - <div>
1912 - <pre><span></span><code><a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/&lt;agent_id&gt;/noncritical&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;POST&quot;</span><span class="p">])</span>
2115 +<span class="normal"><a href="#__codelineno-0-66">66</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-55" name="__codelineno-0-55"></a><span class="nd">@bp</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/agents/&lt;agent_id&gt;/noncritical&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;POST&quot;</span><span class="p">])</span>
2116 <a id="__codelineno-0-56" name="__codelineno-0-56"></a><span class="k">def</span> <span class="nf">unmark_agent_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
2117 <a id="__codelineno-0-57" name="__codelineno-0-57"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2118 <a id="__codelineno-0-58" name="__codelineno-0-58"></a><span class="sd"> Endpoint to unmark an agent as critical.</span>
@@ -1921,43 +2124,79 @@
2124 <a id="__codelineno-0-64" name="__codelineno-0-64"></a> <span class="n">service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
2125 <a id="__codelineno-0-65" name="__codelineno-0-65"></a> <span class="n">result</span> <span class="o">=</span> <span class="n">service</span><span class="o">.</span><span class="n">mark_agent_as_non_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="o">=</span><span class="n">agent_id</span><span class="p">)</span>
2126 <a id="__codelineno-0-66" name="__codelineno-0-66"></a> <span class="k">return</span> <span class="n">result</span>
1924 -</code></pre>
1925 - </div>
1926 - </td>
1927 - </tr>
1928 - </table>
1929 - </div>
1930 - </details>
1931 - </div>
1932 - </div>
1933 - </div>
1934 - </div>
1935 - </div>
1936 - <p><br /></p>
1937 - <h3 id="agent-services"><span style="color: red">Agent Services</span></h3>
1938 -
1939 - <div class="doc doc-object doc-module">
1940 - <a id="app.services.agents.agents"></a>
1941 - <div class="doc doc-contents first">
1942 - <div class="doc doc-children">
1943 - <div class="doc doc-object doc-class">
1944 - <h2 id="app.services.agents.agents.AgentService" class="doc doc-heading">
1945 - <code>AgentService</code>
1946 - </h2>
1947 -
1948 - <div class="doc doc-contents">
1949 - <p>A service class that encapsulates the logic for managing agents.</p>
1950 -
1951 - <details class="quote">
1952 - <summary>
1953 - Source code in <code>app\services\agents\agents.py</code>
1954 - </summary>
1955 - <div class="highlight">
1956 - <table class="highlighttable">
1957 - <tr>
1958 - <td class="linenos">
1959 - <div class="linenodiv">
1960 - <pre><span></span><span class="normal"><a href="#__codelineno-0-21"> 21</a></span>
2127 +</code></pre></div></td></tr></table></div>
2128 + </details>
2129 + </div>
2130 +
2131 +</div>
2132 +
2133 +
2134 +
2135 + </div>
2136 +
2137 + </div>
2138 +
2139 +</div><p><br></p>
2140 +<h3 id="agent-services"><span style="color:red">Agent Services</span></h3>
2141 +<h1 id="agentspy_1">agents.py</h1>
2142 +<p>This file defines two primary classes, <code>AgentService</code> and <code>AgentSyncService</code>, used for managing and synchronizing agents.</p>
2143 +<h2 id="agentservice">AgentService</h2>
2144 +<p>The <code>AgentService</code> class provides several methods for managing agent records in the application's database.</p>
2145 +<ul>
2146 +<li><code>get_all_agents()</code>: Retrieves all agents from the database.</li>
2147 +<li><code>get_agent(agent_id: str)</code>: Retrieves a specific agent from the database using its ID.</li>
2148 +<li><code>mark_agent_as_critical(agent_id: str)</code>: Marks a specific agent as critical.</li>
2149 +<li><code>mark_agent_as_non_critical(agent_id: str)</code>: Marks a specific agent as non-critical.</li>
2150 +<li><code>create_agent(agent: Dict[str, str])</code>: Creates a new agent in the database.</li>
2151 +<li><code>delete_agent_db(agent_id: str)</code>: Deletes a specific agent from the database using its ID.</li>
2152 +</ul>
2153 +<h2 id="agentsyncservice">AgentSyncService</h2>
2154 +<p>The <code>AgentSyncService</code> class is used for synchronizing the state of agents between the application's database and the Wazuh API. It uses the <code>AgentService</code> for manipulating the agents in the database.</p>
2155 +<ul>
2156 +<li><code>collect_wazuh_details(connector_name: str)</code>: Collects the information of all Wazuh API credentials using the <code>WazuhIndexerConnector</code> class details.</li>
2157 +<li><code>collect_wazuh_agents(connection_url: str, wazuh_auth_token: str)</code>: Collects the information of all agents from the Wazuh API.</li>
2158 +<li><code>sync_agents()</code>: Syncs the agents between the database and the Wazuh API. It collects the agents from the Wazuh API and creates them in the database if they don't already exist.</li>
2159 +</ul>
2160 +<p>These classes and methods allow the application to maintain a consistent state of agents between the local database and the Wazuh API.</p>
2161 +
2162 +
2163 +<div class="doc doc-object doc-module">
2164 +
2165 +
2166 +<a id="app.services.agents.agents"></a>
2167 + <div class="doc doc-contents first">
2168 +
2169 +
2170 +
2171 + <div class="doc doc-children">
2172 +
2173 +
2174 +
2175 +
2176 +
2177 +
2178 +
2179 +
2180 +<div class="doc doc-object doc-class">
2181 +
2182 +
2183 +
2184 +<h2 id="app.services.agents.agents.AgentService" class="doc doc-heading">
2185 + <code>AgentService</code>
2186 +
2187 +
2188 +</h2>
2189 +
2190 +
2191 + <div class="doc doc-contents ">
2192 +
2193 +
2194 + <p>A service class that encapsulates the logic for managing agents.</p>
2195 +
2196 +
2197 + <details class="quote">
2198 + <summary>Source code in <code>app\services\agents\agents.py</code></summary>
2199 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-21"> 21</a></span>
2200 <span class="normal"><a href="#__codelineno-0-22"> 22</a></span>
2201 <span class="normal"><a href="#__codelineno-0-23"> 23</a></span>
2202 <span class="normal"><a href="#__codelineno-0-24"> 24</a></span>
@@ -2103,12 +2342,7 @@
2342 <span class="normal"><a href="#__codelineno-0-164">164</a></span>
2343 <span class="normal"><a href="#__codelineno-0-165">165</a></span>
2344 <span class="normal"><a href="#__codelineno-0-166">166</a></span>
2106 -<span class="normal"><a href="#__codelineno-0-167">167</a></span></pre>
2107 - </div>
2108 - </td>
2109 - <td class="code">
2110 - <div>
2111 - <pre><span></span><code><a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="k">class</span> <span class="nc">AgentService</span><span class="p">:</span>
2345 +<span class="normal"><a href="#__codelineno-0-167">167</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-21" name="__codelineno-0-21"></a><span class="k">class</span> <span class="nc">AgentService</span><span class="p">:</span>
2346 <a id="__codelineno-0-22" name="__codelineno-0-22"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2347 <a id="__codelineno-0-23" name="__codelineno-0-23"></a><span class="sd"> A service class that encapsulates the logic for managing agents.</span>
2348 <a id="__codelineno-0-24" name="__codelineno-0-24"></a><span class="sd"> &quot;&quot;&quot;</span>
@@ -2255,107 +2489,88 @@
2489 <a id="__codelineno-0-165" name="__codelineno-0-165"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Failed to delete agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
2490 <a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2491 <a id="__codelineno-0-167" name="__codelineno-0-167"></a> <span class="p">}</span>
2258 -</code></pre>
2259 - </div>
2260 - </td>
2261 - </tr>
2262 - </table>
2263 - </div>
2264 - </details>
2265 -
2266 - <div class="doc doc-children">
2267 - <div class="doc doc-object doc-function">
2268 - <h3
2269 - id="app.services.agents.agents.AgentService.create_agent"
2270 - class="doc doc-heading"
2271 - >
2272 - <code class="highlight language-python"
2273 - ><span class="n">create_agent</span
2274 - ><span class="p">(</span><span class="n">agent</span
2275 - ><span class="p">)</span></code
2276 - >
2277 - </h3>
2278 -
2279 - <div class="doc doc-contents">
2280 - <p>Creates a new agent in the database.</p>
2281 -
2282 - <p><strong>Parameters:</strong></p>
2283 - <table>
2284 - <thead>
2285 - <tr>
2286 - <th>Name</th>
2287 - <th>Type</th>
2288 - <th>Description</th>
2289 - <th>Default</th>
2290 - </tr>
2291 - </thead>
2292 - <tbody>
2293 - <tr>
2294 - <td><code>agent</code></td>
2295 - <td>
2296 - <code>dict</code>
2297 - </td>
2298 - <td>
2299 - <div class="doc-md-description">
2300 - <p>
2301 - A dictionary containing the
2302 - information of an agent.
2303 - </p>
2304 - </div>
2305 - </td>
2306 - <td>
2307 - <em>required</em>
2308 - </td>
2309 - </tr>
2310 - </tbody>
2311 - </table>
2312 -
2313 - <p><strong>Returns:</strong></p>
2314 - <table>
2315 - <thead>
2316 - <tr>
2317 - <th>Type</th>
2318 - <th>Description</th>
2319 - </tr>
2320 - </thead>
2321 - <tbody>
2322 - <tr>
2323 - <td>
2324 - <code
2325 - ><span title="typing.Optional"
2326 - >Optional</span
2327 - >[<a
2328 - class="autorefs autorefs-internal"
2329 - title="app.models.agents.AgentMetadata"
2330 - href="../wazuhmanager/#app.models.agents.AgentMetadata"
2331 - >AgentMetadata</a
2332 - >]</code
2333 - >
2334 - </td>
2335 - <td>
2336 - <div class="doc-md-description">
2337 - <p>
2338 - The agent object if the agent was
2339 - successfully created, None
2340 - otherwise.
2341 - </p>
2342 - </div>
2343 - </td>
2344 - </tr>
2345 - </tbody>
2346 - </table>
2347 -
2348 - <details class="quote">
2349 - <summary>
2350 - Source code in
2351 - <code>app\services\agents\agents.py</code>
2352 - </summary>
2353 - <div class="highlight">
2354 - <table class="highlighttable">
2355 - <tr>
2356 - <td class="linenos">
2357 - <div class="linenodiv">
2358 - <pre><span></span><span class="normal"><a href="#__codelineno-0-102">102</a></span>
2492 +</code></pre></div></td></tr></table></div>
2493 + </details>
2494 +
2495 +
2496 +
2497 + <div class="doc doc-children">
2498 +
2499 +
2500 +
2501 +
2502 +
2503 +
2504 +
2505 +
2506 +
2507 +<div class="doc doc-object doc-function">
2508 +
2509 +
2510 +
2511 +<h3 id="app.services.agents.agents.AgentService.create_agent" class="doc doc-heading">
2512 +<code class="highlight language-python"><span class="n">create_agent</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span></code>
2513 +
2514 +</h3>
2515 +
2516 +
2517 + <div class="doc doc-contents ">
2518 +
2519 + <p>Creates a new agent in the database.</p>
2520 +
2521 + <p><strong>Parameters:</strong></p>
2522 + <table>
2523 + <thead>
2524 + <tr>
2525 + <th>Name</th>
2526 + <th>Type</th>
2527 + <th>Description</th>
2528 + <th>Default</th>
2529 + </tr>
2530 + </thead>
2531 + <tbody>
2532 + <tr>
2533 + <td><code>agent</code></td>
2534 + <td>
2535 + <code>dict</code>
2536 + </td>
2537 + <td>
2538 + <div class="doc-md-description">
2539 + <p>A dictionary containing the information of an agent.</p>
2540 + </div>
2541 + </td>
2542 + <td>
2543 + <em>required</em>
2544 + </td>
2545 + </tr>
2546 + </tbody>
2547 + </table>
2548 +
2549 + <p><strong>Returns:</strong></p>
2550 + <table>
2551 + <thead>
2552 + <tr>
2553 + <th>Type</th>
2554 + <th>Description</th>
2555 + </tr>
2556 + </thead>
2557 + <tbody>
2558 + <tr>
2559 + <td>
2560 + <code><span title="typing.Optional">Optional</span>[<a class="autorefs autorefs-internal" title="app.models.agents.AgentMetadata" href="../wazuhmanager/#app.models.agents.AgentMetadata">AgentMetadata</a>]</code>
2561 + </td>
2562 + <td>
2563 + <div class="doc-md-description">
2564 + <p>The agent object if the agent was successfully created, None otherwise.</p>
2565 + </div>
2566 + </td>
2567 + </tr>
2568 + </tbody>
2569 + </table>
2570 +
2571 + <details class="quote">
2572 + <summary>Source code in <code>app\services\agents\agents.py</code></summary>
2573 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-102">102</a></span>
2574 <span class="normal"><a href="#__codelineno-0-103">103</a></span>
2575 <span class="normal"><a href="#__codelineno-0-104">104</a></span>
2576 <span class="normal"><a href="#__codelineno-0-105">105</a></span>
@@ -2395,12 +2610,7 @@
2610 <span class="normal"><a href="#__codelineno-0-139">139</a></span>
2611 <span class="normal"><a href="#__codelineno-0-140">140</a></span>
2612 <span class="normal"><a href="#__codelineno-0-141">141</a></span>
2398 -<span class="normal"><a href="#__codelineno-0-142">142</a></span></pre>
2399 - </div>
2400 - </td>
2401 - <td class="code">
2402 - <div>
2403 - <pre><span></span><code><a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="k">def</span> <span class="nf">create_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="n">AgentMetadata</span><span class="p">]:</span>
2613 +<span class="normal"><a href="#__codelineno-0-142">142</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-102" name="__codelineno-0-102"></a><span class="k">def</span> <span class="nf">create_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent</span><span class="p">:</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">Optional</span><span class="p">[</span><span class="n">AgentMetadata</span><span class="p">]:</span>
2614 <a id="__codelineno-0-103" name="__codelineno-0-103"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2615 <a id="__codelineno-0-104" name="__codelineno-0-104"></a><span class="sd"> Creates a new agent in the database.</span>
2616 <a id="__codelineno-0-105" name="__codelineno-0-105"></a>
@@ -2441,121 +2651,89 @@
2651 <a id="__codelineno-0-140" name="__codelineno-0-140"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
2652 <a id="__codelineno-0-141" name="__codelineno-0-141"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to create agent: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
2653 <a id="__codelineno-0-142" name="__codelineno-0-142"></a> <span class="k">return</span> <span class="kc">None</span>
2444 -</code></pre>
2445 - </div>
2446 - </td>
2447 - </tr>
2448 - </table>
2449 - </div>
2450 - </details>
2451 - </div>
2452 - </div>
2453 -
2454 - <div class="doc doc-object doc-function">
2455 - <h3
2456 - id="app.services.agents.agents.AgentService.delete_agent_db"
2457 - class="doc doc-heading"
2458 - >
2459 - <code class="highlight language-python"
2460 - ><span class="n">delete_agent_db</span
2461 - ><span class="p">(</span><span class="n">agent_id</span
2462 - ><span class="p">)</span></code
2463 - >
2464 - </h3>
2465 -
2466 - <div class="doc doc-contents">
2467 - <p>
2468 - Deletes a specific agent from the database using its ID.
2469 - </p>
2470 -
2471 - <p><strong>Parameters:</strong></p>
2472 - <table>
2473 - <thead>
2474 - <tr>
2475 - <th>Name</th>
2476 - <th>Type</th>
2477 - <th>Description</th>
2478 - <th>Default</th>
2479 - </tr>
2480 - </thead>
2481 - <tbody>
2482 - <tr>
2483 - <td><code>agent_id</code></td>
2484 - <td>
2485 - <code>str</code>
2486 - </td>
2487 - <td>
2488 - <div class="doc-md-description">
2489 - <p>The ID of the agent to delete.</p>
2490 - </div>
2491 - </td>
2492 - <td>
2493 - <em>required</em>
2494 - </td>
2495 - </tr>
2496 - </tbody>
2497 - </table>
2498 -
2499 - <p><strong>Returns:</strong></p>
2500 - <table>
2501 - <thead>
2502 - <tr>
2503 - <th>Name</th>
2504 - <th>Type</th>
2505 - <th>Description</th>
2506 - </tr>
2507 - </thead>
2508 - <tbody>
2509 - <tr>
2510 - <td><code>dict</code></td>
2511 - <td>
2512 - <code
2513 - ><span title="typing.Dict">Dict</span
2514 - >[str,
2515 - <span title="typing.Union">Union</span
2516 - >[str, bool]]</code
2517 - >
2518 - </td>
2519 - <td>
2520 - <div class="doc-md-description">
2521 - <p>
2522 - A dictionary representing a success
2523 - message if the operation was
2524 - successful, otherwise an error
2525 - </p>
2526 - </div>
2527 - </td>
2528 - </tr>
2529 - <tr>
2530 - <td></td>
2531 - <td>
2532 - <code
2533 - ><span title="typing.Dict">Dict</span
2534 - >[str,
2535 - <span title="typing.Union">Union</span
2536 - >[str, bool]]</code
2537 - >
2538 - </td>
2539 - <td>
2540 - <div class="doc-md-description">
2541 - <p>message.</p>
2542 - </div>
2543 - </td>
2544 - </tr>
2545 - </tbody>
2546 - </table>
2547 -
2548 - <details class="quote">
2549 - <summary>
2550 - Source code in
2551 - <code>app\services\agents\agents.py</code>
2552 - </summary>
2553 - <div class="highlight">
2554 - <table class="highlighttable">
2555 - <tr>
2556 - <td class="linenos">
2557 - <div class="linenodiv">
2558 - <pre><span></span><span class="normal"><a href="#__codelineno-0-144">144</a></span>
2654 +</code></pre></div></td></tr></table></div>
2655 + </details>
2656 + </div>
2657 +
2658 +</div>
2659 +
2660 +<div class="doc doc-object doc-function">
2661 +
2662 +
2663 +
2664 +<h3 id="app.services.agents.agents.AgentService.delete_agent_db" class="doc doc-heading">
2665 +<code class="highlight language-python"><span class="n">delete_agent_db</span><span class="p">(</span><span class="n">agent_id</span><span class="p">)</span></code>
2666 +
2667 +</h3>
2668 +
2669 +
2670 + <div class="doc doc-contents ">
2671 +
2672 + <p>Deletes a specific agent from the database using its ID.</p>
2673 +
2674 + <p><strong>Parameters:</strong></p>
2675 + <table>
2676 + <thead>
2677 + <tr>
2678 + <th>Name</th>
2679 + <th>Type</th>
2680 + <th>Description</th>
2681 + <th>Default</th>
2682 + </tr>
2683 + </thead>
2684 + <tbody>
2685 + <tr>
2686 + <td><code>agent_id</code></td>
2687 + <td>
2688 + <code>str</code>
2689 + </td>
2690 + <td>
2691 + <div class="doc-md-description">
2692 + <p>The ID of the agent to delete.</p>
2693 + </div>
2694 + </td>
2695 + <td>
2696 + <em>required</em>
2697 + </td>
2698 + </tr>
2699 + </tbody>
2700 + </table>
2701 +
2702 + <p><strong>Returns:</strong></p>
2703 + <table>
2704 + <thead>
2705 + <tr>
2706 +<th>Name</th> <th>Type</th>
2707 + <th>Description</th>
2708 + </tr>
2709 + </thead>
2710 + <tbody>
2711 + <tr>
2712 +<td><code>dict</code></td> <td>
2713 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool]]</code>
2714 + </td>
2715 + <td>
2716 + <div class="doc-md-description">
2717 + <p>A dictionary representing a success message if the operation was successful, otherwise an error</p>
2718 + </div>
2719 + </td>
2720 + </tr>
2721 + <tr>
2722 +<td></td> <td>
2723 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool]]</code>
2724 + </td>
2725 + <td>
2726 + <div class="doc-md-description">
2727 + <p>message.</p>
2728 + </div>
2729 + </td>
2730 + </tr>
2731 + </tbody>
2732 + </table>
2733 +
2734 + <details class="quote">
2735 + <summary>Source code in <code>app\services\agents\agents.py</code></summary>
2736 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-144">144</a></span>
2737 <span class="normal"><a href="#__codelineno-0-145">145</a></span>
2738 <span class="normal"><a href="#__codelineno-0-146">146</a></span>
2739 <span class="normal"><a href="#__codelineno-0-147">147</a></span>
@@ -2578,12 +2756,7 @@
2756 <span class="normal"><a href="#__codelineno-0-164">164</a></span>
2757 <span class="normal"><a href="#__codelineno-0-165">165</a></span>
2758 <span class="normal"><a href="#__codelineno-0-166">166</a></span>
2581 -<span class="normal"><a href="#__codelineno-0-167">167</a></span></pre>
2582 - </div>
2583 - </td>
2584 - <td class="code">
2585 - <div>
2586 - <pre><span></span><code><a id="__codelineno-0-144" name="__codelineno-0-144"></a><span class="k">def</span> <span class="nf">delete_agent_db</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2759 +<span class="normal"><a href="#__codelineno-0-167">167</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-144" name="__codelineno-0-144"></a><span class="k">def</span> <span class="nf">delete_agent_db</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2760 <a id="__codelineno-0-145" name="__codelineno-0-145"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2761 <a id="__codelineno-0-146" name="__codelineno-0-146"></a><span class="sd"> Deletes a specific agent from the database using its ID.</span>
2762 <a id="__codelineno-0-147" name="__codelineno-0-147"></a>
@@ -2607,123 +2780,89 @@
2780 <a id="__codelineno-0-165" name="__codelineno-0-165"></a> <span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Failed to delete agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
2781 <a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
2782 <a id="__codelineno-0-167" name="__codelineno-0-167"></a> <span class="p">}</span>
2610 -</code></pre>
2611 - </div>
2612 - </td>
2613 - </tr>
2614 - </table>
2615 - </div>
2616 - </details>
2617 - </div>
2618 - </div>
2619 -
2620 - <div class="doc doc-object doc-function">
2621 - <h3
2622 - id="app.services.agents.agents.AgentService.get_agent"
2623 - class="doc doc-heading"
2624 - >
2625 - <code class="highlight language-python"
2626 - ><span class="n">get_agent</span><span class="p">(</span
2627 - ><span class="n">agent_id</span
2628 - ><span class="p">)</span></code
2629 - >
2630 - </h3>
2631 -
2632 - <div class="doc doc-contents">
2633 - <p>
2634 - Retrieves a specific agent from the database using its
2635 - ID.
2636 - </p>
2637 -
2638 - <p><strong>Parameters:</strong></p>
2639 - <table>
2640 - <thead>
2641 - <tr>
2642 - <th>Name</th>
2643 - <th>Type</th>
2644 - <th>Description</th>
2645 - <th>Default</th>
2646 - </tr>
2647 - </thead>
2648 - <tbody>
2649 - <tr>
2650 - <td><code>agent_id</code></td>
2651 - <td>
2652 - <code>str</code>
2653 - </td>
2654 - <td>
2655 - <div class="doc-md-description">
2656 - <p>The ID of the agent to retrieve.</p>
2657 - </div>
2658 - </td>
2659 - <td>
2660 - <em>required</em>
2661 - </td>
2662 - </tr>
2663 - </tbody>
2664 - </table>
2665 -
2666 - <p><strong>Returns:</strong></p>
2667 - <table>
2668 - <thead>
2669 - <tr>
2670 - <th>Name</th>
2671 - <th>Type</th>
2672 - <th>Description</th>
2673 - </tr>
2674 - </thead>
2675 - <tbody>
2676 - <tr>
2677 - <td><code>dict</code></td>
2678 - <td>
2679 - <code
2680 - ><span title="typing.Dict">Dict</span
2681 - >[str,
2682 - <span title="typing.Union">Union</span
2683 - >[str, bool]]</code
2684 - >
2685 - </td>
2686 - <td>
2687 - <div class="doc-md-description">
2688 - <p>
2689 - A dictionary representing the
2690 - serialized data of the agent if
2691 - found, otherwise a message
2692 - indicating
2693 - </p>
2694 - </div>
2695 - </td>
2696 - </tr>
2697 - <tr>
2698 - <td></td>
2699 - <td>
2700 - <code
2701 - ><span title="typing.Dict">Dict</span
2702 - >[str,
2703 - <span title="typing.Union">Union</span
2704 - >[str, bool]]</code
2705 - >
2706 - </td>
2707 - <td>
2708 - <div class="doc-md-description">
2709 - <p>that the agent was not found.</p>
2710 - </div>
2711 - </td>
2712 - </tr>
2713 - </tbody>
2714 - </table>
2715 -
2716 - <details class="quote">
2717 - <summary>
2718 - Source code in
2719 - <code>app\services\agents\agents.py</code>
2720 - </summary>
2721 - <div class="highlight">
2722 - <table class="highlighttable">
2723 - <tr>
2724 - <td class="linenos">
2725 - <div class="linenodiv">
2726 - <pre><span></span><span class="normal"><a href="#__codelineno-0-36">36</a></span>
2783 +</code></pre></div></td></tr></table></div>
2784 + </details>
2785 + </div>
2786 +
2787 +</div>
2788 +
2789 +<div class="doc doc-object doc-function">
2790 +
2791 +
2792 +
2793 +<h3 id="app.services.agents.agents.AgentService.get_agent" class="doc doc-heading">
2794 +<code class="highlight language-python"><span class="n">get_agent</span><span class="p">(</span><span class="n">agent_id</span><span class="p">)</span></code>
2795 +
2796 +</h3>
2797 +
2798 +
2799 + <div class="doc doc-contents ">
2800 +
2801 + <p>Retrieves a specific agent from the database using its ID.</p>
2802 +
2803 + <p><strong>Parameters:</strong></p>
2804 + <table>
2805 + <thead>
2806 + <tr>
2807 + <th>Name</th>
2808 + <th>Type</th>
2809 + <th>Description</th>
2810 + <th>Default</th>
2811 + </tr>
2812 + </thead>
2813 + <tbody>
2814 + <tr>
2815 + <td><code>agent_id</code></td>
2816 + <td>
2817 + <code>str</code>
2818 + </td>
2819 + <td>
2820 + <div class="doc-md-description">
2821 + <p>The ID of the agent to retrieve.</p>
2822 + </div>
2823 + </td>
2824 + <td>
2825 + <em>required</em>
2826 + </td>
2827 + </tr>
2828 + </tbody>
2829 + </table>
2830 +
2831 + <p><strong>Returns:</strong></p>
2832 + <table>
2833 + <thead>
2834 + <tr>
2835 +<th>Name</th> <th>Type</th>
2836 + <th>Description</th>
2837 + </tr>
2838 + </thead>
2839 + <tbody>
2840 + <tr>
2841 +<td><code>dict</code></td> <td>
2842 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool]]</code>
2843 + </td>
2844 + <td>
2845 + <div class="doc-md-description">
2846 + <p>A dictionary representing the serialized data of the agent if found, otherwise a message indicating</p>
2847 + </div>
2848 + </td>
2849 + </tr>
2850 + <tr>
2851 +<td></td> <td>
2852 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool]]</code>
2853 + </td>
2854 + <td>
2855 + <div class="doc-md-description">
2856 + <p>that the agent was not found.</p>
2857 + </div>
2858 + </td>
2859 + </tr>
2860 + </tbody>
2861 + </table>
2862 +
2863 + <details class="quote">
2864 + <summary>Source code in <code>app\services\agents\agents.py</code></summary>
2865 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-36">36</a></span>
2866 <span class="normal"><a href="#__codelineno-0-37">37</a></span>
2867 <span class="normal"><a href="#__codelineno-0-38">38</a></span>
2868 <span class="normal"><a href="#__codelineno-0-39">39</a></span>
@@ -2737,12 +2876,7 @@
2876 <span class="normal"><a href="#__codelineno-0-47">47</a></span>
2877 <span class="normal"><a href="#__codelineno-0-48">48</a></span>
2878 <span class="normal"><a href="#__codelineno-0-49">49</a></span>
2740 -<span class="normal"><a href="#__codelineno-0-50">50</a></span></pre>
2741 - </div>
2742 - </td>
2743 - <td class="code">
2744 - <div>
2745 - <pre><span></span><code><a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="k">def</span> <span class="nf">get_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2879 +<span class="normal"><a href="#__codelineno-0-50">50</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-36" name="__codelineno-0-36"></a><span class="k">def</span> <span class="nf">get_agent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
2880 <a id="__codelineno-0-37" name="__codelineno-0-37"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2881 <a id="__codelineno-0-38" name="__codelineno-0-38"></a><span class="sd"> Retrieves a specific agent from the database using its ID.</span>
2882 <a id="__codelineno-0-39" name="__codelineno-0-39"></a>
@@ -2757,73 +2891,51 @@
2891 <a id="__codelineno-0-48" name="__codelineno-0-48"></a> <span class="k">if</span> <span class="n">agent</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
2892 <a id="__codelineno-0-49" name="__codelineno-0-49"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found&quot;</span><span class="p">}</span>
2893 <a id="__codelineno-0-50" name="__codelineno-0-50"></a> <span class="k">return</span> <span class="n">agent_metadata_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agent</span><span class="p">)</span>
2760 -</code></pre>
2761 - </div>
2762 - </td>
2763 - </tr>
2764 - </table>
2765 - </div>
2766 - </details>
2767 - </div>
2768 - </div>
2769 -
2770 - <div class="doc doc-object doc-function">
2771 - <h3
2772 - id="app.services.agents.agents.AgentService.get_all_agents"
2773 - class="doc doc-heading"
2774 - >
2775 - <code class="highlight language-python"
2776 - ><span class="n">get_all_agents</span
2777 - ><span class="p">()</span></code
2778 - >
2779 - </h3>
2780 -
2781 - <div class="doc doc-contents">
2782 - <p>Retrieves all agents from the database.</p>
2783 -
2784 - <p><strong>Returns:</strong></p>
2785 - <table>
2786 - <thead>
2787 - <tr>
2788 - <th>Type</th>
2789 - <th>Description</th>
2790 - </tr>
2791 - </thead>
2792 - <tbody>
2793 - <tr>
2794 - <td>
2795 - <code
2796 - ><span title="typing.List">List</span
2797 - >[<span title="typing.Dict">Dict</span
2798 - >[str,
2799 - <span title="typing.Union">Union</span
2800 - >[str, bool]]]</code
2801 - >
2802 - </td>
2803 - <td>
2804 - <div class="doc-md-description">
2805 - <p>
2806 - List[dict]: A list of dictionaries
2807 - where each dictionary represents the
2808 - serialized data of an agent.
2809 - </p>
2810 - </div>
2811 - </td>
2812 - </tr>
2813 - </tbody>
2814 - </table>
2815 -
2816 - <details class="quote">
2817 - <summary>
2818 - Source code in
2819 - <code>app\services\agents\agents.py</code>
2820 - </summary>
2821 - <div class="highlight">
2822 - <table class="highlighttable">
2823 - <tr>
2824 - <td class="linenos">
2825 - <div class="linenodiv">
2826 - <pre><span></span><span class="normal"><a href="#__codelineno-0-26">26</a></span>
2894 +</code></pre></div></td></tr></table></div>
2895 + </details>
2896 + </div>
2897 +
2898 +</div>
2899 +
2900 +<div class="doc doc-object doc-function">
2901 +
2902 +
2903 +
2904 +<h3 id="app.services.agents.agents.AgentService.get_all_agents" class="doc doc-heading">
2905 +<code class="highlight language-python"><span class="n">get_all_agents</span><span class="p">()</span></code>
2906 +
2907 +</h3>
2908 +
2909 +
2910 + <div class="doc doc-contents ">
2911 +
2912 + <p>Retrieves all agents from the database.</p>
2913 +
2914 + <p><strong>Returns:</strong></p>
2915 + <table>
2916 + <thead>
2917 + <tr>
2918 + <th>Type</th>
2919 + <th>Description</th>
2920 + </tr>
2921 + </thead>
2922 + <tbody>
2923 + <tr>
2924 + <td>
2925 + <code><span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool]]]</code>
2926 + </td>
2927 + <td>
2928 + <div class="doc-md-description">
2929 + <p>List[dict]: A list of dictionaries where each dictionary represents the serialized data of an agent.</p>
2930 + </div>
2931 + </td>
2932 + </tr>
2933 + </tbody>
2934 + </table>
2935 +
2936 + <details class="quote">
2937 + <summary>Source code in <code>app\services\agents\agents.py</code></summary>
2938 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-26">26</a></span>
2939 <span class="normal"><a href="#__codelineno-0-27">27</a></span>
2940 <span class="normal"><a href="#__codelineno-0-28">28</a></span>
2941 <span class="normal"><a href="#__codelineno-0-29">29</a></span>
@@ -2831,12 +2943,7 @@
2943 <span class="normal"><a href="#__codelineno-0-31">31</a></span>
2944 <span class="normal"><a href="#__codelineno-0-32">32</a></span>
2945 <span class="normal"><a href="#__codelineno-0-33">33</a></span>
2834 -<span class="normal"><a href="#__codelineno-0-34">34</a></span></pre>
2835 - </div>
2836 - </td>
2837 - <td class="code">
2838 - <div>
2839 - <pre><span></span><code><a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="k">def</span> <span class="nf">get_all_agents</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]]:</span>
2946 +<span class="normal"><a href="#__codelineno-0-34">34</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-26" name="__codelineno-0-26"></a><span class="k">def</span> <span class="nf">get_all_agents</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]]:</span>
2947 <a id="__codelineno-0-27" name="__codelineno-0-27"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
2948 <a id="__codelineno-0-28" name="__codelineno-0-28"></a><span class="sd"> Retrieves all agents from the database.</span>
2949 <a id="__codelineno-0-29" name="__codelineno-0-29"></a>
@@ -2845,122 +2952,89 @@
2952 <a id="__codelineno-0-32" name="__codelineno-0-32"></a><span class="sd"> &quot;&quot;&quot;</span>
2953 <a id="__codelineno-0-33" name="__codelineno-0-33"></a> <span class="n">agents</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">AgentMetadata</span><span class="p">)</span><span class="o">.</span><span class="n">all</span><span class="p">()</span>
2954 <a id="__codelineno-0-34" name="__codelineno-0-34"></a> <span class="k">return</span> <span class="n">agent_metadatas_schema</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="n">agents</span><span class="p">)</span>
2848 -</code></pre>
2849 - </div>
2850 - </td>
2851 - </tr>
2852 - </table>
2853 - </div>
2854 - </details>
2855 - </div>
2856 - </div>
2857 -
2858 - <div class="doc doc-object doc-function">
2859 - <h3
2860 - id="app.services.agents.agents.AgentService.mark_agent_as_critical"
2861 - class="doc doc-heading"
2862 - >
2863 - <code class="highlight language-python"
2864 - ><span class="n">mark_agent_as_critical</span
2865 - ><span class="p">(</span><span class="n">agent_id</span
2866 - ><span class="p">)</span></code
2867 - >
2868 - </h3>
2869 -
2870 - <div class="doc doc-contents">
2871 - <p>Marks a specific agent as critical.</p>
2872 -
2873 - <p><strong>Parameters:</strong></p>
2874 - <table>
2875 - <thead>
2876 - <tr>
2877 - <th>Name</th>
2878 - <th>Type</th>
2879 - <th>Description</th>
2880 - <th>Default</th>
2881 - </tr>
2882 - </thead>
2883 - <tbody>
2884 - <tr>
2885 - <td><code>agent_id</code></td>
2886 - <td>
2887 - <code>str</code>
2888 - </td>
2889 - <td>
2890 - <div class="doc-md-description">
2891 - <p>
2892 - The ID of the agent to mark as
2893 - critical.
2894 - </p>
2895 - </div>
2896 - </td>
2897 - <td>
2898 - <em>required</em>
2899 - </td>
2900 - </tr>
2901 - </tbody>
2902 - </table>
2903 -
2904 - <p><strong>Returns:</strong></p>
2905 - <table>
2906 - <thead>
2907 - <tr>
2908 - <th>Name</th>
2909 - <th>Type</th>
2910 - <th>Description</th>
2911 - </tr>
2912 - </thead>
2913 - <tbody>
2914 - <tr>
2915 - <td><code>dict</code></td>
2916 - <td>
2917 - <code
2918 - ><span title="typing.Dict">Dict</span
2919 - >[str,
2920 - <span title="typing.Union">Union</span
2921 - >[str, bool]]</code
2922 - >
2923 - </td>
2924 - <td>
2925 - <div class="doc-md-description">
2926 - <p>
2927 - A dictionary representing a success
2928 - message if the operation was
2929 - successful, otherwise an error
2930 - </p>
2931 - </div>
2932 - </td>
2933 - </tr>
2934 - <tr>
2935 - <td></td>
2936 - <td>
2937 - <code
2938 - ><span title="typing.Dict">Dict</span
2939 - >[str,
2940 - <span title="typing.Union">Union</span
2941 - >[str, bool]]</code
2942 - >
2943 - </td>
2944 - <td>
2945 - <div class="doc-md-description">
2946 - <p>message.</p>
2947 - </div>
2948 - </td>
2949 - </tr>
2950 - </tbody>
2951 - </table>
2952 -
2953 - <details class="quote">
2954 - <summary>
2955 - Source code in
2956 - <code>app\services\agents\agents.py</code>
2957 - </summary>
2958 - <div class="highlight">
2959 - <table class="highlighttable">
2960 - <tr>
2961 - <td class="linenos">
2962 - <div class="linenodiv">
2963 - <pre><span></span><span class="normal"><a href="#__codelineno-0-52">52</a></span>
2955 +</code></pre></div></td></tr></table></div>
2956 + </details>
2957 + </div>
2958 +
2959 +</div>
2960 +
2961 +<div class="doc doc-object doc-function">
2962 +
2963 +
2964 +
2965 +<h3 id="app.services.agents.agents.AgentService.mark_agent_as_critical" class="doc doc-heading">
2966 +<code class="highlight language-python"><span class="n">mark_agent_as_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="p">)</span></code>
2967 +
2968 +</h3>
2969 +
2970 +
2971 + <div class="doc doc-contents ">
2972 +
2973 + <p>Marks a specific agent as critical.</p>
2974 +
2975 + <p><strong>Parameters:</strong></p>
2976 + <table>
2977 + <thead>
2978 + <tr>
2979 + <th>Name</th>
2980 + <th>Type</th>
2981 + <th>Description</th>
2982 + <th>Default</th>
2983 + </tr>
2984 + </thead>
2985 + <tbody>
2986 + <tr>
2987 + <td><code>agent_id</code></td>
2988 + <td>
2989 + <code>str</code>
2990 + </td>
2991 + <td>
2992 + <div class="doc-md-description">
2993 + <p>The ID of the agent to mark as critical.</p>
2994 + </div>
2995 + </td>
2996 + <td>
2997 + <em>required</em>
2998 + </td>
2999 + </tr>
3000 + </tbody>
3001 + </table>
3002 +
3003 + <p><strong>Returns:</strong></p>
3004 + <table>
3005 + <thead>
3006 + <tr>
3007 +<th>Name</th> <th>Type</th>
3008 + <th>Description</th>
3009 + </tr>
3010 + </thead>
3011 + <tbody>
3012 + <tr>
3013 +<td><code>dict</code></td> <td>
3014 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool]]</code>
3015 + </td>
3016 + <td>
3017 + <div class="doc-md-description">
3018 + <p>A dictionary representing a success message if the operation was successful, otherwise an error</p>
3019 + </div>
3020 + </td>
3021 + </tr>
3022 + <tr>
3023 +<td></td> <td>
3024 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool]]</code>
3025 + </td>
3026 + <td>
3027 + <div class="doc-md-description">
3028 + <p>message.</p>
3029 + </div>
3030 + </td>
3031 + </tr>
3032 + </tbody>
3033 + </table>
3034 +
3035 + <details class="quote">
3036 + <summary>Source code in <code>app\services\agents\agents.py</code></summary>
3037 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-52">52</a></span>
3038 <span class="normal"><a href="#__codelineno-0-53">53</a></span>
3039 <span class="normal"><a href="#__codelineno-0-54">54</a></span>
3040 <span class="normal"><a href="#__codelineno-0-55">55</a></span>
@@ -2983,12 +3057,7 @@
3057 <span class="normal"><a href="#__codelineno-0-72">72</a></span>
3058 <span class="normal"><a href="#__codelineno-0-73">73</a></span>
3059 <span class="normal"><a href="#__codelineno-0-74">74</a></span>
2986 -<span class="normal"><a href="#__codelineno-0-75">75</a></span></pre>
2987 - </div>
2988 - </td>
2989 - <td class="code">
2990 - <div>
2991 - <pre><span></span><code><a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="k">def</span> <span class="nf">mark_agent_as_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
3060 +<span class="normal"><a href="#__codelineno-0-75">75</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-52" name="__codelineno-0-52"></a><span class="k">def</span> <span class="nf">mark_agent_as_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
3061 <a id="__codelineno-0-53" name="__codelineno-0-53"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3062 <a id="__codelineno-0-54" name="__codelineno-0-54"></a><span class="sd"> Marks a specific agent as critical.</span>
3063 <a id="__codelineno-0-55" name="__codelineno-0-55"></a>
@@ -3012,122 +3081,89 @@
3081 <a id="__codelineno-0-73" name="__codelineno-0-73"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3082 <a id="__codelineno-0-74" name="__codelineno-0-74"></a> <span class="p">}</span>
3083 <a id="__codelineno-0-75" name="__codelineno-0-75"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as critical&quot;</span><span class="p">,</span> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
3015 -</code></pre>
3016 - </div>
3017 - </td>
3018 - </tr>
3019 - </table>
3020 - </div>
3021 - </details>
3022 - </div>
3023 - </div>
3024 -
3025 - <div class="doc doc-object doc-function">
3026 - <h3
3027 - id="app.services.agents.agents.AgentService.mark_agent_as_non_critical"
3028 - class="doc doc-heading"
3029 - >
3030 - <code class="highlight language-python"
3031 - ><span class="n">mark_agent_as_non_critical</span
3032 - ><span class="p">(</span><span class="n">agent_id</span
3033 - ><span class="p">)</span></code
3034 - >
3035 - </h3>
3036 -
3037 - <div class="doc doc-contents">
3038 - <p>Marks a specific agent as non-critical.</p>
3039 -
3040 - <p><strong>Parameters:</strong></p>
3041 - <table>
3042 - <thead>
3043 - <tr>
3044 - <th>Name</th>
3045 - <th>Type</th>
3046 - <th>Description</th>
3047 - <th>Default</th>
3048 - </tr>
3049 - </thead>
3050 - <tbody>
3051 - <tr>
3052 - <td><code>agent_id</code></td>
3053 - <td>
3054 - <code>str</code>
3055 - </td>
3056 - <td>
3057 - <div class="doc-md-description">
3058 - <p>
3059 - The ID of the agent to mark as
3060 - non-critical.
3061 - </p>
3062 - </div>
3063 - </td>
3064 - <td>
3065 - <em>required</em>
3066 - </td>
3067 - </tr>
3068 - </tbody>
3069 - </table>
3070 -
3071 - <p><strong>Returns:</strong></p>
3072 - <table>
3073 - <thead>
3074 - <tr>
3075 - <th>Name</th>
3076 - <th>Type</th>
3077 - <th>Description</th>
3078 - </tr>
3079 - </thead>
3080 - <tbody>
3081 - <tr>
3082 - <td><code>dict</code></td>
3083 - <td>
3084 - <code
3085 - ><span title="typing.Dict">Dict</span
3086 - >[str,
3087 - <span title="typing.Union">Union</span
3088 - >[str, bool]]</code
3089 - >
3090 - </td>
3091 - <td>
3092 - <div class="doc-md-description">
3093 - <p>
3094 - A dictionary representing a success
3095 - message if the operation was
3096 - successful, otherwise an error
3097 - </p>
3098 - </div>
3099 - </td>
3100 - </tr>
3101 - <tr>
3102 - <td></td>
3103 - <td>
3104 - <code
3105 - ><span title="typing.Dict">Dict</span
3106 - >[str,
3107 - <span title="typing.Union">Union</span
3108 - >[str, bool]]</code
3109 - >
3110 - </td>
3111 - <td>
3112 - <div class="doc-md-description">
3113 - <p>message.</p>
3114 - </div>
3115 - </td>
3116 - </tr>
3117 - </tbody>
3118 - </table>
3119 -
3120 - <details class="quote">
3121 - <summary>
3122 - Source code in
3123 - <code>app\services\agents\agents.py</code>
3124 - </summary>
3125 - <div class="highlight">
3126 - <table class="highlighttable">
3127 - <tr>
3128 - <td class="linenos">
3129 - <div class="linenodiv">
3130 - <pre><span></span><span class="normal"><a href="#__codelineno-0-77"> 77</a></span>
3084 +</code></pre></div></td></tr></table></div>
3085 + </details>
3086 + </div>
3087 +
3088 +</div>
3089 +
3090 +<div class="doc doc-object doc-function">
3091 +
3092 +
3093 +
3094 +<h3 id="app.services.agents.agents.AgentService.mark_agent_as_non_critical" class="doc doc-heading">
3095 +<code class="highlight language-python"><span class="n">mark_agent_as_non_critical</span><span class="p">(</span><span class="n">agent_id</span><span class="p">)</span></code>
3096 +
3097 +</h3>
3098 +
3099 +
3100 + <div class="doc doc-contents ">
3101 +
3102 + <p>Marks a specific agent as non-critical.</p>
3103 +
3104 + <p><strong>Parameters:</strong></p>
3105 + <table>
3106 + <thead>
3107 + <tr>
3108 + <th>Name</th>
3109 + <th>Type</th>
3110 + <th>Description</th>
3111 + <th>Default</th>
3112 + </tr>
3113 + </thead>
3114 + <tbody>
3115 + <tr>
3116 + <td><code>agent_id</code></td>
3117 + <td>
3118 + <code>str</code>
3119 + </td>
3120 + <td>
3121 + <div class="doc-md-description">
3122 + <p>The ID of the agent to mark as non-critical.</p>
3123 + </div>
3124 + </td>
3125 + <td>
3126 + <em>required</em>
3127 + </td>
3128 + </tr>
3129 + </tbody>
3130 + </table>
3131 +
3132 + <p><strong>Returns:</strong></p>
3133 + <table>
3134 + <thead>
3135 + <tr>
3136 +<th>Name</th> <th>Type</th>
3137 + <th>Description</th>
3138 + </tr>
3139 + </thead>
3140 + <tbody>
3141 + <tr>
3142 +<td><code>dict</code></td> <td>
3143 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool]]</code>
3144 + </td>
3145 + <td>
3146 + <div class="doc-md-description">
3147 + <p>A dictionary representing a success message if the operation was successful, otherwise an error</p>
3148 + </div>
3149 + </td>
3150 + </tr>
3151 + <tr>
3152 +<td></td> <td>
3153 + <code><span title="typing.Dict">Dict</span>[str, <span title="typing.Union">Union</span>[str, bool]]</code>
3154 + </td>
3155 + <td>
3156 + <div class="doc-md-description">
3157 + <p>message.</p>
3158 + </div>
3159 + </td>
3160 + </tr>
3161 + </tbody>
3162 + </table>
3163 +
3164 + <details class="quote">
3165 + <summary>Source code in <code>app\services\agents\agents.py</code></summary>
3166 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-77"> 77</a></span>
3167 <span class="normal"><a href="#__codelineno-0-78"> 78</a></span>
3168 <span class="normal"><a href="#__codelineno-0-79"> 79</a></span>
3169 <span class="normal"><a href="#__codelineno-0-80"> 80</a></span>
@@ -3150,12 +3186,7 @@
3186 <span class="normal"><a href="#__codelineno-0-97"> 97</a></span>
3187 <span class="normal"><a href="#__codelineno-0-98"> 98</a></span>
3188 <span class="normal"><a href="#__codelineno-0-99"> 99</a></span>
3153 -<span class="normal"><a href="#__codelineno-0-100">100</a></span></pre>
3154 - </div>
3155 - </td>
3156 - <td class="code">
3157 - <div>
3158 - <pre><span></span><code><a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="k">def</span> <span class="nf">mark_agent_as_non_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
3189 +<span class="normal"><a href="#__codelineno-0-100">100</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-77" name="__codelineno-0-77"></a><span class="k">def</span> <span class="nf">mark_agent_as_non_critical</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">agent_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">bool</span><span class="p">]]:</span>
3190 <a id="__codelineno-0-78" name="__codelineno-0-78"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
3191 <a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> Marks a specific agent as non-critical.</span>
3192 <a id="__codelineno-0-80" name="__codelineno-0-80"></a>
@@ -3179,38 +3210,38 @@
3210 <a id="__codelineno-0-98" name="__codelineno-0-98"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
3211 <a id="__codelineno-0-99" name="__codelineno-0-99"></a> <span class="p">}</span>
3212 <a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="k">return</span> <span class="p">{</span><span class="s2">&quot;message&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as non-critical&quot;</span><span class="p">,</span> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span>
3182 -</code></pre>
3183 - </div>
3184 - </td>
3185 - </tr>
3186 - </table>
3187 - </div>
3188 - </details>
3189 - </div>
3190 - </div>
3191 - </div>
3192 - </div>
3193 - </div>
3194 -
3195 - <div class="doc doc-object doc-class">
3196 - <h2
3197 - id="app.services.agents.agents.AgentSyncService"
3198 - class="doc doc-heading"
3199 - >
3200 - <code>AgentSyncService</code>
3201 - </h2>
3202 -
3203 - <div class="doc doc-contents">
3204 - <details class="quote">
3205 - <summary>
3206 - Source code in <code>app\services\agents\agents.py</code>
3207 - </summary>
3208 - <div class="highlight">
3209 - <table class="highlighttable">
3210 - <tr>
3211 - <td class="linenos">
3212 - <div class="linenodiv">
3213 - <pre><span></span><span class="normal"><a href="#__codelineno-0-170">170</a></span>
3213 +</code></pre></div></td></tr></table></div>
3214 + </details>
3215 + </div>
3216 +
3217 +</div>
3218 +
3219 +
3220 +
3221 + </div>
3222 +
3223 + </div>
3224 +
3225 +</div>
3226 +
3227 +<div class="doc doc-object doc-class">
3228 +
3229 +
3230 +
3231 +<h2 id="app.services.agents.agents.AgentSyncService" class="doc doc-heading">
3232 + <code>AgentSyncService</code>
3233 +
3234 +
3235 +</h2>
3236 +
3237 +
3238 + <div class="doc doc-contents ">
3239 +
3240 +
3241 +
3242 + <details class="quote">
3243 + <summary>Source code in <code>app\services\agents\agents.py</code></summary>
3244 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-170">170</a></span>
3245 <span class="normal"><a href="#__codelineno-0-171">171</a></span>
3246 <span class="normal"><a href="#__codelineno-0-172">172</a></span>
3247 <span class="normal"><a href="#__codelineno-0-173">173</a></span>
@@ -3319,12 +3350,7 @@
3350 <span class="normal"><a href="#__codelineno-0-276">276</a></span>
3351 <span class="normal"><a href="#__codelineno-0-277">277</a></span>
3352 <span class="normal"><a href="#__codelineno-0-278">278</a></span>
3322 -<span class="normal"><a href="#__codelineno-0-279">279</a></span></pre>
3323 - </div>
3324 - </td>
3325 - <td class="code">
3326 - <div>
3327 - <pre><span></span><code><a id="__codelineno-0-170" name="__codelineno-0-170"></a><span class="k">class</span> <span class="nc">AgentSyncService</span><span class="p">:</span>
3353 +<span class="normal"><a href="#__codelineno-0-279">279</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-170" name="__codelineno-0-170"></a><span class="k">class</span> <span class="nc">AgentSyncService</span><span class="p">:</span>
3354 <a id="__codelineno-0-171" name="__codelineno-0-171"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
3355 <a id="__codelineno-0-172" name="__codelineno-0-172"></a> <span class="bp">self</span><span class="o">.</span><span class="n">agent_service</span> <span class="o">=</span> <span class="n">AgentService</span><span class="p">()</span>
3356 <a id="__codelineno-0-173" name="__codelineno-0-173"></a>
@@ -3434,80 +3460,60 @@
3460 <a id="__codelineno-0-277" name="__codelineno-0-277"></a> <span class="s2">&quot;success&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
3461 <a id="__codelineno-0-278" name="__codelineno-0-278"></a> <span class="s2">&quot;agents_added&quot;</span><span class="p">:</span> <span class="n">agents_added_list</span><span class="p">,</span>
3462 <a id="__codelineno-0-279" name="__codelineno-0-279"></a> <span class="p">}</span>
3437 -</code></pre>
3438 - </div>
3439 - </td>
3440 - </tr>
3441 - </table>
3442 - </div>
3443 - </details>
3444 -
3445 - <div class="doc doc-children">
3446 - <div class="doc doc-object doc-function">
3447 - <h3
3448 - id="app.services.agents.agents.AgentSyncService.collect_wazuh_agents"
3449 - class="doc doc-heading"
3450 - >
3451 - <code class="highlight language-python"
3452 - ><span class="n">collect_wazuh_agents</span
3453 - ><span class="p">(</span
3454 - ><span class="n">connection_url</span
3455 - ><span class="p">,</span>
3456 - <span class="n">wazuh_auth_token</span
3457 - ><span class="p">)</span></code
3458 - >
3459 - </h3>
3460 -
3461 - <div class="doc doc-contents">
3462 - <p>
3463 - Collects the information of all agents from the Wazuh
3464 - API.
3465 - </p>
3466 -
3467 - <p><strong>Returns:</strong></p>
3468 - <table>
3469 - <thead>
3470 - <tr>
3471 - <th>Name</th>
3472 - <th>Type</th>
3473 - <th>Description</th>
3474 - </tr>
3475 - </thead>
3476 - <tbody>
3477 - <tr>
3478 - <td><code>list</code></td>
3479 - <td>
3480 - <code
3481 - ><span title="typing.Optional"
3482 - >Optional</span
3483 - >[<span title="typing.List">List</span
3484 - >[<span title="typing.Dict">Dict</span
3485 - >[str, str]]]</code
3486 - >
3487 - </td>
3488 - <td>
3489 - <div class="doc-md-description">
3490 - <p>
3491 - A list containing the information of
3492 - all Wazuh agents.
3493 - </p>
3494 - </div>
3495 - </td>
3496 - </tr>
3497 - </tbody>
3498 - </table>
3499 -
3500 - <details class="quote">
3501 - <summary>
3502 - Source code in
3503 - <code>app\services\agents\agents.py</code>
3504 - </summary>
3505 - <div class="highlight">
3506 - <table class="highlighttable">
3507 - <tr>
3508 - <td class="linenos">
3509 - <div class="linenodiv">
3510 - <pre><span></span><span class="normal"><a href="#__codelineno-0-196">196</a></span>
3463 +</code></pre></div></td></tr></table></div>
3464 + </details>
3465 +
3466 +
3467 +
3468 + <div class="doc doc-children">
3469 +
3470 +
3471 +
3472 +
3473 +
3474 +
3475 +
3476 +
3477 +
3478 +<div class="doc doc-object doc-function">
3479 +
3480 +
3481 +
3482 +<h3 id="app.services.agents.agents.AgentSyncService.collect_wazuh_agents" class="doc doc-heading">
3483 +<code class="highlight language-python"><span class="n">collect_wazuh_agents</span><span class="p">(</span><span class="n">connection_url</span><span class="p">,</span> <span class="n">wazuh_auth_token</span><span class="p">)</span></code>
3484 +
3485 +</h3>
3486 +
3487 +
3488 + <div class="doc doc-contents ">
3489 +
3490 + <p>Collects the information of all agents from the Wazuh API.</p>
3491 +
3492 + <p><strong>Returns:</strong></p>
3493 + <table>
3494 + <thead>
3495 + <tr>
3496 +<th>Name</th> <th>Type</th>
3497 + <th>Description</th>
3498 + </tr>
3499 + </thead>
3500 + <tbody>
3501 + <tr>
3502 +<td><code>list</code></td> <td>
3503 + <code><span title="typing.Optional">Optional</span>[<span title="typing.List">List</span>[<span title="typing.Dict">Dict</span>[str, str]]]</code>
3504 + </td>
3505 + <td>
3506 + <div class="doc-md-description">
3507 + <p>A list containing the information of all Wazuh agents.</p>
3508 + </div>
3509 + </td>
3510 + </tr>
3511 + </tbody>
3512 + </table>
3513 +
3514 + <details class="quote">
3515 + <summary>Source code in <code>app\services\agents\agents.py</code></summary>
3516 + <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-196">196</a></span>
3517 <span class="normal"><a href="#__codelineno-0-197">197</a></span>
3518 <span class="normal"><a href="#__codelineno-0-198">198</a></span>
3519 <span class="normal"><a href="#__codelineno-0-199">199</a></span>
@@ -3547,12 +3553,7 @@
3553 <span class="normal"><a href="#__codelineno-0-233">233</a></span>
3554 <span class="normal"><a href="#__codelineno-0-234">234</a></span>
3555 <span class="normal"><a href="#__codelineno-0-235">235</a></span>
3550 -<span class="normal"><a href="#__codelineno-0-236">236</a></span></pre>
3551 - </div>
3552 - </td>
3553 - <td class="code">
3554 - <div>
3555 - <pre><span></span><code><a id="__codelineno-0-196" name="__codelineno-0-196"></a><span class="k">def</span> <span class="nf">collect_wazuh_agents</span><span class="p">(</span>
3556 +<span class="normal"><a href="#__codelineno-0-236">236</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-196" name="__codelineno-0-196"></a><span class="k">def</span> <span class="nf">collect_wazuh_agents</span><span class="p">(</span>
3557 <a id="__codelineno-0-197" name="__codelineno-0-197"></a> <span class="bp">self</span><span class="p">,</span>
3558 <a id="__codelineno-0-198" name="__codelineno-0-198"></a> <span class="n">connection_url</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
3559 <a id="__codelineno-0-199" name="__codelineno-0-199"></a> <span class="n">wazuh_auth_token</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
@@ -3593,84 +3594,51 @@
3594 <a id="__codelineno-0-234" name="__codelineno-0-234"></a> <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
3595 <a id="__codelineno-0-235" name="__codelineno-0-235"></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to collect Wazuh Agents: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
3596 <a id="__codelineno-0-236" name="__codelineno-0-236"></a> <span class="k">return</span> <span class="kc">None</span>
3596 -</code></pre>
3597 - </div>
3598 - </td>
3599 - </tr>
3600 - </table>
3601 - </div>
3602 - </details>
3603 - </div>
3604 - </div>
3605 -
3606 - <div class="doc doc-object doc-function">
3607 - <h3
3608 - id="app.services.agents.agents.AgentSyncService.collect_wazuh_details"
3609 - class="doc doc-heading"
3610 - >
3611 - <code class="highlight language-python"
3612 - ><span class="n">collect_wazuh_details</span
3613 - ><span class="p">(</span
3614 - ><span class="n">connector_name</span
3615 - ><span class="p">)</span></code
3616 - >
3617 - </h3>
3618 -
3619 - <div class="doc doc-contents">
3620 - <p>
3621 - Collects the information of all Wazuh API credentials
3622 - using the WazuhIndexerConnector class details.
3623 - </p>
3624 -
3625 - <p><strong>Returns:</strong></p>
3626 - <table>
3627 - <thead>
3628 - <tr>
3629 - <th>Name</th>
3630 - <th>Type</th>
3631 - <th>Description</th>
3632 - </tr>
3633 - </thead>
3634 - <tbody>
3635 - <tr>
3636 - <td><code>tuple</code></td>
3637 - <td>
3638 - <code
3639 - ><span title="typing.Tuple">Tuple</span
3640 - >[<span title="typing.Optional"
3641 - >Optional</span
3642 - >[str],
3643 - <span title="typing.Optional"
3644 - >Optional</span
3645 - >[str],
3646 - <span title="typing.Optional"
3647 - >Optional</span
3648 - >[str]]</code
3649 - >
3650 - </td>
3651 - <td>
3652 - <div class="doc-md-description">
3653 - <p>
3654 - A tuple containing the connection

This file is too large to show in full.

backend/site/sitemap.xml.gz
Binary files a/backend/site/sitemap.xml.gz and b/backend/site/sitemap.xml.gz differ