mollie-api-py 1.1.1__py3-none-any.whl → 1.1.2__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/_version.py CHANGED
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "mollie-api-py"
6
- __version__: str = "1.1.1"
6
+ __version__: str = "1.1.2"
7
7
  __openapi_doc_version__: str = "1.0.0"
8
8
  __gen_version__: str = "2.730.5"
9
- __user_agent__: str = "speakeasy-sdk/python 1.1.1 2.730.5 1.0.0 mollie-api-py"
9
+ __user_agent__: str = "speakeasy-sdk/python 1.1.2 2.730.5 1.0.0 mollie-api-py"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
mollie/customers.py CHANGED
@@ -653,8 +653,11 @@ class Customers(BaseSDK):
653
653
  *,
654
654
  customer_id: str,
655
655
  idempotency_key: Optional[str] = None,
656
- entity_customer: Optional[
657
- Union[models.EntityCustomer, models.EntityCustomerTypedDict]
656
+ request_body: Optional[
657
+ Union[
658
+ models.UpdateCustomerRequestBody,
659
+ models.UpdateCustomerRequestBodyTypedDict,
660
+ ]
658
661
  ] = None,
659
662
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
660
663
  server_url: Optional[str] = None,
@@ -669,7 +672,7 @@ class Customers(BaseSDK):
669
672
 
670
673
  :param customer_id: Provide the ID of the related customer.
671
674
  :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
672
- :param entity_customer:
675
+ :param request_body:
673
676
  :param retries: Override the default retry configuration for this method
674
677
  :param server_url: Override the default server URL for this method
675
678
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -688,8 +691,8 @@ class Customers(BaseSDK):
688
691
  request = models.UpdateCustomerRequest(
689
692
  customer_id=customer_id,
690
693
  idempotency_key=idempotency_key,
691
- entity_customer=utils.get_pydantic_model(
692
- entity_customer, Optional[models.EntityCustomer]
694
+ request_body=utils.get_pydantic_model(
695
+ request_body, Optional[models.UpdateCustomerRequestBody]
693
696
  ),
694
697
  )
695
698
 
@@ -707,11 +710,11 @@ class Customers(BaseSDK):
707
710
  http_headers=http_headers,
708
711
  security=self.sdk_configuration.security,
709
712
  get_serialized_body=lambda: utils.serialize_request_body(
710
- request.entity_customer,
713
+ request.request_body,
711
714
  False,
712
715
  True,
713
716
  "json",
714
- Optional[models.EntityCustomer],
717
+ Optional[models.UpdateCustomerRequestBody],
715
718
  ),
716
719
  timeout_ms=timeout_ms,
717
720
  )
@@ -763,8 +766,11 @@ class Customers(BaseSDK):
763
766
  *,
764
767
  customer_id: str,
765
768
  idempotency_key: Optional[str] = None,
766
- entity_customer: Optional[
767
- Union[models.EntityCustomer, models.EntityCustomerTypedDict]
769
+ request_body: Optional[
770
+ Union[
771
+ models.UpdateCustomerRequestBody,
772
+ models.UpdateCustomerRequestBodyTypedDict,
773
+ ]
768
774
  ] = None,
769
775
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
770
776
  server_url: Optional[str] = None,
@@ -779,7 +785,7 @@ class Customers(BaseSDK):
779
785
 
780
786
  :param customer_id: Provide the ID of the related customer.
781
787
  :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
782
- :param entity_customer:
788
+ :param request_body:
783
789
  :param retries: Override the default retry configuration for this method
784
790
  :param server_url: Override the default server URL for this method
785
791
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -798,8 +804,8 @@ class Customers(BaseSDK):
798
804
  request = models.UpdateCustomerRequest(
799
805
  customer_id=customer_id,
800
806
  idempotency_key=idempotency_key,
801
- entity_customer=utils.get_pydantic_model(
802
- entity_customer, Optional[models.EntityCustomer]
807
+ request_body=utils.get_pydantic_model(
808
+ request_body, Optional[models.UpdateCustomerRequestBody]
803
809
  ),
804
810
  )
805
811
 
@@ -817,11 +823,11 @@ class Customers(BaseSDK):
817
823
  http_headers=http_headers,
818
824
  security=self.sdk_configuration.security,
819
825
  get_serialized_body=lambda: utils.serialize_request_body(
820
- request.entity_customer,
826
+ request.request_body,
821
827
  False,
822
828
  True,
823
829
  "json",
824
- Optional[models.EntityCustomer],
830
+ Optional[models.UpdateCustomerRequestBody],
825
831
  ),
826
832
  timeout_ms=timeout_ms,
827
833
  )
mollie/models/__init__.py CHANGED
@@ -1481,7 +1481,12 @@ if TYPE_CHECKING:
1481
1481
  TestWebhookRequestBodyTypedDict,
1482
1482
  TestWebhookRequestTypedDict,
1483
1483
  )
1484
- from .update_customerop import UpdateCustomerRequest, UpdateCustomerRequestTypedDict
1484
+ from .update_customerop import (
1485
+ UpdateCustomerRequest,
1486
+ UpdateCustomerRequestBody,
1487
+ UpdateCustomerRequestBodyTypedDict,
1488
+ UpdateCustomerRequestTypedDict,
1489
+ )
1485
1490
  from .update_payment_linkop import (
1486
1491
  UpdatePaymentLinkRequest,
1487
1492
  UpdatePaymentLinkRequestBody,
@@ -1502,6 +1507,8 @@ if TYPE_CHECKING:
1502
1507
  )
1503
1508
  from .update_sales_invoiceop import (
1504
1509
  UpdateSalesInvoiceRequest,
1510
+ UpdateSalesInvoiceRequestBody,
1511
+ UpdateSalesInvoiceRequestBodyTypedDict,
1505
1512
  UpdateSalesInvoiceRequestTypedDict,
1506
1513
  )
1507
1514
  from .update_subscriptionop import (
@@ -1510,10 +1517,6 @@ if TYPE_CHECKING:
1510
1517
  UpdateSubscriptionRequestBodyTypedDict,
1511
1518
  UpdateSubscriptionRequestTypedDict,
1512
1519
  )
1513
- from .update_values_sales_invoice import (
1514
- UpdateValuesSalesInvoice,
1515
- UpdateValuesSalesInvoiceTypedDict,
1516
- )
1517
1520
  from .update_webhookop import (
1518
1521
  UpdateWebhookEventTypes,
1519
1522
  UpdateWebhookEventTypesTypedDict,
@@ -2717,6 +2720,8 @@ __all__ = [
2717
2720
  "UnauthorizedDirectDebit",
2718
2721
  "UnauthorizedDirectDebitTypedDict",
2719
2722
  "UpdateCustomerRequest",
2723
+ "UpdateCustomerRequestBody",
2724
+ "UpdateCustomerRequestBodyTypedDict",
2720
2725
  "UpdateCustomerRequestTypedDict",
2721
2726
  "UpdatePaymentLinkRequest",
2722
2727
  "UpdatePaymentLinkRequestBody",
@@ -2731,13 +2736,13 @@ __all__ = [
2731
2736
  "UpdateProfileRequestBodyTypedDict",
2732
2737
  "UpdateProfileRequestTypedDict",
2733
2738
  "UpdateSalesInvoiceRequest",
2739
+ "UpdateSalesInvoiceRequestBody",
2740
+ "UpdateSalesInvoiceRequestBodyTypedDict",
2734
2741
  "UpdateSalesInvoiceRequestTypedDict",
2735
2742
  "UpdateSubscriptionRequest",
2736
2743
  "UpdateSubscriptionRequestBody",
2737
2744
  "UpdateSubscriptionRequestBodyTypedDict",
2738
2745
  "UpdateSubscriptionRequestTypedDict",
2739
- "UpdateValuesSalesInvoice",
2740
- "UpdateValuesSalesInvoiceTypedDict",
2741
2746
  "UpdateWebhookEventTypes",
2742
2747
  "UpdateWebhookEventTypesTypedDict",
2743
2748
  "UpdateWebhookRequest",
@@ -3937,6 +3942,8 @@ _dynamic_imports: dict[str, str] = {
3937
3942
  "TestWebhookRequestBodyTypedDict": ".test_webhookop",
3938
3943
  "TestWebhookRequestTypedDict": ".test_webhookop",
3939
3944
  "UpdateCustomerRequest": ".update_customerop",
3945
+ "UpdateCustomerRequestBody": ".update_customerop",
3946
+ "UpdateCustomerRequestBodyTypedDict": ".update_customerop",
3940
3947
  "UpdateCustomerRequestTypedDict": ".update_customerop",
3941
3948
  "UpdatePaymentLinkRequest": ".update_payment_linkop",
3942
3949
  "UpdatePaymentLinkRequestBody": ".update_payment_linkop",
@@ -3951,13 +3958,13 @@ _dynamic_imports: dict[str, str] = {
3951
3958
  "UpdateProfileRequestBodyTypedDict": ".update_profileop",
3952
3959
  "UpdateProfileRequestTypedDict": ".update_profileop",
3953
3960
  "UpdateSalesInvoiceRequest": ".update_sales_invoiceop",
3961
+ "UpdateSalesInvoiceRequestBody": ".update_sales_invoiceop",
3962
+ "UpdateSalesInvoiceRequestBodyTypedDict": ".update_sales_invoiceop",
3954
3963
  "UpdateSalesInvoiceRequestTypedDict": ".update_sales_invoiceop",
3955
3964
  "UpdateSubscriptionRequest": ".update_subscriptionop",
3956
3965
  "UpdateSubscriptionRequestBody": ".update_subscriptionop",
3957
3966
  "UpdateSubscriptionRequestBodyTypedDict": ".update_subscriptionop",
3958
3967
  "UpdateSubscriptionRequestTypedDict": ".update_subscriptionop",
3959
- "UpdateValuesSalesInvoice": ".update_values_sales_invoice",
3960
- "UpdateValuesSalesInvoiceTypedDict": ".update_values_sales_invoice",
3961
3968
  "UpdateWebhookEventTypes": ".update_webhookop",
3962
3969
  "UpdateWebhookEventTypesTypedDict": ".update_webhookop",
3963
3970
  "UpdateWebhookRequest": ".update_webhookop",
@@ -1,25 +1,105 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .entity_customer import EntityCustomer, EntityCustomerTypedDict
5
- from mollie.types import BaseModel
4
+ from .locale_response import LocaleResponse
5
+ from .metadata import Metadata, MetadataTypedDict
6
+ from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
7
  from mollie.utils import (
7
8
  FieldMetadata,
8
9
  HeaderMetadata,
9
10
  PathParamMetadata,
10
11
  RequestMetadata,
12
+ validate_open_enum,
11
13
  )
12
14
  import pydantic
15
+ from pydantic import model_serializer
16
+ from pydantic.functional_validators import PlainValidator
13
17
  from typing import Optional
14
18
  from typing_extensions import Annotated, NotRequired, TypedDict
15
19
 
16
20
 
21
+ class UpdateCustomerRequestBodyTypedDict(TypedDict):
22
+ name: NotRequired[Nullable[str]]
23
+ r"""The full name of the customer."""
24
+ email: NotRequired[Nullable[str]]
25
+ r"""The email address of the customer."""
26
+ locale: NotRequired[Nullable[LocaleResponse]]
27
+ r"""Allows you to preset the language to be used."""
28
+ metadata: NotRequired[Nullable[MetadataTypedDict]]
29
+ r"""Provide any data you like, for example a string or a JSON object. We will save the data alongside the entity. Whenever
30
+ you fetch the entity with our API, we will also include the metadata. You can use up to approximately 1kB.
31
+ """
32
+ testmode: NotRequired[bool]
33
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
34
+
35
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
36
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
37
+ `testmode` to `true`.
38
+ """
39
+
40
+
41
+ class UpdateCustomerRequestBody(BaseModel):
42
+ name: OptionalNullable[str] = UNSET
43
+ r"""The full name of the customer."""
44
+
45
+ email: OptionalNullable[str] = UNSET
46
+ r"""The email address of the customer."""
47
+
48
+ locale: Annotated[
49
+ OptionalNullable[LocaleResponse], PlainValidator(validate_open_enum(False))
50
+ ] = UNSET
51
+ r"""Allows you to preset the language to be used."""
52
+
53
+ metadata: OptionalNullable[Metadata] = UNSET
54
+ r"""Provide any data you like, for example a string or a JSON object. We will save the data alongside the entity. Whenever
55
+ you fetch the entity with our API, we will also include the metadata. You can use up to approximately 1kB.
56
+ """
57
+
58
+ testmode: Optional[bool] = None
59
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
60
+
61
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
62
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
63
+ `testmode` to `true`.
64
+ """
65
+
66
+ @model_serializer(mode="wrap")
67
+ def serialize_model(self, handler):
68
+ optional_fields = ["name", "email", "locale", "metadata", "testmode"]
69
+ nullable_fields = ["name", "email", "locale", "metadata"]
70
+ null_default_fields = []
71
+
72
+ serialized = handler(self)
73
+
74
+ m = {}
75
+
76
+ for n, f in type(self).model_fields.items():
77
+ k = f.alias or n
78
+ val = serialized.get(k)
79
+ serialized.pop(k, None)
80
+
81
+ optional_nullable = k in optional_fields and k in nullable_fields
82
+ is_set = (
83
+ self.__pydantic_fields_set__.intersection({n})
84
+ or k in null_default_fields
85
+ ) # pylint: disable=no-member
86
+
87
+ if val is not None and val != UNSET_SENTINEL:
88
+ m[k] = val
89
+ elif val != UNSET_SENTINEL and (
90
+ not k in optional_fields or (optional_nullable and is_set)
91
+ ):
92
+ m[k] = val
93
+
94
+ return m
95
+
96
+
17
97
  class UpdateCustomerRequestTypedDict(TypedDict):
18
98
  customer_id: str
19
99
  r"""Provide the ID of the related customer."""
20
100
  idempotency_key: NotRequired[str]
21
101
  r"""A unique key to ensure idempotent requests. This key should be a UUID v4 string."""
22
- entity_customer: NotRequired[EntityCustomerTypedDict]
102
+ request_body: NotRequired[UpdateCustomerRequestBodyTypedDict]
23
103
 
24
104
 
25
105
  class UpdateCustomerRequest(BaseModel):
@@ -37,7 +117,7 @@ class UpdateCustomerRequest(BaseModel):
37
117
  ] = None
38
118
  r"""A unique key to ensure idempotent requests. This key should be a UUID v4 string."""
39
119
 
40
- entity_customer: Annotated[
41
- Optional[EntityCustomer],
120
+ request_body: Annotated[
121
+ Optional[UpdateCustomerRequestBody],
42
122
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
43
123
  ] = None
@@ -45,11 +45,12 @@ class UpdatePaymentLinkRequestBodyTypedDict(TypedDict):
45
45
  """
46
46
  billing_address: NotRequired[PaymentAddressTypedDict]
47
47
  shipping_address: NotRequired[PaymentAddressTypedDict]
48
- testmode: NotRequired[Nullable[bool]]
49
- r"""Most API credentials are specifically created for either live mode or test mode. For organization-level credentials
50
- such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.
48
+ testmode: NotRequired[bool]
49
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
51
50
 
52
- Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
51
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
52
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
53
+ `testmode` to `true`.
53
54
  """
54
55
 
55
56
 
@@ -96,11 +97,12 @@ class UpdatePaymentLinkRequestBody(BaseModel):
96
97
  Optional[PaymentAddress], pydantic.Field(alias="shippingAddress")
97
98
  ] = None
98
99
 
99
- testmode: OptionalNullable[bool] = UNSET
100
- r"""Most API credentials are specifically created for either live mode or test mode. For organization-level credentials
101
- such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.
100
+ testmode: Optional[bool] = None
101
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
102
102
 
103
- Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
103
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
104
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
105
+ `testmode` to `true`.
104
106
  """
105
107
 
106
108
  @model_serializer(mode="wrap")
@@ -115,7 +117,7 @@ class UpdatePaymentLinkRequestBody(BaseModel):
115
117
  "shippingAddress",
116
118
  "testmode",
117
119
  ]
118
- nullable_fields = ["allowedMethods", "lines", "testmode"]
120
+ nullable_fields = ["allowedMethods", "lines"]
119
121
  null_default_fields = []
120
122
 
121
123
  serialized = handler(self)
@@ -84,8 +84,8 @@ class UpdatePaymentRequestBodyTypedDict(TypedDict):
84
84
 
85
85
  The field expects a country code in ISO 3166-1 alpha-2 format, for example `NL`.
86
86
  """
87
- testmode: NotRequired[Nullable[bool]]
88
- r"""Whether to create the entity in test mode or live mode.
87
+ testmode: NotRequired[bool]
88
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
89
89
 
90
90
  Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
91
91
  omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
@@ -203,8 +203,8 @@ class UpdatePaymentRequestBody(BaseModel):
203
203
  The field expects a country code in ISO 3166-1 alpha-2 format, for example `NL`.
204
204
  """
205
205
 
206
- testmode: OptionalNullable[bool] = UNSET
207
- r"""Whether to create the entity in test mode or live mode.
206
+ testmode: Optional[bool] = None
207
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
208
208
 
209
209
  Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
210
210
  omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
@@ -273,7 +273,6 @@ class UpdatePaymentRequestBody(BaseModel):
273
273
  "method",
274
274
  "locale",
275
275
  "restrictPaymentMethodsToCountry",
276
- "testmode",
277
276
  "issuer",
278
277
  ]
279
278
  null_default_fields = []
@@ -1,11 +1,23 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .update_values_sales_invoice import (
5
- UpdateValuesSalesInvoice,
6
- UpdateValuesSalesInvoiceTypedDict,
4
+ from .sales_invoice_discount import SalesInvoiceDiscount, SalesInvoiceDiscountTypedDict
5
+ from .sales_invoice_email_details import (
6
+ SalesInvoiceEmailDetails,
7
+ SalesInvoiceEmailDetailsTypedDict,
7
8
  )
8
- from mollie.types import BaseModel
9
+ from .sales_invoice_line_item import SalesInvoiceLineItem, SalesInvoiceLineItemTypedDict
10
+ from .sales_invoice_payment_details import (
11
+ SalesInvoicePaymentDetails,
12
+ SalesInvoicePaymentDetailsTypedDict,
13
+ )
14
+ from .sales_invoice_payment_term import SalesInvoicePaymentTerm
15
+ from .sales_invoice_recipient import (
16
+ SalesInvoiceRecipient,
17
+ SalesInvoiceRecipientTypedDict,
18
+ )
19
+ from .sales_invoice_status import SalesInvoiceStatus
20
+ from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
9
21
  from mollie.utils import (
10
22
  FieldMetadata,
11
23
  HeaderMetadata,
@@ -13,16 +25,170 @@ from mollie.utils import (
13
25
  RequestMetadata,
14
26
  )
15
27
  import pydantic
16
- from typing import Optional
28
+ from pydantic import model_serializer
29
+ from typing import List, Optional
17
30
  from typing_extensions import Annotated, NotRequired, TypedDict
18
31
 
19
32
 
33
+ class UpdateSalesInvoiceRequestBodyTypedDict(TypedDict):
34
+ testmode: NotRequired[bool]
35
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
36
+
37
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
38
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
39
+ `testmode` to `true`.
40
+ """
41
+ status: NotRequired[SalesInvoiceStatus]
42
+ r"""The status for the invoice to end up in.
43
+
44
+ A `draft` invoice is not paid or not sent and can be updated after creation. Setting it to `issued` sends it to
45
+ the recipient so they may then pay through our payment system. To skip our payment process, set this to `paid` to
46
+ mark it as paid. It can then subsequently be sent as well, same as with `issued`.
47
+
48
+ A status value that cannot be set but can be returned is `canceled`, for invoices which were
49
+ issued, but then canceled. Currently this can only be done for invoices created in the dashboard.
50
+
51
+ Dependent parameters:
52
+ - `paymentDetails` is required if invoice should be set directly to `paid`
53
+ - `customerId` and `mandateId` are required if a recurring payment should be used to set the invoice to `paid`
54
+ - `emailDetails` optional for `issued` and `paid` to send the invoice by email
55
+ """
56
+ memo: NotRequired[Nullable[str]]
57
+ r"""A free-form memo you can set on the invoice, and will be shown on the invoice PDF."""
58
+ payment_term: NotRequired[Nullable[SalesInvoicePaymentTerm]]
59
+ r"""The payment term to be set on the invoice."""
60
+ payment_details: NotRequired[SalesInvoicePaymentDetailsTypedDict]
61
+ email_details: NotRequired[Nullable[SalesInvoiceEmailDetailsTypedDict]]
62
+ recipient_identifier: NotRequired[str]
63
+ r"""An identifier tied to the recipient data. This should be a unique value based on data your system contains,
64
+ so that both you and us know who we're referring to. It is a value you provide to us so that recipient management
65
+ is not required to send a first invoice to a recipient.
66
+ """
67
+ recipient: NotRequired[Nullable[SalesInvoiceRecipientTypedDict]]
68
+ lines: NotRequired[Nullable[List[SalesInvoiceLineItemTypedDict]]]
69
+ r"""Provide the line items for the invoice. Each line contains details such as a description of the item
70
+ ordered and its price.
71
+
72
+ All lines must have the same currency as the invoice.
73
+ """
74
+ discount: NotRequired[Nullable[SalesInvoiceDiscountTypedDict]]
75
+
76
+
77
+ class UpdateSalesInvoiceRequestBody(BaseModel):
78
+ testmode: Optional[bool] = None
79
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
80
+
81
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
82
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
83
+ `testmode` to `true`.
84
+ """
85
+
86
+ status: Optional[SalesInvoiceStatus] = None
87
+ r"""The status for the invoice to end up in.
88
+
89
+ A `draft` invoice is not paid or not sent and can be updated after creation. Setting it to `issued` sends it to
90
+ the recipient so they may then pay through our payment system. To skip our payment process, set this to `paid` to
91
+ mark it as paid. It can then subsequently be sent as well, same as with `issued`.
92
+
93
+ A status value that cannot be set but can be returned is `canceled`, for invoices which were
94
+ issued, but then canceled. Currently this can only be done for invoices created in the dashboard.
95
+
96
+ Dependent parameters:
97
+ - `paymentDetails` is required if invoice should be set directly to `paid`
98
+ - `customerId` and `mandateId` are required if a recurring payment should be used to set the invoice to `paid`
99
+ - `emailDetails` optional for `issued` and `paid` to send the invoice by email
100
+ """
101
+
102
+ memo: OptionalNullable[str] = UNSET
103
+ r"""A free-form memo you can set on the invoice, and will be shown on the invoice PDF."""
104
+
105
+ payment_term: Annotated[
106
+ OptionalNullable[SalesInvoicePaymentTerm], pydantic.Field(alias="paymentTerm")
107
+ ] = UNSET
108
+ r"""The payment term to be set on the invoice."""
109
+
110
+ payment_details: Annotated[
111
+ Optional[SalesInvoicePaymentDetails], pydantic.Field(alias="paymentDetails")
112
+ ] = None
113
+
114
+ email_details: Annotated[
115
+ OptionalNullable[SalesInvoiceEmailDetails], pydantic.Field(alias="emailDetails")
116
+ ] = UNSET
117
+
118
+ recipient_identifier: Annotated[
119
+ Optional[str], pydantic.Field(alias="recipientIdentifier")
120
+ ] = None
121
+ r"""An identifier tied to the recipient data. This should be a unique value based on data your system contains,
122
+ so that both you and us know who we're referring to. It is a value you provide to us so that recipient management
123
+ is not required to send a first invoice to a recipient.
124
+ """
125
+
126
+ recipient: OptionalNullable[SalesInvoiceRecipient] = UNSET
127
+
128
+ lines: OptionalNullable[List[SalesInvoiceLineItem]] = UNSET
129
+ r"""Provide the line items for the invoice. Each line contains details such as a description of the item
130
+ ordered and its price.
131
+
132
+ All lines must have the same currency as the invoice.
133
+ """
134
+
135
+ discount: OptionalNullable[SalesInvoiceDiscount] = UNSET
136
+
137
+ @model_serializer(mode="wrap")
138
+ def serialize_model(self, handler):
139
+ optional_fields = [
140
+ "testmode",
141
+ "status",
142
+ "memo",
143
+ "paymentTerm",
144
+ "paymentDetails",
145
+ "emailDetails",
146
+ "recipientIdentifier",
147
+ "recipient",
148
+ "lines",
149
+ "discount",
150
+ ]
151
+ nullable_fields = [
152
+ "memo",
153
+ "paymentTerm",
154
+ "emailDetails",
155
+ "recipient",
156
+ "lines",
157
+ "discount",
158
+ ]
159
+ null_default_fields = []
160
+
161
+ serialized = handler(self)
162
+
163
+ m = {}
164
+
165
+ for n, f in type(self).model_fields.items():
166
+ k = f.alias or n
167
+ val = serialized.get(k)
168
+ serialized.pop(k, None)
169
+
170
+ optional_nullable = k in optional_fields and k in nullable_fields
171
+ is_set = (
172
+ self.__pydantic_fields_set__.intersection({n})
173
+ or k in null_default_fields
174
+ ) # pylint: disable=no-member
175
+
176
+ if val is not None and val != UNSET_SENTINEL:
177
+ m[k] = val
178
+ elif val != UNSET_SENTINEL and (
179
+ not k in optional_fields or (optional_nullable and is_set)
180
+ ):
181
+ m[k] = val
182
+
183
+ return m
184
+
185
+
20
186
  class UpdateSalesInvoiceRequestTypedDict(TypedDict):
21
187
  sales_invoice_id: str
22
188
  r"""Provide the ID of the related sales invoice."""
23
189
  idempotency_key: NotRequired[str]
24
190
  r"""A unique key to ensure idempotent requests. This key should be a UUID v4 string."""
25
- update_values_sales_invoice: NotRequired[UpdateValuesSalesInvoiceTypedDict]
191
+ request_body: NotRequired[UpdateSalesInvoiceRequestBodyTypedDict]
26
192
 
27
193
 
28
194
  class UpdateSalesInvoiceRequest(BaseModel):
@@ -40,7 +206,7 @@ class UpdateSalesInvoiceRequest(BaseModel):
40
206
  ] = None
41
207
  r"""A unique key to ensure idempotent requests. This key should be a UUID v4 string."""
42
208
 
43
- update_values_sales_invoice: Annotated[
44
- Optional[UpdateValuesSalesInvoice],
209
+ request_body: Annotated[
210
+ Optional[UpdateSalesInvoiceRequestBody],
45
211
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
46
212
  ] = None
@@ -51,11 +51,12 @@ class UpdateSubscriptionRequestBodyTypedDict(TypedDict):
51
51
  failures as well. Be sure to verify the payment's subscription ID and its status.
52
52
  """
53
53
  mandate_id: NotRequired[str]
54
- testmode: NotRequired[Nullable[bool]]
55
- r"""Most API credentials are specifically created for either live mode or test mode. For organization-level credentials
56
- such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.
54
+ testmode: NotRequired[bool]
55
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
57
56
 
58
- Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
57
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
58
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
59
+ `testmode` to `true`.
59
60
  """
60
61
 
61
62
 
@@ -102,11 +103,12 @@ class UpdateSubscriptionRequestBody(BaseModel):
102
103
 
103
104
  mandate_id: Annotated[Optional[str], pydantic.Field(alias="mandateId")] = None
104
105
 
105
- testmode: OptionalNullable[bool] = UNSET
106
- r"""Most API credentials are specifically created for either live mode or test mode. For organization-level credentials
107
- such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.
106
+ testmode: Optional[bool] = None
107
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
108
108
 
109
- Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
109
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
110
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
111
+ `testmode` to `true`.
110
112
  """
111
113
 
112
114
  @model_serializer(mode="wrap")
@@ -122,7 +124,7 @@ class UpdateSubscriptionRequestBody(BaseModel):
122
124
  "mandateId",
123
125
  "testmode",
124
126
  ]
125
- nullable_fields = ["metadata", "testmode"]
127
+ nullable_fields = ["metadata"]
126
128
  null_default_fields = []
127
129
 
128
130
  serialized = handler(self)
@@ -32,9 +32,11 @@ class UpdateWebhookRequestBodyTypedDict(TypedDict):
32
32
  r"""The URL Mollie will send the events to. This URL must be publicly accessible."""
33
33
  event_types: NotRequired[UpdateWebhookEventTypesTypedDict]
34
34
  testmode: NotRequired[bool]
35
- r"""You can enable test mode by setting `testmode` to `true`.
35
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
36
36
 
37
- Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
37
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
38
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
39
+ `testmode` to `true`.
38
40
  """
39
41
 
40
42
 
@@ -50,9 +52,11 @@ class UpdateWebhookRequestBody(BaseModel):
50
52
  ] = None
51
53
 
52
54
  testmode: Optional[bool] = None
53
- r"""You can enable test mode by setting `testmode` to `true`.
55
+ r"""Whether the entity was created in test mode or live mode. This field does not update the mode of the entity.
54
56
 
55
- Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
57
+ Most API credentials are specifically created for either live mode or test mode, in which case this parameter can be
58
+ omitted. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting
59
+ `testmode` to `true`.
56
60
  """
57
61
 
58
62
 
mollie/sales_invoices.py CHANGED
@@ -659,10 +659,10 @@ class SalesInvoices(BaseSDK):
659
659
  *,
660
660
  sales_invoice_id: str,
661
661
  idempotency_key: Optional[str] = None,
662
- update_values_sales_invoice: Optional[
662
+ request_body: Optional[
663
663
  Union[
664
- models.UpdateValuesSalesInvoice,
665
- models.UpdateValuesSalesInvoiceTypedDict,
664
+ models.UpdateSalesInvoiceRequestBody,
665
+ models.UpdateSalesInvoiceRequestBodyTypedDict,
666
666
  ]
667
667
  ] = None,
668
668
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
@@ -682,7 +682,7 @@ class SalesInvoices(BaseSDK):
682
682
 
683
683
  :param sales_invoice_id: Provide the ID of the related sales invoice.
684
684
  :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
685
- :param update_values_sales_invoice:
685
+ :param request_body:
686
686
  :param retries: Override the default retry configuration for this method
687
687
  :param server_url: Override the default server URL for this method
688
688
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -701,8 +701,8 @@ class SalesInvoices(BaseSDK):
701
701
  request = models.UpdateSalesInvoiceRequest(
702
702
  sales_invoice_id=sales_invoice_id,
703
703
  idempotency_key=idempotency_key,
704
- update_values_sales_invoice=utils.get_pydantic_model(
705
- update_values_sales_invoice, Optional[models.UpdateValuesSalesInvoice]
704
+ request_body=utils.get_pydantic_model(
705
+ request_body, Optional[models.UpdateSalesInvoiceRequestBody]
706
706
  ),
707
707
  )
708
708
 
@@ -720,11 +720,11 @@ class SalesInvoices(BaseSDK):
720
720
  http_headers=http_headers,
721
721
  security=self.sdk_configuration.security,
722
722
  get_serialized_body=lambda: utils.serialize_request_body(
723
- request.update_values_sales_invoice,
723
+ request.request_body,
724
724
  False,
725
725
  True,
726
726
  "json",
727
- Optional[models.UpdateValuesSalesInvoice],
727
+ Optional[models.UpdateSalesInvoiceRequestBody],
728
728
  ),
729
729
  timeout_ms=timeout_ms,
730
730
  )
@@ -776,10 +776,10 @@ class SalesInvoices(BaseSDK):
776
776
  *,
777
777
  sales_invoice_id: str,
778
778
  idempotency_key: Optional[str] = None,
779
- update_values_sales_invoice: Optional[
779
+ request_body: Optional[
780
780
  Union[
781
- models.UpdateValuesSalesInvoice,
782
- models.UpdateValuesSalesInvoiceTypedDict,
781
+ models.UpdateSalesInvoiceRequestBody,
782
+ models.UpdateSalesInvoiceRequestBodyTypedDict,
783
783
  ]
784
784
  ] = None,
785
785
  retries: OptionalNullable[utils.RetryConfig] = UNSET,
@@ -799,7 +799,7 @@ class SalesInvoices(BaseSDK):
799
799
 
800
800
  :param sales_invoice_id: Provide the ID of the related sales invoice.
801
801
  :param idempotency_key: A unique key to ensure idempotent requests. This key should be a UUID v4 string.
802
- :param update_values_sales_invoice:
802
+ :param request_body:
803
803
  :param retries: Override the default retry configuration for this method
804
804
  :param server_url: Override the default server URL for this method
805
805
  :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
@@ -818,8 +818,8 @@ class SalesInvoices(BaseSDK):
818
818
  request = models.UpdateSalesInvoiceRequest(
819
819
  sales_invoice_id=sales_invoice_id,
820
820
  idempotency_key=idempotency_key,
821
- update_values_sales_invoice=utils.get_pydantic_model(
822
- update_values_sales_invoice, Optional[models.UpdateValuesSalesInvoice]
821
+ request_body=utils.get_pydantic_model(
822
+ request_body, Optional[models.UpdateSalesInvoiceRequestBody]
823
823
  ),
824
824
  )
825
825
 
@@ -837,11 +837,11 @@ class SalesInvoices(BaseSDK):
837
837
  http_headers=http_headers,
838
838
  security=self.sdk_configuration.security,
839
839
  get_serialized_body=lambda: utils.serialize_request_body(
840
- request.update_values_sales_invoice,
840
+ request.request_body,
841
841
  False,
842
842
  True,
843
843
  "json",
844
- Optional[models.UpdateValuesSalesInvoice],
844
+ Optional[models.UpdateSalesInvoiceRequestBody],
845
845
  ),
846
846
  timeout_ms=timeout_ms,
847
847
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mollie-api-py
3
- Version: 1.1.1
3
+ Version: 1.1.2
4
4
  Summary: Python Client SDK Generated by Speakeasy.
5
5
  License-File: LICENSE.md
6
6
  Author: Speakeasy
@@ -4,7 +4,7 @@ mollie/_hooks/mollie_hooks.py,sha256=c9l0SCJmT_o6mXzl4WRK8fIOaTox2nrPhuGpN4aso2E
4
4
  mollie/_hooks/registration.py,sha256=J8foUfPGbkJa3va864Q7iXYYK4CpxSaix6nAxw0w7-Y,748
5
5
  mollie/_hooks/sdkhooks.py,sha256=XSStdz5qEmh-Mwt53kk1_nVrtAz1_EZVbHymUEOTdDE,2556
6
6
  mollie/_hooks/types.py,sha256=JKrqkXMXwcNaCf2_hu0yX8Bi7GsHbVBrQDnfRTSws7w,3041
7
- mollie/_version.py,sha256=JHpe8PAjqWxSveD4PsIf45Qi8zvlstN5rV88WPeB9-w,468
7
+ mollie/_version.py,sha256=WfpYY3l_W1noVgPI4NnKsMTCSDbFXhg4rGepQnvPUco,468
8
8
  mollie/balance_transfers.py,sha256=vDy2v7ezxTv0Atpuv0M9lGXyvQM6KPu_rd2D02CIKIk,29291
9
9
  mollie/balances.py,sha256=ngc5ky8TWB-K2lVFuzZQCwcNdWH6m-KPIznW4qIE1qo,49314
10
10
  mollie/basesdk.py,sha256=q24JMCy4yFLPP2cLt_-S8_4CTd8-h20OLctAVMIBi0w,12168
@@ -13,13 +13,13 @@ mollie/captures.py,sha256=C61UqNAPX1xiM49OmtsV7LsYJ8vEYYTpK-Fm1oSD8_A,29805
13
13
  mollie/chargebacks_sdk.py,sha256=MjxCjXdFKcKbfREBkjW-kpkSfMCohpG59rJLDb9S-Bc,31858
14
14
  mollie/client_links.py,sha256=XzVjOMYTlaoGeduI9XHXszfS46WuVRh-a7tjnF_fMkg,13790
15
15
  mollie/clients.py,sha256=KEOyGFwCdbssJcWu7IpkrFAnPxeGkoyt4Ms4KFJtSiY,17239
16
- mollie/customers.py,sha256=ksxAonl_4ajtVuwq4oRA8vqFv9607y5YKd3G2717pOk,67846
16
+ mollie/customers.py,sha256=abIL8yfiMw2WjlcOqIga3Zc7IaavNLl6Dl9cVkv_qYQ,67998
17
17
  mollie/delayed_routing.py,sha256=xECygSW1o42qrEBcJj92O6T5bnZjboRcqvOwTqHYZcQ,18189
18
18
  mollie/httpclient.py,sha256=dqTPONDBpRn4ktXfcetQiRXnG93f0pJkFhqsYFhLUac,3945
19
19
  mollie/invoices.py,sha256=GAnnYpOFQHMV-ejQA0cqRxdANGZvdOGr2M_WXqtvAzE,17886
20
20
  mollie/mandates.py,sha256=PVMXvDUQQPxeHz5sTNqFsNHPVjIjOD7uf4zAJeDGVdU,38701
21
21
  mollie/methods.py,sha256=G38DTFLyWe0OuW1qnMjIymDgqfT9dKEgOgF6FQR_o3Y,43126
22
- mollie/models/__init__.py,sha256=zphRFnFppWy8zeLU2YAGvv20FqGeKWlRmZpGEhQJOvs,171250
22
+ mollie/models/__init__.py,sha256=OiYoJbai5tJ3DPBaR4g1B-X03hQ3Eww-_ZfIhqIe5uY,171515
23
23
  mollie/models/address.py,sha256=zkgpQcCPnKe6BQ-JqjBhN6YlzTgVyCreQFvAeNMXFuM,1035
24
24
  mollie/models/amount.py,sha256=ThsX_CGdD-_vIIW_cFR7ernByR5jmZjoSnxFSMixCaE,923
25
25
  mollie/models/amount_nullable.py,sha256=zzCJtAd3hWqXPpwrGvu8QoiGxeKff3i5SEP29orBuWg,813
@@ -284,14 +284,13 @@ mollie/models/subscription_response.py,sha256=zhqP68NbzfA6IR068oydtBWTvaV6eX5Ceb
284
284
  mollie/models/terminal_brand.py,sha256=ZDjJ3jI0ucMuj09XdFBiogX8qFA7SDJVcL7ZQfFuSTU,290
285
285
  mollie/models/terminal_model.py,sha256=qYsdNuAe4i7tGdqfIC_xjsLzWsQt--oyC3OBopxG9oY,430
286
286
  mollie/models/test_webhookop.py,sha256=cysS1WKFyEoK3yRRKU4Gz-oSRUynqAsUWHbkPgTg9MU,2056
287
- mollie/models/update_customerop.py,sha256=mGjZ914r6aJ1ngz4drvtP5R33icxjstWREUURY0vYwE,1451
288
- mollie/models/update_payment_linkop.py,sha256=lH9y_4k6MuXF4r9Cb4RfCO0uPs49T_Q5RY8000MY69o,6811
289
- mollie/models/update_paymentop.py,sha256=kACNI9xVbaFwy2HsNhBS4j_w8ygad7G1BeK8OebBz7g,15628
287
+ mollie/models/update_customerop.py,sha256=NuF7yVsKhDJ8wy69L-sQrqM-gUg3VJZ5TLJIVXDgHI8,4799
288
+ mollie/models/update_payment_linkop.py,sha256=W9IzoylqGFLcZIiHkNQ_Etr0pc1AYfPe1-PtbkqWd30,6918
289
+ mollie/models/update_paymentop.py,sha256=S7ltPqKhuNTiSY09vW7h8ASVZnpb7qQEAwirtCU9agU,15691
290
290
  mollie/models/update_profileop.py,sha256=o1h6QNbyZ7JAKNjuaLG6x-OuPkG4KXFmZAPkOH7oTR8,5363
291
- mollie/models/update_sales_invoiceop.py,sha256=x3NsZHRHzhL5aqB09AqpXoxyNOLgCuziZxr83WLwMu8,1572
292
- mollie/models/update_subscriptionop.py,sha256=jUZIO4PQqaN28Y_YGd4qEpgxBF2ISYMxzVmAH_fS1Uk,7589
293
- mollie/models/update_values_sales_invoice.py,sha256=8aBZbgouerFGpZpv-zf7q11OCeppVWokV3zxeU54msc,7539
294
- mollie/models/update_webhookop.py,sha256=hkD0yw0Srea0FJiXErbZmVoA0f90PJt1_zJbmDABX0I,2817
291
+ mollie/models/update_sales_invoiceop.py,sha256=9FBWG4SSFMQYEWIkDO01cyFSpDkXkZYdJXhA1tS6anc,8831
292
+ mollie/models/update_subscriptionop.py,sha256=mQK-FJUnEeOG9m97bfJ1WzB_qOU500K9EYHxREIVynI,7696
293
+ mollie/models/update_webhookop.py,sha256=BzrKncGzgda-epYz4gNXO_vLJIoyIxqxjE9O1Qhfy6s,3253
295
294
  mollie/models/url.py,sha256=y60CyrKscRh_3oUv1uVH_JQxbi2Z12hTGjcKxOoReeo,713
296
295
  mollie/models/url_nullable.py,sha256=V6_B_fQRZ8R4xwE92BKQmiHzpo-QpEyoy-L5hodUJqo,830
297
296
  mollie/models/webhook_event_types.py,sha256=lD9firF7AHA23nSi5lo_FtWVwpjWnQG1r39eNhtSDaE,653
@@ -304,7 +303,7 @@ mollie/permissions.py,sha256=TFKnXM-d7w5pNN0K89nirhY5BlYLt1Q-nF2dPpaK8FY,16637
304
303
  mollie/profiles.py,sha256=ujZj8eSuxJt4lyLaNlz18YBvp9Lw7z9gheU0p4E0XJk,49837
305
304
  mollie/py.typed,sha256=zrp19r0G21lr2yRiMC0f8MFkQFGj9wMpSbboePMg8KM,59
306
305
  mollie/refunds_sdk.py,sha256=mxIKg-c-1ihGKzQrW1eqcg2XhmNKR5Qki3PD-QJy5Og,50285
307
- mollie/sales_invoices.py,sha256=pq9YPXNj_nQFhDDqoSEeft9DdiovuSnNQ5aqJc-7dHY,47966
306
+ mollie/sales_invoices.py,sha256=DQ5CzrekAwet8wE8_OHDnxZawrUeOXIBlGLehheKwFk,47856
308
307
  mollie/sdk.py,sha256=_2ymDgFyuNx9AF8VahUtkjT5P0jVJ_eVaBnayeen5Co,10760
309
308
  mollie/sdkconfiguration.py,sha256=-acueIPHy8HkPxAtTs8cSNPhglmYezpVkmBqueLI2Iw,1629
310
309
  mollie/settlements.py,sha256=87uHPyD2CmJBZbDelMYntqQ_7DFQX4rsbLH_7gsYfMQ,78247
@@ -332,7 +331,7 @@ mollie/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
332
331
  mollie/wallets.py,sha256=Sz8KRUq8TwWxSyYktdeaIGQCAwqBz8Vhnv0GWDfBTRs,12240
333
332
  mollie/webhook_events.py,sha256=Hgo-KY0TzRlu8jFAoYCpCpAzWcmSYURRQfmsxgiM8ac,9001
334
333
  mollie/webhooks.py,sha256=r2jKIBeUofuVHGTEvaOaLYLZC6kzsQRdNBPdXAPFSbU,54185
335
- mollie_api_py-1.1.1.dist-info/METADATA,sha256=_pJ331Orhmm-cmU-sEkZ85Bs5rPiD_dOjTkVZQxeZCo,40277
336
- mollie_api_py-1.1.1.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
337
- mollie_api_py-1.1.1.dist-info/licenses/LICENSE.md,sha256=SGg2WzlJYIta4I_BlrvHizir1Lq0UNCqIJGj-MQPZ1s,1295
338
- mollie_api_py-1.1.1.dist-info/RECORD,,
334
+ mollie_api_py-1.1.2.dist-info/METADATA,sha256=kO3qxkn66OZwqqKme3tRf50g-walpxmqwCF_CQ-wGKo,40277
335
+ mollie_api_py-1.1.2.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
336
+ mollie_api_py-1.1.2.dist-info/licenses/LICENSE.md,sha256=SGg2WzlJYIta4I_BlrvHizir1Lq0UNCqIJGj-MQPZ1s,1295
337
+ mollie_api_py-1.1.2.dist-info/RECORD,,
@@ -1,176 +0,0 @@
1
- """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
-
3
- from __future__ import annotations
4
- from .sales_invoice_discount import SalesInvoiceDiscount, SalesInvoiceDiscountTypedDict
5
- from .sales_invoice_email_details import (
6
- SalesInvoiceEmailDetails,
7
- SalesInvoiceEmailDetailsTypedDict,
8
- )
9
- from .sales_invoice_line_item import SalesInvoiceLineItem, SalesInvoiceLineItemTypedDict
10
- from .sales_invoice_payment_details import (
11
- SalesInvoicePaymentDetails,
12
- SalesInvoicePaymentDetailsTypedDict,
13
- )
14
- from .sales_invoice_payment_term import SalesInvoicePaymentTerm
15
- from .sales_invoice_recipient import (
16
- SalesInvoiceRecipient,
17
- SalesInvoiceRecipientTypedDict,
18
- )
19
- from .sales_invoice_status import SalesInvoiceStatus
20
- from mollie.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
21
- import pydantic
22
- from pydantic import model_serializer
23
- from typing import List, Optional
24
- from typing_extensions import Annotated, NotRequired, TypedDict
25
-
26
-
27
- class UpdateValuesSalesInvoiceTypedDict(TypedDict):
28
- testmode: NotRequired[Nullable[bool]]
29
- r"""Most API credentials are specifically created for either live mode or test mode. For organization-level credentials
30
- such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.
31
-
32
- Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
33
- """
34
- status: NotRequired[SalesInvoiceStatus]
35
- r"""The status for the invoice to end up in.
36
-
37
- A `draft` invoice is not paid or not sent and can be updated after creation. Setting it to `issued` sends it to
38
- the recipient so they may then pay through our payment system. To skip our payment process, set this to `paid` to
39
- mark it as paid. It can then subsequently be sent as well, same as with `issued`.
40
-
41
- A status value that cannot be set but can be returned is `canceled`, for invoices which were
42
- issued, but then canceled. Currently this can only be done for invoices created in the dashboard.
43
-
44
- Dependent parameters:
45
- - `paymentDetails` is required if invoice should be set directly to `paid`
46
- - `customerId` and `mandateId` are required if a recurring payment should be used to set the invoice to `paid`
47
- - `emailDetails` optional for `issued` and `paid` to send the invoice by email
48
- """
49
- memo: NotRequired[Nullable[str]]
50
- r"""A free-form memo you can set on the invoice, and will be shown on the invoice PDF."""
51
- payment_term: NotRequired[Nullable[SalesInvoicePaymentTerm]]
52
- r"""The payment term to be set on the invoice."""
53
- payment_details: NotRequired[SalesInvoicePaymentDetailsTypedDict]
54
- email_details: NotRequired[Nullable[SalesInvoiceEmailDetailsTypedDict]]
55
- recipient_identifier: NotRequired[str]
56
- r"""An identifier tied to the recipient data. This should be a unique value based on data your system contains,
57
- so that both you and us know who we're referring to. It is a value you provide to us so that recipient management
58
- is not required to send a first invoice to a recipient.
59
- """
60
- recipient: NotRequired[Nullable[SalesInvoiceRecipientTypedDict]]
61
- lines: NotRequired[Nullable[List[SalesInvoiceLineItemTypedDict]]]
62
- r"""Provide the line items for the invoice. Each line contains details such as a description of the item
63
- ordered and its price.
64
-
65
- All lines must have the same currency as the invoice.
66
- """
67
- discount: NotRequired[Nullable[SalesInvoiceDiscountTypedDict]]
68
-
69
-
70
- class UpdateValuesSalesInvoice(BaseModel):
71
- testmode: OptionalNullable[bool] = UNSET
72
- r"""Most API credentials are specifically created for either live mode or test mode. For organization-level credentials
73
- such as OAuth access tokens, you can enable test mode by setting `testmode` to `true`.
74
-
75
- Test entities cannot be retrieved when the endpoint is set to live mode, and vice versa.
76
- """
77
-
78
- status: Optional[SalesInvoiceStatus] = None
79
- r"""The status for the invoice to end up in.
80
-
81
- A `draft` invoice is not paid or not sent and can be updated after creation. Setting it to `issued` sends it to
82
- the recipient so they may then pay through our payment system. To skip our payment process, set this to `paid` to
83
- mark it as paid. It can then subsequently be sent as well, same as with `issued`.
84
-
85
- A status value that cannot be set but can be returned is `canceled`, for invoices which were
86
- issued, but then canceled. Currently this can only be done for invoices created in the dashboard.
87
-
88
- Dependent parameters:
89
- - `paymentDetails` is required if invoice should be set directly to `paid`
90
- - `customerId` and `mandateId` are required if a recurring payment should be used to set the invoice to `paid`
91
- - `emailDetails` optional for `issued` and `paid` to send the invoice by email
92
- """
93
-
94
- memo: OptionalNullable[str] = UNSET
95
- r"""A free-form memo you can set on the invoice, and will be shown on the invoice PDF."""
96
-
97
- payment_term: Annotated[
98
- OptionalNullable[SalesInvoicePaymentTerm], pydantic.Field(alias="paymentTerm")
99
- ] = UNSET
100
- r"""The payment term to be set on the invoice."""
101
-
102
- payment_details: Annotated[
103
- Optional[SalesInvoicePaymentDetails], pydantic.Field(alias="paymentDetails")
104
- ] = None
105
-
106
- email_details: Annotated[
107
- OptionalNullable[SalesInvoiceEmailDetails], pydantic.Field(alias="emailDetails")
108
- ] = UNSET
109
-
110
- recipient_identifier: Annotated[
111
- Optional[str], pydantic.Field(alias="recipientIdentifier")
112
- ] = None
113
- r"""An identifier tied to the recipient data. This should be a unique value based on data your system contains,
114
- so that both you and us know who we're referring to. It is a value you provide to us so that recipient management
115
- is not required to send a first invoice to a recipient.
116
- """
117
-
118
- recipient: OptionalNullable[SalesInvoiceRecipient] = UNSET
119
-
120
- lines: OptionalNullable[List[SalesInvoiceLineItem]] = UNSET
121
- r"""Provide the line items for the invoice. Each line contains details such as a description of the item
122
- ordered and its price.
123
-
124
- All lines must have the same currency as the invoice.
125
- """
126
-
127
- discount: OptionalNullable[SalesInvoiceDiscount] = UNSET
128
-
129
- @model_serializer(mode="wrap")
130
- def serialize_model(self, handler):
131
- optional_fields = [
132
- "testmode",
133
- "status",
134
- "memo",
135
- "paymentTerm",
136
- "paymentDetails",
137
- "emailDetails",
138
- "recipientIdentifier",
139
- "recipient",
140
- "lines",
141
- "discount",
142
- ]
143
- nullable_fields = [
144
- "testmode",
145
- "memo",
146
- "paymentTerm",
147
- "emailDetails",
148
- "recipient",
149
- "lines",
150
- "discount",
151
- ]
152
- null_default_fields = []
153
-
154
- serialized = handler(self)
155
-
156
- m = {}
157
-
158
- for n, f in type(self).model_fields.items():
159
- k = f.alias or n
160
- val = serialized.get(k)
161
- serialized.pop(k, None)
162
-
163
- optional_nullable = k in optional_fields and k in nullable_fields
164
- is_set = (
165
- self.__pydantic_fields_set__.intersection({n})
166
- or k in null_default_fields
167
- ) # pylint: disable=no-member
168
-
169
- if val is not None and val != UNSET_SENTINEL:
170
- m[k] = val
171
- elif val != UNSET_SENTINEL and (
172
- not k in optional_fields or (optional_nullable and is_set)
173
- ):
174
- m[k] = val
175
-
176
- return m