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">"""</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's Model class.</span>
@@ -716,56 +1063,44 @@
1063
<a id="__codelineno-0-79" name="__codelineno-0-79"></a><span class="sd"> """</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">-></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">-></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">"""</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"> """</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">"<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">>"</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</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">"""</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"> """</span>
@@ -1103,39 +1356,40 @@
1356
<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="s2">"critical_asset"</span><span class="p">,</span>
1357
<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="s2">"last_seen"</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">"""</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"> """</span>
@@ -1167,104 +1416,168 @@
1416
<a id="__codelineno-0-100" name="__codelineno-0-100"></a> <span class="s2">"critical_asset"</span><span class="p">,</span>
1417
<a id="__codelineno-0-101" name="__codelineno-0-101"></a> <span class="s2">"last_seen"</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/<agent_id>", 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/<agent_id>/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/<agent_id>/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">"/agents/<agent_id>/delete"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</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">"/agents/<agent_id>/delete"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</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">-></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">"""</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">"/agents/<agent_id>"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</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">"/agents/<agent_id>"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</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">-></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">"""</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">"/agents/<agent_id>/vulnerabilities"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</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">"/agents/<agent_id>/vulnerabilities"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</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">-></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">"""</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">"/agents"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</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">"/agents"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"GET"</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">-></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">"""</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">"/agents/<agent_id>/critical"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</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">"/agents/<agent_id>/critical"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</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">-></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">"""</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">"/agents/sync"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</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">"/agents/sync"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</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">-></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">"""</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">"/agents/<agent_id>/noncritical"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</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">"/agents/<agent_id>/noncritical"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</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">-></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">"""</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">"""</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"> """</span>
@@ -2255,107 +2489,88 @@
2489
<a id="__codelineno-0-165" name="__codelineno-0-165"></a> <span class="s2">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Failed to delete agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
2490
<a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="s2">"success"</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">-></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">-></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">"""</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">"Failed to create agent: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</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">-></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">-></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">"""</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">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Failed to delete agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span>
2781
<a id="__codelineno-0-166" name="__codelineno-0-166"></a> <span class="s2">"success"</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">-></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">-></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">"""</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">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent with ID </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> not found"</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">-></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">-></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">"""</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"> """</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">-></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">-></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">"""</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">"success"</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">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as critical"</span><span class="p">,</span> <span class="s2">"success"</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">-></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">-></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">"""</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">"success"</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">"message"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"Agent </span><span class="si">{</span><span class="n">agent_id</span><span class="si">}</span><span class="s2"> marked as non-critical"</span><span class="p">,</span> <span class="s2">"success"</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">"success"</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">"agents_added"</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">"Failed to collect Wazuh Agents: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">"</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