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.
- mollie/__init__.py +18 -0
- mollie/_hooks/__init__.py +5 -0
- mollie/_hooks/mollie_hooks.py +165 -0
- mollie/_hooks/registration.py +18 -0
- mollie/_hooks/sdkhooks.py +76 -0
- mollie/_hooks/types.py +113 -0
- mollie/_version.py +15 -0
- mollie/balance_transfers.py +651 -0
- mollie/balances.py +1105 -0
- mollie/basesdk.py +360 -0
- mollie/capabilities.py +209 -0
- mollie/captures.py +677 -0
- mollie/chargebacks_sdk.py +675 -0
- mollie/client_links.py +325 -0
- mollie/clients.py +409 -0
- mollie/customers.py +1563 -0
- mollie/delayed_routing.py +421 -0
- mollie/httpclient.py +125 -0
- mollie/invoices.py +429 -0
- mollie/mandates.py +895 -0
- mollie/methods.py +789 -0
- mollie/models/__init__.py +4002 -0
- mollie/models/address.py +29 -0
- mollie/models/amount.py +25 -0
- mollie/models/amount_nullable.py +24 -0
- mollie/models/apierror.py +40 -0
- mollie/models/balance_card_audience.py +10 -0
- mollie/models/balance_card_issuer.py +12 -0
- mollie/models/balance_card_region.py +12 -0
- mollie/models/balance_fee_type.py +43 -0
- mollie/models/balance_prepayment_part_type.py +13 -0
- mollie/models/balance_report_grouping.py +10 -0
- mollie/models/balance_transaction_type.py +47 -0
- mollie/models/balance_transfer_category.py +17 -0
- mollie/models/balance_transfer_category_response.py +18 -0
- mollie/models/balance_transfer_destination_type.py +14 -0
- mollie/models/balance_transfer_party_type.py +10 -0
- mollie/models/balance_transfer_party_type_response.py +11 -0
- mollie/models/balance_transfer_status.py +13 -0
- mollie/models/balance_transfer_status_reason_response.py +19 -0
- mollie/models/billingaddress.py +154 -0
- mollie/models/cancel_paymentop.py +93 -0
- mollie/models/cancel_refundop.py +86 -0
- mollie/models/cancel_subscriptionop.py +100 -0
- mollie/models/capability_requirement_status.py +15 -0
- mollie/models/capability_status.py +12 -0
- mollie/models/capability_status_reason.py +10 -0
- mollie/models/capture_mode.py +15 -0
- mollie/models/capture_mode_response.py +16 -0
- mollie/models/capture_response.py +265 -0
- mollie/models/client_link_request.py +210 -0
- mollie/models/client_link_response.py +56 -0
- mollie/models/clienterror.py +30 -0
- mollie/models/components_sub_totals.py +127 -0
- mollie/models/create_captureop.py +43 -0
- mollie/models/create_client_linkop.py +29 -0
- mollie/models/create_connect_balance_transferop.py +32 -0
- mollie/models/create_customer_paymentop.py +43 -0
- mollie/models/create_customerop.py +29 -0
- mollie/models/create_mandateop.py +43 -0
- mollie/models/create_payment_linkop.py +325 -0
- mollie/models/create_paymentop.py +73 -0
- mollie/models/create_profileop.py +29 -0
- mollie/models/create_refundop.py +43 -0
- mollie/models/create_sales_invoiceop.py +29 -0
- mollie/models/create_subscriptionop.py +43 -0
- mollie/models/create_webhook.py +123 -0
- mollie/models/create_webhookop.py +69 -0
- mollie/models/currencies.py +20 -0
- mollie/models/customer_response.py +169 -0
- mollie/models/delete_customerop.py +91 -0
- mollie/models/delete_payment_linkop.py +91 -0
- mollie/models/delete_profileop.py +29 -0
- mollie/models/delete_sales_invoiceop.py +44 -0
- mollie/models/delete_values_sales_invoice.py +54 -0
- mollie/models/delete_webhookop.py +56 -0
- mollie/models/entity_balance.py +325 -0
- mollie/models/entity_balance_report.py +541 -0
- mollie/models/entity_balance_transaction.py +1068 -0
- mollie/models/entity_balance_transfer.py +62 -0
- mollie/models/entity_balance_transfer_party.py +28 -0
- mollie/models/entity_balance_transfer_party_response.py +32 -0
- mollie/models/entity_balance_transfer_response.py +159 -0
- mollie/models/entity_capability.py +75 -0
- mollie/models/entity_capability_requirement.py +87 -0
- mollie/models/entity_capture.py +63 -0
- mollie/models/entity_chargeback.py +247 -0
- mollie/models/entity_customer.py +86 -0
- mollie/models/entity_event.py +46 -0
- mollie/models/entity_invoice.py +247 -0
- mollie/models/entity_method_get.py +329 -0
- mollie/models/entity_onboarding_status.py +95 -0
- mollie/models/entity_organization.py +178 -0
- mollie/models/entity_payment_route.py +111 -0
- mollie/models/entity_payment_route_response.py +140 -0
- mollie/models/entity_permission.py +61 -0
- mollie/models/entity_refund_response.py +361 -0
- mollie/models/entity_route.py +96 -0
- mollie/models/entity_settlement.py +467 -0
- mollie/models/entity_terminal.py +160 -0
- mollie/models/entity_webhook.py +122 -0
- mollie/models/entity_webhook_event.py +149 -0
- mollie/models/error_response.py +70 -0
- mollie/models/get_balance_reportop.py +126 -0
- mollie/models/get_balanceop.py +71 -0
- mollie/models/get_captureop.py +129 -0
- mollie/models/get_chargebackop.py +129 -0
- mollie/models/get_clientop.py +216 -0
- mollie/models/get_connect_balance_transferop.py +71 -0
- mollie/models/get_current_organizationop.py +22 -0
- mollie/models/get_current_profileop.py +22 -0
- mollie/models/get_customerop.py +286 -0
- mollie/models/get_invoiceop.py +29 -0
- mollie/models/get_mandateop.py +86 -0
- mollie/models/get_methodop.py +199 -0
- mollie/models/get_next_settlementop.py +22 -0
- mollie/models/get_onboarding_statusop.py +22 -0
- mollie/models/get_open_settlementop.py +22 -0
- mollie/models/get_organizationop.py +71 -0
- mollie/models/get_partner_statusop.py +231 -0
- mollie/models/get_payment_link_paymentsop.py +188 -0
- mollie/models/get_payment_linkop.py +77 -0
- mollie/models/get_paymentop.py +128 -0
- mollie/models/get_permissionop.py +73 -0
- mollie/models/get_primary_balanceop.py +22 -0
- mollie/models/get_profileop.py +71 -0
- mollie/models/get_refundop.py +129 -0
- mollie/models/get_sales_invoiceop.py +75 -0
- mollie/models/get_settlementop.py +29 -0
- mollie/models/get_subscriptionop.py +86 -0
- mollie/models/get_terminalop.py +77 -0
- mollie/models/get_webhook_eventop.py +71 -0
- mollie/models/get_webhookop.py +71 -0
- mollie/models/internal/__init__.py +54 -0
- mollie/models/internal/globals.py +59 -0
- mollie/models/line_categories.py +13 -0
- mollie/models/line_categories_response.py +14 -0
- mollie/models/list_all_chargebacksop.py +236 -0
- mollie/models/list_all_methodsop.py +249 -0
- mollie/models/list_all_refundsop.py +230 -0
- mollie/models/list_all_subscriptionsop.py +202 -0
- mollie/models/list_balance_transactionsop.py +174 -0
- mollie/models/list_balancesop.py +171 -0
- mollie/models/list_capabilitiesop.py +62 -0
- mollie/models/list_capture_response.py +264 -0
- mollie/models/list_capturesop.py +185 -0
- mollie/models/list_chargebacksop.py +185 -0
- mollie/models/list_clientsop.py +269 -0
- mollie/models/list_connect_balance_transfersop.py +177 -0
- mollie/models/list_customer_paymentsop.py +231 -0
- mollie/models/list_customer_response.py +164 -0
- mollie/models/list_customersop.py +172 -0
- mollie/models/list_entity_balance.py +322 -0
- mollie/models/list_entity_chargeback.py +244 -0
- mollie/models/list_entity_invoice.py +244 -0
- mollie/models/list_entity_method.py +315 -0
- mollie/models/list_entity_method_all.py +391 -0
- mollie/models/list_entity_permission.py +56 -0
- mollie/models/list_entity_refund.py +352 -0
- mollie/models/list_entity_settlement.py +457 -0
- mollie/models/list_entity_terminal.py +157 -0
- mollie/models/list_entity_webhook.py +117 -0
- mollie/models/list_invoicesop.py +175 -0
- mollie/models/list_links.py +68 -0
- mollie/models/list_mandate_response.py +261 -0
- mollie/models/list_mandatesop.py +186 -0
- mollie/models/list_methodsop.py +332 -0
- mollie/models/list_payment_linksop.py +159 -0
- mollie/models/list_payment_response.py +1953 -0
- mollie/models/list_paymentsop.py +217 -0
- mollie/models/list_permissionsop.py +85 -0
- mollie/models/list_profile_response.py +194 -0
- mollie/models/list_profilesop.py +118 -0
- mollie/models/list_refundsop.py +189 -0
- mollie/models/list_route_get_response.py +97 -0
- mollie/models/list_sales_invoice_response.py +505 -0
- mollie/models/list_sales_invoicesop.py +172 -0
- mollie/models/list_settlement_capturesop.py +187 -0
- mollie/models/list_settlement_chargebacksop.py +187 -0
- mollie/models/list_settlement_paymentsop.py +233 -0
- mollie/models/list_settlement_refundsop.py +191 -0
- mollie/models/list_settlementsop.py +178 -0
- mollie/models/list_subscription_paymentsop.py +242 -0
- mollie/models/list_subscription_response.py +344 -0
- mollie/models/list_subscriptionsop.py +189 -0
- mollie/models/list_terminalsop.py +172 -0
- mollie/models/list_webhooksop.py +189 -0
- mollie/models/locale.py +32 -0
- mollie/models/locale_response.py +33 -0
- mollie/models/mandate_details_card_label_response.py +22 -0
- mollie/models/mandate_method.py +15 -0
- mollie/models/mandate_method_response.py +16 -0
- mollie/models/mandate_request.py +160 -0
- mollie/models/mandate_response.py +264 -0
- mollie/models/metadata.py +19 -0
- mollie/models/method.py +50 -0
- mollie/models/method_include_wallets_parameter.py +8 -0
- mollie/models/method_resource_parameter.py +9 -0
- mollie/models/method_response.py +59 -0
- mollie/models/method_status.py +15 -0
- mollie/models/mode.py +12 -0
- mollie/models/no_response_error.py +17 -0
- mollie/models/onboarding_vat_regulation.py +16 -0
- mollie/models/organization_vat_regulation.py +17 -0
- mollie/models/payment_address.py +130 -0
- mollie/models/payment_create_routeop.py +43 -0
- mollie/models/payment_details_card_audition_response.py +12 -0
- mollie/models/payment_details_card_funding_response.py +14 -0
- mollie/models/payment_details_card_label_response.py +23 -0
- mollie/models/payment_details_card_security_response.py +12 -0
- mollie/models/payment_details_failure_reason_response.py +25 -0
- mollie/models/payment_details_fee_region_response.py +20 -0
- mollie/models/payment_details_receipt_card_read_method_response.py +17 -0
- mollie/models/payment_details_receipt_card_verification_method_response.py +21 -0
- mollie/models/payment_details_seller_protection_response.py +20 -0
- mollie/models/payment_details_wallet_response.py +11 -0
- mollie/models/payment_line_item.py +96 -0
- mollie/models/payment_line_item_response.py +104 -0
- mollie/models/payment_line_type.py +20 -0
- mollie/models/payment_line_type_response.py +21 -0
- mollie/models/payment_link_method.py +36 -0
- mollie/models/payment_link_method_response.py +37 -0
- mollie/models/payment_link_response.py +348 -0
- mollie/models/payment_link_sequence_type.py +9 -0
- mollie/models/payment_link_sequence_type_response.py +10 -0
- mollie/models/payment_list_routesop.py +140 -0
- mollie/models/payment_method.py +53 -0
- mollie/models/payment_request.py +919 -0
- mollie/models/payment_response.py +1953 -0
- mollie/models/profile_request.py +67 -0
- mollie/models/profile_response.py +197 -0
- mollie/models/profile_review_status_response.py +12 -0
- mollie/models/recurring_line_item.py +77 -0
- mollie/models/refund_external_reference_type.py +10 -0
- mollie/models/refund_external_reference_type_response.py +11 -0
- mollie/models/refund_request.py +200 -0
- mollie/models/release_authorizationop.py +108 -0
- mollie/models/request_apple_pay_payment_sessionop.py +76 -0
- mollie/models/responsevalidationerror.py +27 -0
- mollie/models/revoke_mandateop.py +100 -0
- mollie/models/route_create_response.py +97 -0
- mollie/models/route_destination_type.py +10 -0
- mollie/models/route_destination_type_response.py +11 -0
- mollie/models/sales_invoice_discount.py +21 -0
- mollie/models/sales_invoice_discount_response.py +25 -0
- mollie/models/sales_invoice_discount_type.py +11 -0
- mollie/models/sales_invoice_discount_type_response.py +12 -0
- mollie/models/sales_invoice_email_details.py +20 -0
- mollie/models/sales_invoice_line_item.py +67 -0
- mollie/models/sales_invoice_line_item_response.py +70 -0
- mollie/models/sales_invoice_payment_details.py +59 -0
- mollie/models/sales_invoice_payment_details_response.py +66 -0
- mollie/models/sales_invoice_payment_details_source.py +12 -0
- mollie/models/sales_invoice_payment_details_source_response.py +13 -0
- mollie/models/sales_invoice_payment_term.py +16 -0
- mollie/models/sales_invoice_payment_term_response.py +17 -0
- mollie/models/sales_invoice_recipient.py +176 -0
- mollie/models/sales_invoice_recipient_locale.py +18 -0
- mollie/models/sales_invoice_recipient_locale_response.py +19 -0
- mollie/models/sales_invoice_recipient_response.py +182 -0
- mollie/models/sales_invoice_recipient_type.py +13 -0
- mollie/models/sales_invoice_recipient_type_response.py +14 -0
- mollie/models/sales_invoice_request.py +256 -0
- mollie/models/sales_invoice_response.py +509 -0
- mollie/models/sales_invoice_status.py +25 -0
- mollie/models/sales_invoice_status_response.py +26 -0
- mollie/models/sales_invoice_vat_mode.py +13 -0
- mollie/models/sales_invoice_vat_mode_response.py +14 -0
- mollie/models/sales_invoice_vat_scheme.py +11 -0
- mollie/models/sales_invoice_vat_scheme_response.py +12 -0
- mollie/models/security.py +35 -0
- mollie/models/sequence_type.py +10 -0
- mollie/models/sequence_type_response.py +11 -0
- mollie/models/sorting.py +9 -0
- mollie/models/status_reason.py +168 -0
- mollie/models/sub_group.py +52 -0
- mollie/models/sub_totals.py +120 -0
- mollie/models/submit_onboarding_dataop.py +214 -0
- mollie/models/subscription_method.py +12 -0
- mollie/models/subscription_method_response.py +13 -0
- mollie/models/subscription_request.py +213 -0
- mollie/models/subscription_response.py +349 -0
- mollie/models/terminal_brand.py +12 -0
- mollie/models/terminal_model.py +16 -0
- mollie/models/test_webhookop.py +64 -0
- mollie/models/update_customerop.py +43 -0
- mollie/models/update_payment_linkop.py +172 -0
- mollie/models/update_paymentop.py +332 -0
- mollie/models/update_profileop.py +147 -0
- mollie/models/update_sales_invoiceop.py +44 -0
- mollie/models/update_subscriptionop.py +188 -0
- mollie/models/update_values_sales_invoice.py +176 -0
- mollie/models/update_webhookop.py +83 -0
- mollie/models/url.py +24 -0
- mollie/models/url_nullable.py +25 -0
- mollie/models/webhook_event_types.py +18 -0
- mollie/models/webhook_status.py +14 -0
- mollie/onboarding.py +403 -0
- mollie/organizations.py +579 -0
- mollie/payment_links.py +1323 -0
- mollie/payments_sdk.py +1385 -0
- mollie/permissions.py +397 -0
- mollie/profiles.py +1209 -0
- mollie/py.typed +1 -0
- mollie/refunds_sdk.py +1111 -0
- mollie/sales_invoices.py +1121 -0
- mollie/sdk.py +265 -0
- mollie/sdkconfiguration.py +50 -0
- mollie/settlements.py +1735 -0
- mollie/subscriptions.py +1617 -0
- mollie/terminals.py +427 -0
- mollie/types/__init__.py +21 -0
- mollie/types/basemodel.py +39 -0
- mollie/utils/__init__.py +200 -0
- mollie/utils/annotations.py +79 -0
- mollie/utils/datetimes.py +23 -0
- mollie/utils/enums.py +74 -0
- mollie/utils/eventstreaming.py +248 -0
- mollie/utils/forms.py +223 -0
- mollie/utils/headers.py +136 -0
- mollie/utils/logger.py +27 -0
- mollie/utils/metadata.py +118 -0
- mollie/utils/queryparams.py +205 -0
- mollie/utils/requestbodies.py +66 -0
- mollie/utils/retries.py +217 -0
- mollie/utils/security.py +195 -0
- mollie/utils/serializers.py +249 -0
- mollie/utils/unmarshal_json_response.py +24 -0
- mollie/utils/url.py +155 -0
- mollie/utils/values.py +137 -0
- mollie/wallets.py +263 -0
- mollie/webhook_events.py +211 -0
- mollie/webhooks.py +1305 -0
- mollie_api_py-1.0.0.dist-info/METADATA +834 -0
- mollie_api_py-1.0.0.dist-info/RECORD +337 -0
- mollie_api_py-1.0.0.dist-info/WHEEL +4 -0
- mollie_api_py-1.0.0.dist-info/licenses/LICENSE.md +24 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
|
5
|
+
from mollie.utils import (
|
|
6
|
+
FieldMetadata,
|
|
7
|
+
HeaderMetadata,
|
|
8
|
+
PathParamMetadata,
|
|
9
|
+
RequestMetadata,
|
|
10
|
+
)
|
|
11
|
+
import pydantic
|
|
12
|
+
from pydantic import model_serializer
|
|
13
|
+
from typing import Optional
|
|
14
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class ReleaseAuthorizationRequestBodyTypedDict(TypedDict):
|
|
18
|
+
profile_id: NotRequired[str]
|
|
19
|
+
r"""The identifier referring to the [profile](get-profile) this entity belongs to.
|
|
20
|
+
|
|
21
|
+
Most API credentials are linked to a single profile. In these cases the `profileId` can be omitted in the creation
|
|
22
|
+
request. For organization-level credentials such as OAuth access tokens however, the `profileId` parameter is
|
|
23
|
+
required.
|
|
24
|
+
"""
|
|
25
|
+
testmode: NotRequired[Nullable[bool]]
|
|
26
|
+
r"""Whether to create the entity in test mode or live mode.
|
|
27
|
+
|
|
28
|
+
Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
|
|
29
|
+
omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
|
|
30
|
+
`testmode` to `true`.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class ReleaseAuthorizationRequestBody(BaseModel):
|
|
35
|
+
profile_id: Annotated[Optional[str], pydantic.Field(alias="profileId")] = None
|
|
36
|
+
r"""The identifier referring to the [profile](get-profile) this entity belongs to.
|
|
37
|
+
|
|
38
|
+
Most API credentials are linked to a single profile. In these cases the `profileId` can be omitted in the creation
|
|
39
|
+
request. For organization-level credentials such as OAuth access tokens however, the `profileId` parameter is
|
|
40
|
+
required.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
testmode: OptionalNullable[bool] = UNSET
|
|
44
|
+
r"""Whether to create the entity in test mode or live mode.
|
|
45
|
+
|
|
46
|
+
Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
|
|
47
|
+
omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
|
|
48
|
+
`testmode` to `true`.
|
|
49
|
+
"""
|
|
50
|
+
|
|
51
|
+
@model_serializer(mode="wrap")
|
|
52
|
+
def serialize_model(self, handler):
|
|
53
|
+
optional_fields = ["profileId", "testmode"]
|
|
54
|
+
nullable_fields = ["testmode"]
|
|
55
|
+
null_default_fields = []
|
|
56
|
+
|
|
57
|
+
serialized = handler(self)
|
|
58
|
+
|
|
59
|
+
m = {}
|
|
60
|
+
|
|
61
|
+
for n, f in type(self).model_fields.items():
|
|
62
|
+
k = f.alias or n
|
|
63
|
+
val = serialized.get(k)
|
|
64
|
+
serialized.pop(k, None)
|
|
65
|
+
|
|
66
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
67
|
+
is_set = (
|
|
68
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
69
|
+
or k in null_default_fields
|
|
70
|
+
) # pylint: disable=no-member
|
|
71
|
+
|
|
72
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
73
|
+
m[k] = val
|
|
74
|
+
elif val != UNSET_SENTINEL and (
|
|
75
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
76
|
+
):
|
|
77
|
+
m[k] = val
|
|
78
|
+
|
|
79
|
+
return m
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class ReleaseAuthorizationRequestTypedDict(TypedDict):
|
|
83
|
+
payment_id: str
|
|
84
|
+
r"""Provide the ID of the related payment."""
|
|
85
|
+
idempotency_key: NotRequired[str]
|
|
86
|
+
r"""A unique key to ensure idempotent requests. This key should be a UUID v4 string."""
|
|
87
|
+
request_body: NotRequired[ReleaseAuthorizationRequestBodyTypedDict]
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class ReleaseAuthorizationRequest(BaseModel):
|
|
91
|
+
payment_id: Annotated[
|
|
92
|
+
str,
|
|
93
|
+
pydantic.Field(alias="paymentId"),
|
|
94
|
+
FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
|
|
95
|
+
]
|
|
96
|
+
r"""Provide the ID of the related payment."""
|
|
97
|
+
|
|
98
|
+
idempotency_key: Annotated[
|
|
99
|
+
Optional[str],
|
|
100
|
+
pydantic.Field(alias="idempotency-key"),
|
|
101
|
+
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
|
102
|
+
] = None
|
|
103
|
+
r"""A unique key to ensure idempotent requests. This key should be a UUID v4 string."""
|
|
104
|
+
|
|
105
|
+
request_body: Annotated[
|
|
106
|
+
Optional[ReleaseAuthorizationRequestBody],
|
|
107
|
+
FieldMetadata(request=RequestMetadata(media_type="application/json")),
|
|
108
|
+
] = None
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from mollie.types import BaseModel
|
|
5
|
+
from mollie.utils import FieldMetadata, HeaderMetadata, RequestMetadata
|
|
6
|
+
import pydantic
|
|
7
|
+
from typing import Optional
|
|
8
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class RequestApplePayPaymentSessionRequestBodyTypedDict(TypedDict):
|
|
12
|
+
validation_url: str
|
|
13
|
+
r"""The validationUrl you got from the
|
|
14
|
+
[ApplePayValidateMerchant event](https://developer.apple.com/documentation/apple_pay_on_the_web/applepayvalidatemerchantevent).
|
|
15
|
+
|
|
16
|
+
A list of all
|
|
17
|
+
[valid host names](https://developer.apple.com/documentation/apple_pay_on_the_web/setting_up_your_server)
|
|
18
|
+
for merchant validation is available. You should white list these in your application and reject any
|
|
19
|
+
`validationUrl`s that have a host name not in the list.
|
|
20
|
+
"""
|
|
21
|
+
domain: str
|
|
22
|
+
r"""The domain of your web shop, that is visible in the browser's location bar. For example
|
|
23
|
+
`pay.myshop.com`.
|
|
24
|
+
"""
|
|
25
|
+
profile_id: NotRequired[str]
|
|
26
|
+
r"""The identifier referring to the [profile](get-profile) this entity belongs to.
|
|
27
|
+
|
|
28
|
+
Most API credentials are linked to a single profile. In these cases the `profileId` can be omitted in the creation
|
|
29
|
+
request. For organization-level credentials such as OAuth access tokens however, the `profileId` parameter is
|
|
30
|
+
required.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class RequestApplePayPaymentSessionRequestBody(BaseModel):
|
|
35
|
+
validation_url: Annotated[str, pydantic.Field(alias="validationUrl")]
|
|
36
|
+
r"""The validationUrl you got from the
|
|
37
|
+
[ApplePayValidateMerchant event](https://developer.apple.com/documentation/apple_pay_on_the_web/applepayvalidatemerchantevent).
|
|
38
|
+
|
|
39
|
+
A list of all
|
|
40
|
+
[valid host names](https://developer.apple.com/documentation/apple_pay_on_the_web/setting_up_your_server)
|
|
41
|
+
for merchant validation is available. You should white list these in your application and reject any
|
|
42
|
+
`validationUrl`s that have a host name not in the list.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
domain: str
|
|
46
|
+
r"""The domain of your web shop, that is visible in the browser's location bar. For example
|
|
47
|
+
`pay.myshop.com`.
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
profile_id: Annotated[Optional[str], pydantic.Field(alias="profileId")] = None
|
|
51
|
+
r"""The identifier referring to the [profile](get-profile) this entity belongs to.
|
|
52
|
+
|
|
53
|
+
Most API credentials are linked to a single profile. In these cases the `profileId` can be omitted in the creation
|
|
54
|
+
request. For organization-level credentials such as OAuth access tokens however, the `profileId` parameter is
|
|
55
|
+
required.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class RequestApplePayPaymentSessionRequestTypedDict(TypedDict):
|
|
60
|
+
idempotency_key: NotRequired[str]
|
|
61
|
+
r"""A unique key to ensure idempotent requests. This key should be a UUID v4 string."""
|
|
62
|
+
request_body: NotRequired[RequestApplePayPaymentSessionRequestBodyTypedDict]
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class RequestApplePayPaymentSessionRequest(BaseModel):
|
|
66
|
+
idempotency_key: Annotated[
|
|
67
|
+
Optional[str],
|
|
68
|
+
pydantic.Field(alias="idempotency-key"),
|
|
69
|
+
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
|
70
|
+
] = None
|
|
71
|
+
r"""A unique key to ensure idempotent requests. This key should be a UUID v4 string."""
|
|
72
|
+
|
|
73
|
+
request_body: Annotated[
|
|
74
|
+
Optional[RequestApplePayPaymentSessionRequestBody],
|
|
75
|
+
FieldMetadata(request=RequestMetadata(media_type="application/json")),
|
|
76
|
+
] = None
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
import httpx
|
|
4
|
+
from typing import Optional
|
|
5
|
+
from dataclasses import dataclass
|
|
6
|
+
|
|
7
|
+
from mollie.models import ClientError
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass(unsafe_hash=True)
|
|
11
|
+
class ResponseValidationError(ClientError):
|
|
12
|
+
"""Error raised when there is a type mismatch between the response data and the expected Pydantic model."""
|
|
13
|
+
|
|
14
|
+
def __init__(
|
|
15
|
+
self,
|
|
16
|
+
message: str,
|
|
17
|
+
raw_response: httpx.Response,
|
|
18
|
+
cause: Exception,
|
|
19
|
+
body: Optional[str] = None,
|
|
20
|
+
):
|
|
21
|
+
message = f"{message}: {cause}"
|
|
22
|
+
super().__init__(message, raw_response, body)
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def cause(self):
|
|
26
|
+
"""Normally the Pydantic ValidationError"""
|
|
27
|
+
return self.__cause__
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
|
5
|
+
from mollie.utils import (
|
|
6
|
+
FieldMetadata,
|
|
7
|
+
HeaderMetadata,
|
|
8
|
+
PathParamMetadata,
|
|
9
|
+
RequestMetadata,
|
|
10
|
+
)
|
|
11
|
+
import pydantic
|
|
12
|
+
from pydantic import model_serializer
|
|
13
|
+
from typing import Optional
|
|
14
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class RevokeMandateRequestBodyTypedDict(TypedDict):
|
|
18
|
+
testmode: NotRequired[Nullable[bool]]
|
|
19
|
+
r"""Most API credentials are specifically created for either live mode or test mode. For organization-level credentials
|
|
20
|
+
such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.
|
|
21
|
+
|
|
22
|
+
Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class RevokeMandateRequestBody(BaseModel):
|
|
27
|
+
testmode: OptionalNullable[bool] = UNSET
|
|
28
|
+
r"""Most API credentials are specifically created for either live mode or test mode. For organization-level credentials
|
|
29
|
+
such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.
|
|
30
|
+
|
|
31
|
+
Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
@model_serializer(mode="wrap")
|
|
35
|
+
def serialize_model(self, handler):
|
|
36
|
+
optional_fields = ["testmode"]
|
|
37
|
+
nullable_fields = ["testmode"]
|
|
38
|
+
null_default_fields = []
|
|
39
|
+
|
|
40
|
+
serialized = handler(self)
|
|
41
|
+
|
|
42
|
+
m = {}
|
|
43
|
+
|
|
44
|
+
for n, f in type(self).model_fields.items():
|
|
45
|
+
k = f.alias or n
|
|
46
|
+
val = serialized.get(k)
|
|
47
|
+
serialized.pop(k, None)
|
|
48
|
+
|
|
49
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
50
|
+
is_set = (
|
|
51
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
52
|
+
or k in null_default_fields
|
|
53
|
+
) # pylint: disable=no-member
|
|
54
|
+
|
|
55
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
56
|
+
m[k] = val
|
|
57
|
+
elif val != UNSET_SENTINEL and (
|
|
58
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
59
|
+
):
|
|
60
|
+
m[k] = val
|
|
61
|
+
|
|
62
|
+
return m
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class RevokeMandateRequestTypedDict(TypedDict):
|
|
66
|
+
customer_id: str
|
|
67
|
+
r"""Provide the ID of the related customer."""
|
|
68
|
+
mandate_id: str
|
|
69
|
+
r"""Provide the ID of the related mandate."""
|
|
70
|
+
idempotency_key: NotRequired[str]
|
|
71
|
+
r"""A unique key to ensure idempotent requests. This key should be a UUID v4 string."""
|
|
72
|
+
request_body: NotRequired[RevokeMandateRequestBodyTypedDict]
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class RevokeMandateRequest(BaseModel):
|
|
76
|
+
customer_id: Annotated[
|
|
77
|
+
str,
|
|
78
|
+
pydantic.Field(alias="customerId"),
|
|
79
|
+
FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
|
|
80
|
+
]
|
|
81
|
+
r"""Provide the ID of the related customer."""
|
|
82
|
+
|
|
83
|
+
mandate_id: Annotated[
|
|
84
|
+
str,
|
|
85
|
+
pydantic.Field(alias="mandateId"),
|
|
86
|
+
FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
|
|
87
|
+
]
|
|
88
|
+
r"""Provide the ID of the related mandate."""
|
|
89
|
+
|
|
90
|
+
idempotency_key: Annotated[
|
|
91
|
+
Optional[str],
|
|
92
|
+
pydantic.Field(alias="idempotency-key"),
|
|
93
|
+
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
|
94
|
+
] = None
|
|
95
|
+
r"""A unique key to ensure idempotent requests. This key should be a UUID v4 string."""
|
|
96
|
+
|
|
97
|
+
request_body: Annotated[
|
|
98
|
+
Optional[RevokeMandateRequestBody],
|
|
99
|
+
FieldMetadata(request=RequestMetadata(media_type="application/json")),
|
|
100
|
+
] = None
|
|
@@ -0,0 +1,97 @@
|
|
|
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 .url import URL, URLTypedDict
|
|
7
|
+
from mollie.types import BaseModel
|
|
8
|
+
from mollie.utils import validate_open_enum
|
|
9
|
+
import pydantic
|
|
10
|
+
from pydantic.functional_validators import PlainValidator
|
|
11
|
+
from typing_extensions import Annotated, TypedDict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class RouteCreateResponseDestinationTypedDict(TypedDict):
|
|
15
|
+
r"""The destination of the route."""
|
|
16
|
+
|
|
17
|
+
type: RouteDestinationTypeResponse
|
|
18
|
+
r"""The type of destination. Currently only the destination type `organization` is supported."""
|
|
19
|
+
organization_id: str
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class RouteCreateResponseDestination(BaseModel):
|
|
23
|
+
r"""The destination of the route."""
|
|
24
|
+
|
|
25
|
+
type: Annotated[
|
|
26
|
+
RouteDestinationTypeResponse, PlainValidator(validate_open_enum(False))
|
|
27
|
+
]
|
|
28
|
+
r"""The type of destination. Currently only the destination type `organization` is supported."""
|
|
29
|
+
|
|
30
|
+
organization_id: Annotated[str, pydantic.Field(alias="organizationId")]
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class RouteCreateResponseLinksTypedDict(TypedDict):
|
|
34
|
+
r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
|
|
35
|
+
|
|
36
|
+
self_: URLTypedDict
|
|
37
|
+
r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
|
|
38
|
+
documentation: URLTypedDict
|
|
39
|
+
r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class RouteCreateResponseLinks(BaseModel):
|
|
43
|
+
r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
|
|
44
|
+
|
|
45
|
+
self_: Annotated[URL, pydantic.Field(alias="self")]
|
|
46
|
+
r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
|
|
47
|
+
|
|
48
|
+
documentation: URL
|
|
49
|
+
r"""In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field."""
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class RouteCreateResponseTypedDict(TypedDict):
|
|
53
|
+
resource: str
|
|
54
|
+
r"""Indicates the response contains a route object. Will always contain the string `route` for this endpoint."""
|
|
55
|
+
id: str
|
|
56
|
+
r"""The identifier uniquely referring to this route. Mollie assigns this identifier at route creation time. Mollie
|
|
57
|
+
will always refer to the route by this ID. Example: `crt_dyARQ3JzCgtPDhU2Pbq3J`.
|
|
58
|
+
"""
|
|
59
|
+
payment_id: str
|
|
60
|
+
r"""The unique identifier of the payment. For example: `tr_5B8cwPMGnU6qLbRvo7qEZo`.
|
|
61
|
+
The full payment object can be retrieved via the payment URL in the `_links` object.
|
|
62
|
+
"""
|
|
63
|
+
amount: AmountTypedDict
|
|
64
|
+
r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
|
|
65
|
+
description: str
|
|
66
|
+
r"""The description of the route. This description is shown in the reports."""
|
|
67
|
+
destination: RouteCreateResponseDestinationTypedDict
|
|
68
|
+
r"""The destination of the route."""
|
|
69
|
+
links: RouteCreateResponseLinksTypedDict
|
|
70
|
+
r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class RouteCreateResponse(BaseModel):
|
|
74
|
+
resource: str
|
|
75
|
+
r"""Indicates the response contains a route object. Will always contain the string `route` for this endpoint."""
|
|
76
|
+
|
|
77
|
+
id: str
|
|
78
|
+
r"""The identifier uniquely referring to this route. Mollie assigns this identifier at route creation time. Mollie
|
|
79
|
+
will always refer to the route by this ID. Example: `crt_dyARQ3JzCgtPDhU2Pbq3J`.
|
|
80
|
+
"""
|
|
81
|
+
|
|
82
|
+
payment_id: Annotated[str, pydantic.Field(alias="paymentId")]
|
|
83
|
+
r"""The unique identifier of the payment. For example: `tr_5B8cwPMGnU6qLbRvo7qEZo`.
|
|
84
|
+
The full payment object can be retrieved via the payment URL in the `_links` object.
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
amount: Amount
|
|
88
|
+
r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
|
|
89
|
+
|
|
90
|
+
description: str
|
|
91
|
+
r"""The description of the route. This description is shown in the reports."""
|
|
92
|
+
|
|
93
|
+
destination: RouteCreateResponseDestination
|
|
94
|
+
r"""The destination of the route."""
|
|
95
|
+
|
|
96
|
+
links: Annotated[RouteCreateResponseLinks, pydantic.Field(alias="_links")]
|
|
97
|
+
r"""An object with several relevant URLs. Every URL object will contain an `href` and a `type` field."""
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from enum import Enum
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class RouteDestinationType(str, Enum):
|
|
8
|
+
r"""The type of destination. Currently only the destination type `organization` is supported."""
|
|
9
|
+
|
|
10
|
+
ORGANIZATION = "organization"
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from enum import Enum
|
|
5
|
+
from mollie import utils
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class RouteDestinationTypeResponse(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
9
|
+
r"""The type of destination. Currently only the destination type `organization` is supported."""
|
|
10
|
+
|
|
11
|
+
ORGANIZATION = "organization"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from .sales_invoice_discount_type import SalesInvoiceDiscountType
|
|
5
|
+
from mollie.types import BaseModel
|
|
6
|
+
from typing_extensions import TypedDict
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class SalesInvoiceDiscountTypedDict(TypedDict):
|
|
10
|
+
type: SalesInvoiceDiscountType
|
|
11
|
+
r"""The type of discount."""
|
|
12
|
+
value: str
|
|
13
|
+
r"""A string containing an exact monetary amount in the given currency, or the percentage."""
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class SalesInvoiceDiscount(BaseModel):
|
|
17
|
+
type: SalesInvoiceDiscountType
|
|
18
|
+
r"""The type of discount."""
|
|
19
|
+
|
|
20
|
+
value: str
|
|
21
|
+
r"""A string containing an exact monetary amount in the given currency, or the percentage."""
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from .sales_invoice_discount_type_response import SalesInvoiceDiscountTypeResponse
|
|
5
|
+
from mollie.types import BaseModel
|
|
6
|
+
from mollie.utils import validate_open_enum
|
|
7
|
+
from pydantic.functional_validators import PlainValidator
|
|
8
|
+
from typing_extensions import Annotated, TypedDict
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SalesInvoiceDiscountResponseTypedDict(TypedDict):
|
|
12
|
+
type: SalesInvoiceDiscountTypeResponse
|
|
13
|
+
r"""The type of discount."""
|
|
14
|
+
value: str
|
|
15
|
+
r"""A string containing an exact monetary amount in the given currency, or the percentage."""
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class SalesInvoiceDiscountResponse(BaseModel):
|
|
19
|
+
type: Annotated[
|
|
20
|
+
SalesInvoiceDiscountTypeResponse, PlainValidator(validate_open_enum(False))
|
|
21
|
+
]
|
|
22
|
+
r"""The type of discount."""
|
|
23
|
+
|
|
24
|
+
value: str
|
|
25
|
+
r"""A string containing an exact monetary amount in the given currency, or the percentage."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from enum import Enum
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class SalesInvoiceDiscountType(str, Enum):
|
|
8
|
+
r"""The type of discount."""
|
|
9
|
+
|
|
10
|
+
AMOUNT = "amount"
|
|
11
|
+
PERCENTAGE = "percentage"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from enum import Enum
|
|
5
|
+
from mollie import utils
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class SalesInvoiceDiscountTypeResponse(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
9
|
+
r"""The type of discount."""
|
|
10
|
+
|
|
11
|
+
AMOUNT = "amount"
|
|
12
|
+
PERCENTAGE = "percentage"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from mollie.types import BaseModel
|
|
5
|
+
from typing_extensions import TypedDict
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class SalesInvoiceEmailDetailsTypedDict(TypedDict):
|
|
9
|
+
subject: str
|
|
10
|
+
r"""The subject of the email to be sent."""
|
|
11
|
+
body: str
|
|
12
|
+
r"""The body of the email to be sent. To add newline characters, you can use `\n`."""
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class SalesInvoiceEmailDetails(BaseModel):
|
|
16
|
+
subject: str
|
|
17
|
+
r"""The subject of the email to be sent."""
|
|
18
|
+
|
|
19
|
+
body: str
|
|
20
|
+
r"""The body of the email to be sent. To add newline characters, you can use `\n`."""
|
|
@@ -0,0 +1,67 @@
|
|
|
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 .sales_invoice_discount import SalesInvoiceDiscount, SalesInvoiceDiscountTypedDict
|
|
6
|
+
from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
|
7
|
+
import pydantic
|
|
8
|
+
from pydantic import model_serializer
|
|
9
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class SalesInvoiceLineItemTypedDict(TypedDict):
|
|
13
|
+
description: str
|
|
14
|
+
r"""A description of the line item. For example *LEGO 4440 Forest Police Station*."""
|
|
15
|
+
quantity: int
|
|
16
|
+
r"""The number of items."""
|
|
17
|
+
vat_rate: str
|
|
18
|
+
r"""The vat rate to be applied to this line item."""
|
|
19
|
+
unit_price: AmountTypedDict
|
|
20
|
+
r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
|
|
21
|
+
discount: NotRequired[Nullable[SalesInvoiceDiscountTypedDict]]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class SalesInvoiceLineItem(BaseModel):
|
|
25
|
+
description: str
|
|
26
|
+
r"""A description of the line item. For example *LEGO 4440 Forest Police Station*."""
|
|
27
|
+
|
|
28
|
+
quantity: int
|
|
29
|
+
r"""The number of items."""
|
|
30
|
+
|
|
31
|
+
vat_rate: Annotated[str, pydantic.Field(alias="vatRate")]
|
|
32
|
+
r"""The vat rate to be applied to this line item."""
|
|
33
|
+
|
|
34
|
+
unit_price: Annotated[Amount, pydantic.Field(alias="unitPrice")]
|
|
35
|
+
r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
|
|
36
|
+
|
|
37
|
+
discount: OptionalNullable[SalesInvoiceDiscount] = UNSET
|
|
38
|
+
|
|
39
|
+
@model_serializer(mode="wrap")
|
|
40
|
+
def serialize_model(self, handler):
|
|
41
|
+
optional_fields = ["discount"]
|
|
42
|
+
nullable_fields = ["discount"]
|
|
43
|
+
null_default_fields = []
|
|
44
|
+
|
|
45
|
+
serialized = handler(self)
|
|
46
|
+
|
|
47
|
+
m = {}
|
|
48
|
+
|
|
49
|
+
for n, f in type(self).model_fields.items():
|
|
50
|
+
k = f.alias or n
|
|
51
|
+
val = serialized.get(k)
|
|
52
|
+
serialized.pop(k, None)
|
|
53
|
+
|
|
54
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
55
|
+
is_set = (
|
|
56
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
57
|
+
or k in null_default_fields
|
|
58
|
+
) # pylint: disable=no-member
|
|
59
|
+
|
|
60
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
61
|
+
m[k] = val
|
|
62
|
+
elif val != UNSET_SENTINEL and (
|
|
63
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
64
|
+
):
|
|
65
|
+
m[k] = val
|
|
66
|
+
|
|
67
|
+
return m
|
|
@@ -0,0 +1,70 @@
|
|
|
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 .sales_invoice_discount_response import (
|
|
6
|
+
SalesInvoiceDiscountResponse,
|
|
7
|
+
SalesInvoiceDiscountResponseTypedDict,
|
|
8
|
+
)
|
|
9
|
+
from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
|
10
|
+
import pydantic
|
|
11
|
+
from pydantic import model_serializer
|
|
12
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class SalesInvoiceLineItemResponseTypedDict(TypedDict):
|
|
16
|
+
description: str
|
|
17
|
+
r"""A description of the line item. For example *LEGO 4440 Forest Police Station*."""
|
|
18
|
+
quantity: int
|
|
19
|
+
r"""The number of items."""
|
|
20
|
+
vat_rate: str
|
|
21
|
+
r"""The vat rate to be applied to this line item."""
|
|
22
|
+
unit_price: AmountTypedDict
|
|
23
|
+
r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
|
|
24
|
+
discount: NotRequired[Nullable[SalesInvoiceDiscountResponseTypedDict]]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class SalesInvoiceLineItemResponse(BaseModel):
|
|
28
|
+
description: str
|
|
29
|
+
r"""A description of the line item. For example *LEGO 4440 Forest Police Station*."""
|
|
30
|
+
|
|
31
|
+
quantity: int
|
|
32
|
+
r"""The number of items."""
|
|
33
|
+
|
|
34
|
+
vat_rate: Annotated[str, pydantic.Field(alias="vatRate")]
|
|
35
|
+
r"""The vat rate to be applied to this line item."""
|
|
36
|
+
|
|
37
|
+
unit_price: Annotated[Amount, pydantic.Field(alias="unitPrice")]
|
|
38
|
+
r"""In v2 endpoints, monetary amounts are represented as objects with a `currency` and `value` field."""
|
|
39
|
+
|
|
40
|
+
discount: OptionalNullable[SalesInvoiceDiscountResponse] = UNSET
|
|
41
|
+
|
|
42
|
+
@model_serializer(mode="wrap")
|
|
43
|
+
def serialize_model(self, handler):
|
|
44
|
+
optional_fields = ["discount"]
|
|
45
|
+
nullable_fields = ["discount"]
|
|
46
|
+
null_default_fields = []
|
|
47
|
+
|
|
48
|
+
serialized = handler(self)
|
|
49
|
+
|
|
50
|
+
m = {}
|
|
51
|
+
|
|
52
|
+
for n, f in type(self).model_fields.items():
|
|
53
|
+
k = f.alias or n
|
|
54
|
+
val = serialized.get(k)
|
|
55
|
+
serialized.pop(k, None)
|
|
56
|
+
|
|
57
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
58
|
+
is_set = (
|
|
59
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
60
|
+
or k in null_default_fields
|
|
61
|
+
) # pylint: disable=no-member
|
|
62
|
+
|
|
63
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
64
|
+
m[k] = val
|
|
65
|
+
elif val != UNSET_SENTINEL and (
|
|
66
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
67
|
+
):
|
|
68
|
+
m[k] = val
|
|
69
|
+
|
|
70
|
+
return m
|