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/client_links.py ADDED
@@ -0,0 +1,325 @@
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 ClientLinks(BaseSDK):
13
+ def create(
14
+ self,
15
+ *,
16
+ idempotency_key: Optional[str] = None,
17
+ client_link_request: Optional[
18
+ Union[models.ClientLinkRequest, models.ClientLinkRequestTypedDict]
19
+ ] = None,
20
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
21
+ server_url: Optional[str] = None,
22
+ timeout_ms: Optional[int] = None,
23
+ http_headers: Optional[Mapping[str, str]] = None,
24
+ ) -> models.ClientLinkResponse:
25
+ r"""Create client link
26
+
27
+ Link a new or existing organization to your OAuth application, in effect creating a new client. The response
28
+ contains a `clientLink` where you should redirect your customer to.
29
+
30
+ ## Redirecting the Customer
31
+
32
+ The `clientLink` URL behaves similarly to a standard OAuth authorization URL. Therefore, after receiving the
33
+ `clientLink` URL in the API response, you need to **append the following query parameters** *before* redirecting
34
+ the customer:
35
+
36
+ * `client_id` _string (required)_
37
+
38
+ The client ID you received when you registered your OAuth app. The ID starts with `app_`. For example:
39
+ `app_abc123qwerty`.
40
+
41
+ * `state` _string (required)_
42
+
43
+ A random string **generated by your app** to prevent CSRF attacks. This will be reflected in the `state` query
44
+ parameter when the user returns to the `redirect_uri` after authorizing your app.
45
+
46
+ * `scope` _string (required)_
47
+
48
+ A space-separated list of permissions ('scopes') your app requires. See the
49
+ [permissions list](https://docs.mollie.com/docs/connect-permissions) for more information about the available
50
+ scopes.
51
+
52
+ We recommend at least : `onboarding.read onboarding.write`
53
+
54
+ * `approval_prompt` _string_
55
+
56
+ Can be set to `force` to force showing the consent screen to the merchant, *even when it is not necessary*. If you
57
+ force an approval prompt and the user creates a new authorization, previously active authorizations will be
58
+ revoked.
59
+
60
+ Possible values: `auto` `force` (default: `auto`)
61
+
62
+ ### Example of a Complete Redirect URL
63
+
64
+ After adding the above url parameter your URL will look something like this and you can redirect your client to this
65
+ page:
66
+
67
+ ```
68
+ https://my.mollie.com/dashboard/client-link/{id}?client_id={your_client_id}&state={unique_state}&scope=onboarding.read%20onboarding.write
69
+ ```
70
+
71
+ ## Error Handling
72
+
73
+ Error handling is also dealt with similar to the [Authorize](https://docs.mollie.com/reference/authorize) endpoint:
74
+ the customer is redirected back to your app's redirect URL with the `error` and `error_description` parameters added
75
+ to the URL.
76
+
77
+ > 🚧
78
+ >
79
+ > A client link must be used within 30 days of creation. After that period, it will expire and you will need to create a new client link.
80
+
81
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
82
+ :param client_link_request:
83
+ :param retries: Override the default retry configuration for this method
84
+ :param server_url: Override the default server URL for this method
85
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
86
+ :param http_headers: Additional headers to set or replace on requests.
87
+ """
88
+ base_url = None
89
+ url_variables = None
90
+ if timeout_ms is None:
91
+ timeout_ms = self.sdk_configuration.timeout_ms
92
+
93
+ if server_url is not None:
94
+ base_url = server_url
95
+ else:
96
+ base_url = self._get_url(base_url, url_variables)
97
+
98
+ request = models.CreateClientLinkRequest(
99
+ idempotency_key=idempotency_key,
100
+ client_link_request=utils.get_pydantic_model(
101
+ client_link_request, Optional[models.ClientLinkRequest]
102
+ ),
103
+ )
104
+
105
+ req = self._build_request(
106
+ method="POST",
107
+ path="/client-links",
108
+ base_url=base_url,
109
+ url_variables=url_variables,
110
+ request=request,
111
+ request_body_required=False,
112
+ request_has_path_params=False,
113
+ request_has_query_params=True,
114
+ user_agent_header="user-agent",
115
+ accept_header_value="application/hal+json",
116
+ http_headers=http_headers,
117
+ security=self.sdk_configuration.security,
118
+ get_serialized_body=lambda: utils.serialize_request_body(
119
+ request.client_link_request,
120
+ False,
121
+ True,
122
+ "json",
123
+ Optional[models.ClientLinkRequest],
124
+ ),
125
+ timeout_ms=timeout_ms,
126
+ )
127
+
128
+ if retries == UNSET:
129
+ if self.sdk_configuration.retry_config is not UNSET:
130
+ retries = self.sdk_configuration.retry_config
131
+ else:
132
+ retries = utils.RetryConfig(
133
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
134
+ )
135
+
136
+ retry_config = None
137
+ if isinstance(retries, utils.RetryConfig):
138
+ retry_config = (retries, ["5xx"])
139
+
140
+ http_res = self.do_request(
141
+ hook_ctx=HookContext(
142
+ config=self.sdk_configuration,
143
+ base_url=base_url or "",
144
+ operation_id="create-client-link",
145
+ oauth2_scopes=None,
146
+ security_source=get_security_from_env(
147
+ self.sdk_configuration.security, models.Security
148
+ ),
149
+ ),
150
+ request=req,
151
+ error_status_codes=["404", "422", "4XX", "5XX"],
152
+ retry_config=retry_config,
153
+ )
154
+
155
+ response_data: Any = None
156
+ if utils.match_response(http_res, "201", "application/hal+json"):
157
+ return unmarshal_json_response(models.ClientLinkResponse, http_res)
158
+ if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
159
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
160
+ raise models.ErrorResponse(response_data, http_res)
161
+ if utils.match_response(http_res, "4XX", "*"):
162
+ http_res_text = utils.stream_to_text(http_res)
163
+ raise models.APIError("API error occurred", http_res, http_res_text)
164
+ if utils.match_response(http_res, "5XX", "*"):
165
+ http_res_text = utils.stream_to_text(http_res)
166
+ raise models.APIError("API error occurred", http_res, http_res_text)
167
+
168
+ raise models.APIError("Unexpected response received", http_res)
169
+
170
+ async def create_async(
171
+ self,
172
+ *,
173
+ idempotency_key: Optional[str] = None,
174
+ client_link_request: Optional[
175
+ Union[models.ClientLinkRequest, models.ClientLinkRequestTypedDict]
176
+ ] = None,
177
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
178
+ server_url: Optional[str] = None,
179
+ timeout_ms: Optional[int] = None,
180
+ http_headers: Optional[Mapping[str, str]] = None,
181
+ ) -> models.ClientLinkResponse:
182
+ r"""Create client link
183
+
184
+ Link a new or existing organization to your OAuth application, in effect creating a new client. The response
185
+ contains a `clientLink` where you should redirect your customer to.
186
+
187
+ ## Redirecting the Customer
188
+
189
+ The `clientLink` URL behaves similarly to a standard OAuth authorization URL. Therefore, after receiving the
190
+ `clientLink` URL in the API response, you need to **append the following query parameters** *before* redirecting
191
+ the customer:
192
+
193
+ * `client_id` _string (required)_
194
+
195
+ The client ID you received when you registered your OAuth app. The ID starts with `app_`. For example:
196
+ `app_abc123qwerty`.
197
+
198
+ * `state` _string (required)_
199
+
200
+ A random string **generated by your app** to prevent CSRF attacks. This will be reflected in the `state` query
201
+ parameter when the user returns to the `redirect_uri` after authorizing your app.
202
+
203
+ * `scope` _string (required)_
204
+
205
+ A space-separated list of permissions ('scopes') your app requires. See the
206
+ [permissions list](https://docs.mollie.com/docs/connect-permissions) for more information about the available
207
+ scopes.
208
+
209
+ We recommend at least : `onboarding.read onboarding.write`
210
+
211
+ * `approval_prompt` _string_
212
+
213
+ Can be set to `force` to force showing the consent screen to the merchant, *even when it is not necessary*. If you
214
+ force an approval prompt and the user creates a new authorization, previously active authorizations will be
215
+ revoked.
216
+
217
+ Possible values: `auto` `force` (default: `auto`)
218
+
219
+ ### Example of a Complete Redirect URL
220
+
221
+ After adding the above url parameter your URL will look something like this and you can redirect your client to this
222
+ page:
223
+
224
+ ```
225
+ https://my.mollie.com/dashboard/client-link/{id}?client_id={your_client_id}&state={unique_state}&scope=onboarding.read%20onboarding.write
226
+ ```
227
+
228
+ ## Error Handling
229
+
230
+ Error handling is also dealt with similar to the [Authorize](https://docs.mollie.com/reference/authorize) endpoint:
231
+ the customer is redirected back to your app's redirect URL with the `error` and `error_description` parameters added
232
+ to the URL.
233
+
234
+ > 🚧
235
+ >
236
+ > A client link must be used within 30 days of creation. After that period, it will expire and you will need to create a new client link.
237
+
238
+ :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
239
+ :param client_link_request:
240
+ :param retries: Override the default retry configuration for this method
241
+ :param server_url: Override the default server URL for this method
242
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
243
+ :param http_headers: Additional headers to set or replace on requests.
244
+ """
245
+ base_url = None
246
+ url_variables = None
247
+ if timeout_ms is None:
248
+ timeout_ms = self.sdk_configuration.timeout_ms
249
+
250
+ if server_url is not None:
251
+ base_url = server_url
252
+ else:
253
+ base_url = self._get_url(base_url, url_variables)
254
+
255
+ request = models.CreateClientLinkRequest(
256
+ idempotency_key=idempotency_key,
257
+ client_link_request=utils.get_pydantic_model(
258
+ client_link_request, Optional[models.ClientLinkRequest]
259
+ ),
260
+ )
261
+
262
+ req = self._build_request_async(
263
+ method="POST",
264
+ path="/client-links",
265
+ base_url=base_url,
266
+ url_variables=url_variables,
267
+ request=request,
268
+ request_body_required=False,
269
+ request_has_path_params=False,
270
+ request_has_query_params=True,
271
+ user_agent_header="user-agent",
272
+ accept_header_value="application/hal+json",
273
+ http_headers=http_headers,
274
+ security=self.sdk_configuration.security,
275
+ get_serialized_body=lambda: utils.serialize_request_body(
276
+ request.client_link_request,
277
+ False,
278
+ True,
279
+ "json",
280
+ Optional[models.ClientLinkRequest],
281
+ ),
282
+ timeout_ms=timeout_ms,
283
+ )
284
+
285
+ if retries == UNSET:
286
+ if self.sdk_configuration.retry_config is not UNSET:
287
+ retries = self.sdk_configuration.retry_config
288
+ else:
289
+ retries = utils.RetryConfig(
290
+ "backoff", utils.BackoffStrategy(500, 5000, 2, 7500), True
291
+ )
292
+
293
+ retry_config = None
294
+ if isinstance(retries, utils.RetryConfig):
295
+ retry_config = (retries, ["5xx"])
296
+
297
+ http_res = await self.do_request_async(
298
+ hook_ctx=HookContext(
299
+ config=self.sdk_configuration,
300
+ base_url=base_url or "",
301
+ operation_id="create-client-link",
302
+ oauth2_scopes=None,
303
+ security_source=get_security_from_env(
304
+ self.sdk_configuration.security, models.Security
305
+ ),
306
+ ),
307
+ request=req,
308
+ error_status_codes=["404", "422", "4XX", "5XX"],
309
+ retry_config=retry_config,
310
+ )
311
+
312
+ response_data: Any = None
313
+ if utils.match_response(http_res, "201", "application/hal+json"):
314
+ return unmarshal_json_response(models.ClientLinkResponse, http_res)
315
+ if utils.match_response(http_res, ["404", "422"], "application/hal+json"):
316
+ response_data = unmarshal_json_response(models.ErrorResponseData, http_res)
317
+ raise models.ErrorResponse(response_data, http_res)
318
+ if utils.match_response(http_res, "4XX", "*"):
319
+ http_res_text = await utils.stream_to_text_async(http_res)
320
+ raise models.APIError("API error occurred", http_res, http_res_text)
321
+ if utils.match_response(http_res, "5XX", "*"):
322
+ http_res_text = await utils.stream_to_text_async(http_res)
323
+ raise models.APIError("API error occurred", http_res, http_res_text)
324
+
325
+ raise models.APIError("Unexpected response received", http_res)