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
@@ -0,0 +1,96 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .amount import Amount, AmountTypedDict
5
+ from .route_destination_type_response import RouteDestinationTypeResponse
6
+ from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
7
+ from mollie.utils import validate_open_enum
8
+ import pydantic
9
+ from pydantic import model_serializer
10
+ from pydantic.functional_validators import PlainValidator
11
+ from typing import Optional
12
+ from typing_extensions import Annotated, NotRequired, TypedDict
13
+
14
+
15
+ class EntityRouteDestinationTypedDict(TypedDict):
16
+ r"""The destination of the route."""
17
+
18
+ type: RouteDestinationTypeResponse
19
+ r"""The type of destination. Currently only the destination type `organization` is supported."""
20
+ organization_id: str
21
+
22
+
23
+ class EntityRouteDestination(BaseModel):
24
+ r"""The destination of the route."""
25
+
26
+ type: Annotated[
27
+ RouteDestinationTypeResponse, PlainValidator(validate_open_enum(False))
28
+ ]
29
+ r"""The type of destination. Currently only the destination type `organization` is supported."""
30
+
31
+ organization_id: Annotated[str, pydantic.Field(alias="organizationId")]
32
+
33
+
34
+ class EntityRouteTypedDict(TypedDict):
35
+ amount: NotRequired[AmountTypedDict]
36
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
37
+ description: NotRequired[str]
38
+ r"""The description of the route. This description is shown in the reports."""
39
+ destination: NotRequired[EntityRouteDestinationTypedDict]
40
+ r"""The destination of the route."""
41
+ testmode: NotRequired[Nullable[bool]]
42
+ r"""Whether to create the entity in test mode or live mode.
43
+
44
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
45
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
46
+ `testmode` to `true`.
47
+ """
48
+
49
+
50
+ class EntityRoute(BaseModel):
51
+ amount: Optional[Amount] = None
52
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
53
+
54
+ description: Optional[str] = None
55
+ r"""The description of the route. This description is shown in the reports."""
56
+
57
+ destination: Optional[EntityRouteDestination] = None
58
+ r"""The destination of the route."""
59
+
60
+ testmode: OptionalNullable[bool] = UNSET
61
+ r"""Whether to create the entity in test mode or live mode.
62
+
63
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
64
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
65
+ `testmode` to `true`.
66
+ """
67
+
68
+ @model_serializer(mode="wrap")
69
+ def serialize_model(self, handler):
70
+ optional_fields = ["amount", "description", "destination", "testmode"]
71
+ nullable_fields = ["testmode"]
72
+ null_default_fields = []
73
+
74
+ serialized = handler(self)
75
+
76
+ m = {}
77
+
78
+ for n, f in type(self).model_fields.items():
79
+ k = f.alias or n
80
+ val = serialized.get(k)
81
+ serialized.pop(k, None)
82
+
83
+ optional_nullable = k in optional_fields and k in nullable_fields
84
+ is_set = (
85
+ self.__pydantic_fields_set__.intersection({n})
86
+ or k in null_default_fields
87
+ ) # pylint: disable=no-member
88
+
89
+ if val is not None and val != UNSET_SENTINEL:
90
+ m[k] = val
91
+ elif val != UNSET_SENTINEL and (
92
+ not k in optional_fields or (optional_nullable and is_set)
93
+ ):
94
+ m[k] = val
95
+
96
+ return m
@@ -0,0 +1,467 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .amount import Amount, AmountTypedDict
5
+ from .amount_nullable import AmountNullable, AmountNullableTypedDict
6
+ from .payment_method import PaymentMethod
7
+ from .url import URL, URLTypedDict
8
+ from .url_nullable import URLNullable, URLNullableTypedDict
9
+ from enum import Enum
10
+ from mollie import utils
11
+ from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
12
+ from mollie.utils import validate_open_enum
13
+ import pydantic
14
+ from pydantic import model_serializer
15
+ from pydantic.functional_validators import PlainValidator
16
+ from typing import Dict, List, Optional
17
+ from typing_extensions import Annotated, NotRequired, TypedDict
18
+
19
+
20
+ class EntitySettlementStatus(str, Enum, metaclass=utils.OpenEnumMeta):
21
+ r"""The status of the settlement."""
22
+
23
+ OPEN = "open"
24
+ PENDING = "pending"
25
+ PAIDOUT = "paidout"
26
+ FAILED = "failed"
27
+
28
+
29
+ class EntitySettlementAmountTypedDict(TypedDict):
30
+ r"""The total amount of the settlement."""
31
+
32
+ currency: str
33
+ r"""A three-character ISO 4217 currency code."""
34
+ value: str
35
+ r"""A string containing an exact monetary amount in the given currency."""
36
+
37
+
38
+ class EntitySettlementAmount(BaseModel):
39
+ r"""The total amount of the settlement."""
40
+
41
+ currency: str
42
+ r"""A three-character ISO 4217 currency code."""
43
+
44
+ value: str
45
+ r"""A string containing an exact monetary amount in the given currency."""
46
+
47
+
48
+ class EntitySettlementRateTypedDict(TypedDict):
49
+ r"""The service rates, further divided into `fixed` and `percentage` costs."""
50
+
51
+ fixed: NotRequired[AmountTypedDict]
52
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
53
+ percentage: NotRequired[str]
54
+
55
+
56
+ class EntitySettlementRate(BaseModel):
57
+ r"""The service rates, further divided into `fixed` and `percentage` costs."""
58
+
59
+ fixed: Optional[Amount] = None
60
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
61
+
62
+ percentage: Optional[str] = None
63
+
64
+
65
+ class EntitySettlementCostTypedDict(TypedDict):
66
+ description: str
67
+ r"""A description of the cost subtotal"""
68
+ method: Nullable[PaymentMethod]
69
+ r"""The payment method, if applicable"""
70
+ count: int
71
+ r"""The number of fees"""
72
+ rate: EntitySettlementRateTypedDict
73
+ r"""The service rates, further divided into `fixed` and `percentage` costs."""
74
+ amount_net: AmountTypedDict
75
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
76
+ amount_vat: Nullable[AmountNullableTypedDict]
77
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
78
+ amount_gross: AmountTypedDict
79
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
80
+
81
+
82
+ class EntitySettlementCost(BaseModel):
83
+ description: str
84
+ r"""A description of the cost subtotal"""
85
+
86
+ method: Annotated[
87
+ Nullable[PaymentMethod], PlainValidator(validate_open_enum(False))
88
+ ]
89
+ r"""The payment method, if applicable"""
90
+
91
+ count: int
92
+ r"""The number of fees"""
93
+
94
+ rate: EntitySettlementRate
95
+ r"""The service rates, further divided into `fixed` and `percentage` costs."""
96
+
97
+ amount_net: Annotated[Amount, pydantic.Field(alias="amountNet")]
98
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
99
+
100
+ amount_vat: Annotated[Nullable[AmountNullable], pydantic.Field(alias="amountVat")]
101
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
102
+
103
+ amount_gross: Annotated[Amount, pydantic.Field(alias="amountGross")]
104
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
105
+
106
+ @model_serializer(mode="wrap")
107
+ def serialize_model(self, handler):
108
+ optional_fields = []
109
+ nullable_fields = ["method", "amountVat"]
110
+ null_default_fields = []
111
+
112
+ serialized = handler(self)
113
+
114
+ m = {}
115
+
116
+ for n, f in type(self).model_fields.items():
117
+ k = f.alias or n
118
+ val = serialized.get(k)
119
+ serialized.pop(k, None)
120
+
121
+ optional_nullable = k in optional_fields and k in nullable_fields
122
+ is_set = (
123
+ self.__pydantic_fields_set__.intersection({n})
124
+ or k in null_default_fields
125
+ ) # pylint: disable=no-member
126
+
127
+ if val is not None and val != UNSET_SENTINEL:
128
+ m[k] = val
129
+ elif val != UNSET_SENTINEL and (
130
+ not k in optional_fields or (optional_nullable and is_set)
131
+ ):
132
+ m[k] = val
133
+
134
+ return m
135
+
136
+
137
+ class EntitySettlementRevenueTypedDict(TypedDict):
138
+ description: str
139
+ r"""A description of the revenue subtotal"""
140
+ method: Nullable[PaymentMethod]
141
+ r"""The payment method, if applicable"""
142
+ count: int
143
+ r"""The number of payments"""
144
+ amount_net: AmountTypedDict
145
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
146
+ amount_vat: Nullable[AmountNullableTypedDict]
147
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
148
+ amount_gross: AmountTypedDict
149
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
150
+
151
+
152
+ class EntitySettlementRevenue(BaseModel):
153
+ description: str
154
+ r"""A description of the revenue subtotal"""
155
+
156
+ method: Annotated[
157
+ Nullable[PaymentMethod], PlainValidator(validate_open_enum(False))
158
+ ]
159
+ r"""The payment method, if applicable"""
160
+
161
+ count: int
162
+ r"""The number of payments"""
163
+
164
+ amount_net: Annotated[Amount, pydantic.Field(alias="amountNet")]
165
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
166
+
167
+ amount_vat: Annotated[Nullable[AmountNullable], pydantic.Field(alias="amountVat")]
168
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
169
+
170
+ amount_gross: Annotated[Amount, pydantic.Field(alias="amountGross")]
171
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
172
+
173
+ @model_serializer(mode="wrap")
174
+ def serialize_model(self, handler):
175
+ optional_fields = []
176
+ nullable_fields = ["method", "amountVat"]
177
+ null_default_fields = []
178
+
179
+ serialized = handler(self)
180
+
181
+ m = {}
182
+
183
+ for n, f in type(self).model_fields.items():
184
+ k = f.alias or n
185
+ val = serialized.get(k)
186
+ serialized.pop(k, None)
187
+
188
+ optional_nullable = k in optional_fields and k in nullable_fields
189
+ is_set = (
190
+ self.__pydantic_fields_set__.intersection({n})
191
+ or k in null_default_fields
192
+ ) # pylint: disable=no-member
193
+
194
+ if val is not None and val != UNSET_SENTINEL:
195
+ m[k] = val
196
+ elif val != UNSET_SENTINEL and (
197
+ not k in optional_fields or (optional_nullable and is_set)
198
+ ):
199
+ m[k] = val
200
+
201
+ return m
202
+
203
+
204
+ class EntitySettlementPeriodsTypedDict(TypedDict):
205
+ costs: NotRequired[List[EntitySettlementCostTypedDict]]
206
+ r"""An array of cost objects, describing the fees withheld for each payment method during this period."""
207
+ revenue: NotRequired[List[EntitySettlementRevenueTypedDict]]
208
+ r"""An array of revenue objects containing the total revenue for each payment method during this period."""
209
+ invoice_id: NotRequired[str]
210
+ invoice_reference: NotRequired[Nullable[str]]
211
+ r"""The invoice reference, if the invoice has been created already."""
212
+
213
+
214
+ class EntitySettlementPeriods(BaseModel):
215
+ costs: Optional[List[EntitySettlementCost]] = None
216
+ r"""An array of cost objects, describing the fees withheld for each payment method during this period."""
217
+
218
+ revenue: Optional[List[EntitySettlementRevenue]] = None
219
+ r"""An array of revenue objects containing the total revenue for each payment method during this period."""
220
+
221
+ invoice_id: Annotated[Optional[str], pydantic.Field(alias="invoiceId")] = None
222
+
223
+ invoice_reference: Annotated[
224
+ OptionalNullable[str], pydantic.Field(alias="invoiceReference")
225
+ ] = UNSET
226
+ r"""The invoice reference, if the invoice has been created already."""
227
+
228
+ @model_serializer(mode="wrap")
229
+ def serialize_model(self, handler):
230
+ optional_fields = ["costs", "revenue", "invoiceId", "invoiceReference"]
231
+ nullable_fields = ["invoiceReference"]
232
+ null_default_fields = []
233
+
234
+ serialized = handler(self)
235
+
236
+ m = {}
237
+
238
+ for n, f in type(self).model_fields.items():
239
+ k = f.alias or n
240
+ val = serialized.get(k)
241
+ serialized.pop(k, None)
242
+
243
+ optional_nullable = k in optional_fields and k in nullable_fields
244
+ is_set = (
245
+ self.__pydantic_fields_set__.intersection({n})
246
+ or k in null_default_fields
247
+ ) # pylint: disable=no-member
248
+
249
+ if val is not None and val != UNSET_SENTINEL:
250
+ m[k] = val
251
+ elif val != UNSET_SENTINEL and (
252
+ not k in optional_fields or (optional_nullable and is_set)
253
+ ):
254
+ m[k] = val
255
+
256
+ return m
257
+
258
+
259
+ class EntitySettlementLinksTypedDict(TypedDict):
260
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
261
+
262
+ self_: URLTypedDict
263
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
264
+ payments: NotRequired[URLTypedDict]
265
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
266
+ captures: NotRequired[URLTypedDict]
267
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
268
+ refunds: NotRequired[URLTypedDict]
269
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
270
+ chargebacks: NotRequired[URLTypedDict]
271
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
272
+ invoice: NotRequired[Nullable[URLNullableTypedDict]]
273
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
274
+ documentation: NotRequired[URLTypedDict]
275
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
276
+
277
+
278
+ class EntitySettlementLinks(BaseModel):
279
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
280
+
281
+ self_: Annotated[URL, pydantic.Field(alias="self")]
282
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
283
+
284
+ payments: Optional[URL] = None
285
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
286
+
287
+ captures: Optional[URL] = None
288
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
289
+
290
+ refunds: Optional[URL] = None
291
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
292
+
293
+ chargebacks: Optional[URL] = None
294
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
295
+
296
+ invoice: OptionalNullable[URLNullable] = UNSET
297
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
298
+
299
+ documentation: Optional[URL] = None
300
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
301
+
302
+ @model_serializer(mode="wrap")
303
+ def serialize_model(self, handler):
304
+ optional_fields = [
305
+ "payments",
306
+ "captures",
307
+ "refunds",
308
+ "chargebacks",
309
+ "invoice",
310
+ "documentation",
311
+ ]
312
+ nullable_fields = ["invoice"]
313
+ null_default_fields = []
314
+
315
+ serialized = handler(self)
316
+
317
+ m = {}
318
+
319
+ for n, f in type(self).model_fields.items():
320
+ k = f.alias or n
321
+ val = serialized.get(k)
322
+ serialized.pop(k, None)
323
+
324
+ optional_nullable = k in optional_fields and k in nullable_fields
325
+ is_set = (
326
+ self.__pydantic_fields_set__.intersection({n})
327
+ or k in null_default_fields
328
+ ) # pylint: disable=no-member
329
+
330
+ if val is not None and val != UNSET_SENTINEL:
331
+ m[k] = val
332
+ elif val != UNSET_SENTINEL and (
333
+ not k in optional_fields or (optional_nullable and is_set)
334
+ ):
335
+ m[k] = val
336
+
337
+ return m
338
+
339
+
340
+ class EntitySettlementTypedDict(TypedDict):
341
+ resource: str
342
+ r"""Indicates the response contains a settlement object. Will always contain the string `settlement` for this
343
+ endpoint.
344
+ """
345
+ id: str
346
+ r"""The identifier uniquely referring to this settlement."""
347
+ status: EntitySettlementStatus
348
+ amount: EntitySettlementAmountTypedDict
349
+ r"""The total amount of the settlement."""
350
+ balance_id: str
351
+ r"""The balance token that the settlement was settled to."""
352
+ links: EntitySettlementLinksTypedDict
353
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
354
+ created_at: NotRequired[str]
355
+ r"""The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."""
356
+ reference: NotRequired[Nullable[str]]
357
+ r"""The settlement's bank reference, as found in your Mollie account and on your bank statement."""
358
+ settled_at: NotRequired[Nullable[str]]
359
+ r"""The date on which the settlement was settled, in ISO 8601 format.
360
+
361
+ For an [open settlement](get-open-settlement) or for the [next settlement](get-next-settlement), no settlement
362
+ date is available.
363
+ """
364
+ invoice_id: NotRequired[Nullable[str]]
365
+ r"""The ID of the oldest invoice created for all the periods, if the invoice has been created yet."""
366
+ periods: NotRequired[Dict[str, Dict[str, EntitySettlementPeriodsTypedDict]]]
367
+ r"""For bookkeeping purposes, the settlement includes an overview of transactions included in the settlement. These
368
+ transactions are grouped into 'period' objects — one for each calendar month.
369
+
370
+ For example, if a settlement includes funds from 15 April until 4 May, it will include two period objects. One for
371
+ all transactions processed between 15 April and 30 April, and one for all transactions between 1 May and 4 May.
372
+
373
+ Period objects are grouped by year, and then by month. So in the above example, the full `periods` collection will
374
+ look as follows: `{\"2024\": {\"04\": {...}, \"05\": {...}}}`. The year and month in this documentation are referred as `<year>` and `<month>`.
375
+
376
+ The example response should give a good idea of what this looks like in practise.
377
+ """
378
+
379
+
380
+ class EntitySettlement(BaseModel):
381
+ resource: str
382
+ r"""Indicates the response contains a settlement object. Will always contain the string `settlement` for this
383
+ endpoint.
384
+ """
385
+
386
+ id: str
387
+ r"""The identifier uniquely referring to this settlement."""
388
+
389
+ status: Annotated[EntitySettlementStatus, PlainValidator(validate_open_enum(False))]
390
+
391
+ amount: EntitySettlementAmount
392
+ r"""The total amount of the settlement."""
393
+
394
+ balance_id: Annotated[str, pydantic.Field(alias="balanceId")]
395
+ r"""The balance token that the settlement was settled to."""
396
+
397
+ links: Annotated[EntitySettlementLinks, pydantic.Field(alias="_links")]
398
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
399
+
400
+ created_at: Annotated[Optional[str], pydantic.Field(alias="createdAt")] = None
401
+ r"""The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."""
402
+
403
+ reference: OptionalNullable[str] = UNSET
404
+ r"""The settlement's bank reference, as found in your Mollie account and on your bank statement."""
405
+
406
+ settled_at: Annotated[OptionalNullable[str], pydantic.Field(alias="settledAt")] = (
407
+ UNSET
408
+ )
409
+ r"""The date on which the settlement was settled, in ISO 8601 format.
410
+
411
+ For an [open settlement](get-open-settlement) or for the [next settlement](get-next-settlement), no settlement
412
+ date is available.
413
+ """
414
+
415
+ invoice_id: Annotated[OptionalNullable[str], pydantic.Field(alias="invoiceId")] = (
416
+ UNSET
417
+ )
418
+ r"""The ID of the oldest invoice created for all the periods, if the invoice has been created yet."""
419
+
420
+ periods: Optional[Dict[str, Dict[str, EntitySettlementPeriods]]] = None
421
+ r"""For bookkeeping purposes, the settlement includes an overview of transactions included in the settlement. These
422
+ transactions are grouped into 'period' objects — one for each calendar month.
423
+
424
+ For example, if a settlement includes funds from 15 April until 4 May, it will include two period objects. One for
425
+ all transactions processed between 15 April and 30 April, and one for all transactions between 1 May and 4 May.
426
+
427
+ Period objects are grouped by year, and then by month. So in the above example, the full `periods` collection will
428
+ look as follows: `{\"2024\": {\"04\": {...}, \"05\": {...}}}`. The year and month in this documentation are referred as `<year>` and `<month>`.
429
+
430
+ The example response should give a good idea of what this looks like in practise.
431
+ """
432
+
433
+ @model_serializer(mode="wrap")
434
+ def serialize_model(self, handler):
435
+ optional_fields = [
436
+ "createdAt",
437
+ "reference",
438
+ "settledAt",
439
+ "invoiceId",
440
+ "periods",
441
+ ]
442
+ nullable_fields = ["reference", "settledAt", "invoiceId"]
443
+ null_default_fields = []
444
+
445
+ serialized = handler(self)
446
+
447
+ m = {}
448
+
449
+ for n, f in type(self).model_fields.items():
450
+ k = f.alias or n
451
+ val = serialized.get(k)
452
+ serialized.pop(k, None)
453
+
454
+ optional_nullable = k in optional_fields and k in nullable_fields
455
+ is_set = (
456
+ self.__pydantic_fields_set__.intersection({n})
457
+ or k in null_default_fields
458
+ ) # pylint: disable=no-member
459
+
460
+ if val is not None and val != UNSET_SENTINEL:
461
+ m[k] = val
462
+ elif val != UNSET_SENTINEL and (
463
+ not k in optional_fields or (optional_nullable and is_set)
464
+ ):
465
+ m[k] = val
466
+
467
+ return m