mollie-api-py 1.0.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 (337) hide show
  1. mollie/__init__.py +18 -0
  2. mollie/_hooks/__init__.py +5 -0
  3. mollie/_hooks/mollie_hooks.py +165 -0
  4. mollie/_hooks/registration.py +18 -0
  5. mollie/_hooks/sdkhooks.py +76 -0
  6. mollie/_hooks/types.py +113 -0
  7. mollie/_version.py +15 -0
  8. mollie/balance_transfers.py +651 -0
  9. mollie/balances.py +1105 -0
  10. mollie/basesdk.py +360 -0
  11. mollie/capabilities.py +209 -0
  12. mollie/captures.py +677 -0
  13. mollie/chargebacks_sdk.py +675 -0
  14. mollie/client_links.py +325 -0
  15. mollie/clients.py +409 -0
  16. mollie/customers.py +1563 -0
  17. mollie/delayed_routing.py +421 -0
  18. mollie/httpclient.py +125 -0
  19. mollie/invoices.py +429 -0
  20. mollie/mandates.py +895 -0
  21. mollie/methods.py +789 -0
  22. mollie/models/__init__.py +4002 -0
  23. mollie/models/address.py +29 -0
  24. mollie/models/amount.py +25 -0
  25. mollie/models/amount_nullable.py +24 -0
  26. mollie/models/apierror.py +40 -0
  27. mollie/models/balance_card_audience.py +10 -0
  28. mollie/models/balance_card_issuer.py +12 -0
  29. mollie/models/balance_card_region.py +12 -0
  30. mollie/models/balance_fee_type.py +43 -0
  31. mollie/models/balance_prepayment_part_type.py +13 -0
  32. mollie/models/balance_report_grouping.py +10 -0
  33. mollie/models/balance_transaction_type.py +47 -0
  34. mollie/models/balance_transfer_category.py +17 -0
  35. mollie/models/balance_transfer_category_response.py +18 -0
  36. mollie/models/balance_transfer_destination_type.py +14 -0
  37. mollie/models/balance_transfer_party_type.py +10 -0
  38. mollie/models/balance_transfer_party_type_response.py +11 -0
  39. mollie/models/balance_transfer_status.py +13 -0
  40. mollie/models/balance_transfer_status_reason_response.py +19 -0
  41. mollie/models/billingaddress.py +154 -0
  42. mollie/models/cancel_paymentop.py +93 -0
  43. mollie/models/cancel_refundop.py +86 -0
  44. mollie/models/cancel_subscriptionop.py +100 -0
  45. mollie/models/capability_requirement_status.py +15 -0
  46. mollie/models/capability_status.py +12 -0
  47. mollie/models/capability_status_reason.py +10 -0
  48. mollie/models/capture_mode.py +15 -0
  49. mollie/models/capture_mode_response.py +16 -0
  50. mollie/models/capture_response.py +265 -0
  51. mollie/models/client_link_request.py +210 -0
  52. mollie/models/client_link_response.py +56 -0
  53. mollie/models/clienterror.py +30 -0
  54. mollie/models/components_sub_totals.py +127 -0
  55. mollie/models/create_captureop.py +43 -0
  56. mollie/models/create_client_linkop.py +29 -0
  57. mollie/models/create_connect_balance_transferop.py +32 -0
  58. mollie/models/create_customer_paymentop.py +43 -0
  59. mollie/models/create_customerop.py +29 -0
  60. mollie/models/create_mandateop.py +43 -0
  61. mollie/models/create_payment_linkop.py +325 -0
  62. mollie/models/create_paymentop.py +73 -0
  63. mollie/models/create_profileop.py +29 -0
  64. mollie/models/create_refundop.py +43 -0
  65. mollie/models/create_sales_invoiceop.py +29 -0
  66. mollie/models/create_subscriptionop.py +43 -0
  67. mollie/models/create_webhook.py +123 -0
  68. mollie/models/create_webhookop.py +69 -0
  69. mollie/models/currencies.py +20 -0
  70. mollie/models/customer_response.py +169 -0
  71. mollie/models/delete_customerop.py +91 -0
  72. mollie/models/delete_payment_linkop.py +91 -0
  73. mollie/models/delete_profileop.py +29 -0
  74. mollie/models/delete_sales_invoiceop.py +44 -0
  75. mollie/models/delete_values_sales_invoice.py +54 -0
  76. mollie/models/delete_webhookop.py +56 -0
  77. mollie/models/entity_balance.py +325 -0
  78. mollie/models/entity_balance_report.py +541 -0
  79. mollie/models/entity_balance_transaction.py +1068 -0
  80. mollie/models/entity_balance_transfer.py +62 -0
  81. mollie/models/entity_balance_transfer_party.py +28 -0
  82. mollie/models/entity_balance_transfer_party_response.py +32 -0
  83. mollie/models/entity_balance_transfer_response.py +159 -0
  84. mollie/models/entity_capability.py +75 -0
  85. mollie/models/entity_capability_requirement.py +87 -0
  86. mollie/models/entity_capture.py +63 -0
  87. mollie/models/entity_chargeback.py +247 -0
  88. mollie/models/entity_customer.py +86 -0
  89. mollie/models/entity_event.py +46 -0
  90. mollie/models/entity_invoice.py +247 -0
  91. mollie/models/entity_method_get.py +329 -0
  92. mollie/models/entity_onboarding_status.py +95 -0
  93. mollie/models/entity_organization.py +178 -0
  94. mollie/models/entity_payment_route.py +111 -0
  95. mollie/models/entity_payment_route_response.py +140 -0
  96. mollie/models/entity_permission.py +61 -0
  97. mollie/models/entity_refund_response.py +361 -0
  98. mollie/models/entity_route.py +96 -0
  99. mollie/models/entity_settlement.py +467 -0
  100. mollie/models/entity_terminal.py +160 -0
  101. mollie/models/entity_webhook.py +122 -0
  102. mollie/models/entity_webhook_event.py +149 -0
  103. mollie/models/error_response.py +70 -0
  104. mollie/models/get_balance_reportop.py +126 -0
  105. mollie/models/get_balanceop.py +71 -0
  106. mollie/models/get_captureop.py +129 -0
  107. mollie/models/get_chargebackop.py +129 -0
  108. mollie/models/get_clientop.py +216 -0
  109. mollie/models/get_connect_balance_transferop.py +71 -0
  110. mollie/models/get_current_organizationop.py +22 -0
  111. mollie/models/get_current_profileop.py +22 -0
  112. mollie/models/get_customerop.py +286 -0
  113. mollie/models/get_invoiceop.py +29 -0
  114. mollie/models/get_mandateop.py +86 -0
  115. mollie/models/get_methodop.py +199 -0
  116. mollie/models/get_next_settlementop.py +22 -0
  117. mollie/models/get_onboarding_statusop.py +22 -0
  118. mollie/models/get_open_settlementop.py +22 -0
  119. mollie/models/get_organizationop.py +71 -0
  120. mollie/models/get_partner_statusop.py +231 -0
  121. mollie/models/get_payment_link_paymentsop.py +188 -0
  122. mollie/models/get_payment_linkop.py +77 -0
  123. mollie/models/get_paymentop.py +128 -0
  124. mollie/models/get_permissionop.py +73 -0
  125. mollie/models/get_primary_balanceop.py +22 -0
  126. mollie/models/get_profileop.py +71 -0
  127. mollie/models/get_refundop.py +129 -0
  128. mollie/models/get_sales_invoiceop.py +75 -0
  129. mollie/models/get_settlementop.py +29 -0
  130. mollie/models/get_subscriptionop.py +86 -0
  131. mollie/models/get_terminalop.py +77 -0
  132. mollie/models/get_webhook_eventop.py +71 -0
  133. mollie/models/get_webhookop.py +71 -0
  134. mollie/models/internal/__init__.py +54 -0
  135. mollie/models/internal/globals.py +59 -0
  136. mollie/models/line_categories.py +13 -0
  137. mollie/models/line_categories_response.py +14 -0
  138. mollie/models/list_all_chargebacksop.py +236 -0
  139. mollie/models/list_all_methodsop.py +249 -0
  140. mollie/models/list_all_refundsop.py +230 -0
  141. mollie/models/list_all_subscriptionsop.py +202 -0
  142. mollie/models/list_balance_transactionsop.py +174 -0
  143. mollie/models/list_balancesop.py +171 -0
  144. mollie/models/list_capabilitiesop.py +62 -0
  145. mollie/models/list_capture_response.py +264 -0
  146. mollie/models/list_capturesop.py +185 -0
  147. mollie/models/list_chargebacksop.py +185 -0
  148. mollie/models/list_clientsop.py +269 -0
  149. mollie/models/list_connect_balance_transfersop.py +177 -0
  150. mollie/models/list_customer_paymentsop.py +231 -0
  151. mollie/models/list_customer_response.py +164 -0
  152. mollie/models/list_customersop.py +172 -0
  153. mollie/models/list_entity_balance.py +322 -0
  154. mollie/models/list_entity_chargeback.py +244 -0
  155. mollie/models/list_entity_invoice.py +244 -0
  156. mollie/models/list_entity_method.py +315 -0
  157. mollie/models/list_entity_method_all.py +391 -0
  158. mollie/models/list_entity_permission.py +56 -0
  159. mollie/models/list_entity_refund.py +352 -0
  160. mollie/models/list_entity_settlement.py +457 -0
  161. mollie/models/list_entity_terminal.py +157 -0
  162. mollie/models/list_entity_webhook.py +117 -0
  163. mollie/models/list_invoicesop.py +175 -0
  164. mollie/models/list_links.py +68 -0
  165. mollie/models/list_mandate_response.py +261 -0
  166. mollie/models/list_mandatesop.py +186 -0
  167. mollie/models/list_methodsop.py +332 -0
  168. mollie/models/list_payment_linksop.py +159 -0
  169. mollie/models/list_payment_response.py +1953 -0
  170. mollie/models/list_paymentsop.py +217 -0
  171. mollie/models/list_permissionsop.py +85 -0
  172. mollie/models/list_profile_response.py +194 -0
  173. mollie/models/list_profilesop.py +118 -0
  174. mollie/models/list_refundsop.py +189 -0
  175. mollie/models/list_route_get_response.py +97 -0
  176. mollie/models/list_sales_invoice_response.py +505 -0
  177. mollie/models/list_sales_invoicesop.py +172 -0
  178. mollie/models/list_settlement_capturesop.py +187 -0
  179. mollie/models/list_settlement_chargebacksop.py +187 -0
  180. mollie/models/list_settlement_paymentsop.py +233 -0
  181. mollie/models/list_settlement_refundsop.py +191 -0
  182. mollie/models/list_settlementsop.py +178 -0
  183. mollie/models/list_subscription_paymentsop.py +242 -0
  184. mollie/models/list_subscription_response.py +344 -0
  185. mollie/models/list_subscriptionsop.py +189 -0
  186. mollie/models/list_terminalsop.py +172 -0
  187. mollie/models/list_webhooksop.py +189 -0
  188. mollie/models/locale.py +32 -0
  189. mollie/models/locale_response.py +33 -0
  190. mollie/models/mandate_details_card_label_response.py +22 -0
  191. mollie/models/mandate_method.py +15 -0
  192. mollie/models/mandate_method_response.py +16 -0
  193. mollie/models/mandate_request.py +160 -0
  194. mollie/models/mandate_response.py +264 -0
  195. mollie/models/metadata.py +19 -0
  196. mollie/models/method.py +50 -0
  197. mollie/models/method_include_wallets_parameter.py +8 -0
  198. mollie/models/method_resource_parameter.py +9 -0
  199. mollie/models/method_response.py +59 -0
  200. mollie/models/method_status.py +15 -0
  201. mollie/models/mode.py +12 -0
  202. mollie/models/no_response_error.py +17 -0
  203. mollie/models/onboarding_vat_regulation.py +16 -0
  204. mollie/models/organization_vat_regulation.py +17 -0
  205. mollie/models/payment_address.py +130 -0
  206. mollie/models/payment_create_routeop.py +43 -0
  207. mollie/models/payment_details_card_audition_response.py +12 -0
  208. mollie/models/payment_details_card_funding_response.py +14 -0
  209. mollie/models/payment_details_card_label_response.py +23 -0
  210. mollie/models/payment_details_card_security_response.py +12 -0
  211. mollie/models/payment_details_failure_reason_response.py +25 -0
  212. mollie/models/payment_details_fee_region_response.py +20 -0
  213. mollie/models/payment_details_receipt_card_read_method_response.py +17 -0
  214. mollie/models/payment_details_receipt_card_verification_method_response.py +21 -0
  215. mollie/models/payment_details_seller_protection_response.py +20 -0
  216. mollie/models/payment_details_wallet_response.py +11 -0
  217. mollie/models/payment_line_item.py +96 -0
  218. mollie/models/payment_line_item_response.py +104 -0
  219. mollie/models/payment_line_type.py +20 -0
  220. mollie/models/payment_line_type_response.py +21 -0
  221. mollie/models/payment_link_method.py +36 -0
  222. mollie/models/payment_link_method_response.py +37 -0
  223. mollie/models/payment_link_response.py +348 -0
  224. mollie/models/payment_link_sequence_type.py +9 -0
  225. mollie/models/payment_link_sequence_type_response.py +10 -0
  226. mollie/models/payment_list_routesop.py +140 -0
  227. mollie/models/payment_method.py +53 -0
  228. mollie/models/payment_request.py +919 -0
  229. mollie/models/payment_response.py +1953 -0
  230. mollie/models/profile_request.py +67 -0
  231. mollie/models/profile_response.py +197 -0
  232. mollie/models/profile_review_status_response.py +12 -0
  233. mollie/models/recurring_line_item.py +77 -0
  234. mollie/models/refund_external_reference_type.py +10 -0
  235. mollie/models/refund_external_reference_type_response.py +11 -0
  236. mollie/models/refund_request.py +200 -0
  237. mollie/models/release_authorizationop.py +108 -0
  238. mollie/models/request_apple_pay_payment_sessionop.py +76 -0
  239. mollie/models/responsevalidationerror.py +27 -0
  240. mollie/models/revoke_mandateop.py +100 -0
  241. mollie/models/route_create_response.py +97 -0
  242. mollie/models/route_destination_type.py +10 -0
  243. mollie/models/route_destination_type_response.py +11 -0
  244. mollie/models/sales_invoice_discount.py +21 -0
  245. mollie/models/sales_invoice_discount_response.py +25 -0
  246. mollie/models/sales_invoice_discount_type.py +11 -0
  247. mollie/models/sales_invoice_discount_type_response.py +12 -0
  248. mollie/models/sales_invoice_email_details.py +20 -0
  249. mollie/models/sales_invoice_line_item.py +67 -0
  250. mollie/models/sales_invoice_line_item_response.py +70 -0
  251. mollie/models/sales_invoice_payment_details.py +59 -0
  252. mollie/models/sales_invoice_payment_details_response.py +66 -0
  253. mollie/models/sales_invoice_payment_details_source.py +12 -0
  254. mollie/models/sales_invoice_payment_details_source_response.py +13 -0
  255. mollie/models/sales_invoice_payment_term.py +16 -0
  256. mollie/models/sales_invoice_payment_term_response.py +17 -0
  257. mollie/models/sales_invoice_recipient.py +176 -0
  258. mollie/models/sales_invoice_recipient_locale.py +18 -0
  259. mollie/models/sales_invoice_recipient_locale_response.py +19 -0
  260. mollie/models/sales_invoice_recipient_response.py +182 -0
  261. mollie/models/sales_invoice_recipient_type.py +13 -0
  262. mollie/models/sales_invoice_recipient_type_response.py +14 -0
  263. mollie/models/sales_invoice_request.py +256 -0
  264. mollie/models/sales_invoice_response.py +509 -0
  265. mollie/models/sales_invoice_status.py +25 -0
  266. mollie/models/sales_invoice_status_response.py +26 -0
  267. mollie/models/sales_invoice_vat_mode.py +13 -0
  268. mollie/models/sales_invoice_vat_mode_response.py +14 -0
  269. mollie/models/sales_invoice_vat_scheme.py +11 -0
  270. mollie/models/sales_invoice_vat_scheme_response.py +12 -0
  271. mollie/models/security.py +35 -0
  272. mollie/models/sequence_type.py +10 -0
  273. mollie/models/sequence_type_response.py +11 -0
  274. mollie/models/sorting.py +9 -0
  275. mollie/models/status_reason.py +168 -0
  276. mollie/models/sub_group.py +52 -0
  277. mollie/models/sub_totals.py +120 -0
  278. mollie/models/submit_onboarding_dataop.py +214 -0
  279. mollie/models/subscription_method.py +12 -0
  280. mollie/models/subscription_method_response.py +13 -0
  281. mollie/models/subscription_request.py +213 -0
  282. mollie/models/subscription_response.py +349 -0
  283. mollie/models/terminal_brand.py +12 -0
  284. mollie/models/terminal_model.py +16 -0
  285. mollie/models/test_webhookop.py +64 -0
  286. mollie/models/update_customerop.py +43 -0
  287. mollie/models/update_payment_linkop.py +172 -0
  288. mollie/models/update_paymentop.py +332 -0
  289. mollie/models/update_profileop.py +147 -0
  290. mollie/models/update_sales_invoiceop.py +44 -0
  291. mollie/models/update_subscriptionop.py +188 -0
  292. mollie/models/update_values_sales_invoice.py +176 -0
  293. mollie/models/update_webhookop.py +83 -0
  294. mollie/models/url.py +24 -0
  295. mollie/models/url_nullable.py +25 -0
  296. mollie/models/webhook_event_types.py +18 -0
  297. mollie/models/webhook_status.py +14 -0
  298. mollie/onboarding.py +403 -0
  299. mollie/organizations.py +579 -0
  300. mollie/payment_links.py +1323 -0
  301. mollie/payments_sdk.py +1385 -0
  302. mollie/permissions.py +397 -0
  303. mollie/profiles.py +1209 -0
  304. mollie/py.typed +1 -0
  305. mollie/refunds_sdk.py +1111 -0
  306. mollie/sales_invoices.py +1121 -0
  307. mollie/sdk.py +265 -0
  308. mollie/sdkconfiguration.py +50 -0
  309. mollie/settlements.py +1735 -0
  310. mollie/subscriptions.py +1617 -0
  311. mollie/terminals.py +427 -0
  312. mollie/types/__init__.py +21 -0
  313. mollie/types/basemodel.py +39 -0
  314. mollie/utils/__init__.py +200 -0
  315. mollie/utils/annotations.py +79 -0
  316. mollie/utils/datetimes.py +23 -0
  317. mollie/utils/enums.py +74 -0
  318. mollie/utils/eventstreaming.py +248 -0
  319. mollie/utils/forms.py +223 -0
  320. mollie/utils/headers.py +136 -0
  321. mollie/utils/logger.py +27 -0
  322. mollie/utils/metadata.py +118 -0
  323. mollie/utils/queryparams.py +205 -0
  324. mollie/utils/requestbodies.py +66 -0
  325. mollie/utils/retries.py +217 -0
  326. mollie/utils/security.py +195 -0
  327. mollie/utils/serializers.py +249 -0
  328. mollie/utils/unmarshal_json_response.py +24 -0
  329. mollie/utils/url.py +155 -0
  330. mollie/utils/values.py +137 -0
  331. mollie/wallets.py +263 -0
  332. mollie/webhook_events.py +211 -0
  333. mollie/webhooks.py +1305 -0
  334. mollie_api_py-1.0.0.dist-info/METADATA +834 -0
  335. mollie_api_py-1.0.0.dist-info/RECORD +337 -0
  336. mollie_api_py-1.0.0.dist-info/WHEEL +4 -0
  337. mollie_api_py-1.0.0.dist-info/licenses/LICENSE.md +24 -0
mollie/webhooks.py ADDED
@@ -0,0 +1,1305 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from .basesdk import BaseSDK
4
+ from mollie import models, utils
5
+ from mollie._hooks import HookContext
6
+ from mollie.types import OptionalNullable, UNSET
7
+ from mollie.utils import get_security_from_env
8
+ from mollie.utils.unmarshal_json_response import unmarshal_json_response
9
+ from typing import Any, Mapping, Optional, Union
10
+
11
+
12
+ class Webhooks(BaseSDK):
13
+ def create(
14
+ self,
15
+ *,
16
+ idempotency_key: Optional[str] = None,
17
+ request_body: Optional[
18
+ Union[
19
+ models.CreateWebhookRequestBody,
20
+ models.CreateWebhookRequestBodyTypedDict,
21
+ ]
22
+ ] = None,
23
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
24
+ server_url: Optional[str] = None,
25
+ timeout_ms: Optional[int] = None,
26
+ http_headers: Optional[Mapping[str, str]] = None,
27
+ ) -> models.CreateWebhook:
28
+ r"""Create a webhook
29
+
30
+ A webhook must have a name, an url and a list of event types. You can also create webhooks in the webhooks settings section of the Dashboard.
31
+
32
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
33
+ :param request_body:
34
+ :param retries: Override the default retry configuration for this method
35
+ :param server_url: Override the default server URL for this method
36
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
37
+ :param http_headers: Additional headers to set or replace on requests.
38
+ """
39
+ base_url = None
40
+ url_variables = None
41
+ if timeout_ms is None:
42
+ timeout_ms = self.sdk_configuration.timeout_ms
43
+
44
+ if server_url is not None:
45
+ base_url = server_url
46
+ else:
47
+ base_url = self._get_url(base_url, url_variables)
48
+
49
+ request = models.CreateWebhookRequest(
50
+ idempotency_key=idempotency_key,
51
+ request_body=utils.get_pydantic_model(
52
+ request_body, Optional[models.CreateWebhookRequestBody]
53
+ ),
54
+ )
55
+
56
+ req = self._build_request(
57
+ method="POST",
58
+ path="/webhooks",
59
+ base_url=base_url,
60
+ url_variables=url_variables,
61
+ request=request,
62
+ request_body_required=False,
63
+ request_has_path_params=False,
64
+ request_has_query_params=True,
65
+ user_agent_header="user-agent",
66
+ accept_header_value="application/hal+json",
67
+ http_headers=http_headers,
68
+ security=self.sdk_configuration.security,
69
+ get_serialized_body=lambda: utils.serialize_request_body(
70
+ request.request_body,
71
+ False,
72
+ True,
73
+ "json",
74
+ Optional[models.CreateWebhookRequestBody],
75
+ ),
76
+ timeout_ms=timeout_ms,
77
+ )
78
+
79
+ if retries == UNSET:
80
+ if self.sdk_configuration.retry_config is not UNSET:
81
+ retries = self.sdk_configuration.retry_config
82
+ else:
83
+ retries = utils.RetryConfig(
84
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
85
+ )
86
+
87
+ retry_config = None
88
+ if isinstance(retries, utils.RetryConfig):
89
+ retry_config = (retries, ["5xx"])
90
+
91
+ http_res = self.do_request(
92
+ hook_ctx=HookContext(
93
+ config=self.sdk_configuration,
94
+ base_url=base_url or "",
95
+ operation_id="create-webhook",
96
+ oauth2_scopes=None,
97
+ security_source=get_security_from_env(
98
+ self.sdk_configuration.security, models.Security
99
+ ),
100
+ ),
101
+ request=req,
102
+ error_status_codes=["422", "4XX", "5XX"],
103
+ retry_config=retry_config,
104
+ )
105
+
106
+ response_data: Any = None
107
+ if utils.match_response(http_res, "201", "application/hal+json"):
108
+ return unmarshal_json_response(models.CreateWebhook, http_res)
109
+ if utils.match_response(http_res, "422", "application/hal+json"):
110
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
111
+ raise models.ErrorResponse(response_data, http_res)
112
+ if utils.match_response(http_res, "4XX", "*"):
113
+ http_res_text = utils.stream_to_text(http_res)
114
+ raise models.APIError("API error occurred", http_res, http_res_text)
115
+ if utils.match_response(http_res, "5XX", "*"):
116
+ http_res_text = utils.stream_to_text(http_res)
117
+ raise models.APIError("API error occurred", http_res, http_res_text)
118
+
119
+ raise models.APIError("Unexpected response received", http_res)
120
+
121
+ async def create_async(
122
+ self,
123
+ *,
124
+ idempotency_key: Optional[str] = None,
125
+ request_body: Optional[
126
+ Union[
127
+ models.CreateWebhookRequestBody,
128
+ models.CreateWebhookRequestBodyTypedDict,
129
+ ]
130
+ ] = None,
131
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
132
+ server_url: Optional[str] = None,
133
+ timeout_ms: Optional[int] = None,
134
+ http_headers: Optional[Mapping[str, str]] = None,
135
+ ) -> models.CreateWebhook:
136
+ r"""Create a webhook
137
+
138
+ A webhook must have a name, an url and a list of event types. You can also create webhooks in the webhooks settings section of the Dashboard.
139
+
140
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
141
+ :param request_body:
142
+ :param retries: Override the default retry configuration for this method
143
+ :param server_url: Override the default server URL for this method
144
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
145
+ :param http_headers: Additional headers to set or replace on requests.
146
+ """
147
+ base_url = None
148
+ url_variables = None
149
+ if timeout_ms is None:
150
+ timeout_ms = self.sdk_configuration.timeout_ms
151
+
152
+ if server_url is not None:
153
+ base_url = server_url
154
+ else:
155
+ base_url = self._get_url(base_url, url_variables)
156
+
157
+ request = models.CreateWebhookRequest(
158
+ idempotency_key=idempotency_key,
159
+ request_body=utils.get_pydantic_model(
160
+ request_body, Optional[models.CreateWebhookRequestBody]
161
+ ),
162
+ )
163
+
164
+ req = self._build_request_async(
165
+ method="POST",
166
+ path="/webhooks",
167
+ base_url=base_url,
168
+ url_variables=url_variables,
169
+ request=request,
170
+ request_body_required=False,
171
+ request_has_path_params=False,
172
+ request_has_query_params=True,
173
+ user_agent_header="user-agent",
174
+ accept_header_value="application/hal+json",
175
+ http_headers=http_headers,
176
+ security=self.sdk_configuration.security,
177
+ get_serialized_body=lambda: utils.serialize_request_body(
178
+ request.request_body,
179
+ False,
180
+ True,
181
+ "json",
182
+ Optional[models.CreateWebhookRequestBody],
183
+ ),
184
+ timeout_ms=timeout_ms,
185
+ )
186
+
187
+ if retries == UNSET:
188
+ if self.sdk_configuration.retry_config is not UNSET:
189
+ retries = self.sdk_configuration.retry_config
190
+ else:
191
+ retries = utils.RetryConfig(
192
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
193
+ )
194
+
195
+ retry_config = None
196
+ if isinstance(retries, utils.RetryConfig):
197
+ retry_config = (retries, ["5xx"])
198
+
199
+ http_res = await self.do_request_async(
200
+ hook_ctx=HookContext(
201
+ config=self.sdk_configuration,
202
+ base_url=base_url or "",
203
+ operation_id="create-webhook",
204
+ oauth2_scopes=None,
205
+ security_source=get_security_from_env(
206
+ self.sdk_configuration.security, models.Security
207
+ ),
208
+ ),
209
+ request=req,
210
+ error_status_codes=["422", "4XX", "5XX"],
211
+ retry_config=retry_config,
212
+ )
213
+
214
+ response_data: Any = None
215
+ if utils.match_response(http_res, "201", "application/hal+json"):
216
+ return unmarshal_json_response(models.CreateWebhook, http_res)
217
+ if utils.match_response(http_res, "422", "application/hal+json"):
218
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
219
+ raise models.ErrorResponse(response_data, http_res)
220
+ if utils.match_response(http_res, "4XX", "*"):
221
+ http_res_text = await utils.stream_to_text_async(http_res)
222
+ raise models.APIError("API error occurred", http_res, http_res_text)
223
+ if utils.match_response(http_res, "5XX", "*"):
224
+ http_res_text = await utils.stream_to_text_async(http_res)
225
+ raise models.APIError("API error occurred", http_res, http_res_text)
226
+
227
+ raise models.APIError("Unexpected response received", http_res)
228
+
229
+ def list(
230
+ self,
231
+ *,
232
+ from_: OptionalNullable[str] = UNSET,
233
+ limit: OptionalNullable[int] = UNSET,
234
+ sort: Optional[models.Sorting] = None,
235
+ event_types: Optional[models.WebhookEventTypes] = None,
236
+ testmode: Optional[bool] = None,
237
+ idempotency_key: Optional[str] = None,
238
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
239
+ server_url: Optional[str] = None,
240
+ timeout_ms: Optional[int] = None,
241
+ http_headers: Optional[Mapping[str, str]] = None,
242
+ ) -> models.ListWebhooksResponse:
243
+ r"""List all webhooks
244
+
245
+ Returns a paginated list of your webhooks. If no webhook endpoints are available, the resulting array will be empty. This request should never throw an error.
246
+
247
+ :param from_: Provide an ID to start the result set from the item with the given ID and onwards. This allows you to paginate the result set.
248
+ :param limit: The maximum number of items to return. Defaults to 50 items.
249
+ :param sort: Used for setting the direction of the result set. Defaults to descending order, meaning the results are ordered from newest to oldest.
250
+ :param event_types: Used to filter out only the webhooks that are subscribed to certain types of events.
251
+ :param testmode: You can enable test mode by setting the `testmode` query parameter to `true`. Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
252
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
253
+ :param retries: Override the default retry configuration for this method
254
+ :param server_url: Override the default server URL for this method
255
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
256
+ :param http_headers: Additional headers to set or replace on requests.
257
+ """
258
+ base_url = None
259
+ url_variables = None
260
+ if timeout_ms is None:
261
+ timeout_ms = self.sdk_configuration.timeout_ms
262
+
263
+ if server_url is not None:
264
+ base_url = server_url
265
+ else:
266
+ base_url = self._get_url(base_url, url_variables)
267
+
268
+ request = models.ListWebhooksRequest(
269
+ from_=from_,
270
+ limit=limit,
271
+ sort=sort,
272
+ event_types=event_types,
273
+ testmode=testmode,
274
+ idempotency_key=idempotency_key,
275
+ )
276
+
277
+ req = self._build_request(
278
+ method="GET",
279
+ path="/webhooks",
280
+ base_url=base_url,
281
+ url_variables=url_variables,
282
+ request=request,
283
+ request_body_required=False,
284
+ request_has_path_params=False,
285
+ request_has_query_params=True,
286
+ user_agent_header="user-agent",
287
+ accept_header_value="application/hal+json",
288
+ http_headers=http_headers,
289
+ _globals=models.ListWebhooksGlobals(
290
+ testmode=self.sdk_configuration.globals.testmode,
291
+ ),
292
+ security=self.sdk_configuration.security,
293
+ timeout_ms=timeout_ms,
294
+ )
295
+
296
+ if retries == UNSET:
297
+ if self.sdk_configuration.retry_config is not UNSET:
298
+ retries = self.sdk_configuration.retry_config
299
+ else:
300
+ retries = utils.RetryConfig(
301
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
302
+ )
303
+
304
+ retry_config = None
305
+ if isinstance(retries, utils.RetryConfig):
306
+ retry_config = (retries, ["5xx"])
307
+
308
+ http_res = self.do_request(
309
+ hook_ctx=HookContext(
310
+ config=self.sdk_configuration,
311
+ base_url=base_url or "",
312
+ operation_id="list-webhooks",
313
+ oauth2_scopes=None,
314
+ security_source=get_security_from_env(
315
+ self.sdk_configuration.security, models.Security
316
+ ),
317
+ ),
318
+ request=req,
319
+ error_status_codes=["400", "4XX", "5XX"],
320
+ retry_config=retry_config,
321
+ )
322
+
323
+ response_data: Any = None
324
+ if utils.match_response(http_res, "200", "application/hal+json"):
325
+ return unmarshal_json_response(models.ListWebhooksResponse, http_res)
326
+ if utils.match_response(http_res, "400", "application/hal+json"):
327
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
328
+ raise models.ErrorResponse(response_data, http_res)
329
+ if utils.match_response(http_res, "4XX", "*"):
330
+ http_res_text = utils.stream_to_text(http_res)
331
+ raise models.APIError("API error occurred", http_res, http_res_text)
332
+ if utils.match_response(http_res, "5XX", "*"):
333
+ http_res_text = utils.stream_to_text(http_res)
334
+ raise models.APIError("API error occurred", http_res, http_res_text)
335
+
336
+ raise models.APIError("Unexpected response received", http_res)
337
+
338
+ async def list_async(
339
+ self,
340
+ *,
341
+ from_: OptionalNullable[str] = UNSET,
342
+ limit: OptionalNullable[int] = UNSET,
343
+ sort: Optional[models.Sorting] = None,
344
+ event_types: Optional[models.WebhookEventTypes] = None,
345
+ testmode: Optional[bool] = None,
346
+ idempotency_key: Optional[str] = None,
347
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
348
+ server_url: Optional[str] = None,
349
+ timeout_ms: Optional[int] = None,
350
+ http_headers: Optional[Mapping[str, str]] = None,
351
+ ) -> models.ListWebhooksResponse:
352
+ r"""List all webhooks
353
+
354
+ Returns a paginated list of your webhooks. If no webhook endpoints are available, the resulting array will be empty. This request should never throw an error.
355
+
356
+ :param from_: Provide an ID to start the result set from the item with the given ID and onwards. This allows you to paginate the result set.
357
+ :param limit: The maximum number of items to return. Defaults to 50 items.
358
+ :param sort: Used for setting the direction of the result set. Defaults to descending order, meaning the results are ordered from newest to oldest.
359
+ :param event_types: Used to filter out only the webhooks that are subscribed to certain types of events.
360
+ :param testmode: You can enable test mode by setting the `testmode` query parameter to `true`. Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
361
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
362
+ :param retries: Override the default retry configuration for this method
363
+ :param server_url: Override the default server URL for this method
364
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
365
+ :param http_headers: Additional headers to set or replace on requests.
366
+ """
367
+ base_url = None
368
+ url_variables = None
369
+ if timeout_ms is None:
370
+ timeout_ms = self.sdk_configuration.timeout_ms
371
+
372
+ if server_url is not None:
373
+ base_url = server_url
374
+ else:
375
+ base_url = self._get_url(base_url, url_variables)
376
+
377
+ request = models.ListWebhooksRequest(
378
+ from_=from_,
379
+ limit=limit,
380
+ sort=sort,
381
+ event_types=event_types,
382
+ testmode=testmode,
383
+ idempotency_key=idempotency_key,
384
+ )
385
+
386
+ req = self._build_request_async(
387
+ method="GET",
388
+ path="/webhooks",
389
+ base_url=base_url,
390
+ url_variables=url_variables,
391
+ request=request,
392
+ request_body_required=False,
393
+ request_has_path_params=False,
394
+ request_has_query_params=True,
395
+ user_agent_header="user-agent",
396
+ accept_header_value="application/hal+json",
397
+ http_headers=http_headers,
398
+ _globals=models.ListWebhooksGlobals(
399
+ testmode=self.sdk_configuration.globals.testmode,
400
+ ),
401
+ security=self.sdk_configuration.security,
402
+ timeout_ms=timeout_ms,
403
+ )
404
+
405
+ if retries == UNSET:
406
+ if self.sdk_configuration.retry_config is not UNSET:
407
+ retries = self.sdk_configuration.retry_config
408
+ else:
409
+ retries = utils.RetryConfig(
410
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
411
+ )
412
+
413
+ retry_config = None
414
+ if isinstance(retries, utils.RetryConfig):
415
+ retry_config = (retries, ["5xx"])
416
+
417
+ http_res = await self.do_request_async(
418
+ hook_ctx=HookContext(
419
+ config=self.sdk_configuration,
420
+ base_url=base_url or "",
421
+ operation_id="list-webhooks",
422
+ oauth2_scopes=None,
423
+ security_source=get_security_from_env(
424
+ self.sdk_configuration.security, models.Security
425
+ ),
426
+ ),
427
+ request=req,
428
+ error_status_codes=["400", "4XX", "5XX"],
429
+ retry_config=retry_config,
430
+ )
431
+
432
+ response_data: Any = None
433
+ if utils.match_response(http_res, "200", "application/hal+json"):
434
+ return unmarshal_json_response(models.ListWebhooksResponse, http_res)
435
+ if utils.match_response(http_res, "400", "application/hal+json"):
436
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
437
+ raise models.ErrorResponse(response_data, http_res)
438
+ if utils.match_response(http_res, "4XX", "*"):
439
+ http_res_text = await utils.stream_to_text_async(http_res)
440
+ raise models.APIError("API error occurred", http_res, http_res_text)
441
+ if utils.match_response(http_res, "5XX", "*"):
442
+ http_res_text = await utils.stream_to_text_async(http_res)
443
+ raise models.APIError("API error occurred", http_res, http_res_text)
444
+
445
+ raise models.APIError("Unexpected response received", http_res)
446
+
447
+ def update(
448
+ self,
449
+ *,
450
+ id: str,
451
+ idempotency_key: Optional[str] = None,
452
+ request_body: Optional[
453
+ Union[
454
+ models.UpdateWebhookRequestBody,
455
+ models.UpdateWebhookRequestBodyTypedDict,
456
+ ]
457
+ ] = None,
458
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
459
+ server_url: Optional[str] = None,
460
+ timeout_ms: Optional[int] = None,
461
+ http_headers: Optional[Mapping[str, str]] = None,
462
+ ) -> models.EntityWebhook:
463
+ r"""Update a webhook
464
+
465
+ Updates the webhook. You may edit the name, url and the list of subscribed event types.
466
+
467
+ :param id: Provide the ID of the item you want to perform this operation on.
468
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
469
+ :param request_body:
470
+ :param retries: Override the default retry configuration for this method
471
+ :param server_url: Override the default server URL for this method
472
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
473
+ :param http_headers: Additional headers to set or replace on requests.
474
+ """
475
+ base_url = None
476
+ url_variables = None
477
+ if timeout_ms is None:
478
+ timeout_ms = self.sdk_configuration.timeout_ms
479
+
480
+ if server_url is not None:
481
+ base_url = server_url
482
+ else:
483
+ base_url = self._get_url(base_url, url_variables)
484
+
485
+ request = models.UpdateWebhookRequest(
486
+ id=id,
487
+ idempotency_key=idempotency_key,
488
+ request_body=utils.get_pydantic_model(
489
+ request_body, Optional[models.UpdateWebhookRequestBody]
490
+ ),
491
+ )
492
+
493
+ req = self._build_request(
494
+ method="PATCH",
495
+ path="/webhooks/{id}",
496
+ base_url=base_url,
497
+ url_variables=url_variables,
498
+ request=request,
499
+ request_body_required=False,
500
+ request_has_path_params=True,
501
+ request_has_query_params=True,
502
+ user_agent_header="user-agent",
503
+ accept_header_value="application/hal+json",
504
+ http_headers=http_headers,
505
+ security=self.sdk_configuration.security,
506
+ get_serialized_body=lambda: utils.serialize_request_body(
507
+ request.request_body,
508
+ False,
509
+ True,
510
+ "json",
511
+ Optional[models.UpdateWebhookRequestBody],
512
+ ),
513
+ timeout_ms=timeout_ms,
514
+ )
515
+
516
+ if retries == UNSET:
517
+ if self.sdk_configuration.retry_config is not UNSET:
518
+ retries = self.sdk_configuration.retry_config
519
+ else:
520
+ retries = utils.RetryConfig(
521
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
522
+ )
523
+
524
+ retry_config = None
525
+ if isinstance(retries, utils.RetryConfig):
526
+ retry_config = (retries, ["5xx"])
527
+
528
+ http_res = self.do_request(
529
+ hook_ctx=HookContext(
530
+ config=self.sdk_configuration,
531
+ base_url=base_url or "",
532
+ operation_id="update-webhook",
533
+ oauth2_scopes=None,
534
+ security_source=get_security_from_env(
535
+ self.sdk_configuration.security, models.Security
536
+ ),
537
+ ),
538
+ request=req,
539
+ error_status_codes=["404", "422", "4XX", "5XX"],
540
+ retry_config=retry_config,
541
+ )
542
+
543
+ response_data: Any = None
544
+ if utils.match_response(http_res, "200", "application/hal+json"):
545
+ return unmarshal_json_response(models.EntityWebhook, http_res)
546
+ if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
547
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
548
+ raise models.ErrorResponse(response_data, http_res)
549
+ if utils.match_response(http_res, "4XX", "*"):
550
+ http_res_text = utils.stream_to_text(http_res)
551
+ raise models.APIError("API error occurred", http_res, http_res_text)
552
+ if utils.match_response(http_res, "5XX", "*"):
553
+ http_res_text = utils.stream_to_text(http_res)
554
+ raise models.APIError("API error occurred", http_res, http_res_text)
555
+
556
+ raise models.APIError("Unexpected response received", http_res)
557
+
558
+ async def update_async(
559
+ self,
560
+ *,
561
+ id: str,
562
+ idempotency_key: Optional[str] = None,
563
+ request_body: Optional[
564
+ Union[
565
+ models.UpdateWebhookRequestBody,
566
+ models.UpdateWebhookRequestBodyTypedDict,
567
+ ]
568
+ ] = None,
569
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
570
+ server_url: Optional[str] = None,
571
+ timeout_ms: Optional[int] = None,
572
+ http_headers: Optional[Mapping[str, str]] = None,
573
+ ) -> models.EntityWebhook:
574
+ r"""Update a webhook
575
+
576
+ Updates the webhook. You may edit the name, url and the list of subscribed event types.
577
+
578
+ :param id: Provide the ID of the item you want to perform this operation on.
579
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
580
+ :param request_body:
581
+ :param retries: Override the default retry configuration for this method
582
+ :param server_url: Override the default server URL for this method
583
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
584
+ :param http_headers: Additional headers to set or replace on requests.
585
+ """
586
+ base_url = None
587
+ url_variables = None
588
+ if timeout_ms is None:
589
+ timeout_ms = self.sdk_configuration.timeout_ms
590
+
591
+ if server_url is not None:
592
+ base_url = server_url
593
+ else:
594
+ base_url = self._get_url(base_url, url_variables)
595
+
596
+ request = models.UpdateWebhookRequest(
597
+ id=id,
598
+ idempotency_key=idempotency_key,
599
+ request_body=utils.get_pydantic_model(
600
+ request_body, Optional[models.UpdateWebhookRequestBody]
601
+ ),
602
+ )
603
+
604
+ req = self._build_request_async(
605
+ method="PATCH",
606
+ path="/webhooks/{id}",
607
+ base_url=base_url,
608
+ url_variables=url_variables,
609
+ request=request,
610
+ request_body_required=False,
611
+ request_has_path_params=True,
612
+ request_has_query_params=True,
613
+ user_agent_header="user-agent",
614
+ accept_header_value="application/hal+json",
615
+ http_headers=http_headers,
616
+ security=self.sdk_configuration.security,
617
+ get_serialized_body=lambda: utils.serialize_request_body(
618
+ request.request_body,
619
+ False,
620
+ True,
621
+ "json",
622
+ Optional[models.UpdateWebhookRequestBody],
623
+ ),
624
+ timeout_ms=timeout_ms,
625
+ )
626
+
627
+ if retries == UNSET:
628
+ if self.sdk_configuration.retry_config is not UNSET:
629
+ retries = self.sdk_configuration.retry_config
630
+ else:
631
+ retries = utils.RetryConfig(
632
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
633
+ )
634
+
635
+ retry_config = None
636
+ if isinstance(retries, utils.RetryConfig):
637
+ retry_config = (retries, ["5xx"])
638
+
639
+ http_res = await self.do_request_async(
640
+ hook_ctx=HookContext(
641
+ config=self.sdk_configuration,
642
+ base_url=base_url or "",
643
+ operation_id="update-webhook",
644
+ oauth2_scopes=None,
645
+ security_source=get_security_from_env(
646
+ self.sdk_configuration.security, models.Security
647
+ ),
648
+ ),
649
+ request=req,
650
+ error_status_codes=["404", "422", "4XX", "5XX"],
651
+ retry_config=retry_config,
652
+ )
653
+
654
+ response_data: Any = None
655
+ if utils.match_response(http_res, "200", "application/hal+json"):
656
+ return unmarshal_json_response(models.EntityWebhook, http_res)
657
+ if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
658
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
659
+ raise models.ErrorResponse(response_data, http_res)
660
+ if utils.match_response(http_res, "4XX", "*"):
661
+ http_res_text = await utils.stream_to_text_async(http_res)
662
+ raise models.APIError("API error occurred", http_res, http_res_text)
663
+ if utils.match_response(http_res, "5XX", "*"):
664
+ http_res_text = await utils.stream_to_text_async(http_res)
665
+ raise models.APIError("API error occurred", http_res, http_res_text)
666
+
667
+ raise models.APIError("Unexpected response received", http_res)
668
+
669
+ def get(
670
+ self,
671
+ *,
672
+ id: str,
673
+ testmode: Optional[bool] = None,
674
+ idempotency_key: Optional[str] = None,
675
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
676
+ server_url: Optional[str] = None,
677
+ timeout_ms: Optional[int] = None,
678
+ http_headers: Optional[Mapping[str, str]] = None,
679
+ ) -> models.EntityWebhook:
680
+ r"""Get a webhook
681
+
682
+ Retrieve a single webhook object by its ID.
683
+
684
+ :param id: Provide the ID of the item you want to perform this operation on.
685
+ :param testmode: You can enable test mode by setting the `testmode` query parameter to `true`. Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
686
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
687
+ :param retries: Override the default retry configuration for this method
688
+ :param server_url: Override the default server URL for this method
689
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
690
+ :param http_headers: Additional headers to set or replace on requests.
691
+ """
692
+ base_url = None
693
+ url_variables = None
694
+ if timeout_ms is None:
695
+ timeout_ms = self.sdk_configuration.timeout_ms
696
+
697
+ if server_url is not None:
698
+ base_url = server_url
699
+ else:
700
+ base_url = self._get_url(base_url, url_variables)
701
+
702
+ request = models.GetWebhookRequest(
703
+ id=id,
704
+ testmode=testmode,
705
+ idempotency_key=idempotency_key,
706
+ )
707
+
708
+ req = self._build_request(
709
+ method="GET",
710
+ path="/webhooks/{id}",
711
+ base_url=base_url,
712
+ url_variables=url_variables,
713
+ request=request,
714
+ request_body_required=False,
715
+ request_has_path_params=True,
716
+ request_has_query_params=True,
717
+ user_agent_header="user-agent",
718
+ accept_header_value="application/hal+json",
719
+ http_headers=http_headers,
720
+ _globals=models.GetWebhookGlobals(
721
+ testmode=self.sdk_configuration.globals.testmode,
722
+ ),
723
+ security=self.sdk_configuration.security,
724
+ timeout_ms=timeout_ms,
725
+ )
726
+
727
+ if retries == UNSET:
728
+ if self.sdk_configuration.retry_config is not UNSET:
729
+ retries = self.sdk_configuration.retry_config
730
+ else:
731
+ retries = utils.RetryConfig(
732
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
733
+ )
734
+
735
+ retry_config = None
736
+ if isinstance(retries, utils.RetryConfig):
737
+ retry_config = (retries, ["5xx"])
738
+
739
+ http_res = self.do_request(
740
+ hook_ctx=HookContext(
741
+ config=self.sdk_configuration,
742
+ base_url=base_url or "",
743
+ operation_id="get-webhook",
744
+ oauth2_scopes=None,
745
+ security_source=get_security_from_env(
746
+ self.sdk_configuration.security, models.Security
747
+ ),
748
+ ),
749
+ request=req,
750
+ error_status_codes=["404", "422", "4XX", "5XX"],
751
+ retry_config=retry_config,
752
+ )
753
+
754
+ response_data: Any = None
755
+ if utils.match_response(http_res, "200", "application/hal+json"):
756
+ return unmarshal_json_response(models.EntityWebhook, http_res)
757
+ if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
758
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
759
+ raise models.ErrorResponse(response_data, http_res)
760
+ if utils.match_response(http_res, "4XX", "*"):
761
+ http_res_text = utils.stream_to_text(http_res)
762
+ raise models.APIError("API error occurred", http_res, http_res_text)
763
+ if utils.match_response(http_res, "5XX", "*"):
764
+ http_res_text = utils.stream_to_text(http_res)
765
+ raise models.APIError("API error occurred", http_res, http_res_text)
766
+
767
+ raise models.APIError("Unexpected response received", http_res)
768
+
769
+ async def get_async(
770
+ self,
771
+ *,
772
+ id: str,
773
+ testmode: Optional[bool] = None,
774
+ idempotency_key: Optional[str] = None,
775
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
776
+ server_url: Optional[str] = None,
777
+ timeout_ms: Optional[int] = None,
778
+ http_headers: Optional[Mapping[str, str]] = None,
779
+ ) -> models.EntityWebhook:
780
+ r"""Get a webhook
781
+
782
+ Retrieve a single webhook object by its ID.
783
+
784
+ :param id: Provide the ID of the item you want to perform this operation on.
785
+ :param testmode: You can enable test mode by setting the `testmode` query parameter to `true`. Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
786
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
787
+ :param retries: Override the default retry configuration for this method
788
+ :param server_url: Override the default server URL for this method
789
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
790
+ :param http_headers: Additional headers to set or replace on requests.
791
+ """
792
+ base_url = None
793
+ url_variables = None
794
+ if timeout_ms is None:
795
+ timeout_ms = self.sdk_configuration.timeout_ms
796
+
797
+ if server_url is not None:
798
+ base_url = server_url
799
+ else:
800
+ base_url = self._get_url(base_url, url_variables)
801
+
802
+ request = models.GetWebhookRequest(
803
+ id=id,
804
+ testmode=testmode,
805
+ idempotency_key=idempotency_key,
806
+ )
807
+
808
+ req = self._build_request_async(
809
+ method="GET",
810
+ path="/webhooks/{id}",
811
+ base_url=base_url,
812
+ url_variables=url_variables,
813
+ request=request,
814
+ request_body_required=False,
815
+ request_has_path_params=True,
816
+ request_has_query_params=True,
817
+ user_agent_header="user-agent",
818
+ accept_header_value="application/hal+json",
819
+ http_headers=http_headers,
820
+ _globals=models.GetWebhookGlobals(
821
+ testmode=self.sdk_configuration.globals.testmode,
822
+ ),
823
+ security=self.sdk_configuration.security,
824
+ timeout_ms=timeout_ms,
825
+ )
826
+
827
+ if retries == UNSET:
828
+ if self.sdk_configuration.retry_config is not UNSET:
829
+ retries = self.sdk_configuration.retry_config
830
+ else:
831
+ retries = utils.RetryConfig(
832
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
833
+ )
834
+
835
+ retry_config = None
836
+ if isinstance(retries, utils.RetryConfig):
837
+ retry_config = (retries, ["5xx"])
838
+
839
+ http_res = await self.do_request_async(
840
+ hook_ctx=HookContext(
841
+ config=self.sdk_configuration,
842
+ base_url=base_url or "",
843
+ operation_id="get-webhook",
844
+ oauth2_scopes=None,
845
+ security_source=get_security_from_env(
846
+ self.sdk_configuration.security, models.Security
847
+ ),
848
+ ),
849
+ request=req,
850
+ error_status_codes=["404", "422", "4XX", "5XX"],
851
+ retry_config=retry_config,
852
+ )
853
+
854
+ response_data: Any = None
855
+ if utils.match_response(http_res, "200", "application/hal+json"):
856
+ return unmarshal_json_response(models.EntityWebhook, http_res)
857
+ if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
858
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
859
+ raise models.ErrorResponse(response_data, http_res)
860
+ if utils.match_response(http_res, "4XX", "*"):
861
+ http_res_text = await utils.stream_to_text_async(http_res)
862
+ raise models.APIError("API error occurred", http_res, http_res_text)
863
+ if utils.match_response(http_res, "5XX", "*"):
864
+ http_res_text = await utils.stream_to_text_async(http_res)
865
+ raise models.APIError("API error occurred", http_res, http_res_text)
866
+
867
+ raise models.APIError("Unexpected response received", http_res)
868
+
869
+ def delete(
870
+ self,
871
+ *,
872
+ id: str,
873
+ idempotency_key: Optional[str] = None,
874
+ request_body: Optional[
875
+ Union[
876
+ models.DeleteWebhookRequestBody,
877
+ models.DeleteWebhookRequestBodyTypedDict,
878
+ ]
879
+ ] = None,
880
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
881
+ server_url: Optional[str] = None,
882
+ timeout_ms: Optional[int] = None,
883
+ http_headers: Optional[Mapping[str, str]] = None,
884
+ ):
885
+ r"""Delete a webhook
886
+
887
+ Delete a single webhook object by its webhook ID.
888
+
889
+ :param id: Provide the ID of the item you want to perform this operation on.
890
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
891
+ :param request_body:
892
+ :param retries: Override the default retry configuration for this method
893
+ :param server_url: Override the default server URL for this method
894
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
895
+ :param http_headers: Additional headers to set or replace on requests.
896
+ """
897
+ base_url = None
898
+ url_variables = None
899
+ if timeout_ms is None:
900
+ timeout_ms = self.sdk_configuration.timeout_ms
901
+
902
+ if server_url is not None:
903
+ base_url = server_url
904
+ else:
905
+ base_url = self._get_url(base_url, url_variables)
906
+
907
+ request = models.DeleteWebhookRequest(
908
+ id=id,
909
+ idempotency_key=idempotency_key,
910
+ request_body=utils.get_pydantic_model(
911
+ request_body, Optional[models.DeleteWebhookRequestBody]
912
+ ),
913
+ )
914
+
915
+ req = self._build_request(
916
+ method="DELETE",
917
+ path="/webhooks/{id}",
918
+ base_url=base_url,
919
+ url_variables=url_variables,
920
+ request=request,
921
+ request_body_required=False,
922
+ request_has_path_params=True,
923
+ request_has_query_params=True,
924
+ user_agent_header="user-agent",
925
+ accept_header_value="application/hal+json",
926
+ http_headers=http_headers,
927
+ security=self.sdk_configuration.security,
928
+ get_serialized_body=lambda: utils.serialize_request_body(
929
+ request.request_body,
930
+ False,
931
+ True,
932
+ "json",
933
+ Optional[models.DeleteWebhookRequestBody],
934
+ ),
935
+ timeout_ms=timeout_ms,
936
+ )
937
+
938
+ if retries == UNSET:
939
+ if self.sdk_configuration.retry_config is not UNSET:
940
+ retries = self.sdk_configuration.retry_config
941
+ else:
942
+ retries = utils.RetryConfig(
943
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
944
+ )
945
+
946
+ retry_config = None
947
+ if isinstance(retries, utils.RetryConfig):
948
+ retry_config = (retries, ["5xx"])
949
+
950
+ http_res = self.do_request(
951
+ hook_ctx=HookContext(
952
+ config=self.sdk_configuration,
953
+ base_url=base_url or "",
954
+ operation_id="delete-webhook",
955
+ oauth2_scopes=None,
956
+ security_source=get_security_from_env(
957
+ self.sdk_configuration.security, models.Security
958
+ ),
959
+ ),
960
+ request=req,
961
+ error_status_codes=["404", "422", "4XX", "5XX"],
962
+ retry_config=retry_config,
963
+ )
964
+
965
+ response_data: Any = None
966
+ if utils.match_response(http_res, "204", "*"):
967
+ return
968
+ if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
969
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
970
+ raise models.ErrorResponse(response_data, http_res)
971
+ if utils.match_response(http_res, "4XX", "*"):
972
+ http_res_text = utils.stream_to_text(http_res)
973
+ raise models.APIError("API error occurred", http_res, http_res_text)
974
+ if utils.match_response(http_res, "5XX", "*"):
975
+ http_res_text = utils.stream_to_text(http_res)
976
+ raise models.APIError("API error occurred", http_res, http_res_text)
977
+
978
+ raise models.APIError("Unexpected response received", http_res)
979
+
980
+ async def delete_async(
981
+ self,
982
+ *,
983
+ id: str,
984
+ idempotency_key: Optional[str] = None,
985
+ request_body: Optional[
986
+ Union[
987
+ models.DeleteWebhookRequestBody,
988
+ models.DeleteWebhookRequestBodyTypedDict,
989
+ ]
990
+ ] = None,
991
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
992
+ server_url: Optional[str] = None,
993
+ timeout_ms: Optional[int] = None,
994
+ http_headers: Optional[Mapping[str, str]] = None,
995
+ ):
996
+ r"""Delete a webhook
997
+
998
+ Delete a single webhook object by its webhook ID.
999
+
1000
+ :param id: Provide the ID of the item you want to perform this operation on.
1001
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
1002
+ :param request_body:
1003
+ :param retries: Override the default retry configuration for this method
1004
+ :param server_url: Override the default server URL for this method
1005
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1006
+ :param http_headers: Additional headers to set or replace on requests.
1007
+ """
1008
+ base_url = None
1009
+ url_variables = None
1010
+ if timeout_ms is None:
1011
+ timeout_ms = self.sdk_configuration.timeout_ms
1012
+
1013
+ if server_url is not None:
1014
+ base_url = server_url
1015
+ else:
1016
+ base_url = self._get_url(base_url, url_variables)
1017
+
1018
+ request = models.DeleteWebhookRequest(
1019
+ id=id,
1020
+ idempotency_key=idempotency_key,
1021
+ request_body=utils.get_pydantic_model(
1022
+ request_body, Optional[models.DeleteWebhookRequestBody]
1023
+ ),
1024
+ )
1025
+
1026
+ req = self._build_request_async(
1027
+ method="DELETE",
1028
+ path="/webhooks/{id}",
1029
+ base_url=base_url,
1030
+ url_variables=url_variables,
1031
+ request=request,
1032
+ request_body_required=False,
1033
+ request_has_path_params=True,
1034
+ request_has_query_params=True,
1035
+ user_agent_header="user-agent",
1036
+ accept_header_value="application/hal+json",
1037
+ http_headers=http_headers,
1038
+ security=self.sdk_configuration.security,
1039
+ get_serialized_body=lambda: utils.serialize_request_body(
1040
+ request.request_body,
1041
+ False,
1042
+ True,
1043
+ "json",
1044
+ Optional[models.DeleteWebhookRequestBody],
1045
+ ),
1046
+ timeout_ms=timeout_ms,
1047
+ )
1048
+
1049
+ if retries == UNSET:
1050
+ if self.sdk_configuration.retry_config is not UNSET:
1051
+ retries = self.sdk_configuration.retry_config
1052
+ else:
1053
+ retries = utils.RetryConfig(
1054
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
1055
+ )
1056
+
1057
+ retry_config = None
1058
+ if isinstance(retries, utils.RetryConfig):
1059
+ retry_config = (retries, ["5xx"])
1060
+
1061
+ http_res = await self.do_request_async(
1062
+ hook_ctx=HookContext(
1063
+ config=self.sdk_configuration,
1064
+ base_url=base_url or "",
1065
+ operation_id="delete-webhook",
1066
+ oauth2_scopes=None,
1067
+ security_source=get_security_from_env(
1068
+ self.sdk_configuration.security, models.Security
1069
+ ),
1070
+ ),
1071
+ request=req,
1072
+ error_status_codes=["404", "422", "4XX", "5XX"],
1073
+ retry_config=retry_config,
1074
+ )
1075
+
1076
+ response_data: Any = None
1077
+ if utils.match_response(http_res, "204", "*"):
1078
+ return
1079
+ if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
1080
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
1081
+ raise models.ErrorResponse(response_data, http_res)
1082
+ if utils.match_response(http_res, "4XX", "*"):
1083
+ http_res_text = await utils.stream_to_text_async(http_res)
1084
+ raise models.APIError("API error occurred", http_res, http_res_text)
1085
+ if utils.match_response(http_res, "5XX", "*"):
1086
+ http_res_text = await utils.stream_to_text_async(http_res)
1087
+ raise models.APIError("API error occurred", http_res, http_res_text)
1088
+
1089
+ raise models.APIError("Unexpected response received", http_res)
1090
+
1091
+ def test(
1092
+ self,
1093
+ *,
1094
+ id: str,
1095
+ idempotency_key: Optional[str] = None,
1096
+ request_body: Optional[
1097
+ Union[models.TestWebhookRequestBody, models.TestWebhookRequestBodyTypedDict]
1098
+ ] = None,
1099
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1100
+ server_url: Optional[str] = None,
1101
+ timeout_ms: Optional[int] = None,
1102
+ http_headers: Optional[Mapping[str, str]] = None,
1103
+ ):
1104
+ r"""Test a webhook
1105
+
1106
+ Sends a test event to the webhook to verify the endpoint is working as expected.
1107
+
1108
+ :param id: Provide the ID of the item you want to perform this operation on.
1109
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
1110
+ :param request_body:
1111
+ :param retries: Override the default retry configuration for this method
1112
+ :param server_url: Override the default server URL for this method
1113
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1114
+ :param http_headers: Additional headers to set or replace on requests.
1115
+ """
1116
+ base_url = None
1117
+ url_variables = None
1118
+ if timeout_ms is None:
1119
+ timeout_ms = self.sdk_configuration.timeout_ms
1120
+
1121
+ if server_url is not None:
1122
+ base_url = server_url
1123
+ else:
1124
+ base_url = self._get_url(base_url, url_variables)
1125
+
1126
+ request = models.TestWebhookRequest(
1127
+ id=id,
1128
+ idempotency_key=idempotency_key,
1129
+ request_body=utils.get_pydantic_model(
1130
+ request_body, Optional[models.TestWebhookRequestBody]
1131
+ ),
1132
+ )
1133
+
1134
+ req = self._build_request(
1135
+ method="POST",
1136
+ path="/webhooks/{id}/ping",
1137
+ base_url=base_url,
1138
+ url_variables=url_variables,
1139
+ request=request,
1140
+ request_body_required=False,
1141
+ request_has_path_params=True,
1142
+ request_has_query_params=True,
1143
+ user_agent_header="user-agent",
1144
+ accept_header_value="application/hal+json",
1145
+ http_headers=http_headers,
1146
+ security=self.sdk_configuration.security,
1147
+ get_serialized_body=lambda: utils.serialize_request_body(
1148
+ request.request_body,
1149
+ False,
1150
+ True,
1151
+ "json",
1152
+ Optional[models.TestWebhookRequestBody],
1153
+ ),
1154
+ timeout_ms=timeout_ms,
1155
+ )
1156
+
1157
+ if retries == UNSET:
1158
+ if self.sdk_configuration.retry_config is not UNSET:
1159
+ retries = self.sdk_configuration.retry_config
1160
+ else:
1161
+ retries = utils.RetryConfig(
1162
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
1163
+ )
1164
+
1165
+ retry_config = None
1166
+ if isinstance(retries, utils.RetryConfig):
1167
+ retry_config = (retries, ["5xx"])
1168
+
1169
+ http_res = self.do_request(
1170
+ hook_ctx=HookContext(
1171
+ config=self.sdk_configuration,
1172
+ base_url=base_url or "",
1173
+ operation_id="test-webhook",
1174
+ oauth2_scopes=None,
1175
+ security_source=get_security_from_env(
1176
+ self.sdk_configuration.security, models.Security
1177
+ ),
1178
+ ),
1179
+ request=req,
1180
+ error_status_codes=["404", "422", "4XX", "5XX"],
1181
+ retry_config=retry_config,
1182
+ )
1183
+
1184
+ response_data: Any = None
1185
+ if utils.match_response(http_res, "202", "*"):
1186
+ return
1187
+ if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
1188
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
1189
+ raise models.ErrorResponse(response_data, http_res)
1190
+ if utils.match_response(http_res, "4XX", "*"):
1191
+ http_res_text = utils.stream_to_text(http_res)
1192
+ raise models.APIError("API error occurred", http_res, http_res_text)
1193
+ if utils.match_response(http_res, "5XX", "*"):
1194
+ http_res_text = utils.stream_to_text(http_res)
1195
+ raise models.APIError("API error occurred", http_res, http_res_text)
1196
+
1197
+ raise models.APIError("Unexpected response received", http_res)
1198
+
1199
+ async def test_async(
1200
+ self,
1201
+ *,
1202
+ id: str,
1203
+ idempotency_key: Optional[str] = None,
1204
+ request_body: Optional[
1205
+ Union[models.TestWebhookRequestBody, models.TestWebhookRequestBodyTypedDict]
1206
+ ] = None,
1207
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1208
+ server_url: Optional[str] = None,
1209
+ timeout_ms: Optional[int] = None,
1210
+ http_headers: Optional[Mapping[str, str]] = None,
1211
+ ):
1212
+ r"""Test a webhook
1213
+
1214
+ Sends a test event to the webhook to verify the endpoint is working as expected.
1215
+
1216
+ :param id: Provide the ID of the item you want to perform this operation on.
1217
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
1218
+ :param request_body:
1219
+ :param retries: Override the default retry configuration for this method
1220
+ :param server_url: Override the default server URL for this method
1221
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1222
+ :param http_headers: Additional headers to set or replace on requests.
1223
+ """
1224
+ base_url = None
1225
+ url_variables = None
1226
+ if timeout_ms is None:
1227
+ timeout_ms = self.sdk_configuration.timeout_ms
1228
+
1229
+ if server_url is not None:
1230
+ base_url = server_url
1231
+ else:
1232
+ base_url = self._get_url(base_url, url_variables)
1233
+
1234
+ request = models.TestWebhookRequest(
1235
+ id=id,
1236
+ idempotency_key=idempotency_key,
1237
+ request_body=utils.get_pydantic_model(
1238
+ request_body, Optional[models.TestWebhookRequestBody]
1239
+ ),
1240
+ )
1241
+
1242
+ req = self._build_request_async(
1243
+ method="POST",
1244
+ path="/webhooks/{id}/ping",
1245
+ base_url=base_url,
1246
+ url_variables=url_variables,
1247
+ request=request,
1248
+ request_body_required=False,
1249
+ request_has_path_params=True,
1250
+ request_has_query_params=True,
1251
+ user_agent_header="user-agent",
1252
+ accept_header_value="application/hal+json",
1253
+ http_headers=http_headers,
1254
+ security=self.sdk_configuration.security,
1255
+ get_serialized_body=lambda: utils.serialize_request_body(
1256
+ request.request_body,
1257
+ False,
1258
+ True,
1259
+ "json",
1260
+ Optional[models.TestWebhookRequestBody],
1261
+ ),
1262
+ timeout_ms=timeout_ms,
1263
+ )
1264
+
1265
+ if retries == UNSET:
1266
+ if self.sdk_configuration.retry_config is not UNSET:
1267
+ retries = self.sdk_configuration.retry_config
1268
+ else:
1269
+ retries = utils.RetryConfig(
1270
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
1271
+ )
1272
+
1273
+ retry_config = None
1274
+ if isinstance(retries, utils.RetryConfig):
1275
+ retry_config = (retries, ["5xx"])
1276
+
1277
+ http_res = await self.do_request_async(
1278
+ hook_ctx=HookContext(
1279
+ config=self.sdk_configuration,
1280
+ base_url=base_url or "",
1281
+ operation_id="test-webhook",
1282
+ oauth2_scopes=None,
1283
+ security_source=get_security_from_env(
1284
+ self.sdk_configuration.security, models.Security
1285
+ ),
1286
+ ),
1287
+ request=req,
1288
+ error_status_codes=["404", "422", "4XX", "5XX"],
1289
+ retry_config=retry_config,
1290
+ )
1291
+
1292
+ response_data: Any = None
1293
+ if utils.match_response(http_res, "202", "*"):
1294
+ return
1295
+ if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
1296
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
1297
+ raise models.ErrorResponse(response_data, http_res)
1298
+ if utils.match_response(http_res, "4XX", "*"):
1299
+ http_res_text = await utils.stream_to_text_async(http_res)
1300
+ raise models.APIError("API error occurred", http_res, http_res_text)
1301
+ if utils.match_response(http_res, "5XX", "*"):
1302
+ http_res_text = await utils.stream_to_text_async(http_res)
1303
+ raise models.APIError("API error occurred", http_res, http_res_text)
1304
+
1305
+ raise models.APIError("Unexpected response received", http_res)