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,165 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, cast
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...types import Response, UNSET
9
+ from ... import errors
10
+
11
+ from ...models.error import Error
12
+ from ...models.list_ransomware_victims_response_200 import ListRansomwareVictimsResponse200
13
+ from typing import cast
14
+
15
+
16
+
17
+ def _get_kwargs(
18
+
19
+ ) -> dict[str, Any]:
20
+
21
+
22
+
23
+
24
+
25
+
26
+ _kwargs: dict[str, Any] = {
27
+ "method": "get",
28
+ "url": "/v1/intel/ransomware-victims",
29
+ }
30
+
31
+
32
+ return _kwargs
33
+
34
+
35
+
36
+ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Error | ListRansomwareVictimsResponse200 | None:
37
+ if response.status_code == 200:
38
+ response_200 = ListRansomwareVictimsResponse200.from_dict(response.json())
39
+
40
+
41
+
42
+ return response_200
43
+
44
+ if response.status_code == 401:
45
+ response_401 = Error.from_dict(response.json())
46
+
47
+
48
+
49
+ return response_401
50
+
51
+ if response.status_code == 429:
52
+ response_429 = Error.from_dict(response.json())
53
+
54
+
55
+
56
+ return response_429
57
+
58
+ if client.raise_on_unexpected_status:
59
+ raise errors.UnexpectedStatus(response.status_code, response.content)
60
+ else:
61
+ return None
62
+
63
+
64
+ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Error | ListRansomwareVictimsResponse200]:
65
+ return Response(
66
+ status_code=HTTPStatus(response.status_code),
67
+ content=response.content,
68
+ headers=response.headers,
69
+ parsed=_parse_response(client=client, response=response),
70
+ )
71
+
72
+
73
+ def sync_detailed(
74
+ *,
75
+ client: AuthenticatedClient,
76
+
77
+ ) -> Response[Error | ListRansomwareVictimsResponse200]:
78
+ """ Ransomware victim feed
79
+
80
+ Raises:
81
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
82
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
83
+
84
+ Returns:
85
+ Response[Error | ListRansomwareVictimsResponse200]
86
+ """
87
+
88
+
89
+ kwargs = _get_kwargs(
90
+
91
+ )
92
+
93
+ response = client.get_httpx_client().request(
94
+ **kwargs,
95
+ )
96
+
97
+ return _build_response(client=client, response=response)
98
+
99
+ def sync(
100
+ *,
101
+ client: AuthenticatedClient,
102
+
103
+ ) -> Error | ListRansomwareVictimsResponse200 | None:
104
+ """ Ransomware victim feed
105
+
106
+ Raises:
107
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
108
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
109
+
110
+ Returns:
111
+ Error | ListRansomwareVictimsResponse200
112
+ """
113
+
114
+
115
+ return sync_detailed(
116
+ client=client,
117
+
118
+ ).parsed
119
+
120
+ async def asyncio_detailed(
121
+ *,
122
+ client: AuthenticatedClient,
123
+
124
+ ) -> Response[Error | ListRansomwareVictimsResponse200]:
125
+ """ Ransomware victim feed
126
+
127
+ Raises:
128
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
129
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
130
+
131
+ Returns:
132
+ Response[Error | ListRansomwareVictimsResponse200]
133
+ """
134
+
135
+
136
+ kwargs = _get_kwargs(
137
+
138
+ )
139
+
140
+ response = await client.get_async_httpx_client().request(
141
+ **kwargs
142
+ )
143
+
144
+ return _build_response(client=client, response=response)
145
+
146
+ async def asyncio(
147
+ *,
148
+ client: AuthenticatedClient,
149
+
150
+ ) -> Error | ListRansomwareVictimsResponse200 | None:
151
+ """ Ransomware victim feed
152
+
153
+ Raises:
154
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
155
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
156
+
157
+ Returns:
158
+ Error | ListRansomwareVictimsResponse200
159
+ """
160
+
161
+
162
+ return (await asyncio_detailed(
163
+ client=client,
164
+
165
+ )).parsed
@@ -0,0 +1 @@
1
+ """ Contains endpoint functions for accessing the API """
@@ -0,0 +1,283 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, cast
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...types import Response, UNSET
9
+ from ... import errors
10
+
11
+ from ...models.error import Error
12
+ from ...models.list_mentions_response_200 import ListMentionsResponse200
13
+ from ...models.list_mentions_source import ListMentionsSource
14
+ from ...types import UNSET, Unset
15
+ from typing import cast
16
+ import datetime
17
+
18
+
19
+
20
+ def _get_kwargs(
21
+ *,
22
+ source: ListMentionsSource | Unset = UNSET,
23
+ since: datetime.datetime | Unset = UNSET,
24
+ include_dismissed: bool | Unset = False,
25
+ limit: int | Unset = 50,
26
+ offset: int | Unset = 0,
27
+
28
+ ) -> dict[str, Any]:
29
+
30
+
31
+
32
+
33
+ params: dict[str, Any] = {}
34
+
35
+ json_source: str | Unset = UNSET
36
+ if not isinstance(source, Unset):
37
+ json_source = source.value
38
+
39
+ params["source"] = json_source
40
+
41
+ json_since: str | Unset = UNSET
42
+ if not isinstance(since, Unset):
43
+ json_since = since.isoformat()
44
+ params["since"] = json_since
45
+
46
+ params["include_dismissed"] = include_dismissed
47
+
48
+ params["limit"] = limit
49
+
50
+ params["offset"] = offset
51
+
52
+
53
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
54
+
55
+
56
+ _kwargs: dict[str, Any] = {
57
+ "method": "get",
58
+ "url": "/v1/mentions",
59
+ "params": params,
60
+ }
61
+
62
+
63
+ return _kwargs
64
+
65
+
66
+
67
+ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Error | ListMentionsResponse200 | None:
68
+ if response.status_code == 200:
69
+ response_200 = ListMentionsResponse200.from_dict(response.json())
70
+
71
+
72
+
73
+ return response_200
74
+
75
+ if response.status_code == 400:
76
+ response_400 = Error.from_dict(response.json())
77
+
78
+
79
+
80
+ return response_400
81
+
82
+ if response.status_code == 401:
83
+ response_401 = Error.from_dict(response.json())
84
+
85
+
86
+
87
+ return response_401
88
+
89
+ if response.status_code == 429:
90
+ response_429 = Error.from_dict(response.json())
91
+
92
+
93
+
94
+ return response_429
95
+
96
+ if client.raise_on_unexpected_status:
97
+ raise errors.UnexpectedStatus(response.status_code, response.content)
98
+ else:
99
+ return None
100
+
101
+
102
+ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Error | ListMentionsResponse200]:
103
+ return Response(
104
+ status_code=HTTPStatus(response.status_code),
105
+ content=response.content,
106
+ headers=response.headers,
107
+ parsed=_parse_response(client=client, response=response),
108
+ )
109
+
110
+
111
+ def sync_detailed(
112
+ *,
113
+ client: AuthenticatedClient,
114
+ source: ListMentionsSource | Unset = UNSET,
115
+ since: datetime.datetime | Unset = UNSET,
116
+ include_dismissed: bool | Unset = False,
117
+ limit: int | Unset = 50,
118
+ offset: int | Unset = 0,
119
+
120
+ ) -> Response[Error | ListMentionsResponse200]:
121
+ """ List dark-web and Telegram mentions
122
+
123
+ Posts that matched your monitored assets, one per thread (URL variants are merged). Mentions our
124
+ automated triage dismissed as noise are excluded unless `include_dismissed=true`.
125
+
126
+ Args:
127
+ source (ListMentionsSource | Unset):
128
+ since (datetime.datetime | Unset):
129
+ include_dismissed (bool | Unset): Default: False.
130
+ limit (int | Unset): Default: 50.
131
+ offset (int | Unset): Default: 0.
132
+
133
+ Raises:
134
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
135
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
136
+
137
+ Returns:
138
+ Response[Error | ListMentionsResponse200]
139
+ """
140
+
141
+
142
+ kwargs = _get_kwargs(
143
+ source=source,
144
+ since=since,
145
+ include_dismissed=include_dismissed,
146
+ limit=limit,
147
+ offset=offset,
148
+
149
+ )
150
+
151
+ response = client.get_httpx_client().request(
152
+ **kwargs,
153
+ )
154
+
155
+ return _build_response(client=client, response=response)
156
+
157
+ def sync(
158
+ *,
159
+ client: AuthenticatedClient,
160
+ source: ListMentionsSource | Unset = UNSET,
161
+ since: datetime.datetime | Unset = UNSET,
162
+ include_dismissed: bool | Unset = False,
163
+ limit: int | Unset = 50,
164
+ offset: int | Unset = 0,
165
+
166
+ ) -> Error | ListMentionsResponse200 | None:
167
+ """ List dark-web and Telegram mentions
168
+
169
+ Posts that matched your monitored assets, one per thread (URL variants are merged). Mentions our
170
+ automated triage dismissed as noise are excluded unless `include_dismissed=true`.
171
+
172
+ Args:
173
+ source (ListMentionsSource | Unset):
174
+ since (datetime.datetime | Unset):
175
+ include_dismissed (bool | Unset): Default: False.
176
+ limit (int | Unset): Default: 50.
177
+ offset (int | Unset): Default: 0.
178
+
179
+ Raises:
180
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
181
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
182
+
183
+ Returns:
184
+ Error | ListMentionsResponse200
185
+ """
186
+
187
+
188
+ return sync_detailed(
189
+ client=client,
190
+ source=source,
191
+ since=since,
192
+ include_dismissed=include_dismissed,
193
+ limit=limit,
194
+ offset=offset,
195
+
196
+ ).parsed
197
+
198
+ async def asyncio_detailed(
199
+ *,
200
+ client: AuthenticatedClient,
201
+ source: ListMentionsSource | Unset = UNSET,
202
+ since: datetime.datetime | Unset = UNSET,
203
+ include_dismissed: bool | Unset = False,
204
+ limit: int | Unset = 50,
205
+ offset: int | Unset = 0,
206
+
207
+ ) -> Response[Error | ListMentionsResponse200]:
208
+ """ List dark-web and Telegram mentions
209
+
210
+ Posts that matched your monitored assets, one per thread (URL variants are merged). Mentions our
211
+ automated triage dismissed as noise are excluded unless `include_dismissed=true`.
212
+
213
+ Args:
214
+ source (ListMentionsSource | Unset):
215
+ since (datetime.datetime | Unset):
216
+ include_dismissed (bool | Unset): Default: False.
217
+ limit (int | Unset): Default: 50.
218
+ offset (int | Unset): Default: 0.
219
+
220
+ Raises:
221
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
222
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
223
+
224
+ Returns:
225
+ Response[Error | ListMentionsResponse200]
226
+ """
227
+
228
+
229
+ kwargs = _get_kwargs(
230
+ source=source,
231
+ since=since,
232
+ include_dismissed=include_dismissed,
233
+ limit=limit,
234
+ offset=offset,
235
+
236
+ )
237
+
238
+ response = await client.get_async_httpx_client().request(
239
+ **kwargs
240
+ )
241
+
242
+ return _build_response(client=client, response=response)
243
+
244
+ async def asyncio(
245
+ *,
246
+ client: AuthenticatedClient,
247
+ source: ListMentionsSource | Unset = UNSET,
248
+ since: datetime.datetime | Unset = UNSET,
249
+ include_dismissed: bool | Unset = False,
250
+ limit: int | Unset = 50,
251
+ offset: int | Unset = 0,
252
+
253
+ ) -> Error | ListMentionsResponse200 | None:
254
+ """ List dark-web and Telegram mentions
255
+
256
+ Posts that matched your monitored assets, one per thread (URL variants are merged). Mentions our
257
+ automated triage dismissed as noise are excluded unless `include_dismissed=true`.
258
+
259
+ Args:
260
+ source (ListMentionsSource | Unset):
261
+ since (datetime.datetime | Unset):
262
+ include_dismissed (bool | Unset): Default: False.
263
+ limit (int | Unset): Default: 50.
264
+ offset (int | Unset): Default: 0.
265
+
266
+ Raises:
267
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
268
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
269
+
270
+ Returns:
271
+ Error | ListMentionsResponse200
272
+ """
273
+
274
+
275
+ return (await asyncio_detailed(
276
+ client=client,
277
+ source=source,
278
+ since=since,
279
+ include_dismissed=include_dismissed,
280
+ limit=limit,
281
+ offset=offset,
282
+
283
+ )).parsed
@@ -0,0 +1 @@
1
+ """ Contains endpoint functions for accessing the API """
@@ -0,0 +1,184 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, cast
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...types import Response, UNSET
9
+ from ... import errors
10
+
11
+ from ...models.error import Error
12
+ from ...models.overview import Overview
13
+ from typing import cast
14
+
15
+
16
+
17
+ def _get_kwargs(
18
+
19
+ ) -> dict[str, Any]:
20
+
21
+
22
+
23
+
24
+
25
+
26
+ _kwargs: dict[str, Any] = {
27
+ "method": "get",
28
+ "url": "/v1/overview",
29
+ }
30
+
31
+
32
+ return _kwargs
33
+
34
+
35
+
36
+ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Error | Overview | None:
37
+ if response.status_code == 200:
38
+ response_200 = Overview.from_dict(response.json())
39
+
40
+
41
+
42
+ return response_200
43
+
44
+ if response.status_code == 401:
45
+ response_401 = Error.from_dict(response.json())
46
+
47
+
48
+
49
+ return response_401
50
+
51
+ if response.status_code == 403:
52
+ response_403 = Error.from_dict(response.json())
53
+
54
+
55
+
56
+ return response_403
57
+
58
+ if response.status_code == 429:
59
+ response_429 = Error.from_dict(response.json())
60
+
61
+
62
+
63
+ return response_429
64
+
65
+ if client.raise_on_unexpected_status:
66
+ raise errors.UnexpectedStatus(response.status_code, response.content)
67
+ else:
68
+ return None
69
+
70
+
71
+ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Error | Overview]:
72
+ return Response(
73
+ status_code=HTTPStatus(response.status_code),
74
+ content=response.content,
75
+ headers=response.headers,
76
+ parsed=_parse_response(client=client, response=response),
77
+ )
78
+
79
+
80
+ def sync_detailed(
81
+ *,
82
+ client: AuthenticatedClient,
83
+
84
+ ) -> Response[Error | Overview]:
85
+ """ Security posture overview
86
+
87
+ Risk score, open incidents by severity, credential and infostealer exposure, phishing and takedown
88
+ counts, and monitored assets — in one call.
89
+
90
+ Raises:
91
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
92
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
93
+
94
+ Returns:
95
+ Response[Error | Overview]
96
+ """
97
+
98
+
99
+ kwargs = _get_kwargs(
100
+
101
+ )
102
+
103
+ response = client.get_httpx_client().request(
104
+ **kwargs,
105
+ )
106
+
107
+ return _build_response(client=client, response=response)
108
+
109
+ def sync(
110
+ *,
111
+ client: AuthenticatedClient,
112
+
113
+ ) -> Error | Overview | None:
114
+ """ Security posture overview
115
+
116
+ Risk score, open incidents by severity, credential and infostealer exposure, phishing and takedown
117
+ counts, and monitored assets — in one call.
118
+
119
+ Raises:
120
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
121
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
122
+
123
+ Returns:
124
+ Error | Overview
125
+ """
126
+
127
+
128
+ return sync_detailed(
129
+ client=client,
130
+
131
+ ).parsed
132
+
133
+ async def asyncio_detailed(
134
+ *,
135
+ client: AuthenticatedClient,
136
+
137
+ ) -> Response[Error | Overview]:
138
+ """ Security posture overview
139
+
140
+ Risk score, open incidents by severity, credential and infostealer exposure, phishing and takedown
141
+ counts, and monitored assets — in one call.
142
+
143
+ Raises:
144
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
145
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
146
+
147
+ Returns:
148
+ Response[Error | Overview]
149
+ """
150
+
151
+
152
+ kwargs = _get_kwargs(
153
+
154
+ )
155
+
156
+ response = await client.get_async_httpx_client().request(
157
+ **kwargs
158
+ )
159
+
160
+ return _build_response(client=client, response=response)
161
+
162
+ async def asyncio(
163
+ *,
164
+ client: AuthenticatedClient,
165
+
166
+ ) -> Error | Overview | None:
167
+ """ Security posture overview
168
+
169
+ Risk score, open incidents by severity, credential and infostealer exposure, phishing and takedown
170
+ counts, and monitored assets — in one call.
171
+
172
+ Raises:
173
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
174
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
175
+
176
+ Returns:
177
+ Error | Overview
178
+ """
179
+
180
+
181
+ return (await asyncio_detailed(
182
+ client=client,
183
+
184
+ )).parsed
@@ -0,0 +1 @@
1
+ """ Contains endpoint functions for accessing the API """