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.
Files changed (163) hide show
  1. kalir/__init__.py +11 -0
  2. kalir/api/__init__.py +1 -0
  3. kalir/api/assets/__init__.py +1 -0
  4. kalir/api/assets/create_asset.py +193 -0
  5. kalir/api/assets/delete_asset.py +182 -0
  6. kalir/api/assets/get_asset.py +186 -0
  7. kalir/api/assets/list_assets.py +165 -0
  8. kalir/api/assets/update_asset.py +206 -0
  9. kalir/api/events/__init__.py +1 -0
  10. kalir/api/events/get_event.py +194 -0
  11. kalir/api/events/ingest_event.py +215 -0
  12. kalir/api/events/list_events.py +259 -0
  13. kalir/api/exposures/__init__.py +1 -0
  14. kalir/api/exposures/count_exposures.py +165 -0
  15. kalir/api/exposures/get_infostealer_summary.py +181 -0
  16. kalir/api/exposures/list_exposures.py +225 -0
  17. kalir/api/incidents/__init__.py +1 -0
  18. kalir/api/incidents/get_incident.py +194 -0
  19. kalir/api/incidents/list_incidents.py +265 -0
  20. kalir/api/incidents/update_incident_status.py +207 -0
  21. kalir/api/intel/__init__.py +1 -0
  22. kalir/api/intel/get_ransomware_stats.py +165 -0
  23. kalir/api/intel/list_ransomware_victims.py +165 -0
  24. kalir/api/mentions/__init__.py +1 -0
  25. kalir/api/mentions/list_mentions.py +283 -0
  26. kalir/api/overview/__init__.py +1 -0
  27. kalir/api/overview/get_overview.py +184 -0
  28. kalir/api/phishing/__init__.py +1 -0
  29. kalir/api/phishing/list_phishing.py +245 -0
  30. kalir/api/reports/__init__.py +1 -0
  31. kalir/api/reports/create_report.py +193 -0
  32. kalir/api/reports/download_report.py +186 -0
  33. kalir/api/reports/list_reports.py +165 -0
  34. kalir/api/rules/__init__.py +1 -0
  35. kalir/api/rules/create_rule.py +193 -0
  36. kalir/api/rules/delete_rule.py +183 -0
  37. kalir/api/rules/get_rule.py +187 -0
  38. kalir/api/rules/list_rules.py +165 -0
  39. kalir/api/rules/replace_rule.py +207 -0
  40. kalir/api/takedowns/__init__.py +1 -0
  41. kalir/api/takedowns/count_takedowns.py +165 -0
  42. kalir/api/takedowns/create_takedown.py +193 -0
  43. kalir/api/takedowns/delete_takedown.py +183 -0
  44. kalir/api/takedowns/get_takedown.py +187 -0
  45. kalir/api/takedowns/list_takedowns.py +165 -0
  46. kalir/api/takedowns/replace_takedown.py +210 -0
  47. kalir/api/takedowns/update_takedown.py +210 -0
  48. kalir/api/webhooks/__init__.py +1 -0
  49. kalir/api/webhooks/create_webhook.py +222 -0
  50. kalir/api/webhooks/delete_webhook.py +190 -0
  51. kalir/api/webhooks/get_webhook.py +194 -0
  52. kalir/api/webhooks/get_webhook_delivery.py +194 -0
  53. kalir/api/webhooks/list_webhook_deliveries.py +239 -0
  54. kalir/api/webhooks/list_webhook_event_types.py +165 -0
  55. kalir/api/webhooks/list_webhooks.py +172 -0
  56. kalir/api/webhooks/retry_webhook_delivery.py +190 -0
  57. kalir/api/webhooks/rotate_webhook_secret.py +202 -0
  58. kalir/api/webhooks/send_webhook_test.py +202 -0
  59. kalir/api/webhooks/update_webhook.py +229 -0
  60. kalir/client.py +271 -0
  61. kalir/errors.py +14 -0
  62. kalir/models/__init__.py +195 -0
  63. kalir/models/asset.py +162 -0
  64. kalir/models/asset_create.py +122 -0
  65. kalir/models/asset_create_asset_type.py +14 -0
  66. kalir/models/asset_create_metadata.py +64 -0
  67. kalir/models/count_exposures_response_200.py +78 -0
  68. kalir/models/count_takedowns_response_200.py +96 -0
  69. kalir/models/create_report_body.py +96 -0
  70. kalir/models/create_report_body_type.py +10 -0
  71. kalir/models/create_webhook_response_201.py +111 -0
  72. kalir/models/error.py +84 -0
  73. kalir/models/error_error.py +106 -0
  74. kalir/models/error_error_type.py +15 -0
  75. kalir/models/event.py +151 -0
  76. kalir/models/event_asset.py +87 -0
  77. kalir/models/event_ingest.py +146 -0
  78. kalir/models/event_ingest_asset.py +87 -0
  79. kalir/models/event_ingest_evidence.py +64 -0
  80. kalir/models/event_ingest_source.py +87 -0
  81. kalir/models/exposure.py +137 -0
  82. kalir/models/exposure_webhook_event.py +152 -0
  83. kalir/models/exposure_webhook_event_data.py +115 -0
  84. kalir/models/exposure_webhook_event_data_exposure.py +149 -0
  85. kalir/models/exposure_webhook_event_data_infection.py +136 -0
  86. kalir/models/exposure_webhook_event_type.py +8 -0
  87. kalir/models/get_incident_response_200.py +174 -0
  88. kalir/models/get_infostealer_summary_response_200.py +100 -0
  89. kalir/models/get_ransomware_stats_response_200.py +156 -0
  90. kalir/models/get_ransomware_stats_response_200_top_countries_7d_item.py +64 -0
  91. kalir/models/get_ransomware_stats_response_200_top_groups_7d_item.py +64 -0
  92. kalir/models/incident.py +170 -0
  93. kalir/models/incident_severity.py +10 -0
  94. kalir/models/incident_status.py +10 -0
  95. kalir/models/incident_webhook_event.py +152 -0
  96. kalir/models/incident_webhook_event_data.py +115 -0
  97. kalir/models/incident_webhook_event_data_previous.py +88 -0
  98. kalir/models/incident_webhook_event_type.py +9 -0
  99. kalir/models/infostealer_domain_summary.py +122 -0
  100. kalir/models/infostealer_domain_summary_snapshot.py +201 -0
  101. kalir/models/infostealer_domain_summary_snapshot_top_employee_urls_item.py +87 -0
  102. kalir/models/infostealer_domain_summary_snapshot_top_families_item.py +87 -0
  103. kalir/models/list_assets_response_200.py +100 -0
  104. kalir/models/list_events_response_200.py +109 -0
  105. kalir/models/list_exposures_response_200.py +127 -0
  106. kalir/models/list_incidents_bucket.py +10 -0
  107. kalir/models/list_incidents_response_200.py +149 -0
  108. kalir/models/list_incidents_response_200_counts.py +106 -0
  109. kalir/models/list_incidents_status.py +12 -0
  110. kalir/models/list_mentions_response_200.py +122 -0
  111. kalir/models/list_mentions_source.py +8 -0
  112. kalir/models/list_phishing_response_200.py +122 -0
  113. kalir/models/list_phishing_verdict.py +11 -0
  114. kalir/models/list_ransomware_victims_response_200.py +109 -0
  115. kalir/models/list_ransomware_victims_response_200_victims_item.py +64 -0
  116. kalir/models/list_reports_response_200.py +109 -0
  117. kalir/models/list_rules_response_200.py +100 -0
  118. kalir/models/list_takedowns_response_200.py +109 -0
  119. kalir/models/list_webhook_deliveries_response_200.py +122 -0
  120. kalir/models/list_webhook_event_types_response_200.py +100 -0
  121. kalir/models/list_webhook_event_types_response_200_data_item.py +87 -0
  122. kalir/models/list_webhooks_response_200.py +100 -0
  123. kalir/models/mention.py +194 -0
  124. kalir/models/mention_source.py +8 -0
  125. kalir/models/overview.py +231 -0
  126. kalir/models/overview_assets.py +96 -0
  127. kalir/models/overview_exposures.py +105 -0
  128. kalir/models/overview_incidents.py +114 -0
  129. kalir/models/overview_phishing.py +87 -0
  130. kalir/models/overview_risk_level.py +10 -0
  131. kalir/models/overview_takedowns.py +87 -0
  132. kalir/models/pagination.py +105 -0
  133. kalir/models/phishing_domain.py +186 -0
  134. kalir/models/phishing_domain_verdict.py +11 -0
  135. kalir/models/report.py +182 -0
  136. kalir/models/report_parameters.py +181 -0
  137. kalir/models/report_parameters_date_range.py +11 -0
  138. kalir/models/report_parameters_language.py +8 -0
  139. kalir/models/report_parameters_sections_item.py +15 -0
  140. kalir/models/report_status.py +10 -0
  141. kalir/models/rotate_webhook_secret_response_200.py +87 -0
  142. kalir/models/rule.py +174 -0
  143. kalir/models/rule_input.py +134 -0
  144. kalir/models/rule_input_actions_item.py +64 -0
  145. kalir/models/takedown.py +163 -0
  146. kalir/models/takedown_create.py +113 -0
  147. kalir/models/takedown_update.py +96 -0
  148. kalir/models/update_incident_status_body.py +90 -0
  149. kalir/models/update_incident_status_body_status.py +10 -0
  150. kalir/models/webhook_delivery.py +274 -0
  151. kalir/models/webhook_delivery_payload.py +64 -0
  152. kalir/models/webhook_delivery_status.py +9 -0
  153. kalir/models/webhook_endpoint.py +216 -0
  154. kalir/models/webhook_endpoint_input.py +124 -0
  155. kalir/models/webhook_endpoint_input_event_types_item.py +11 -0
  156. kalir/models/webhook_incident.py +232 -0
  157. kalir/models/webhook_incident_severity.py +10 -0
  158. kalir/py.typed +1 -0
  159. kalir/types.py +53 -0
  160. kalir/webhooks.py +63 -0
  161. kalir_python-0.1.0.dist-info/METADATA +76 -0
  162. kalir_python-0.1.0.dist-info/RECORD +163 -0
  163. 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