binalyze-air-sdk 1.0.2__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.2.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.2.dist-info/METADATA +0 -706
- binalyze_air_sdk-1.0.2.dist-info/RECORD +0 -82
- {binalyze_air_sdk-1.0.2.dist-info → binalyze_air_sdk-1.0.3.dist-info}/top_level.txt +0 -0
binalyze_air/models/users.py
DELETED
@@ -1,82 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Users-related data models for the Binalyze AIR SDK.
|
3
|
-
"""
|
4
|
-
|
5
|
-
from typing import Optional, List, Dict, Any, Union
|
6
|
-
from datetime import datetime
|
7
|
-
from pydantic import Field
|
8
|
-
|
9
|
-
from ..base import AIRBaseModel, Filter
|
10
|
-
|
11
|
-
|
12
|
-
class User(AIRBaseModel):
|
13
|
-
"""User model."""
|
14
|
-
|
15
|
-
id: str = Field(alias="_id")
|
16
|
-
username: str
|
17
|
-
email: str
|
18
|
-
organization_ids: Optional[Union[List[int], str]] = Field(default=None, alias="organizationIds")
|
19
|
-
strategy: Optional[str] = None
|
20
|
-
profile: Optional[Dict[str, str]] = None
|
21
|
-
tfa_enabled: Optional[bool] = Field(default=False, alias="tfaEnabled")
|
22
|
-
first_name: Optional[str] = Field(default=None, alias="firstName")
|
23
|
-
last_name: Optional[str] = Field(default=None, alias="lastName")
|
24
|
-
organization_id: Optional[int] = Field(default=None, alias="organizationId")
|
25
|
-
role: Optional[str] = None
|
26
|
-
is_active: bool = Field(default=True, alias="isActive")
|
27
|
-
created_at: Optional[datetime] = Field(default=None, alias="createdAt")
|
28
|
-
updated_at: Optional[datetime] = Field(default=None, alias="updatedAt")
|
29
|
-
|
30
|
-
|
31
|
-
class CreateUserRequest(AIRBaseModel):
|
32
|
-
"""Create user request model."""
|
33
|
-
|
34
|
-
username: str
|
35
|
-
email: str
|
36
|
-
password: str
|
37
|
-
firstName: Optional[str] = None
|
38
|
-
lastName: Optional[str] = None
|
39
|
-
organizationId: int
|
40
|
-
role: Optional[str] = None
|
41
|
-
|
42
|
-
|
43
|
-
class UpdateUserRequest(AIRBaseModel):
|
44
|
-
"""Update user request model."""
|
45
|
-
|
46
|
-
username: Optional[str] = None
|
47
|
-
email: Optional[str] = None
|
48
|
-
firstName: Optional[str] = None
|
49
|
-
lastName: Optional[str] = None
|
50
|
-
role: Optional[str] = None
|
51
|
-
isActive: Optional[bool] = None
|
52
|
-
|
53
|
-
|
54
|
-
class APIUser(AIRBaseModel):
|
55
|
-
"""API user model."""
|
56
|
-
|
57
|
-
id: str
|
58
|
-
name: str
|
59
|
-
description: Optional[str] = None
|
60
|
-
permissions: List[str] = []
|
61
|
-
organizationId: int
|
62
|
-
apiKey: Optional[str] = None
|
63
|
-
isActive: bool = True
|
64
|
-
|
65
|
-
|
66
|
-
class CreateAPIUserRequest(AIRBaseModel):
|
67
|
-
"""Create API user request model."""
|
68
|
-
|
69
|
-
name: str
|
70
|
-
description: Optional[str] = None
|
71
|
-
permissions: List[str] = []
|
72
|
-
organizationId: int
|
73
|
-
|
74
|
-
|
75
|
-
class UserFilter(Filter):
|
76
|
-
"""Filter for user queries."""
|
77
|
-
|
78
|
-
username: Optional[str] = None
|
79
|
-
email: Optional[str] = None
|
80
|
-
role: Optional[str] = None
|
81
|
-
organizationId: Optional[int] = None
|
82
|
-
isActive: Optional[bool] = None
|
@@ -1,25 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Endpoints queries for the Binalyze AIR SDK.
|
3
|
-
"""
|
4
|
-
|
5
|
-
from typing import List, Optional
|
6
|
-
|
7
|
-
from ..base import Query
|
8
|
-
from ..models.endpoints import EndpointTag, EndpointTagFilter
|
9
|
-
from ..http_client import HTTPClient
|
10
|
-
|
11
|
-
|
12
|
-
class GetEndpointTagsQuery(Query[List[EndpointTag]]):
|
13
|
-
"""Query to get endpoint tags."""
|
14
|
-
|
15
|
-
def __init__(self, http_client: HTTPClient, filter_params: Optional[EndpointTagFilter] = None):
|
16
|
-
self.http_client = http_client
|
17
|
-
self.filter_params = filter_params or EndpointTagFilter()
|
18
|
-
|
19
|
-
def execute(self) -> List[EndpointTag]:
|
20
|
-
"""Execute the query to get endpoint tags."""
|
21
|
-
params = self.filter_params.to_params()
|
22
|
-
response = self.http_client.get("endpoints/tags", params=params)
|
23
|
-
|
24
|
-
entities = response.get("result", [])
|
25
|
-
return [EndpointTag(**item) for item in entities]
|
binalyze_air/queries/users.py
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
Users-related queries for the Binalyze AIR SDK.
|
3
|
-
"""
|
4
|
-
|
5
|
-
from typing import List, Optional, Dict, Any
|
6
|
-
|
7
|
-
from ..base import Query
|
8
|
-
from ..models.users import User, UserFilter
|
9
|
-
from ..http_client import HTTPClient
|
10
|
-
|
11
|
-
|
12
|
-
class ListUsersQuery(Query[List[User]]):
|
13
|
-
"""Query to list users with pagination."""
|
14
|
-
|
15
|
-
def __init__(self, http_client: HTTPClient, page_number: int = 1, page_size: int = 10,
|
16
|
-
sort_by: str = "createdAt", sort_type: str = "ASC"):
|
17
|
-
self.http_client = http_client
|
18
|
-
self.page_number = page_number
|
19
|
-
self.page_size = page_size
|
20
|
-
self.sort_by = sort_by
|
21
|
-
self.sort_type = sort_type
|
22
|
-
|
23
|
-
def execute(self) -> List[User]:
|
24
|
-
"""Execute the list users query."""
|
25
|
-
params = {
|
26
|
-
"pageNumber": self.page_number,
|
27
|
-
"pageSize": self.page_size,
|
28
|
-
"sortBy": self.sort_by,
|
29
|
-
"sortType": self.sort_type,
|
30
|
-
"filter[organizationIds]": "0" # Add required filter based on API spec
|
31
|
-
}
|
32
|
-
|
33
|
-
# Use the correct endpoint path from API JSON files
|
34
|
-
response = self.http_client.get("user-management/users", params=params)
|
35
|
-
|
36
|
-
# Extract entities from response and convert to User objects
|
37
|
-
entities = response.get("result", {}).get("entities", [])
|
38
|
-
|
39
|
-
users = []
|
40
|
-
for entity_data in entities:
|
41
|
-
try:
|
42
|
-
user = User.model_validate(entity_data)
|
43
|
-
users.append(user)
|
44
|
-
except Exception as e:
|
45
|
-
# Log validation error but continue
|
46
|
-
print(f"Warning: Failed to validate user data: {e}")
|
47
|
-
continue
|
48
|
-
|
49
|
-
return users
|
50
|
-
|
51
|
-
|
52
|
-
class GetUserQuery(Query[User]):
|
53
|
-
"""Query to get user by ID."""
|
54
|
-
|
55
|
-
def __init__(self, http_client: HTTPClient, user_id: str):
|
56
|
-
self.http_client = http_client
|
57
|
-
self.user_id = user_id
|
58
|
-
|
59
|
-
def execute(self) -> User:
|
60
|
-
"""Execute the get user query."""
|
61
|
-
# Use the correct endpoint path from API JSON files
|
62
|
-
response = self.http_client.get(f"user-management/users/{self.user_id}")
|
63
|
-
|
64
|
-
# Extract user data from response and convert to User object
|
65
|
-
entity_data = response.get("result", {})
|
66
|
-
|
67
|
-
# Convert to User object using Pydantic model validation
|
68
|
-
user = User.model_validate(entity_data)
|
69
|
-
return user
|