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,111 @@
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 import RouteDestinationType
6
+ from .url import URL, URLTypedDict
7
+ from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
8
+ import pydantic
9
+ from pydantic import model_serializer
10
+ from typing_extensions import Annotated, NotRequired, TypedDict
11
+
12
+
13
+ class EntityPaymentRouteDestinationTypedDict(TypedDict):
14
+ r"""The destination of this portion of the payment."""
15
+
16
+ type: RouteDestinationType
17
+ r"""The type of destination. Currently only the destination type `organization` is supported."""
18
+ organization_id: str
19
+
20
+
21
+ class EntityPaymentRouteDestination(BaseModel):
22
+ r"""The destination of this portion of the payment."""
23
+
24
+ type: RouteDestinationType
25
+ r"""The type of destination. Currently only the destination type `organization` is supported."""
26
+
27
+ organization_id: Annotated[str, pydantic.Field(alias="organizationId")]
28
+
29
+
30
+ class EntityPaymentRouteLinksTypedDict(TypedDict):
31
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
32
+
33
+ self_: URLTypedDict
34
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
35
+ payment: URLTypedDict
36
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
37
+
38
+
39
+ class EntityPaymentRouteLinks(BaseModel):
40
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
41
+
42
+ self_: Annotated[URL, pydantic.Field(alias="self")]
43
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
44
+
45
+ payment: URL
46
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
47
+
48
+
49
+ class EntityPaymentRouteTypedDict(TypedDict):
50
+ amount: AmountTypedDict
51
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
52
+ destination: EntityPaymentRouteDestinationTypedDict
53
+ r"""The destination of this portion of the payment."""
54
+ links: EntityPaymentRouteLinksTypedDict
55
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
56
+ release_date: NotRequired[Nullable[str]]
57
+ r"""Optionally, schedule this portion of the payment to be transferred to its destination on a later date. The
58
+ date must be given in `YYYY-MM-DD` format.
59
+
60
+ If no date is given, the funds become available to the connected merchant as soon as the payment succeeds.
61
+ """
62
+
63
+
64
+ class EntityPaymentRoute(BaseModel):
65
+ amount: Amount
66
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
67
+
68
+ destination: EntityPaymentRouteDestination
69
+ r"""The destination of this portion of the payment."""
70
+
71
+ links: Annotated[EntityPaymentRouteLinks, pydantic.Field(alias="_links")]
72
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
73
+
74
+ release_date: Annotated[
75
+ OptionalNullable[str], pydantic.Field(alias="releaseDate")
76
+ ] = UNSET
77
+ r"""Optionally, schedule this portion of the payment to be transferred to its destination on a later date. The
78
+ date must be given in `YYYY-MM-DD` format.
79
+
80
+ If no date is given, the funds become available to the connected merchant as soon as the payment succeeds.
81
+ """
82
+
83
+ @model_serializer(mode="wrap")
84
+ def serialize_model(self, handler):
85
+ optional_fields = ["releaseDate"]
86
+ nullable_fields = ["releaseDate"]
87
+ null_default_fields = []
88
+
89
+ serialized = handler(self)
90
+
91
+ m = {}
92
+
93
+ for n, f in type(self).model_fields.items():
94
+ k = f.alias or n
95
+ val = serialized.get(k)
96
+ serialized.pop(k, None)
97
+
98
+ optional_nullable = k in optional_fields and k in nullable_fields
99
+ is_set = (
100
+ self.__pydantic_fields_set__.intersection({n})
101
+ or k in null_default_fields
102
+ ) # pylint: disable=no-member
103
+
104
+ if val is not None and val != UNSET_SENTINEL:
105
+ m[k] = val
106
+ elif val != UNSET_SENTINEL and (
107
+ not k in optional_fields or (optional_nullable and is_set)
108
+ ):
109
+ m[k] = val
110
+
111
+ return m
@@ -0,0 +1,140 @@
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 .mode import Mode
6
+ from .route_destination_type_response import RouteDestinationTypeResponse
7
+ from .url import URL, URLTypedDict
8
+ from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
9
+ from mollie.utils import validate_open_enum
10
+ import pydantic
11
+ from pydantic import model_serializer
12
+ from pydantic.functional_validators import PlainValidator
13
+ from typing_extensions import Annotated, NotRequired, TypedDict
14
+
15
+
16
+ class EntityPaymentRouteResponseDestinationTypedDict(TypedDict):
17
+ r"""The destination of this portion of the payment."""
18
+
19
+ type: RouteDestinationTypeResponse
20
+ r"""The type of destination. Currently only the destination type `organization` is supported."""
21
+ organization_id: str
22
+
23
+
24
+ class EntityPaymentRouteResponseDestination(BaseModel):
25
+ r"""The destination of this portion of the payment."""
26
+
27
+ type: Annotated[
28
+ RouteDestinationTypeResponse, PlainValidator(validate_open_enum(False))
29
+ ]
30
+ r"""The type of destination. Currently only the destination type `organization` is supported."""
31
+
32
+ organization_id: Annotated[str, pydantic.Field(alias="organizationId")]
33
+
34
+
35
+ class EntityPaymentRouteResponseLinksTypedDict(TypedDict):
36
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
37
+
38
+ self_: URLTypedDict
39
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
40
+ payment: URLTypedDict
41
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
42
+
43
+
44
+ class EntityPaymentRouteResponseLinks(BaseModel):
45
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
46
+
47
+ self_: Annotated[URL, pydantic.Field(alias="self")]
48
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
49
+
50
+ payment: URL
51
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
52
+
53
+
54
+ class EntityPaymentRouteResponseTypedDict(TypedDict):
55
+ resource: str
56
+ r"""Indicates the response contains a route object. Will always contain the string `route` for this endpoint."""
57
+ id: str
58
+ r"""The identifier uniquely referring to this route. Mollie will always refer to the route by this ID.
59
+ Example: `rt_5B8cwPMGnU6qLbRvo7qEZo`.
60
+ """
61
+ mode: Mode
62
+ r"""Whether this entity was created in live mode or in test mode."""
63
+ amount: AmountTypedDict
64
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
65
+ destination: EntityPaymentRouteResponseDestinationTypedDict
66
+ r"""The destination of this portion of the payment."""
67
+ created_at: str
68
+ r"""The date and time when the route was created. The date is given in ISO 8601 format."""
69
+ links: EntityPaymentRouteResponseLinksTypedDict
70
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
71
+ release_date: NotRequired[Nullable[str]]
72
+ r"""Optionally, schedule this portion of the payment to be transferred to its destination on a later date. The
73
+ date must be given in `YYYY-MM-DD` format.
74
+
75
+ If no date is given, the funds become available to the connected merchant as soon as the payment succeeds.
76
+ """
77
+
78
+
79
+ class EntityPaymentRouteResponse(BaseModel):
80
+ resource: str
81
+ r"""Indicates the response contains a route object. Will always contain the string `route` for this endpoint."""
82
+
83
+ id: str
84
+ r"""The identifier uniquely referring to this route. Mollie will always refer to the route by this ID.
85
+ Example: `rt_5B8cwPMGnU6qLbRvo7qEZo`.
86
+ """
87
+
88
+ mode: Annotated[Mode, PlainValidator(validate_open_enum(False))]
89
+ r"""Whether this entity was created in live mode or in test mode."""
90
+
91
+ amount: Amount
92
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
93
+
94
+ destination: EntityPaymentRouteResponseDestination
95
+ r"""The destination of this portion of the payment."""
96
+
97
+ created_at: Annotated[str, pydantic.Field(alias="createdAt")]
98
+ r"""The date and time when the route was created. The date is given in ISO 8601 format."""
99
+
100
+ links: Annotated[EntityPaymentRouteResponseLinks, pydantic.Field(alias="_links")]
101
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
102
+
103
+ release_date: Annotated[
104
+ OptionalNullable[str], pydantic.Field(alias="releaseDate")
105
+ ] = UNSET
106
+ r"""Optionally, schedule this portion of the payment to be transferred to its destination on a later date. The
107
+ date must be given in `YYYY-MM-DD` format.
108
+
109
+ If no date is given, the funds become available to the connected merchant as soon as the payment succeeds.
110
+ """
111
+
112
+ @model_serializer(mode="wrap")
113
+ def serialize_model(self, handler):
114
+ optional_fields = ["releaseDate"]
115
+ nullable_fields = ["releaseDate"]
116
+ null_default_fields = []
117
+
118
+ serialized = handler(self)
119
+
120
+ m = {}
121
+
122
+ for n, f in type(self).model_fields.items():
123
+ k = f.alias or n
124
+ val = serialized.get(k)
125
+ serialized.pop(k, None)
126
+
127
+ optional_nullable = k in optional_fields and k in nullable_fields
128
+ is_set = (
129
+ self.__pydantic_fields_set__.intersection({n})
130
+ or k in null_default_fields
131
+ ) # pylint: disable=no-member
132
+
133
+ if val is not None and val != UNSET_SENTINEL:
134
+ m[k] = val
135
+ elif val != UNSET_SENTINEL and (
136
+ not k in optional_fields or (optional_nullable and is_set)
137
+ ):
138
+ m[k] = val
139
+
140
+ return m
@@ -0,0 +1,61 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .url import URL, URLTypedDict
5
+ from mollie.types import BaseModel
6
+ import pydantic
7
+ from typing import Optional
8
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
+
10
+
11
+ class EntityPermissionLinksTypedDict(TypedDict):
12
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
13
+
14
+ self_: NotRequired[URLTypedDict]
15
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
16
+ documentation: NotRequired[URLTypedDict]
17
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
18
+
19
+
20
+ class EntityPermissionLinks(BaseModel):
21
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
22
+
23
+ self_: Annotated[Optional[URL], pydantic.Field(alias="self")] = None
24
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
25
+
26
+ documentation: Optional[URL] = None
27
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
28
+
29
+
30
+ class EntityPermissionTypedDict(TypedDict):
31
+ resource: str
32
+ r"""Indicates the response contains a permission object. Will always contain the string `permission` for this
33
+ endpoint.
34
+ """
35
+ id: str
36
+ r"""The identifier uniquely referring to this permission. Example: `payments.read`."""
37
+ description: str
38
+ r"""A short description of what kind of access the permission enables."""
39
+ granted: bool
40
+ r"""Whether this permission is granted to the app by the organization."""
41
+ links: EntityPermissionLinksTypedDict
42
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
43
+
44
+
45
+ class EntityPermission(BaseModel):
46
+ resource: str
47
+ r"""Indicates the response contains a permission object. Will always contain the string `permission` for this
48
+ endpoint.
49
+ """
50
+
51
+ id: str
52
+ r"""The identifier uniquely referring to this permission. Example: `payments.read`."""
53
+
54
+ description: str
55
+ r"""A short description of what kind of access the permission enables."""
56
+
57
+ granted: bool
58
+ r"""Whether this permission is granted to the app by the organization."""
59
+
60
+ links: Annotated[EntityPermissionLinks, pydantic.Field(alias="_links")]
61
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
@@ -0,0 +1,361 @@
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 .metadata import Metadata, MetadataTypedDict
6
+ from .mode import Mode
7
+ from .refund_external_reference_type_response import RefundExternalReferenceTypeResponse
8
+ from .url import URL, URLTypedDict
9
+ from .url_nullable import URLNullable, URLNullableTypedDict
10
+ from enum import Enum
11
+ from mollie import utils
12
+ from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
13
+ from mollie.utils import validate_open_enum
14
+ import pydantic
15
+ from pydantic import model_serializer
16
+ from pydantic.functional_validators import PlainValidator
17
+ from typing import List, Optional
18
+ from typing_extensions import Annotated, NotRequired, TypedDict
19
+
20
+
21
+ class EntityRefundResponseSettlementAmountTypedDict(TypedDict):
22
+ r"""This optional field will contain the approximate amount that will be deducted from your account balance, converted
23
+ to the currency your account is settled in.
24
+
25
+ The amount is a **negative** amount.
26
+
27
+ If the refund is not directly processed by Mollie, for example for PayPal refunds, the settlement amount will be
28
+ zero.
29
+
30
+ Since the field contains an estimated amount during refund processing, it may change over time. For example, while
31
+ the refund is queued the settlement amount is likely not yet available.
32
+
33
+ To retrieve accurate settlement amounts we recommend using the
34
+ [List balance transactions endpoint](list-balance-transactions) instead.
35
+ """
36
+
37
+ currency: str
38
+ r"""A three-character ISO 4217 currency code."""
39
+ value: str
40
+ r"""A string containing an exact monetary amount in the given currency."""
41
+
42
+
43
+ class EntityRefundResponseSettlementAmount(BaseModel):
44
+ r"""This optional field will contain the approximate amount that will be deducted from your account balance, converted
45
+ to the currency your account is settled in.
46
+
47
+ The amount is a **negative** amount.
48
+
49
+ If the refund is not directly processed by Mollie, for example for PayPal refunds, the settlement amount will be
50
+ zero.
51
+
52
+ Since the field contains an estimated amount during refund processing, it may change over time. For example, while
53
+ the refund is queued the settlement amount is likely not yet available.
54
+
55
+ To retrieve accurate settlement amounts we recommend using the
56
+ [List balance transactions endpoint](list-balance-transactions) instead.
57
+ """
58
+
59
+ currency: str
60
+ r"""A three-character ISO 4217 currency code."""
61
+
62
+ value: str
63
+ r"""A string containing an exact monetary amount in the given currency."""
64
+
65
+
66
+ class EntityRefundResponseStatus(str, Enum, metaclass=utils.OpenEnumMeta):
67
+ QUEUED = "queued"
68
+ PENDING = "pending"
69
+ PROCESSING = "processing"
70
+ REFUNDED = "refunded"
71
+ FAILED = "failed"
72
+ CANCELED = "canceled"
73
+
74
+
75
+ class EntityRefundResponseExternalReferenceTypedDict(TypedDict):
76
+ type: NotRequired[RefundExternalReferenceTypeResponse]
77
+ r"""Specifies the reference type"""
78
+ id: NotRequired[str]
79
+ r"""Unique reference from the payment provider"""
80
+
81
+
82
+ class EntityRefundResponseExternalReference(BaseModel):
83
+ type: Annotated[
84
+ Optional[RefundExternalReferenceTypeResponse],
85
+ PlainValidator(validate_open_enum(False)),
86
+ ] = None
87
+ r"""Specifies the reference type"""
88
+
89
+ id: Optional[str] = None
90
+ r"""Unique reference from the payment provider"""
91
+
92
+
93
+ class EntityRefundResponseSourceTypedDict(TypedDict):
94
+ r"""Where the funds will be pulled back from."""
95
+
96
+ organization_id: NotRequired[str]
97
+
98
+
99
+ class EntityRefundResponseSource(BaseModel):
100
+ r"""Where the funds will be pulled back from."""
101
+
102
+ organization_id: Annotated[
103
+ Optional[str], pydantic.Field(alias="organizationId")
104
+ ] = None
105
+
106
+
107
+ class EntityRefundResponseRoutingReversalTypedDict(TypedDict):
108
+ amount: NotRequired[AmountTypedDict]
109
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
110
+ source: NotRequired[EntityRefundResponseSourceTypedDict]
111
+ r"""Where the funds will be pulled back from."""
112
+
113
+
114
+ class EntityRefundResponseRoutingReversal(BaseModel):
115
+ amount: Optional[Amount] = None
116
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
117
+
118
+ source: Optional[EntityRefundResponseSource] = None
119
+ r"""Where the funds will be pulled back from."""
120
+
121
+
122
+ class EntityRefundResponseLinksTypedDict(TypedDict):
123
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
124
+
125
+ self_: URLTypedDict
126
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
127
+ payment: URLTypedDict
128
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
129
+ documentation: URLTypedDict
130
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
131
+ settlement: NotRequired[Nullable[URLNullableTypedDict]]
132
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
133
+
134
+
135
+ class EntityRefundResponseLinks(BaseModel):
136
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
137
+
138
+ self_: Annotated[URL, pydantic.Field(alias="self")]
139
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
140
+
141
+ payment: URL
142
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
143
+
144
+ documentation: URL
145
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
146
+
147
+ settlement: OptionalNullable[URLNullable] = UNSET
148
+ r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
149
+
150
+ @model_serializer(mode="wrap")
151
+ def serialize_model(self, handler):
152
+ optional_fields = ["settlement"]
153
+ nullable_fields = ["settlement"]
154
+ null_default_fields = []
155
+
156
+ serialized = handler(self)
157
+
158
+ m = {}
159
+
160
+ for n, f in type(self).model_fields.items():
161
+ k = f.alias or n
162
+ val = serialized.get(k)
163
+ serialized.pop(k, None)
164
+
165
+ optional_nullable = k in optional_fields and k in nullable_fields
166
+ is_set = (
167
+ self.__pydantic_fields_set__.intersection({n})
168
+ or k in null_default_fields
169
+ ) # pylint: disable=no-member
170
+
171
+ if val is not None and val != UNSET_SENTINEL:
172
+ m[k] = val
173
+ elif val != UNSET_SENTINEL and (
174
+ not k in optional_fields or (optional_nullable and is_set)
175
+ ):
176
+ m[k] = val
177
+
178
+ return m
179
+
180
+
181
+ class EntityRefundResponseTypedDict(TypedDict):
182
+ resource: str
183
+ r"""Indicates the response contains a refund object. Will always contain the string `refund` for this endpoint."""
184
+ id: str
185
+ r"""The identifier uniquely referring to this refund. Mollie assigns this identifier at refund creation time. Mollie
186
+ will always refer to the refund by this ID. Example: `re_4qqhO89gsT`.
187
+ """
188
+ mode: Mode
189
+ r"""Whether this entity was created in live mode or in test mode."""
190
+ description: str
191
+ r"""The description of the refund that may be shown to your customer, depending on the payment method used."""
192
+ amount: AmountTypedDict
193
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
194
+ metadata: Nullable[MetadataTypedDict]
195
+ r"""Provide any data you like, for example a string or a JSON object. We will save the data alongside the entity. Whenever
196
+ you fetch the entity with our API, we will also include the metadata. You can use up to approximately 1kB.
197
+ """
198
+ status: EntityRefundResponseStatus
199
+ created_at: str
200
+ r"""The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."""
201
+ links: EntityRefundResponseLinksTypedDict
202
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
203
+ settlement_amount: NotRequired[
204
+ Nullable[EntityRefundResponseSettlementAmountTypedDict]
205
+ ]
206
+ r"""This optional field will contain the approximate amount that will be deducted from your account balance, converted
207
+ to the currency your account is settled in.
208
+
209
+ The amount is a **negative** amount.
210
+
211
+ If the refund is not directly processed by Mollie, for example for PayPal refunds, the settlement amount will be
212
+ zero.
213
+
214
+ Since the field contains an estimated amount during refund processing, it may change over time. For example, while
215
+ the refund is queued the settlement amount is likely not yet available.
216
+
217
+ To retrieve accurate settlement amounts we recommend using the
218
+ [List balance transactions endpoint](list-balance-transactions) instead.
219
+ """
220
+ payment_id: NotRequired[str]
221
+ r"""The unique identifier of the payment this refund was created for.
222
+ The full payment object can be retrieved via the payment URL in the `_links` object.
223
+ """
224
+ settlement_id: NotRequired[Nullable[str]]
225
+ r"""The identifier referring to the settlement this refund was settled with. This field is omitted if the refund is not settled (yet)."""
226
+ external_reference: NotRequired[EntityRefundResponseExternalReferenceTypedDict]
227
+ routing_reversals: NotRequired[
228
+ Nullable[List[EntityRefundResponseRoutingReversalTypedDict]]
229
+ ]
230
+ r"""*This feature is only available to marketplace operators.*
231
+
232
+ When creating refunds for *routed* payments, by default the full amount is deducted from your balance.
233
+
234
+ If you want to pull back funds from the connected merchant(s), you can use this parameter to specify what amount
235
+ needs to be reversed from which merchant(s).
236
+
237
+ If you simply want to fully reverse the routed funds, you can also use the `reverseRouting` parameter instead.
238
+ """
239
+
240
+
241
+ class EntityRefundResponse(BaseModel):
242
+ resource: str
243
+ r"""Indicates the response contains a refund object. Will always contain the string `refund` for this endpoint."""
244
+
245
+ id: str
246
+ r"""The identifier uniquely referring to this refund. Mollie assigns this identifier at refund creation time. Mollie
247
+ will always refer to the refund by this ID. Example: `re_4qqhO89gsT`.
248
+ """
249
+
250
+ mode: Annotated[Mode, PlainValidator(validate_open_enum(False))]
251
+ r"""Whether this entity was created in live mode or in test mode."""
252
+
253
+ description: str
254
+ r"""The description of the refund that may be shown to your customer, depending on the payment method used."""
255
+
256
+ amount: Amount
257
+ r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
258
+
259
+ metadata: Nullable[Metadata]
260
+ r"""Provide any data you like, for example a string or a JSON object. We will save the data alongside the entity. Whenever
261
+ you fetch the entity with our API, we will also include the metadata. You can use up to approximately 1kB.
262
+ """
263
+
264
+ status: Annotated[
265
+ EntityRefundResponseStatus, PlainValidator(validate_open_enum(False))
266
+ ]
267
+
268
+ created_at: Annotated[str, pydantic.Field(alias="createdAt")]
269
+ r"""The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format."""
270
+
271
+ links: Annotated[EntityRefundResponseLinks, pydantic.Field(alias="_links")]
272
+ r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
273
+
274
+ settlement_amount: Annotated[
275
+ OptionalNullable[EntityRefundResponseSettlementAmount],
276
+ pydantic.Field(alias="settlementAmount"),
277
+ ] = UNSET
278
+ r"""This optional field will contain the approximate amount that will be deducted from your account balance, converted
279
+ to the currency your account is settled in.
280
+
281
+ The amount is a **negative** amount.
282
+
283
+ If the refund is not directly processed by Mollie, for example for PayPal refunds, the settlement amount will be
284
+ zero.
285
+
286
+ Since the field contains an estimated amount during refund processing, it may change over time. For example, while
287
+ the refund is queued the settlement amount is likely not yet available.
288
+
289
+ To retrieve accurate settlement amounts we recommend using the
290
+ [List balance transactions endpoint](list-balance-transactions) instead.
291
+ """
292
+
293
+ payment_id: Annotated[Optional[str], pydantic.Field(alias="paymentId")] = None
294
+ r"""The unique identifier of the payment this refund was created for.
295
+ The full payment object can be retrieved via the payment URL in the `_links` object.
296
+ """
297
+
298
+ settlement_id: Annotated[
299
+ OptionalNullable[str], pydantic.Field(alias="settlementId")
300
+ ] = UNSET
301
+ r"""The identifier referring to the settlement this refund was settled with. This field is omitted if the refund is not settled (yet)."""
302
+
303
+ external_reference: Annotated[
304
+ Optional[EntityRefundResponseExternalReference],
305
+ pydantic.Field(alias="externalReference"),
306
+ ] = None
307
+
308
+ routing_reversals: Annotated[
309
+ OptionalNullable[List[EntityRefundResponseRoutingReversal]],
310
+ pydantic.Field(alias="routingReversals"),
311
+ ] = UNSET
312
+ r"""*This feature is only available to marketplace operators.*
313
+
314
+ When creating refunds for *routed* payments, by default the full amount is deducted from your balance.
315
+
316
+ If you want to pull back funds from the connected merchant(s), you can use this parameter to specify what amount
317
+ needs to be reversed from which merchant(s).
318
+
319
+ If you simply want to fully reverse the routed funds, you can also use the `reverseRouting` parameter instead.
320
+ """
321
+
322
+ @model_serializer(mode="wrap")
323
+ def serialize_model(self, handler):
324
+ optional_fields = [
325
+ "settlementAmount",
326
+ "paymentId",
327
+ "settlementId",
328
+ "externalReference",
329
+ "routingReversals",
330
+ ]
331
+ nullable_fields = [
332
+ "settlementAmount",
333
+ "metadata",
334
+ "settlementId",
335
+ "routingReversals",
336
+ ]
337
+ null_default_fields = []
338
+
339
+ serialized = handler(self)
340
+
341
+ m = {}
342
+
343
+ for n, f in type(self).model_fields.items():
344
+ k = f.alias or n
345
+ val = serialized.get(k)
346
+ serialized.pop(k, None)
347
+
348
+ optional_nullable = k in optional_fields and k in nullable_fields
349
+ is_set = (
350
+ self.__pydantic_fields_set__.intersection({n})
351
+ or k in null_default_fields
352
+ ) # pylint: disable=no-member
353
+
354
+ if val is not None and val != UNSET_SENTINEL:
355
+ m[k] = val
356
+ elif val != UNSET_SENTINEL and (
357
+ not k in optional_fields or (optional_nullable and is_set)
358
+ ):
359
+ m[k] = val
360
+
361
+ return m