kalir-python 0.1.0__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.
- kalir/__init__.py +11 -0
- kalir/api/__init__.py +1 -0
- kalir/api/assets/__init__.py +1 -0
- kalir/api/assets/create_asset.py +193 -0
- kalir/api/assets/delete_asset.py +182 -0
- kalir/api/assets/get_asset.py +186 -0
- kalir/api/assets/list_assets.py +165 -0
- kalir/api/assets/update_asset.py +206 -0
- kalir/api/events/__init__.py +1 -0
- kalir/api/events/get_event.py +194 -0
- kalir/api/events/ingest_event.py +215 -0
- kalir/api/events/list_events.py +259 -0
- kalir/api/exposures/__init__.py +1 -0
- kalir/api/exposures/count_exposures.py +165 -0
- kalir/api/exposures/get_infostealer_summary.py +181 -0
- kalir/api/exposures/list_exposures.py +225 -0
- kalir/api/incidents/__init__.py +1 -0
- kalir/api/incidents/get_incident.py +194 -0
- kalir/api/incidents/list_incidents.py +265 -0
- kalir/api/incidents/update_incident_status.py +207 -0
- kalir/api/intel/__init__.py +1 -0
- kalir/api/intel/get_ransomware_stats.py +165 -0
- kalir/api/intel/list_ransomware_victims.py +165 -0
- kalir/api/mentions/__init__.py +1 -0
- kalir/api/mentions/list_mentions.py +283 -0
- kalir/api/overview/__init__.py +1 -0
- kalir/api/overview/get_overview.py +184 -0
- kalir/api/phishing/__init__.py +1 -0
- kalir/api/phishing/list_phishing.py +245 -0
- kalir/api/reports/__init__.py +1 -0
- kalir/api/reports/create_report.py +193 -0
- kalir/api/reports/download_report.py +186 -0
- kalir/api/reports/list_reports.py +165 -0
- kalir/api/rules/__init__.py +1 -0
- kalir/api/rules/create_rule.py +193 -0
- kalir/api/rules/delete_rule.py +183 -0
- kalir/api/rules/get_rule.py +187 -0
- kalir/api/rules/list_rules.py +165 -0
- kalir/api/rules/replace_rule.py +207 -0
- kalir/api/takedowns/__init__.py +1 -0
- kalir/api/takedowns/count_takedowns.py +165 -0
- kalir/api/takedowns/create_takedown.py +193 -0
- kalir/api/takedowns/delete_takedown.py +183 -0
- kalir/api/takedowns/get_takedown.py +187 -0
- kalir/api/takedowns/list_takedowns.py +165 -0
- kalir/api/takedowns/replace_takedown.py +210 -0
- kalir/api/takedowns/update_takedown.py +210 -0
- kalir/api/webhooks/__init__.py +1 -0
- kalir/api/webhooks/create_webhook.py +222 -0
- kalir/api/webhooks/delete_webhook.py +190 -0
- kalir/api/webhooks/get_webhook.py +194 -0
- kalir/api/webhooks/get_webhook_delivery.py +194 -0
- kalir/api/webhooks/list_webhook_deliveries.py +239 -0
- kalir/api/webhooks/list_webhook_event_types.py +165 -0
- kalir/api/webhooks/list_webhooks.py +172 -0
- kalir/api/webhooks/retry_webhook_delivery.py +190 -0
- kalir/api/webhooks/rotate_webhook_secret.py +202 -0
- kalir/api/webhooks/send_webhook_test.py +202 -0
- kalir/api/webhooks/update_webhook.py +229 -0
- kalir/client.py +271 -0
- kalir/errors.py +14 -0
- kalir/models/__init__.py +195 -0
- kalir/models/asset.py +162 -0
- kalir/models/asset_create.py +122 -0
- kalir/models/asset_create_asset_type.py +14 -0
- kalir/models/asset_create_metadata.py +64 -0
- kalir/models/count_exposures_response_200.py +78 -0
- kalir/models/count_takedowns_response_200.py +96 -0
- kalir/models/create_report_body.py +96 -0
- kalir/models/create_report_body_type.py +10 -0
- kalir/models/create_webhook_response_201.py +111 -0
- kalir/models/error.py +84 -0
- kalir/models/error_error.py +106 -0
- kalir/models/error_error_type.py +15 -0
- kalir/models/event.py +151 -0
- kalir/models/event_asset.py +87 -0
- kalir/models/event_ingest.py +146 -0
- kalir/models/event_ingest_asset.py +87 -0
- kalir/models/event_ingest_evidence.py +64 -0
- kalir/models/event_ingest_source.py +87 -0
- kalir/models/exposure.py +137 -0
- kalir/models/exposure_webhook_event.py +152 -0
- kalir/models/exposure_webhook_event_data.py +115 -0
- kalir/models/exposure_webhook_event_data_exposure.py +149 -0
- kalir/models/exposure_webhook_event_data_infection.py +136 -0
- kalir/models/exposure_webhook_event_type.py +8 -0
- kalir/models/get_incident_response_200.py +174 -0
- kalir/models/get_infostealer_summary_response_200.py +100 -0
- kalir/models/get_ransomware_stats_response_200.py +156 -0
- kalir/models/get_ransomware_stats_response_200_top_countries_7d_item.py +64 -0
- kalir/models/get_ransomware_stats_response_200_top_groups_7d_item.py +64 -0
- kalir/models/incident.py +170 -0
- kalir/models/incident_severity.py +10 -0
- kalir/models/incident_status.py +10 -0
- kalir/models/incident_webhook_event.py +152 -0
- kalir/models/incident_webhook_event_data.py +115 -0
- kalir/models/incident_webhook_event_data_previous.py +88 -0
- kalir/models/incident_webhook_event_type.py +9 -0
- kalir/models/infostealer_domain_summary.py +122 -0
- kalir/models/infostealer_domain_summary_snapshot.py +201 -0
- kalir/models/infostealer_domain_summary_snapshot_top_employee_urls_item.py +87 -0
- kalir/models/infostealer_domain_summary_snapshot_top_families_item.py +87 -0
- kalir/models/list_assets_response_200.py +100 -0
- kalir/models/list_events_response_200.py +109 -0
- kalir/models/list_exposures_response_200.py +127 -0
- kalir/models/list_incidents_bucket.py +10 -0
- kalir/models/list_incidents_response_200.py +149 -0
- kalir/models/list_incidents_response_200_counts.py +106 -0
- kalir/models/list_incidents_status.py +12 -0
- kalir/models/list_mentions_response_200.py +122 -0
- kalir/models/list_mentions_source.py +8 -0
- kalir/models/list_phishing_response_200.py +122 -0
- kalir/models/list_phishing_verdict.py +11 -0
- kalir/models/list_ransomware_victims_response_200.py +109 -0
- kalir/models/list_ransomware_victims_response_200_victims_item.py +64 -0
- kalir/models/list_reports_response_200.py +109 -0
- kalir/models/list_rules_response_200.py +100 -0
- kalir/models/list_takedowns_response_200.py +109 -0
- kalir/models/list_webhook_deliveries_response_200.py +122 -0
- kalir/models/list_webhook_event_types_response_200.py +100 -0
- kalir/models/list_webhook_event_types_response_200_data_item.py +87 -0
- kalir/models/list_webhooks_response_200.py +100 -0
- kalir/models/mention.py +194 -0
- kalir/models/mention_source.py +8 -0
- kalir/models/overview.py +231 -0
- kalir/models/overview_assets.py +96 -0
- kalir/models/overview_exposures.py +105 -0
- kalir/models/overview_incidents.py +114 -0
- kalir/models/overview_phishing.py +87 -0
- kalir/models/overview_risk_level.py +10 -0
- kalir/models/overview_takedowns.py +87 -0
- kalir/models/pagination.py +105 -0
- kalir/models/phishing_domain.py +186 -0
- kalir/models/phishing_domain_verdict.py +11 -0
- kalir/models/report.py +182 -0
- kalir/models/report_parameters.py +181 -0
- kalir/models/report_parameters_date_range.py +11 -0
- kalir/models/report_parameters_language.py +8 -0
- kalir/models/report_parameters_sections_item.py +15 -0
- kalir/models/report_status.py +10 -0
- kalir/models/rotate_webhook_secret_response_200.py +87 -0
- kalir/models/rule.py +174 -0
- kalir/models/rule_input.py +134 -0
- kalir/models/rule_input_actions_item.py +64 -0
- kalir/models/takedown.py +163 -0
- kalir/models/takedown_create.py +113 -0
- kalir/models/takedown_update.py +96 -0
- kalir/models/update_incident_status_body.py +90 -0
- kalir/models/update_incident_status_body_status.py +10 -0
- kalir/models/webhook_delivery.py +274 -0
- kalir/models/webhook_delivery_payload.py +64 -0
- kalir/models/webhook_delivery_status.py +9 -0
- kalir/models/webhook_endpoint.py +216 -0
- kalir/models/webhook_endpoint_input.py +124 -0
- kalir/models/webhook_endpoint_input_event_types_item.py +11 -0
- kalir/models/webhook_incident.py +232 -0
- kalir/models/webhook_incident_severity.py +10 -0
- kalir/py.typed +1 -0
- kalir/types.py +53 -0
- kalir/webhooks.py +63 -0
- kalir_python-0.1.0.dist-info/METADATA +76 -0
- kalir_python-0.1.0.dist-info/RECORD +163 -0
- kalir_python-0.1.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
from typing import cast
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from ..models.infostealer_domain_summary_snapshot_top_employee_urls_item import InfostealerDomainSummarySnapshotTopEmployeeUrlsItem
|
|
16
|
+
from ..models.infostealer_domain_summary_snapshot_top_families_item import InfostealerDomainSummarySnapshotTopFamiliesItem
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
T = TypeVar("T", bound="InfostealerDomainSummarySnapshot")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@_attrs_define
|
|
27
|
+
class InfostealerDomainSummarySnapshot:
|
|
28
|
+
"""
|
|
29
|
+
Attributes:
|
|
30
|
+
total_stealers (int | Unset):
|
|
31
|
+
employees (int | Unset):
|
|
32
|
+
users (int | Unset):
|
|
33
|
+
third_parties (int | Unset):
|
|
34
|
+
employee_weak_pct (float | Unset):
|
|
35
|
+
last_employee_compromised (str | Unset):
|
|
36
|
+
last_user_compromised (str | Unset):
|
|
37
|
+
degraded (bool | Unset):
|
|
38
|
+
top_families (list[InfostealerDomainSummarySnapshotTopFamiliesItem] | Unset):
|
|
39
|
+
top_employee_urls (list[InfostealerDomainSummarySnapshotTopEmployeeUrlsItem] | Unset):
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
total_stealers: int | Unset = UNSET
|
|
43
|
+
employees: int | Unset = UNSET
|
|
44
|
+
users: int | Unset = UNSET
|
|
45
|
+
third_parties: int | Unset = UNSET
|
|
46
|
+
employee_weak_pct: float | Unset = UNSET
|
|
47
|
+
last_employee_compromised: str | Unset = UNSET
|
|
48
|
+
last_user_compromised: str | Unset = UNSET
|
|
49
|
+
degraded: bool | Unset = UNSET
|
|
50
|
+
top_families: list[InfostealerDomainSummarySnapshotTopFamiliesItem] | Unset = UNSET
|
|
51
|
+
top_employee_urls: list[InfostealerDomainSummarySnapshotTopEmployeeUrlsItem] | Unset = UNSET
|
|
52
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def to_dict(self) -> dict[str, Any]:
|
|
59
|
+
from ..models.infostealer_domain_summary_snapshot_top_employee_urls_item import InfostealerDomainSummarySnapshotTopEmployeeUrlsItem # noqa: PLC0415
|
|
60
|
+
from ..models.infostealer_domain_summary_snapshot_top_families_item import InfostealerDomainSummarySnapshotTopFamiliesItem # noqa: PLC0415
|
|
61
|
+
total_stealers = self.total_stealers
|
|
62
|
+
|
|
63
|
+
employees = self.employees
|
|
64
|
+
|
|
65
|
+
users = self.users
|
|
66
|
+
|
|
67
|
+
third_parties = self.third_parties
|
|
68
|
+
|
|
69
|
+
employee_weak_pct = self.employee_weak_pct
|
|
70
|
+
|
|
71
|
+
last_employee_compromised = self.last_employee_compromised
|
|
72
|
+
|
|
73
|
+
last_user_compromised = self.last_user_compromised
|
|
74
|
+
|
|
75
|
+
degraded = self.degraded
|
|
76
|
+
|
|
77
|
+
top_families: list[dict[str, Any]] | Unset = UNSET
|
|
78
|
+
if not isinstance(self.top_families, Unset):
|
|
79
|
+
top_families = []
|
|
80
|
+
for top_families_item_data in self.top_families:
|
|
81
|
+
top_families_item = top_families_item_data.to_dict()
|
|
82
|
+
top_families.append(top_families_item)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
top_employee_urls: list[dict[str, Any]] | Unset = UNSET
|
|
87
|
+
if not isinstance(self.top_employee_urls, Unset):
|
|
88
|
+
top_employee_urls = []
|
|
89
|
+
for top_employee_urls_item_data in self.top_employee_urls:
|
|
90
|
+
top_employee_urls_item = top_employee_urls_item_data.to_dict()
|
|
91
|
+
top_employee_urls.append(top_employee_urls_item)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
field_dict: dict[str, Any] = {}
|
|
97
|
+
field_dict.update(self.additional_properties)
|
|
98
|
+
field_dict.update({
|
|
99
|
+
})
|
|
100
|
+
if total_stealers is not UNSET:
|
|
101
|
+
field_dict["total_stealers"] = total_stealers
|
|
102
|
+
if employees is not UNSET:
|
|
103
|
+
field_dict["employees"] = employees
|
|
104
|
+
if users is not UNSET:
|
|
105
|
+
field_dict["users"] = users
|
|
106
|
+
if third_parties is not UNSET:
|
|
107
|
+
field_dict["third_parties"] = third_parties
|
|
108
|
+
if employee_weak_pct is not UNSET:
|
|
109
|
+
field_dict["employee_weak_pct"] = employee_weak_pct
|
|
110
|
+
if last_employee_compromised is not UNSET:
|
|
111
|
+
field_dict["last_employee_compromised"] = last_employee_compromised
|
|
112
|
+
if last_user_compromised is not UNSET:
|
|
113
|
+
field_dict["last_user_compromised"] = last_user_compromised
|
|
114
|
+
if degraded is not UNSET:
|
|
115
|
+
field_dict["degraded"] = degraded
|
|
116
|
+
if top_families is not UNSET:
|
|
117
|
+
field_dict["top_families"] = top_families
|
|
118
|
+
if top_employee_urls is not UNSET:
|
|
119
|
+
field_dict["top_employee_urls"] = top_employee_urls
|
|
120
|
+
|
|
121
|
+
return field_dict
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
@classmethod
|
|
126
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
127
|
+
from ..models.infostealer_domain_summary_snapshot_top_employee_urls_item import InfostealerDomainSummarySnapshotTopEmployeeUrlsItem # noqa: PLC0415
|
|
128
|
+
from ..models.infostealer_domain_summary_snapshot_top_families_item import InfostealerDomainSummarySnapshotTopFamiliesItem # noqa: PLC0415
|
|
129
|
+
d = dict(src_dict)
|
|
130
|
+
total_stealers = d.pop("total_stealers", UNSET)
|
|
131
|
+
|
|
132
|
+
employees = d.pop("employees", UNSET)
|
|
133
|
+
|
|
134
|
+
users = d.pop("users", UNSET)
|
|
135
|
+
|
|
136
|
+
third_parties = d.pop("third_parties", UNSET)
|
|
137
|
+
|
|
138
|
+
employee_weak_pct = d.pop("employee_weak_pct", UNSET)
|
|
139
|
+
|
|
140
|
+
last_employee_compromised = d.pop("last_employee_compromised", UNSET)
|
|
141
|
+
|
|
142
|
+
last_user_compromised = d.pop("last_user_compromised", UNSET)
|
|
143
|
+
|
|
144
|
+
degraded = d.pop("degraded", UNSET)
|
|
145
|
+
|
|
146
|
+
_top_families = d.pop("top_families", UNSET)
|
|
147
|
+
top_families: list[InfostealerDomainSummarySnapshotTopFamiliesItem] | Unset = UNSET
|
|
148
|
+
if _top_families is not UNSET:
|
|
149
|
+
top_families = []
|
|
150
|
+
for top_families_item_data in _top_families:
|
|
151
|
+
top_families_item = InfostealerDomainSummarySnapshotTopFamiliesItem.from_dict(top_families_item_data)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
top_families.append(top_families_item)
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
_top_employee_urls = d.pop("top_employee_urls", UNSET)
|
|
159
|
+
top_employee_urls: list[InfostealerDomainSummarySnapshotTopEmployeeUrlsItem] | Unset = UNSET
|
|
160
|
+
if _top_employee_urls is not UNSET:
|
|
161
|
+
top_employee_urls = []
|
|
162
|
+
for top_employee_urls_item_data in _top_employee_urls:
|
|
163
|
+
top_employee_urls_item = InfostealerDomainSummarySnapshotTopEmployeeUrlsItem.from_dict(top_employee_urls_item_data)
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
top_employee_urls.append(top_employee_urls_item)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
infostealer_domain_summary_snapshot = cls(
|
|
171
|
+
total_stealers=total_stealers,
|
|
172
|
+
employees=employees,
|
|
173
|
+
users=users,
|
|
174
|
+
third_parties=third_parties,
|
|
175
|
+
employee_weak_pct=employee_weak_pct,
|
|
176
|
+
last_employee_compromised=last_employee_compromised,
|
|
177
|
+
last_user_compromised=last_user_compromised,
|
|
178
|
+
degraded=degraded,
|
|
179
|
+
top_families=top_families,
|
|
180
|
+
top_employee_urls=top_employee_urls,
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
infostealer_domain_summary_snapshot.additional_properties = d
|
|
185
|
+
return infostealer_domain_summary_snapshot
|
|
186
|
+
|
|
187
|
+
@property
|
|
188
|
+
def additional_keys(self) -> list[str]:
|
|
189
|
+
return list(self.additional_properties.keys())
|
|
190
|
+
|
|
191
|
+
def __getitem__(self, key: str) -> Any:
|
|
192
|
+
return self.additional_properties[key]
|
|
193
|
+
|
|
194
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
195
|
+
self.additional_properties[key] = value
|
|
196
|
+
|
|
197
|
+
def __delitem__(self, key: str) -> None:
|
|
198
|
+
del self.additional_properties[key]
|
|
199
|
+
|
|
200
|
+
def __contains__(self, key: str) -> bool:
|
|
201
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
T = TypeVar("T", bound="InfostealerDomainSummarySnapshotTopEmployeeUrlsItem")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@_attrs_define
|
|
23
|
+
class InfostealerDomainSummarySnapshotTopEmployeeUrlsItem:
|
|
24
|
+
"""
|
|
25
|
+
Attributes:
|
|
26
|
+
url (str | Unset):
|
|
27
|
+
occurrence (int | Unset):
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
url: str | Unset = UNSET
|
|
31
|
+
occurrence: int | Unset = UNSET
|
|
32
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def to_dict(self) -> dict[str, Any]:
|
|
39
|
+
url = self.url
|
|
40
|
+
|
|
41
|
+
occurrence = self.occurrence
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
field_dict: dict[str, Any] = {}
|
|
45
|
+
field_dict.update(self.additional_properties)
|
|
46
|
+
field_dict.update({
|
|
47
|
+
})
|
|
48
|
+
if url is not UNSET:
|
|
49
|
+
field_dict["url"] = url
|
|
50
|
+
if occurrence is not UNSET:
|
|
51
|
+
field_dict["occurrence"] = occurrence
|
|
52
|
+
|
|
53
|
+
return field_dict
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@classmethod
|
|
58
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
59
|
+
d = dict(src_dict)
|
|
60
|
+
url = d.pop("url", UNSET)
|
|
61
|
+
|
|
62
|
+
occurrence = d.pop("occurrence", UNSET)
|
|
63
|
+
|
|
64
|
+
infostealer_domain_summary_snapshot_top_employee_urls_item = cls(
|
|
65
|
+
url=url,
|
|
66
|
+
occurrence=occurrence,
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
infostealer_domain_summary_snapshot_top_employee_urls_item.additional_properties = d
|
|
71
|
+
return infostealer_domain_summary_snapshot_top_employee_urls_item
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def additional_keys(self) -> list[str]:
|
|
75
|
+
return list(self.additional_properties.keys())
|
|
76
|
+
|
|
77
|
+
def __getitem__(self, key: str) -> Any:
|
|
78
|
+
return self.additional_properties[key]
|
|
79
|
+
|
|
80
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
81
|
+
self.additional_properties[key] = value
|
|
82
|
+
|
|
83
|
+
def __delitem__(self, key: str) -> None:
|
|
84
|
+
del self.additional_properties[key]
|
|
85
|
+
|
|
86
|
+
def __contains__(self, key: str) -> bool:
|
|
87
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
T = TypeVar("T", bound="InfostealerDomainSummarySnapshotTopFamiliesItem")
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
@_attrs_define
|
|
23
|
+
class InfostealerDomainSummarySnapshotTopFamiliesItem:
|
|
24
|
+
"""
|
|
25
|
+
Attributes:
|
|
26
|
+
family (str | Unset):
|
|
27
|
+
count (int | Unset):
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
family: str | Unset = UNSET
|
|
31
|
+
count: int | Unset = UNSET
|
|
32
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def to_dict(self) -> dict[str, Any]:
|
|
39
|
+
family = self.family
|
|
40
|
+
|
|
41
|
+
count = self.count
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
field_dict: dict[str, Any] = {}
|
|
45
|
+
field_dict.update(self.additional_properties)
|
|
46
|
+
field_dict.update({
|
|
47
|
+
})
|
|
48
|
+
if family is not UNSET:
|
|
49
|
+
field_dict["family"] = family
|
|
50
|
+
if count is not UNSET:
|
|
51
|
+
field_dict["count"] = count
|
|
52
|
+
|
|
53
|
+
return field_dict
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@classmethod
|
|
58
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
59
|
+
d = dict(src_dict)
|
|
60
|
+
family = d.pop("family", UNSET)
|
|
61
|
+
|
|
62
|
+
count = d.pop("count", UNSET)
|
|
63
|
+
|
|
64
|
+
infostealer_domain_summary_snapshot_top_families_item = cls(
|
|
65
|
+
family=family,
|
|
66
|
+
count=count,
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
infostealer_domain_summary_snapshot_top_families_item.additional_properties = d
|
|
71
|
+
return infostealer_domain_summary_snapshot_top_families_item
|
|
72
|
+
|
|
73
|
+
@property
|
|
74
|
+
def additional_keys(self) -> list[str]:
|
|
75
|
+
return list(self.additional_properties.keys())
|
|
76
|
+
|
|
77
|
+
def __getitem__(self, key: str) -> Any:
|
|
78
|
+
return self.additional_properties[key]
|
|
79
|
+
|
|
80
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
81
|
+
self.additional_properties[key] = value
|
|
82
|
+
|
|
83
|
+
def __delitem__(self, key: str) -> None:
|
|
84
|
+
del self.additional_properties[key]
|
|
85
|
+
|
|
86
|
+
def __contains__(self, key: str) -> bool:
|
|
87
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
from typing import cast
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from ..models.asset import Asset
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
T = TypeVar("T", bound="ListAssetsResponse200")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@_attrs_define
|
|
26
|
+
class ListAssetsResponse200:
|
|
27
|
+
"""
|
|
28
|
+
Attributes:
|
|
29
|
+
assets (list[Asset] | Unset):
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
assets: list[Asset] | Unset = UNSET
|
|
33
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def to_dict(self) -> dict[str, Any]:
|
|
40
|
+
from ..models.asset import Asset # noqa: PLC0415
|
|
41
|
+
assets: list[dict[str, Any]] | Unset = UNSET
|
|
42
|
+
if not isinstance(self.assets, Unset):
|
|
43
|
+
assets = []
|
|
44
|
+
for assets_item_data in self.assets:
|
|
45
|
+
assets_item = assets_item_data.to_dict()
|
|
46
|
+
assets.append(assets_item)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
field_dict: dict[str, Any] = {}
|
|
52
|
+
field_dict.update(self.additional_properties)
|
|
53
|
+
field_dict.update({
|
|
54
|
+
})
|
|
55
|
+
if assets is not UNSET:
|
|
56
|
+
field_dict["assets"] = assets
|
|
57
|
+
|
|
58
|
+
return field_dict
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@classmethod
|
|
63
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
64
|
+
from ..models.asset import Asset # noqa: PLC0415
|
|
65
|
+
d = dict(src_dict)
|
|
66
|
+
_assets = d.pop("assets", UNSET)
|
|
67
|
+
assets: list[Asset] | Unset = UNSET
|
|
68
|
+
if _assets is not UNSET:
|
|
69
|
+
assets = []
|
|
70
|
+
for assets_item_data in _assets:
|
|
71
|
+
assets_item = Asset.from_dict(assets_item_data)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
assets.append(assets_item)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
list_assets_response_200 = cls(
|
|
79
|
+
assets=assets,
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
list_assets_response_200.additional_properties = d
|
|
84
|
+
return list_assets_response_200
|
|
85
|
+
|
|
86
|
+
@property
|
|
87
|
+
def additional_keys(self) -> list[str]:
|
|
88
|
+
return list(self.additional_properties.keys())
|
|
89
|
+
|
|
90
|
+
def __getitem__(self, key: str) -> Any:
|
|
91
|
+
return self.additional_properties[key]
|
|
92
|
+
|
|
93
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
94
|
+
self.additional_properties[key] = value
|
|
95
|
+
|
|
96
|
+
def __delitem__(self, key: str) -> None:
|
|
97
|
+
del self.additional_properties[key]
|
|
98
|
+
|
|
99
|
+
def __contains__(self, key: str) -> bool:
|
|
100
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
from typing import cast
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from ..models.event import Event
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
T = TypeVar("T", bound="ListEventsResponse200")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@_attrs_define
|
|
26
|
+
class ListEventsResponse200:
|
|
27
|
+
"""
|
|
28
|
+
Attributes:
|
|
29
|
+
events (list[Event] | Unset):
|
|
30
|
+
total (int | Unset):
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
events: list[Event] | Unset = UNSET
|
|
34
|
+
total: int | Unset = UNSET
|
|
35
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def to_dict(self) -> dict[str, Any]:
|
|
42
|
+
from ..models.event import Event # noqa: PLC0415
|
|
43
|
+
events: list[dict[str, Any]] | Unset = UNSET
|
|
44
|
+
if not isinstance(self.events, Unset):
|
|
45
|
+
events = []
|
|
46
|
+
for events_item_data in self.events:
|
|
47
|
+
events_item = events_item_data.to_dict()
|
|
48
|
+
events.append(events_item)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
total = self.total
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
field_dict: dict[str, Any] = {}
|
|
56
|
+
field_dict.update(self.additional_properties)
|
|
57
|
+
field_dict.update({
|
|
58
|
+
})
|
|
59
|
+
if events is not UNSET:
|
|
60
|
+
field_dict["events"] = events
|
|
61
|
+
if total is not UNSET:
|
|
62
|
+
field_dict["total"] = total
|
|
63
|
+
|
|
64
|
+
return field_dict
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@classmethod
|
|
69
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
70
|
+
from ..models.event import Event # noqa: PLC0415
|
|
71
|
+
d = dict(src_dict)
|
|
72
|
+
_events = d.pop("events", UNSET)
|
|
73
|
+
events: list[Event] | Unset = UNSET
|
|
74
|
+
if _events is not UNSET:
|
|
75
|
+
events = []
|
|
76
|
+
for events_item_data in _events:
|
|
77
|
+
events_item = Event.from_dict(events_item_data)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
events.append(events_item)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
total = d.pop("total", UNSET)
|
|
85
|
+
|
|
86
|
+
list_events_response_200 = cls(
|
|
87
|
+
events=events,
|
|
88
|
+
total=total,
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
list_events_response_200.additional_properties = d
|
|
93
|
+
return list_events_response_200
|
|
94
|
+
|
|
95
|
+
@property
|
|
96
|
+
def additional_keys(self) -> list[str]:
|
|
97
|
+
return list(self.additional_properties.keys())
|
|
98
|
+
|
|
99
|
+
def __getitem__(self, key: str) -> Any:
|
|
100
|
+
return self.additional_properties[key]
|
|
101
|
+
|
|
102
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
103
|
+
self.additional_properties[key] = value
|
|
104
|
+
|
|
105
|
+
def __delitem__(self, key: str) -> None:
|
|
106
|
+
del self.additional_properties[key]
|
|
107
|
+
|
|
108
|
+
def __contains__(self, key: str) -> bool:
|
|
109
|
+
return key in self.additional_properties
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
|
|
5
|
+
|
|
6
|
+
from attrs import define as _attrs_define
|
|
7
|
+
from attrs import field as _attrs_field
|
|
8
|
+
|
|
9
|
+
from ..types import UNSET, Unset
|
|
10
|
+
|
|
11
|
+
from ..types import UNSET, Unset
|
|
12
|
+
from typing import cast
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from ..models.exposure import Exposure
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
T = TypeVar("T", bound="ListExposuresResponse200")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@_attrs_define
|
|
26
|
+
class ListExposuresResponse200:
|
|
27
|
+
"""
|
|
28
|
+
Attributes:
|
|
29
|
+
exposures (list[Exposure] | Unset):
|
|
30
|
+
total (int | Unset):
|
|
31
|
+
limit (int | Unset):
|
|
32
|
+
offset (int | Unset):
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
exposures: list[Exposure] | Unset = UNSET
|
|
36
|
+
total: int | Unset = UNSET
|
|
37
|
+
limit: int | Unset = UNSET
|
|
38
|
+
offset: int | Unset = UNSET
|
|
39
|
+
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def to_dict(self) -> dict[str, Any]:
|
|
46
|
+
from ..models.exposure import Exposure # noqa: PLC0415
|
|
47
|
+
exposures: list[dict[str, Any]] | Unset = UNSET
|
|
48
|
+
if not isinstance(self.exposures, Unset):
|
|
49
|
+
exposures = []
|
|
50
|
+
for exposures_item_data in self.exposures:
|
|
51
|
+
exposures_item = exposures_item_data.to_dict()
|
|
52
|
+
exposures.append(exposures_item)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
total = self.total
|
|
57
|
+
|
|
58
|
+
limit = self.limit
|
|
59
|
+
|
|
60
|
+
offset = self.offset
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
field_dict: dict[str, Any] = {}
|
|
64
|
+
field_dict.update(self.additional_properties)
|
|
65
|
+
field_dict.update({
|
|
66
|
+
})
|
|
67
|
+
if exposures is not UNSET:
|
|
68
|
+
field_dict["exposures"] = exposures
|
|
69
|
+
if total is not UNSET:
|
|
70
|
+
field_dict["total"] = total
|
|
71
|
+
if limit is not UNSET:
|
|
72
|
+
field_dict["limit"] = limit
|
|
73
|
+
if offset is not UNSET:
|
|
74
|
+
field_dict["offset"] = offset
|
|
75
|
+
|
|
76
|
+
return field_dict
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
@classmethod
|
|
81
|
+
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
|
|
82
|
+
from ..models.exposure import Exposure # noqa: PLC0415
|
|
83
|
+
d = dict(src_dict)
|
|
84
|
+
_exposures = d.pop("exposures", UNSET)
|
|
85
|
+
exposures: list[Exposure] | Unset = UNSET
|
|
86
|
+
if _exposures is not UNSET:
|
|
87
|
+
exposures = []
|
|
88
|
+
for exposures_item_data in _exposures:
|
|
89
|
+
exposures_item = Exposure.from_dict(exposures_item_data)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
exposures.append(exposures_item)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
total = d.pop("total", UNSET)
|
|
97
|
+
|
|
98
|
+
limit = d.pop("limit", UNSET)
|
|
99
|
+
|
|
100
|
+
offset = d.pop("offset", UNSET)
|
|
101
|
+
|
|
102
|
+
list_exposures_response_200 = cls(
|
|
103
|
+
exposures=exposures,
|
|
104
|
+
total=total,
|
|
105
|
+
limit=limit,
|
|
106
|
+
offset=offset,
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
list_exposures_response_200.additional_properties = d
|
|
111
|
+
return list_exposures_response_200
|
|
112
|
+
|
|
113
|
+
@property
|
|
114
|
+
def additional_keys(self) -> list[str]:
|
|
115
|
+
return list(self.additional_properties.keys())
|
|
116
|
+
|
|
117
|
+
def __getitem__(self, key: str) -> Any:
|
|
118
|
+
return self.additional_properties[key]
|
|
119
|
+
|
|
120
|
+
def __setitem__(self, key: str, value: Any) -> None:
|
|
121
|
+
self.additional_properties[key] = value
|
|
122
|
+
|
|
123
|
+
def __delitem__(self, key: str) -> None:
|
|
124
|
+
del self.additional_properties[key]
|
|
125
|
+
|
|
126
|
+
def __contains__(self, key: str) -> bool:
|
|
127
|
+
return key in self.additional_properties
|