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,210 @@
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.takedown import Takedown
13
+ from ...models.takedown_update import TakedownUpdate
14
+ from ...types import UNSET, Unset
15
+ from typing import cast
16
+ from uuid import UUID
17
+
18
+
19
+
20
+ def _get_kwargs(
21
+ id: UUID,
22
+ *,
23
+ body: TakedownUpdate | Unset = UNSET,
24
+
25
+ ) -> dict[str, Any]:
26
+ headers: dict[str, Any] = {}
27
+
28
+
29
+
30
+
31
+
32
+
33
+ _kwargs: dict[str, Any] = {
34
+ "method": "put",
35
+ "url": "/v1/takedowns/{id}".format(id=quote(str(id), safe=""),),
36
+ }
37
+
38
+
39
+ if not isinstance(body, Unset):
40
+ _kwargs["json"] = body.to_dict()
41
+
42
+ headers["Content-Type"] = "application/json"
43
+
44
+ _kwargs["headers"] = headers
45
+ return _kwargs
46
+
47
+
48
+
49
+ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Error | Takedown | None:
50
+ if response.status_code == 200:
51
+ response_200 = Takedown.from_dict(response.json())
52
+
53
+
54
+
55
+ return response_200
56
+
57
+ if response.status_code == 401:
58
+ response_401 = Error.from_dict(response.json())
59
+
60
+
61
+
62
+ return response_401
63
+
64
+ if response.status_code == 429:
65
+ response_429 = Error.from_dict(response.json())
66
+
67
+
68
+
69
+ return response_429
70
+
71
+ if client.raise_on_unexpected_status:
72
+ raise errors.UnexpectedStatus(response.status_code, response.content)
73
+ else:
74
+ return None
75
+
76
+
77
+ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Error | Takedown]:
78
+ return Response(
79
+ status_code=HTTPStatus(response.status_code),
80
+ content=response.content,
81
+ headers=response.headers,
82
+ parsed=_parse_response(client=client, response=response),
83
+ )
84
+
85
+
86
+ def sync_detailed(
87
+ id: UUID,
88
+ *,
89
+ client: AuthenticatedClient,
90
+ body: TakedownUpdate | Unset = UNSET,
91
+
92
+ ) -> Response[Error | Takedown]:
93
+ """ Update a takedown (alias of PATCH)
94
+
95
+ Args:
96
+ id (UUID):
97
+ body (TakedownUpdate | Unset):
98
+
99
+ Raises:
100
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
101
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
102
+
103
+ Returns:
104
+ Response[Error | Takedown]
105
+ """
106
+
107
+
108
+ kwargs = _get_kwargs(
109
+ id=id,
110
+ body=body,
111
+
112
+ )
113
+
114
+ response = client.get_httpx_client().request(
115
+ **kwargs,
116
+ )
117
+
118
+ return _build_response(client=client, response=response)
119
+
120
+ def sync(
121
+ id: UUID,
122
+ *,
123
+ client: AuthenticatedClient,
124
+ body: TakedownUpdate | Unset = UNSET,
125
+
126
+ ) -> Error | Takedown | None:
127
+ """ Update a takedown (alias of PATCH)
128
+
129
+ Args:
130
+ id (UUID):
131
+ body (TakedownUpdate | Unset):
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
+ Error | Takedown
139
+ """
140
+
141
+
142
+ return sync_detailed(
143
+ id=id,
144
+ client=client,
145
+ body=body,
146
+
147
+ ).parsed
148
+
149
+ async def asyncio_detailed(
150
+ id: UUID,
151
+ *,
152
+ client: AuthenticatedClient,
153
+ body: TakedownUpdate | Unset = UNSET,
154
+
155
+ ) -> Response[Error | Takedown]:
156
+ """ Update a takedown (alias of PATCH)
157
+
158
+ Args:
159
+ id (UUID):
160
+ body (TakedownUpdate | Unset):
161
+
162
+ Raises:
163
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
164
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
165
+
166
+ Returns:
167
+ Response[Error | Takedown]
168
+ """
169
+
170
+
171
+ kwargs = _get_kwargs(
172
+ id=id,
173
+ body=body,
174
+
175
+ )
176
+
177
+ response = await client.get_async_httpx_client().request(
178
+ **kwargs
179
+ )
180
+
181
+ return _build_response(client=client, response=response)
182
+
183
+ async def asyncio(
184
+ id: UUID,
185
+ *,
186
+ client: AuthenticatedClient,
187
+ body: TakedownUpdate | Unset = UNSET,
188
+
189
+ ) -> Error | Takedown | None:
190
+ """ Update a takedown (alias of PATCH)
191
+
192
+ Args:
193
+ id (UUID):
194
+ body (TakedownUpdate | Unset):
195
+
196
+ Raises:
197
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
198
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
199
+
200
+ Returns:
201
+ Error | Takedown
202
+ """
203
+
204
+
205
+ return (await asyncio_detailed(
206
+ id=id,
207
+ client=client,
208
+ body=body,
209
+
210
+ )).parsed
@@ -0,0 +1,210 @@
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.takedown import Takedown
13
+ from ...models.takedown_update import TakedownUpdate
14
+ from ...types import UNSET, Unset
15
+ from typing import cast
16
+ from uuid import UUID
17
+
18
+
19
+
20
+ def _get_kwargs(
21
+ id: UUID,
22
+ *,
23
+ body: TakedownUpdate | Unset = UNSET,
24
+
25
+ ) -> dict[str, Any]:
26
+ headers: dict[str, Any] = {}
27
+
28
+
29
+
30
+
31
+
32
+
33
+ _kwargs: dict[str, Any] = {
34
+ "method": "patch",
35
+ "url": "/v1/takedowns/{id}".format(id=quote(str(id), safe=""),),
36
+ }
37
+
38
+
39
+ if not isinstance(body, Unset):
40
+ _kwargs["json"] = body.to_dict()
41
+
42
+ headers["Content-Type"] = "application/json"
43
+
44
+ _kwargs["headers"] = headers
45
+ return _kwargs
46
+
47
+
48
+
49
+ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Error | Takedown | None:
50
+ if response.status_code == 200:
51
+ response_200 = Takedown.from_dict(response.json())
52
+
53
+
54
+
55
+ return response_200
56
+
57
+ if response.status_code == 401:
58
+ response_401 = Error.from_dict(response.json())
59
+
60
+
61
+
62
+ return response_401
63
+
64
+ if response.status_code == 429:
65
+ response_429 = Error.from_dict(response.json())
66
+
67
+
68
+
69
+ return response_429
70
+
71
+ if client.raise_on_unexpected_status:
72
+ raise errors.UnexpectedStatus(response.status_code, response.content)
73
+ else:
74
+ return None
75
+
76
+
77
+ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[Error | Takedown]:
78
+ return Response(
79
+ status_code=HTTPStatus(response.status_code),
80
+ content=response.content,
81
+ headers=response.headers,
82
+ parsed=_parse_response(client=client, response=response),
83
+ )
84
+
85
+
86
+ def sync_detailed(
87
+ id: UUID,
88
+ *,
89
+ client: AuthenticatedClient,
90
+ body: TakedownUpdate | Unset = UNSET,
91
+
92
+ ) -> Response[Error | Takedown]:
93
+ """ Update a takedown
94
+
95
+ Args:
96
+ id (UUID):
97
+ body (TakedownUpdate | Unset):
98
+
99
+ Raises:
100
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
101
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
102
+
103
+ Returns:
104
+ Response[Error | Takedown]
105
+ """
106
+
107
+
108
+ kwargs = _get_kwargs(
109
+ id=id,
110
+ body=body,
111
+
112
+ )
113
+
114
+ response = client.get_httpx_client().request(
115
+ **kwargs,
116
+ )
117
+
118
+ return _build_response(client=client, response=response)
119
+
120
+ def sync(
121
+ id: UUID,
122
+ *,
123
+ client: AuthenticatedClient,
124
+ body: TakedownUpdate | Unset = UNSET,
125
+
126
+ ) -> Error | Takedown | None:
127
+ """ Update a takedown
128
+
129
+ Args:
130
+ id (UUID):
131
+ body (TakedownUpdate | Unset):
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
+ Error | Takedown
139
+ """
140
+
141
+
142
+ return sync_detailed(
143
+ id=id,
144
+ client=client,
145
+ body=body,
146
+
147
+ ).parsed
148
+
149
+ async def asyncio_detailed(
150
+ id: UUID,
151
+ *,
152
+ client: AuthenticatedClient,
153
+ body: TakedownUpdate | Unset = UNSET,
154
+
155
+ ) -> Response[Error | Takedown]:
156
+ """ Update a takedown
157
+
158
+ Args:
159
+ id (UUID):
160
+ body (TakedownUpdate | Unset):
161
+
162
+ Raises:
163
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
164
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
165
+
166
+ Returns:
167
+ Response[Error | Takedown]
168
+ """
169
+
170
+
171
+ kwargs = _get_kwargs(
172
+ id=id,
173
+ body=body,
174
+
175
+ )
176
+
177
+ response = await client.get_async_httpx_client().request(
178
+ **kwargs
179
+ )
180
+
181
+ return _build_response(client=client, response=response)
182
+
183
+ async def asyncio(
184
+ id: UUID,
185
+ *,
186
+ client: AuthenticatedClient,
187
+ body: TakedownUpdate | Unset = UNSET,
188
+
189
+ ) -> Error | Takedown | None:
190
+ """ Update a takedown
191
+
192
+ Args:
193
+ id (UUID):
194
+ body (TakedownUpdate | Unset):
195
+
196
+ Raises:
197
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
198
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
199
+
200
+ Returns:
201
+ Error | Takedown
202
+ """
203
+
204
+
205
+ return (await asyncio_detailed(
206
+ id=id,
207
+ client=client,
208
+ body=body,
209
+
210
+ )).parsed
@@ -0,0 +1 @@
1
+ """ Contains endpoint functions for accessing the API """
@@ -0,0 +1,222 @@
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.create_webhook_response_201 import CreateWebhookResponse201
12
+ from ...models.error import Error
13
+ from ...models.webhook_endpoint_input import WebhookEndpointInput
14
+ from typing import cast
15
+
16
+
17
+
18
+ def _get_kwargs(
19
+ *,
20
+ body: WebhookEndpointInput,
21
+
22
+ ) -> dict[str, Any]:
23
+ headers: dict[str, Any] = {}
24
+
25
+
26
+
27
+
28
+
29
+
30
+ _kwargs: dict[str, Any] = {
31
+ "method": "post",
32
+ "url": "/v1/webhooks",
33
+ }
34
+
35
+ _kwargs["json"] = body.to_dict()
36
+
37
+ headers["Content-Type"] = "application/json"
38
+
39
+ _kwargs["headers"] = headers
40
+ return _kwargs
41
+
42
+
43
+
44
+ def _parse_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> CreateWebhookResponse201 | Error | None:
45
+ if response.status_code == 201:
46
+ response_201 = CreateWebhookResponse201.from_dict(response.json())
47
+
48
+
49
+
50
+ return response_201
51
+
52
+ if response.status_code == 400:
53
+ response_400 = Error.from_dict(response.json())
54
+
55
+
56
+
57
+ return response_400
58
+
59
+ if response.status_code == 401:
60
+ response_401 = Error.from_dict(response.json())
61
+
62
+
63
+
64
+ return response_401
65
+
66
+ if response.status_code == 402:
67
+ response_402 = Error.from_dict(response.json())
68
+
69
+
70
+
71
+ return response_402
72
+
73
+ if response.status_code == 409:
74
+ response_409 = Error.from_dict(response.json())
75
+
76
+
77
+
78
+ return response_409
79
+
80
+ if response.status_code == 429:
81
+ response_429 = Error.from_dict(response.json())
82
+
83
+
84
+
85
+ return response_429
86
+
87
+ if client.raise_on_unexpected_status:
88
+ raise errors.UnexpectedStatus(response.status_code, response.content)
89
+ else:
90
+ return None
91
+
92
+
93
+ def _build_response(*, client: AuthenticatedClient | Client, response: httpx.Response) -> Response[CreateWebhookResponse201 | Error]:
94
+ return Response(
95
+ status_code=HTTPStatus(response.status_code),
96
+ content=response.content,
97
+ headers=response.headers,
98
+ parsed=_parse_response(client=client, response=response),
99
+ )
100
+
101
+
102
+ def sync_detailed(
103
+ *,
104
+ client: AuthenticatedClient,
105
+ body: WebhookEndpointInput,
106
+
107
+ ) -> Response[CreateWebhookResponse201 | Error]:
108
+ """ Create a webhook endpoint
109
+
110
+ Returns the signing secret **once**. Store it — you'll need it to verify deliveries.
111
+
112
+ Args:
113
+ body (WebhookEndpointInput):
114
+
115
+ Raises:
116
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
117
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
118
+
119
+ Returns:
120
+ Response[CreateWebhookResponse201 | Error]
121
+ """
122
+
123
+
124
+ kwargs = _get_kwargs(
125
+ body=body,
126
+
127
+ )
128
+
129
+ response = client.get_httpx_client().request(
130
+ **kwargs,
131
+ )
132
+
133
+ return _build_response(client=client, response=response)
134
+
135
+ def sync(
136
+ *,
137
+ client: AuthenticatedClient,
138
+ body: WebhookEndpointInput,
139
+
140
+ ) -> CreateWebhookResponse201 | Error | None:
141
+ """ Create a webhook endpoint
142
+
143
+ Returns the signing secret **once**. Store it — you'll need it to verify deliveries.
144
+
145
+ Args:
146
+ body (WebhookEndpointInput):
147
+
148
+ Raises:
149
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
150
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
151
+
152
+ Returns:
153
+ CreateWebhookResponse201 | Error
154
+ """
155
+
156
+
157
+ return sync_detailed(
158
+ client=client,
159
+ body=body,
160
+
161
+ ).parsed
162
+
163
+ async def asyncio_detailed(
164
+ *,
165
+ client: AuthenticatedClient,
166
+ body: WebhookEndpointInput,
167
+
168
+ ) -> Response[CreateWebhookResponse201 | Error]:
169
+ """ Create a webhook endpoint
170
+
171
+ Returns the signing secret **once**. Store it — you'll need it to verify deliveries.
172
+
173
+ Args:
174
+ body (WebhookEndpointInput):
175
+
176
+ Raises:
177
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
178
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
179
+
180
+ Returns:
181
+ Response[CreateWebhookResponse201 | Error]
182
+ """
183
+
184
+
185
+ kwargs = _get_kwargs(
186
+ body=body,
187
+
188
+ )
189
+
190
+ response = await client.get_async_httpx_client().request(
191
+ **kwargs
192
+ )
193
+
194
+ return _build_response(client=client, response=response)
195
+
196
+ async def asyncio(
197
+ *,
198
+ client: AuthenticatedClient,
199
+ body: WebhookEndpointInput,
200
+
201
+ ) -> CreateWebhookResponse201 | Error | None:
202
+ """ Create a webhook endpoint
203
+
204
+ Returns the signing secret **once**. Store it — you'll need it to verify deliveries.
205
+
206
+ Args:
207
+ body (WebhookEndpointInput):
208
+
209
+ Raises:
210
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
211
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
212
+
213
+ Returns:
214
+ CreateWebhookResponse201 | Error
215
+ """
216
+
217
+
218
+ return (await asyncio_detailed(
219
+ client=client,
220
+ body=body,
221
+
222
+ )).parsed