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.
Files changed (142) hide show
  1. binalyze_air/__init__.py +77 -77
  2. binalyze_air/apis/__init__.py +67 -27
  3. binalyze_air/apis/acquisitions.py +107 -0
  4. binalyze_air/apis/api_tokens.py +49 -0
  5. binalyze_air/apis/assets.py +161 -0
  6. binalyze_air/apis/audit_logs.py +26 -0
  7. binalyze_air/apis/{authentication.py → auth.py} +29 -27
  8. binalyze_air/apis/auto_asset_tags.py +79 -75
  9. binalyze_air/apis/backup.py +177 -0
  10. binalyze_air/apis/baseline.py +46 -0
  11. binalyze_air/apis/cases.py +225 -0
  12. binalyze_air/apis/cloud_forensics.py +116 -0
  13. binalyze_air/apis/event_subscription.py +96 -96
  14. binalyze_air/apis/evidence.py +249 -53
  15. binalyze_air/apis/interact.py +153 -36
  16. binalyze_air/apis/investigation_hub.py +234 -0
  17. binalyze_air/apis/license.py +104 -0
  18. binalyze_air/apis/logger.py +83 -0
  19. binalyze_air/apis/multipart_upload.py +201 -0
  20. binalyze_air/apis/notifications.py +115 -0
  21. binalyze_air/apis/organizations.py +267 -0
  22. binalyze_air/apis/params.py +44 -39
  23. binalyze_air/apis/policies.py +186 -0
  24. binalyze_air/apis/preset_filters.py +79 -0
  25. binalyze_air/apis/recent_activities.py +71 -0
  26. binalyze_air/apis/relay_server.py +104 -0
  27. binalyze_air/apis/settings.py +395 -27
  28. binalyze_air/apis/tasks.py +80 -0
  29. binalyze_air/apis/triage.py +197 -0
  30. binalyze_air/apis/user_management.py +183 -74
  31. binalyze_air/apis/webhook_executions.py +50 -0
  32. binalyze_air/apis/webhooks.py +322 -230
  33. binalyze_air/base.py +207 -133
  34. binalyze_air/client.py +217 -1337
  35. binalyze_air/commands/__init__.py +175 -145
  36. binalyze_air/commands/acquisitions.py +661 -387
  37. binalyze_air/commands/api_tokens.py +55 -0
  38. binalyze_air/commands/assets.py +324 -362
  39. binalyze_air/commands/{authentication.py → auth.py} +36 -36
  40. binalyze_air/commands/auto_asset_tags.py +230 -230
  41. binalyze_air/commands/backup.py +47 -0
  42. binalyze_air/commands/baseline.py +32 -396
  43. binalyze_air/commands/cases.py +609 -602
  44. binalyze_air/commands/cloud_forensics.py +88 -0
  45. binalyze_air/commands/event_subscription.py +101 -101
  46. binalyze_air/commands/evidences.py +918 -988
  47. binalyze_air/commands/interact.py +172 -58
  48. binalyze_air/commands/investigation_hub.py +315 -0
  49. binalyze_air/commands/license.py +183 -0
  50. binalyze_air/commands/logger.py +126 -0
  51. binalyze_air/commands/multipart_upload.py +363 -0
  52. binalyze_air/commands/notifications.py +45 -0
  53. binalyze_air/commands/organizations.py +200 -221
  54. binalyze_air/commands/policies.py +175 -203
  55. binalyze_air/commands/preset_filters.py +55 -0
  56. binalyze_air/commands/recent_activities.py +32 -0
  57. binalyze_air/commands/relay_server.py +144 -0
  58. binalyze_air/commands/settings.py +431 -29
  59. binalyze_air/commands/tasks.py +95 -56
  60. binalyze_air/commands/triage.py +224 -360
  61. binalyze_air/commands/user_management.py +351 -126
  62. binalyze_air/commands/webhook_executions.py +77 -0
  63. binalyze_air/config.py +244 -244
  64. binalyze_air/exceptions.py +49 -49
  65. binalyze_air/http_client.py +426 -305
  66. binalyze_air/models/__init__.py +287 -285
  67. binalyze_air/models/acquisitions.py +365 -250
  68. binalyze_air/models/api_tokens.py +73 -0
  69. binalyze_air/models/assets.py +438 -438
  70. binalyze_air/models/audit.py +247 -272
  71. binalyze_air/models/audit_logs.py +14 -0
  72. binalyze_air/models/{authentication.py → auth.py} +69 -69
  73. binalyze_air/models/auto_asset_tags.py +227 -116
  74. binalyze_air/models/backup.py +138 -0
  75. binalyze_air/models/baseline.py +231 -231
  76. binalyze_air/models/cases.py +275 -275
  77. binalyze_air/models/cloud_forensics.py +145 -0
  78. binalyze_air/models/event_subscription.py +170 -171
  79. binalyze_air/models/evidence.py +65 -65
  80. binalyze_air/models/evidences.py +367 -348
  81. binalyze_air/models/interact.py +266 -135
  82. binalyze_air/models/investigation_hub.py +265 -0
  83. binalyze_air/models/license.py +150 -0
  84. binalyze_air/models/logger.py +83 -0
  85. binalyze_air/models/multipart_upload.py +352 -0
  86. binalyze_air/models/notifications.py +138 -0
  87. binalyze_air/models/organizations.py +293 -293
  88. binalyze_air/models/params.py +153 -127
  89. binalyze_air/models/policies.py +260 -249
  90. binalyze_air/models/preset_filters.py +79 -0
  91. binalyze_air/models/recent_activities.py +70 -0
  92. binalyze_air/models/relay_server.py +121 -0
  93. binalyze_air/models/settings.py +538 -84
  94. binalyze_air/models/tasks.py +215 -149
  95. binalyze_air/models/triage.py +141 -142
  96. binalyze_air/models/user_management.py +200 -97
  97. binalyze_air/models/webhook_executions.py +33 -0
  98. binalyze_air/queries/__init__.py +121 -133
  99. binalyze_air/queries/acquisitions.py +155 -155
  100. binalyze_air/queries/api_tokens.py +46 -0
  101. binalyze_air/queries/assets.py +186 -105
  102. binalyze_air/queries/audit.py +400 -416
  103. binalyze_air/queries/{authentication.py → auth.py} +55 -55
  104. binalyze_air/queries/auto_asset_tags.py +59 -59
  105. binalyze_air/queries/backup.py +66 -0
  106. binalyze_air/queries/baseline.py +21 -185
  107. binalyze_air/queries/cases.py +292 -292
  108. binalyze_air/queries/cloud_forensics.py +137 -0
  109. binalyze_air/queries/event_subscription.py +54 -54
  110. binalyze_air/queries/evidence.py +139 -139
  111. binalyze_air/queries/evidences.py +279 -279
  112. binalyze_air/queries/interact.py +140 -28
  113. binalyze_air/queries/investigation_hub.py +329 -0
  114. binalyze_air/queries/license.py +85 -0
  115. binalyze_air/queries/logger.py +58 -0
  116. binalyze_air/queries/multipart_upload.py +180 -0
  117. binalyze_air/queries/notifications.py +71 -0
  118. binalyze_air/queries/organizations.py +222 -222
  119. binalyze_air/queries/params.py +154 -115
  120. binalyze_air/queries/policies.py +149 -149
  121. binalyze_air/queries/preset_filters.py +60 -0
  122. binalyze_air/queries/recent_activities.py +44 -0
  123. binalyze_air/queries/relay_server.py +42 -0
  124. binalyze_air/queries/settings.py +533 -20
  125. binalyze_air/queries/tasks.py +125 -81
  126. binalyze_air/queries/triage.py +230 -230
  127. binalyze_air/queries/user_management.py +193 -83
  128. binalyze_air/queries/webhook_executions.py +39 -0
  129. binalyze_air_sdk-1.0.3.dist-info/METADATA +752 -0
  130. binalyze_air_sdk-1.0.3.dist-info/RECORD +132 -0
  131. {binalyze_air_sdk-1.0.1.dist-info → binalyze_air_sdk-1.0.3.dist-info}/WHEEL +1 -1
  132. binalyze_air/apis/endpoints.py +0 -22
  133. binalyze_air/apis/evidences.py +0 -216
  134. binalyze_air/apis/users.py +0 -68
  135. binalyze_air/commands/users.py +0 -101
  136. binalyze_air/models/endpoints.py +0 -76
  137. binalyze_air/models/users.py +0 -82
  138. binalyze_air/queries/endpoints.py +0 -25
  139. binalyze_air/queries/users.py +0 -69
  140. binalyze_air_sdk-1.0.1.dist-info/METADATA +0 -635
  141. binalyze_air_sdk-1.0.1.dist-info/RECORD +0 -82
  142. {binalyze_air_sdk-1.0.1.dist-info → binalyze_air_sdk-1.0.3.dist-info}/top_level.txt +0 -0
@@ -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]
@@ -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