binalyze-air-sdk 1.0.1__py3-none-any.whl → 1.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- binalyze_air/__init__.py +77 -77
- binalyze_air/apis/__init__.py +67 -27
- binalyze_air/apis/acquisitions.py +107 -0
- binalyze_air/apis/api_tokens.py +49 -0
- binalyze_air/apis/assets.py +161 -0
- binalyze_air/apis/audit_logs.py +26 -0
- binalyze_air/apis/{authentication.py → auth.py} +29 -27
- binalyze_air/apis/auto_asset_tags.py +79 -75
- binalyze_air/apis/backup.py +177 -0
- binalyze_air/apis/baseline.py +46 -0
- binalyze_air/apis/cases.py +225 -0
- binalyze_air/apis/cloud_forensics.py +116 -0
- binalyze_air/apis/event_subscription.py +96 -96
- binalyze_air/apis/evidence.py +249 -53
- binalyze_air/apis/interact.py +153 -36
- binalyze_air/apis/investigation_hub.py +234 -0
- binalyze_air/apis/license.py +104 -0
- binalyze_air/apis/logger.py +83 -0
- binalyze_air/apis/multipart_upload.py +201 -0
- binalyze_air/apis/notifications.py +115 -0
- binalyze_air/apis/organizations.py +267 -0
- binalyze_air/apis/params.py +44 -39
- binalyze_air/apis/policies.py +186 -0
- binalyze_air/apis/preset_filters.py +79 -0
- binalyze_air/apis/recent_activities.py +71 -0
- binalyze_air/apis/relay_server.py +104 -0
- binalyze_air/apis/settings.py +395 -27
- binalyze_air/apis/tasks.py +80 -0
- binalyze_air/apis/triage.py +197 -0
- binalyze_air/apis/user_management.py +183 -74
- binalyze_air/apis/webhook_executions.py +50 -0
- binalyze_air/apis/webhooks.py +322 -230
- binalyze_air/base.py +207 -133
- binalyze_air/client.py +217 -1337
- binalyze_air/commands/__init__.py +175 -145
- binalyze_air/commands/acquisitions.py +661 -387
- binalyze_air/commands/api_tokens.py +55 -0
- binalyze_air/commands/assets.py +324 -362
- binalyze_air/commands/{authentication.py → auth.py} +36 -36
- binalyze_air/commands/auto_asset_tags.py +230 -230
- binalyze_air/commands/backup.py +47 -0
- binalyze_air/commands/baseline.py +32 -396
- binalyze_air/commands/cases.py +609 -602
- binalyze_air/commands/cloud_forensics.py +88 -0
- binalyze_air/commands/event_subscription.py +101 -101
- binalyze_air/commands/evidences.py +918 -988
- binalyze_air/commands/interact.py +172 -58
- binalyze_air/commands/investigation_hub.py +315 -0
- binalyze_air/commands/license.py +183 -0
- binalyze_air/commands/logger.py +126 -0
- binalyze_air/commands/multipart_upload.py +363 -0
- binalyze_air/commands/notifications.py +45 -0
- binalyze_air/commands/organizations.py +200 -221
- binalyze_air/commands/policies.py +175 -203
- binalyze_air/commands/preset_filters.py +55 -0
- binalyze_air/commands/recent_activities.py +32 -0
- binalyze_air/commands/relay_server.py +144 -0
- binalyze_air/commands/settings.py +431 -29
- binalyze_air/commands/tasks.py +95 -56
- binalyze_air/commands/triage.py +224 -360
- binalyze_air/commands/user_management.py +351 -126
- binalyze_air/commands/webhook_executions.py +77 -0
- binalyze_air/config.py +244 -244
- binalyze_air/exceptions.py +49 -49
- binalyze_air/http_client.py +426 -305
- binalyze_air/models/__init__.py +287 -285
- binalyze_air/models/acquisitions.py +365 -250
- binalyze_air/models/api_tokens.py +73 -0
- binalyze_air/models/assets.py +438 -438
- binalyze_air/models/audit.py +247 -272
- binalyze_air/models/audit_logs.py +14 -0
- binalyze_air/models/{authentication.py → auth.py} +69 -69
- binalyze_air/models/auto_asset_tags.py +227 -116
- binalyze_air/models/backup.py +138 -0
- binalyze_air/models/baseline.py +231 -231
- binalyze_air/models/cases.py +275 -275
- binalyze_air/models/cloud_forensics.py +145 -0
- binalyze_air/models/event_subscription.py +170 -171
- binalyze_air/models/evidence.py +65 -65
- binalyze_air/models/evidences.py +367 -348
- binalyze_air/models/interact.py +266 -135
- binalyze_air/models/investigation_hub.py +265 -0
- binalyze_air/models/license.py +150 -0
- binalyze_air/models/logger.py +83 -0
- binalyze_air/models/multipart_upload.py +352 -0
- binalyze_air/models/notifications.py +138 -0
- binalyze_air/models/organizations.py +293 -293
- binalyze_air/models/params.py +153 -127
- binalyze_air/models/policies.py +260 -249
- binalyze_air/models/preset_filters.py +79 -0
- binalyze_air/models/recent_activities.py +70 -0
- binalyze_air/models/relay_server.py +121 -0
- binalyze_air/models/settings.py +538 -84
- binalyze_air/models/tasks.py +215 -149
- binalyze_air/models/triage.py +141 -142
- binalyze_air/models/user_management.py +200 -97
- binalyze_air/models/webhook_executions.py +33 -0
- binalyze_air/queries/__init__.py +121 -133
- binalyze_air/queries/acquisitions.py +155 -155
- binalyze_air/queries/api_tokens.py +46 -0
- binalyze_air/queries/assets.py +186 -105
- binalyze_air/queries/audit.py +400 -416
- binalyze_air/queries/{authentication.py → auth.py} +55 -55
- binalyze_air/queries/auto_asset_tags.py +59 -59
- binalyze_air/queries/backup.py +66 -0
- binalyze_air/queries/baseline.py +21 -185
- binalyze_air/queries/cases.py +292 -292
- binalyze_air/queries/cloud_forensics.py +137 -0
- binalyze_air/queries/event_subscription.py +54 -54
- binalyze_air/queries/evidence.py +139 -139
- binalyze_air/queries/evidences.py +279 -279
- binalyze_air/queries/interact.py +140 -28
- binalyze_air/queries/investigation_hub.py +329 -0
- binalyze_air/queries/license.py +85 -0
- binalyze_air/queries/logger.py +58 -0
- binalyze_air/queries/multipart_upload.py +180 -0
- binalyze_air/queries/notifications.py +71 -0
- binalyze_air/queries/organizations.py +222 -222
- binalyze_air/queries/params.py +154 -115
- binalyze_air/queries/policies.py +149 -149
- binalyze_air/queries/preset_filters.py +60 -0
- binalyze_air/queries/recent_activities.py +44 -0
- binalyze_air/queries/relay_server.py +42 -0
- binalyze_air/queries/settings.py +533 -20
- binalyze_air/queries/tasks.py +125 -81
- binalyze_air/queries/triage.py +230 -230
- binalyze_air/queries/user_management.py +193 -83
- binalyze_air/queries/webhook_executions.py +39 -0
- binalyze_air_sdk-1.0.3.dist-info/METADATA +752 -0
- binalyze_air_sdk-1.0.3.dist-info/RECORD +132 -0
- {binalyze_air_sdk-1.0.1.dist-info → binalyze_air_sdk-1.0.3.dist-info}/WHEEL +1 -1
- binalyze_air/apis/endpoints.py +0 -22
- binalyze_air/apis/evidences.py +0 -216
- binalyze_air/apis/users.py +0 -68
- binalyze_air/commands/users.py +0 -101
- binalyze_air/models/endpoints.py +0 -76
- binalyze_air/models/users.py +0 -82
- binalyze_air/queries/endpoints.py +0 -25
- binalyze_air/queries/users.py +0 -69
- binalyze_air_sdk-1.0.1.dist-info/METADATA +0 -635
- binalyze_air_sdk-1.0.1.dist-info/RECORD +0 -82
- {binalyze_air_sdk-1.0.1.dist-info → binalyze_air_sdk-1.0.3.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,121 @@
|
|
1
|
+
"""
|
2
|
+
Relay Server models for the Binalyze AIR SDK.
|
3
|
+
"""
|
4
|
+
|
5
|
+
from typing import Optional, List, Dict, Any
|
6
|
+
from datetime import datetime
|
7
|
+
|
8
|
+
from ..base import AIRBaseModel, Filter
|
9
|
+
|
10
|
+
|
11
|
+
class RelayServer(AIRBaseModel):
|
12
|
+
"""Relay server model."""
|
13
|
+
|
14
|
+
id: int
|
15
|
+
name: str
|
16
|
+
endpoint_count: int
|
17
|
+
last_seen: datetime
|
18
|
+
online_status: str
|
19
|
+
label: str
|
20
|
+
address: str
|
21
|
+
|
22
|
+
|
23
|
+
class RelayServersList(AIRBaseModel):
|
24
|
+
"""Relay servers list response model."""
|
25
|
+
|
26
|
+
entities: List[RelayServer]
|
27
|
+
total_entity_count: Optional[int] = None
|
28
|
+
current_page: Optional[int] = None
|
29
|
+
page_size: Optional[int] = None
|
30
|
+
previous_page: Optional[int] = None
|
31
|
+
total_page_count: Optional[int] = None
|
32
|
+
next_page: Optional[int] = None
|
33
|
+
filters: Optional[List[Dict[str, Any]]] = None
|
34
|
+
sortables: Optional[List[str]] = None
|
35
|
+
|
36
|
+
|
37
|
+
class RelayServersFilter(Filter):
|
38
|
+
"""Filter parameters for relay servers queries."""
|
39
|
+
|
40
|
+
# Override the default organization_ids to use singular organizationId
|
41
|
+
organization_ids: Optional[List[int]] = None
|
42
|
+
|
43
|
+
# Add organizationId (singular) as required by the API
|
44
|
+
organization_id: Optional[int] = None
|
45
|
+
|
46
|
+
name: Optional[str] = None
|
47
|
+
online_status: Optional[str] = None
|
48
|
+
|
49
|
+
def to_params(self) -> Dict[str, Any]:
|
50
|
+
"""Convert filter to API parameters, using organizationId (singular) for relay servers."""
|
51
|
+
params = {}
|
52
|
+
|
53
|
+
# Pagination parameters (not in filter namespace)
|
54
|
+
if self.page_number is not None:
|
55
|
+
params["pageNumber"] = self.page_number
|
56
|
+
if self.page_size is not None:
|
57
|
+
params["pageSize"] = self.page_size
|
58
|
+
if self.sort_by is not None:
|
59
|
+
params["sortBy"] = self.sort_by
|
60
|
+
if self.sort_type is not None:
|
61
|
+
params["sortType"] = self.sort_type
|
62
|
+
|
63
|
+
# Always add organizationId (required by API) - default to 0 if not set
|
64
|
+
organization_id = self.organization_id if self.organization_id is not None else 0
|
65
|
+
params["filter[organizationId]"] = str(organization_id)
|
66
|
+
|
67
|
+
# Filter parameters (in filter namespace) - EXCLUDE organization_ids and organization_id
|
68
|
+
for field_name, field_value in self.model_dump(exclude_none=True).items():
|
69
|
+
# Skip pagination/sorting fields and organization fields (handled above)
|
70
|
+
if field_name in ["page_number", "page_size", "sort_by", "sort_type", "organization_ids", "organization_id"]:
|
71
|
+
continue
|
72
|
+
|
73
|
+
if field_value is not None:
|
74
|
+
if isinstance(field_value, list):
|
75
|
+
if len(field_value) > 0: # Only add non-empty lists
|
76
|
+
params[f"filter[{field_name}]"] = ",".join([str(x) for x in field_value])
|
77
|
+
else:
|
78
|
+
params[f"filter[{field_name}]"] = str(field_value)
|
79
|
+
return params
|
80
|
+
|
81
|
+
|
82
|
+
class RebootTaskRequest(AIRBaseModel):
|
83
|
+
"""Request model for reboot task."""
|
84
|
+
|
85
|
+
endpoint_filter: Dict[str, Any]
|
86
|
+
|
87
|
+
|
88
|
+
class ShutdownTaskRequest(AIRBaseModel):
|
89
|
+
"""Request model for shutdown task."""
|
90
|
+
|
91
|
+
endpoint_filter: Dict[str, Any]
|
92
|
+
|
93
|
+
|
94
|
+
class LogRetrievalTaskRequest(AIRBaseModel):
|
95
|
+
"""Request model for log retrieval task."""
|
96
|
+
|
97
|
+
endpoint_filter: Dict[str, Any]
|
98
|
+
|
99
|
+
|
100
|
+
class VersionUpdateTaskRequest(AIRBaseModel):
|
101
|
+
"""Request model for version update task."""
|
102
|
+
|
103
|
+
endpoint_filter: Dict[str, Any]
|
104
|
+
|
105
|
+
|
106
|
+
class UpdateTagsRequest(AIRBaseModel):
|
107
|
+
"""Request model for updating tags."""
|
108
|
+
|
109
|
+
tags: List[str]
|
110
|
+
|
111
|
+
|
112
|
+
class UpdateLabelRequest(AIRBaseModel):
|
113
|
+
"""Request model for updating label."""
|
114
|
+
|
115
|
+
label: str
|
116
|
+
|
117
|
+
|
118
|
+
class UpdateAddressRequest(AIRBaseModel):
|
119
|
+
"""Request model for updating address."""
|
120
|
+
|
121
|
+
address: str
|