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,457 @@
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 ListEntitySettlementStatus(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 ListEntitySettlementAmountTypedDict(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 ListEntitySettlementAmount(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 ListEntitySettlementRateTypedDict(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 ListEntitySettlementRate(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 ListEntitySettlementCostTypedDict(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: ListEntitySettlementRateTypedDict
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 ListEntitySettlementCost(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: ListEntitySettlementRate
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 ListEntitySettlementRevenueTypedDict(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 ListEntitySettlementRevenue(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 ListEntitySettlementPeriodsTypedDict(TypedDict):
205
+ costs: NotRequired[List[ListEntitySettlementCostTypedDict]]
206
+ r"""An array of cost objects, describing the fees withheld for each payment method during this period."""
207
+ revenue: NotRequired[List[ListEntitySettlementRevenueTypedDict]]
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 ListEntitySettlementPeriods(BaseModel):
215
+ costs: Optional[List[ListEntitySettlementCost]] = None
216
+ r"""An array of cost objects, describing the fees withheld for each payment method during this period."""
217
+
218
+ revenue: Optional[List[ListEntitySettlementRevenue]] = 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 ListEntitySettlementLinksTypedDict(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
+
275
+
276
+ class ListEntitySettlementLinks(BaseModel):
277
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
278
+
279
+ self_: Annotated[URL, pydantic.Field(alias="self")]
280
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
281
+
282
+ payments: Optional[URL] = None
283
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
284
+
285
+ captures: Optional[URL] = None
286
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
287
+
288
+ refunds: Optional[URL] = None
289
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
290
+
291
+ chargebacks: Optional[URL] = None
292
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
293
+
294
+ invoice: OptionalNullable[URLNullable] = UNSET
295
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
296
+
297
+ @model_serializer(mode="wrap")
298
+ def serialize_model(self, handler):
299
+ optional_fields = ["payments", "captures", "refunds", "chargebacks", "invoice"]
300
+ nullable_fields = ["invoice"]
301
+ null_default_fields = []
302
+
303
+ serialized = handler(self)
304
+
305
+ m = {}
306
+
307
+ for n, f in type(self).model_fields.items():
308
+ k = f.alias or n
309
+ val = serialized.get(k)
310
+ serialized.pop(k, None)
311
+
312
+ optional_nullable = k in optional_fields and k in nullable_fields
313
+ is_set = (
314
+ self.__pydantic_fields_set__.intersection({n})
315
+ or k in null_default_fields
316
+ ) # pylint: disable=no-member
317
+
318
+ if val is not None and val != UNSET_SENTINEL:
319
+ m[k] = val
320
+ elif val != UNSET_SENTINEL and (
321
+ not k in optional_fields or (optional_nullable and is_set)
322
+ ):
323
+ m[k] = val
324
+
325
+ return m
326
+
327
+
328
+ class ListEntitySettlementTypedDict(TypedDict):
329
+ resource: str
330
+ r"""Indicates the response contains a settlement object. Will always contain the string `settlement` for this
331
+ endpoint.
332
+ """
333
+ id: str
334
+ r"""The identifier uniquely referring to this settlement."""
335
+ status: ListEntitySettlementStatus
336
+ amount: ListEntitySettlementAmountTypedDict
337
+ r"""The total amount of the settlement."""
338
+ balance_id: str
339
+ r"""The balance token that the settlement was settled to."""
340
+ links: ListEntitySettlementLinksTypedDict
341
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
342
+ created_at: NotRequired[str]
343
+ r"""The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."""
344
+ reference: NotRequired[Nullable[str]]
345
+ r"""The settlement's bank reference, as found in your Mollie account and on your bank statement."""
346
+ settled_at: NotRequired[Nullable[str]]
347
+ r"""The date on which the settlement was settled, in ISO 8601 format.
348
+
349
+ For an [open settlement](get-open-settlement) or for the [next settlement](get-next-settlement), no settlement
350
+ date is available.
351
+ """
352
+ invoice_id: NotRequired[Nullable[str]]
353
+ r"""The ID of the oldest invoice created for all the periods, if the invoice has been created yet."""
354
+ periods: NotRequired[Dict[str, Dict[str, ListEntitySettlementPeriodsTypedDict]]]
355
+ r"""For bookkeeping purposes, the settlement includes an overview of transactions included in the settlement. These
356
+ transactions are grouped into 'period' objects — one for each calendar month.
357
+
358
+ For example, if a settlement includes funds from 15 April until 4 May, it will include two period objects. One for
359
+ all transactions processed between 15 April and 30 April, and one for all transactions between 1 May and 4 May.
360
+
361
+ Period objects are grouped by year, and then by month. So in the above example, the full `periods` collection will
362
+ look as follows: `{\"2024\": {\"04\": {...}, \"05\": {...}}}`. The year and month in this documentation are referred as `<year>` and `<month>`.
363
+
364
+ The example response should give a good idea of what this looks like in practise.
365
+ """
366
+
367
+
368
+ class ListEntitySettlement(BaseModel):
369
+ resource: str
370
+ r"""Indicates the response contains a settlement object. Will always contain the string `settlement` for this
371
+ endpoint.
372
+ """
373
+
374
+ id: str
375
+ r"""The identifier uniquely referring to this settlement."""
376
+
377
+ status: Annotated[
378
+ ListEntitySettlementStatus, PlainValidator(validate_open_enum(False))
379
+ ]
380
+
381
+ amount: ListEntitySettlementAmount
382
+ r"""The total amount of the settlement."""
383
+
384
+ balance_id: Annotated[str, pydantic.Field(alias="balanceId")]
385
+ r"""The balance token that the settlement was settled to."""
386
+
387
+ links: Annotated[ListEntitySettlementLinks, pydantic.Field(alias="_links")]
388
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
389
+
390
+ created_at: Annotated[Optional[str], pydantic.Field(alias="createdAt")] = None
391
+ r"""The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."""
392
+
393
+ reference: OptionalNullable[str] = UNSET
394
+ r"""The settlement's bank reference, as found in your Mollie account and on your bank statement."""
395
+
396
+ settled_at: Annotated[OptionalNullable[str], pydantic.Field(alias="settledAt")] = (
397
+ UNSET
398
+ )
399
+ r"""The date on which the settlement was settled, in ISO 8601 format.
400
+
401
+ For an [open settlement](get-open-settlement) or for the [next settlement](get-next-settlement), no settlement
402
+ date is available.
403
+ """
404
+
405
+ invoice_id: Annotated[OptionalNullable[str], pydantic.Field(alias="invoiceId")] = (
406
+ UNSET
407
+ )
408
+ r"""The ID of the oldest invoice created for all the periods, if the invoice has been created yet."""
409
+
410
+ periods: Optional[Dict[str, Dict[str, ListEntitySettlementPeriods]]] = None
411
+ r"""For bookkeeping purposes, the settlement includes an overview of transactions included in the settlement. These
412
+ transactions are grouped into 'period' objects — one for each calendar month.
413
+
414
+ For example, if a settlement includes funds from 15 April until 4 May, it will include two period objects. One for
415
+ all transactions processed between 15 April and 30 April, and one for all transactions between 1 May and 4 May.
416
+
417
+ Period objects are grouped by year, and then by month. So in the above example, the full `periods` collection will
418
+ look as follows: `{\"2024\": {\"04\": {...}, \"05\": {...}}}`. The year and month in this documentation are referred as `<year>` and `<month>`.
419
+
420
+ The example response should give a good idea of what this looks like in practise.
421
+ """
422
+
423
+ @model_serializer(mode="wrap")
424
+ def serialize_model(self, handler):
425
+ optional_fields = [
426
+ "createdAt",
427
+ "reference",
428
+ "settledAt",
429
+ "invoiceId",
430
+ "periods",
431
+ ]
432
+ nullable_fields = ["reference", "settledAt", "invoiceId"]
433
+ null_default_fields = []
434
+
435
+ serialized = handler(self)
436
+
437
+ m = {}
438
+
439
+ for n, f in type(self).model_fields.items():
440
+ k = f.alias or n
441
+ val = serialized.get(k)
442
+ serialized.pop(k, None)
443
+
444
+ optional_nullable = k in optional_fields and k in nullable_fields
445
+ is_set = (
446
+ self.__pydantic_fields_set__.intersection({n})
447
+ or k in null_default_fields
448
+ ) # pylint: disable=no-member
449
+
450
+ if val is not None and val != UNSET_SENTINEL:
451
+ m[k] = val
452
+ elif val != UNSET_SENTINEL and (
453
+ not k in optional_fields or (optional_nullable and is_set)
454
+ ):
455
+ m[k] = val
456
+
457
+ return m
@@ -0,0 +1,157 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .mode import Mode
5
+ from .terminal_brand import TerminalBrand
6
+ from .terminal_model import TerminalModel
7
+ from .url import URL, URLTypedDict
8
+ from enum import Enum
9
+ from mollie import utils
10
+ from mollie.types import BaseModel, Nullable, UNSET_SENTINEL
11
+ from mollie.utils import validate_open_enum
12
+ import pydantic
13
+ from pydantic import model_serializer
14
+ from pydantic.functional_validators import PlainValidator
15
+ from typing_extensions import Annotated, TypedDict
16
+
17
+
18
+ class ListEntityTerminalStatus(str, Enum, metaclass=utils.OpenEnumMeta):
19
+ r"""The status of the terminal."""
20
+
21
+ PENDING = "pending"
22
+ ACTIVE = "active"
23
+ INACTIVE = "inactive"
24
+
25
+
26
+ class ListEntityTerminalLinksTypedDict(TypedDict):
27
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
28
+
29
+ self_: URLTypedDict
30
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
31
+
32
+
33
+ class ListEntityTerminalLinks(BaseModel):
34
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
35
+
36
+ self_: Annotated[URL, pydantic.Field(alias="self")]
37
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
38
+
39
+
40
+ class ListEntityTerminalTypedDict(TypedDict):
41
+ resource: str
42
+ r"""Indicates the response contains a terminal object. Will always contain the string `terminal` for this endpoint."""
43
+ id: str
44
+ r"""The identifier uniquely referring to this terminal. Example: `term_7MgL4wea46qkRcoTZjWEH`."""
45
+ mode: Mode
46
+ r"""Whether this entity was created in live mode or in test mode."""
47
+ description: str
48
+ r"""A short description of the terminal. The description can be used as an identifier for the terminal. Currently, the
49
+ description is set when the terminal is initially configured. It will be visible in the Mollie Dashboard, and it
50
+ may be visible on the device itself depending on the device.
51
+ """
52
+ status: ListEntityTerminalStatus
53
+ brand: Nullable[TerminalBrand]
54
+ r"""The brand of the terminal."""
55
+ model: Nullable[TerminalModel]
56
+ r"""The model of the terminal. For example for a PAX A920, this field's value will be `A920`."""
57
+ serial_number: Nullable[str]
58
+ r"""The serial number of the terminal. The serial number is provided at terminal creation time."""
59
+ currency: str
60
+ r"""The currency configured on the terminal, in ISO 4217 format. Currently most of our terminals are bound to a
61
+ specific currency, chosen during setup.
62
+ """
63
+ profile_id: str
64
+ r"""The identifier referring to the [profile](get-profile) this entity belongs to.
65
+
66
+ Most API credentials are linked to a single profile. In these cases the `profileId` can be omitted in the creation
67
+ request. For organization-level credentials such as OAuth access tokens however, the `profileId` parameter is
68
+ required.
69
+ """
70
+ created_at: str
71
+ r"""The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."""
72
+ updated_at: str
73
+ r"""The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."""
74
+ links: ListEntityTerminalLinksTypedDict
75
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
76
+
77
+
78
+ class ListEntityTerminal(BaseModel):
79
+ resource: str
80
+ r"""Indicates the response contains a terminal object. Will always contain the string `terminal` for this endpoint."""
81
+
82
+ id: str
83
+ r"""The identifier uniquely referring to this terminal. Example: `term_7MgL4wea46qkRcoTZjWEH`."""
84
+
85
+ mode: Annotated[Mode, PlainValidator(validate_open_enum(False))]
86
+ r"""Whether this entity was created in live mode or in test mode."""
87
+
88
+ description: str
89
+ r"""A short description of the terminal. The description can be used as an identifier for the terminal. Currently, the
90
+ description is set when the terminal is initially configured. It will be visible in the Mollie Dashboard, and it
91
+ may be visible on the device itself depending on the device.
92
+ """
93
+
94
+ status: Annotated[
95
+ ListEntityTerminalStatus, PlainValidator(validate_open_enum(False))
96
+ ]
97
+
98
+ brand: Annotated[Nullable[TerminalBrand], PlainValidator(validate_open_enum(False))]
99
+ r"""The brand of the terminal."""
100
+
101
+ model: Annotated[Nullable[TerminalModel], PlainValidator(validate_open_enum(False))]
102
+ r"""The model of the terminal. For example for a PAX A920, this field's value will be `A920`."""
103
+
104
+ serial_number: Annotated[Nullable[str], pydantic.Field(alias="serialNumber")]
105
+ r"""The serial number of the terminal. The serial number is provided at terminal creation time."""
106
+
107
+ currency: str
108
+ r"""The currency configured on the terminal, in ISO 4217 format. Currently most of our terminals are bound to a
109
+ specific currency, chosen during setup.
110
+ """
111
+
112
+ profile_id: Annotated[str, pydantic.Field(alias="profileId")]
113
+ r"""The identifier referring to the [profile](get-profile) this entity belongs to.
114
+
115
+ Most API credentials are linked to a single profile. In these cases the `profileId` can be omitted in the creation
116
+ request. For organization-level credentials such as OAuth access tokens however, the `profileId` parameter is
117
+ required.
118
+ """
119
+
120
+ created_at: Annotated[str, pydantic.Field(alias="createdAt")]
121
+ r"""The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."""
122
+
123
+ updated_at: Annotated[str, pydantic.Field(alias="updatedAt")]
124
+ r"""The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."""
125
+
126
+ links: Annotated[ListEntityTerminalLinks, pydantic.Field(alias="_links")]
127
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
128
+
129
+ @model_serializer(mode="wrap")
130
+ def serialize_model(self, handler):
131
+ optional_fields = []
132
+ nullable_fields = ["brand", "model", "serialNumber"]
133
+ null_default_fields = []
134
+
135
+ serialized = handler(self)
136
+
137
+ m = {}
138
+
139
+ for n, f in type(self).model_fields.items():
140
+ k = f.alias or n
141
+ val = serialized.get(k)
142
+ serialized.pop(k, None)
143
+
144
+ optional_nullable = k in optional_fields and k in nullable_fields
145
+ is_set = (
146
+ self.__pydantic_fields_set__.intersection({n})
147
+ or k in null_default_fields
148
+ ) # pylint: disable=no-member
149
+
150
+ if val is not None and val != UNSET_SENTINEL:
151
+ m[k] = val
152
+ elif val != UNSET_SENTINEL and (
153
+ not k in optional_fields or (optional_nullable and is_set)
154
+ ):
155
+ m[k] = val
156
+
157
+ return m