dub 0.24.0__py3-none-any.whl → 0.25.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.
- dub/_version.py +3 -3
- dub/commissions.py +600 -0
- dub/models/__init__.py +0 -1
- dub/models/components/__init__.py +422 -196
- dub/models/components/folderschema.py +1 -7
- dub/models/errors/__init__.py +136 -58
- dub/models/operations/__init__.py +729 -360
- dub/models/operations/createpartner.py +3 -3
- dub/models/operations/listcommissions.py +252 -0
- dub/models/operations/listfolders.py +0 -9
- dub/models/operations/updatecommission.py +150 -0
- dub/partners.py +0 -310
- dub/sdk.py +71 -40
- dub/utils/__init__.py +130 -46
- {dub-0.24.0.dist-info → dub-0.25.0.dist-info}/METADATA +6 -2
- {dub-0.24.0.dist-info → dub-0.25.0.dist-info}/RECORD +18 -16
- dub/models/operations/updatepartnersale.py +0 -121
- {dub-0.24.0.dist-info → dub-0.25.0.dist-info}/LICENSE +0 -0
- {dub-0.24.0.dist-info → dub-0.25.0.dist-info}/WHEEL +0 -0
|
@@ -640,7 +640,7 @@ class CreatePartnerRequestBody(BaseModel):
|
|
|
640
640
|
return m
|
|
641
641
|
|
|
642
642
|
|
|
643
|
-
class
|
|
643
|
+
class CreatePartnerStatus(str, Enum):
|
|
644
644
|
r"""The status of the partner's enrollment in the program."""
|
|
645
645
|
|
|
646
646
|
PENDING = "pending"
|
|
@@ -734,7 +734,7 @@ class CreatePartnerResponseBodyTypedDict(TypedDict):
|
|
|
734
734
|
r"""The date when the partner enabled payouts."""
|
|
735
735
|
created_at: str
|
|
736
736
|
r"""The date when the partner was created on Dub."""
|
|
737
|
-
status:
|
|
737
|
+
status: CreatePartnerStatus
|
|
738
738
|
r"""The status of the partner's enrollment in the program."""
|
|
739
739
|
program_id: str
|
|
740
740
|
r"""The program's unique ID on Dub."""
|
|
@@ -808,7 +808,7 @@ class CreatePartnerResponseBody(BaseModel):
|
|
|
808
808
|
created_at: Annotated[str, pydantic.Field(alias="createdAt")]
|
|
809
809
|
r"""The date when the partner was created on Dub."""
|
|
810
810
|
|
|
811
|
-
status:
|
|
811
|
+
status: CreatePartnerStatus
|
|
812
812
|
r"""The status of the partner's enrollment in the program."""
|
|
813
813
|
|
|
814
814
|
program_id: Annotated[str, pydantic.Field(alias="programId")]
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from dub.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
|
5
|
+
from dub.utils import FieldMetadata, QueryParamMetadata
|
|
6
|
+
from enum import Enum
|
|
7
|
+
import pydantic
|
|
8
|
+
from pydantic import model_serializer
|
|
9
|
+
from typing import Optional
|
|
10
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Type(str, Enum):
|
|
14
|
+
CLICK = "click"
|
|
15
|
+
LEAD = "lead"
|
|
16
|
+
SALE = "sale"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class QueryParamStatus(str, Enum):
|
|
20
|
+
r"""Filter the list of commissions by their corresponding status."""
|
|
21
|
+
|
|
22
|
+
PENDING = "pending"
|
|
23
|
+
PROCESSED = "processed"
|
|
24
|
+
PAID = "paid"
|
|
25
|
+
REFUNDED = "refunded"
|
|
26
|
+
DUPLICATE = "duplicate"
|
|
27
|
+
FRAUD = "fraud"
|
|
28
|
+
CANCELED = "canceled"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class ListCommissionsQueryParamSortBy(str, Enum):
|
|
32
|
+
r"""The field to sort the list of commissions by."""
|
|
33
|
+
|
|
34
|
+
CREATED_AT = "createdAt"
|
|
35
|
+
AMOUNT = "amount"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class ListCommissionsQueryParamSortOrder(str, Enum):
|
|
39
|
+
r"""The sort order for the list of commissions."""
|
|
40
|
+
|
|
41
|
+
ASC = "asc"
|
|
42
|
+
DESC = "desc"
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class ListCommissionsQueryParamInterval(str, Enum):
|
|
46
|
+
r"""The interval to retrieve commissions for."""
|
|
47
|
+
|
|
48
|
+
TWENTY_FOURH = "24h"
|
|
49
|
+
SEVEND = "7d"
|
|
50
|
+
THIRTYD = "30d"
|
|
51
|
+
NINETYD = "90d"
|
|
52
|
+
ONEY = "1y"
|
|
53
|
+
MTD = "mtd"
|
|
54
|
+
QTD = "qtd"
|
|
55
|
+
YTD = "ytd"
|
|
56
|
+
ALL = "all"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class ListCommissionsRequestTypedDict(TypedDict):
|
|
60
|
+
type: NotRequired[Type]
|
|
61
|
+
customer_id: NotRequired[str]
|
|
62
|
+
r"""Filter the list of commissions by the associated customer."""
|
|
63
|
+
payout_id: NotRequired[str]
|
|
64
|
+
r"""Filter the list of commissions by the associated payout."""
|
|
65
|
+
partner_id: NotRequired[str]
|
|
66
|
+
r"""Filter the list of commissions by the associated partner."""
|
|
67
|
+
invoice_id: NotRequired[str]
|
|
68
|
+
r"""Filter the list of commissions by the associated invoice. Since invoiceId is unique on a per-program basis, this will only return one commission per invoice."""
|
|
69
|
+
status: NotRequired[QueryParamStatus]
|
|
70
|
+
r"""Filter the list of commissions by their corresponding status."""
|
|
71
|
+
sort_by: NotRequired[ListCommissionsQueryParamSortBy]
|
|
72
|
+
r"""The field to sort the list of commissions by."""
|
|
73
|
+
sort_order: NotRequired[ListCommissionsQueryParamSortOrder]
|
|
74
|
+
r"""The sort order for the list of commissions."""
|
|
75
|
+
interval: NotRequired[ListCommissionsQueryParamInterval]
|
|
76
|
+
r"""The interval to retrieve commissions for."""
|
|
77
|
+
start: NotRequired[str]
|
|
78
|
+
r"""The start date of the date range to filter the commissions by."""
|
|
79
|
+
end: NotRequired[str]
|
|
80
|
+
r"""The end date of the date range to filter the commissions by."""
|
|
81
|
+
page: NotRequired[float]
|
|
82
|
+
r"""The page number for pagination."""
|
|
83
|
+
page_size: NotRequired[float]
|
|
84
|
+
r"""The number of items per page."""
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class ListCommissionsRequest(BaseModel):
|
|
88
|
+
type: Annotated[
|
|
89
|
+
Optional[Type],
|
|
90
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
91
|
+
] = None
|
|
92
|
+
|
|
93
|
+
customer_id: Annotated[
|
|
94
|
+
Optional[str],
|
|
95
|
+
pydantic.Field(alias="customerId"),
|
|
96
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
97
|
+
] = None
|
|
98
|
+
r"""Filter the list of commissions by the associated customer."""
|
|
99
|
+
|
|
100
|
+
payout_id: Annotated[
|
|
101
|
+
Optional[str],
|
|
102
|
+
pydantic.Field(alias="payoutId"),
|
|
103
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
104
|
+
] = None
|
|
105
|
+
r"""Filter the list of commissions by the associated payout."""
|
|
106
|
+
|
|
107
|
+
partner_id: Annotated[
|
|
108
|
+
Optional[str],
|
|
109
|
+
pydantic.Field(alias="partnerId"),
|
|
110
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
111
|
+
] = None
|
|
112
|
+
r"""Filter the list of commissions by the associated partner."""
|
|
113
|
+
|
|
114
|
+
invoice_id: Annotated[
|
|
115
|
+
Optional[str],
|
|
116
|
+
pydantic.Field(alias="invoiceId"),
|
|
117
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
118
|
+
] = None
|
|
119
|
+
r"""Filter the list of commissions by the associated invoice. Since invoiceId is unique on a per-program basis, this will only return one commission per invoice."""
|
|
120
|
+
|
|
121
|
+
status: Annotated[
|
|
122
|
+
Optional[QueryParamStatus],
|
|
123
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
124
|
+
] = None
|
|
125
|
+
r"""Filter the list of commissions by their corresponding status."""
|
|
126
|
+
|
|
127
|
+
sort_by: Annotated[
|
|
128
|
+
Optional[ListCommissionsQueryParamSortBy],
|
|
129
|
+
pydantic.Field(alias="sortBy"),
|
|
130
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
131
|
+
] = ListCommissionsQueryParamSortBy.CREATED_AT
|
|
132
|
+
r"""The field to sort the list of commissions by."""
|
|
133
|
+
|
|
134
|
+
sort_order: Annotated[
|
|
135
|
+
Optional[ListCommissionsQueryParamSortOrder],
|
|
136
|
+
pydantic.Field(alias="sortOrder"),
|
|
137
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
138
|
+
] = ListCommissionsQueryParamSortOrder.DESC
|
|
139
|
+
r"""The sort order for the list of commissions."""
|
|
140
|
+
|
|
141
|
+
interval: Annotated[
|
|
142
|
+
Optional[ListCommissionsQueryParamInterval],
|
|
143
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
144
|
+
] = ListCommissionsQueryParamInterval.ALL
|
|
145
|
+
r"""The interval to retrieve commissions for."""
|
|
146
|
+
|
|
147
|
+
start: Annotated[
|
|
148
|
+
Optional[str],
|
|
149
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
150
|
+
] = None
|
|
151
|
+
r"""The start date of the date range to filter the commissions by."""
|
|
152
|
+
|
|
153
|
+
end: Annotated[
|
|
154
|
+
Optional[str],
|
|
155
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
156
|
+
] = None
|
|
157
|
+
r"""The end date of the date range to filter the commissions by."""
|
|
158
|
+
|
|
159
|
+
page: Annotated[
|
|
160
|
+
Optional[float],
|
|
161
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
162
|
+
] = 1
|
|
163
|
+
r"""The page number for pagination."""
|
|
164
|
+
|
|
165
|
+
page_size: Annotated[
|
|
166
|
+
Optional[float],
|
|
167
|
+
pydantic.Field(alias="pageSize"),
|
|
168
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
169
|
+
] = 100
|
|
170
|
+
r"""The number of items per page."""
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
class ListCommissionsType(str, Enum):
|
|
174
|
+
CLICK = "click"
|
|
175
|
+
LEAD = "lead"
|
|
176
|
+
SALE = "sale"
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
class ListCommissionsStatus(str, Enum):
|
|
180
|
+
PENDING = "pending"
|
|
181
|
+
PROCESSED = "processed"
|
|
182
|
+
PAID = "paid"
|
|
183
|
+
REFUNDED = "refunded"
|
|
184
|
+
DUPLICATE = "duplicate"
|
|
185
|
+
FRAUD = "fraud"
|
|
186
|
+
CANCELED = "canceled"
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
class ListCommissionsResponseBodyTypedDict(TypedDict):
|
|
190
|
+
id: str
|
|
191
|
+
r"""The commission's unique ID on Dub."""
|
|
192
|
+
amount: float
|
|
193
|
+
earnings: float
|
|
194
|
+
currency: str
|
|
195
|
+
status: ListCommissionsStatus
|
|
196
|
+
created_at: str
|
|
197
|
+
updated_at: str
|
|
198
|
+
type: NotRequired[ListCommissionsType]
|
|
199
|
+
invoice_id: NotRequired[Nullable[str]]
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class ListCommissionsResponseBody(BaseModel):
|
|
203
|
+
id: str
|
|
204
|
+
r"""The commission's unique ID on Dub."""
|
|
205
|
+
|
|
206
|
+
amount: float
|
|
207
|
+
|
|
208
|
+
earnings: float
|
|
209
|
+
|
|
210
|
+
currency: str
|
|
211
|
+
|
|
212
|
+
status: ListCommissionsStatus
|
|
213
|
+
|
|
214
|
+
created_at: Annotated[str, pydantic.Field(alias="createdAt")]
|
|
215
|
+
|
|
216
|
+
updated_at: Annotated[str, pydantic.Field(alias="updatedAt")]
|
|
217
|
+
|
|
218
|
+
type: Optional[ListCommissionsType] = None
|
|
219
|
+
|
|
220
|
+
invoice_id: Annotated[OptionalNullable[str], pydantic.Field(alias="invoiceId")] = (
|
|
221
|
+
UNSET
|
|
222
|
+
)
|
|
223
|
+
|
|
224
|
+
@model_serializer(mode="wrap")
|
|
225
|
+
def serialize_model(self, handler):
|
|
226
|
+
optional_fields = ["type", "invoiceId"]
|
|
227
|
+
nullable_fields = ["invoiceId"]
|
|
228
|
+
null_default_fields = []
|
|
229
|
+
|
|
230
|
+
serialized = handler(self)
|
|
231
|
+
|
|
232
|
+
m = {}
|
|
233
|
+
|
|
234
|
+
for n, f in type(self).model_fields.items():
|
|
235
|
+
k = f.alias or n
|
|
236
|
+
val = serialized.get(k)
|
|
237
|
+
serialized.pop(k, None)
|
|
238
|
+
|
|
239
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
240
|
+
is_set = (
|
|
241
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
242
|
+
or k in null_default_fields
|
|
243
|
+
) # pylint: disable=no-member
|
|
244
|
+
|
|
245
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
246
|
+
m[k] = val
|
|
247
|
+
elif val != UNSET_SENTINEL and (
|
|
248
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
249
|
+
):
|
|
250
|
+
m[k] = val
|
|
251
|
+
|
|
252
|
+
return m
|
|
@@ -11,8 +11,6 @@ from typing_extensions import Annotated, NotRequired, TypedDict
|
|
|
11
11
|
class ListFoldersRequestTypedDict(TypedDict):
|
|
12
12
|
search: NotRequired[str]
|
|
13
13
|
r"""The search term to filter the folders by."""
|
|
14
|
-
include_link_count: NotRequired[bool]
|
|
15
|
-
r"""Whether to include the link count in the response."""
|
|
16
14
|
page: NotRequired[float]
|
|
17
15
|
r"""The page number for pagination."""
|
|
18
16
|
page_size: NotRequired[float]
|
|
@@ -26,13 +24,6 @@ class ListFoldersRequest(BaseModel):
|
|
|
26
24
|
] = None
|
|
27
25
|
r"""The search term to filter the folders by."""
|
|
28
26
|
|
|
29
|
-
include_link_count: Annotated[
|
|
30
|
-
Optional[bool],
|
|
31
|
-
pydantic.Field(alias="includeLinkCount"),
|
|
32
|
-
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
33
|
-
] = None
|
|
34
|
-
r"""Whether to include the link count in the response."""
|
|
35
|
-
|
|
36
27
|
page: Annotated[
|
|
37
28
|
Optional[float],
|
|
38
29
|
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from dub.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
|
5
|
+
from dub.utils import FieldMetadata, PathParamMetadata, RequestMetadata
|
|
6
|
+
from enum import Enum
|
|
7
|
+
import pydantic
|
|
8
|
+
from pydantic import model_serializer
|
|
9
|
+
from typing import Optional
|
|
10
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Status(str, Enum):
|
|
14
|
+
r"""Useful for marking a commission as refunded, duplicate, canceled, or fraudulent. Takes precedence over `amount` and `modifyAmount`. When a commission is marked as refunded, duplicate, canceled, or fraudulent, it will be omitted from the payout, and the payout amount will be recalculated accordingly. Paid commissions cannot be updated."""
|
|
15
|
+
|
|
16
|
+
REFUNDED = "refunded"
|
|
17
|
+
DUPLICATE = "duplicate"
|
|
18
|
+
CANCELED = "canceled"
|
|
19
|
+
FRAUD = "fraud"
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class UpdateCommissionRequestBodyTypedDict(TypedDict):
|
|
23
|
+
amount: NotRequired[float]
|
|
24
|
+
r"""The new absolute amount for the sale. Paid commissions cannot be updated."""
|
|
25
|
+
modify_amount: NotRequired[float]
|
|
26
|
+
r"""Modify the current sale amount: use positive values to increase the amount, negative values to decrease it. Takes precedence over `amount`. Paid commissions cannot be updated."""
|
|
27
|
+
currency: NotRequired[str]
|
|
28
|
+
r"""The currency of the sale amount to update. Accepts ISO 4217 currency codes."""
|
|
29
|
+
status: NotRequired[Status]
|
|
30
|
+
r"""Useful for marking a commission as refunded, duplicate, canceled, or fraudulent. Takes precedence over `amount` and `modifyAmount`. When a commission is marked as refunded, duplicate, canceled, or fraudulent, it will be omitted from the payout, and the payout amount will be recalculated accordingly. Paid commissions cannot be updated."""
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class UpdateCommissionRequestBody(BaseModel):
|
|
34
|
+
amount: Optional[float] = None
|
|
35
|
+
r"""The new absolute amount for the sale. Paid commissions cannot be updated."""
|
|
36
|
+
|
|
37
|
+
modify_amount: Annotated[Optional[float], pydantic.Field(alias="modifyAmount")] = (
|
|
38
|
+
None
|
|
39
|
+
)
|
|
40
|
+
r"""Modify the current sale amount: use positive values to increase the amount, negative values to decrease it. Takes precedence over `amount`. Paid commissions cannot be updated."""
|
|
41
|
+
|
|
42
|
+
currency: Optional[str] = "usd"
|
|
43
|
+
r"""The currency of the sale amount to update. Accepts ISO 4217 currency codes."""
|
|
44
|
+
|
|
45
|
+
status: Optional[Status] = None
|
|
46
|
+
r"""Useful for marking a commission as refunded, duplicate, canceled, or fraudulent. Takes precedence over `amount` and `modifyAmount`. When a commission is marked as refunded, duplicate, canceled, or fraudulent, it will be omitted from the payout, and the payout amount will be recalculated accordingly. Paid commissions cannot be updated."""
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class UpdateCommissionRequestTypedDict(TypedDict):
|
|
50
|
+
id: str
|
|
51
|
+
r"""The commission's unique ID on Dub."""
|
|
52
|
+
request_body: NotRequired[UpdateCommissionRequestBodyTypedDict]
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class UpdateCommissionRequest(BaseModel):
|
|
56
|
+
id: Annotated[
|
|
57
|
+
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
|
58
|
+
]
|
|
59
|
+
r"""The commission's unique ID on Dub."""
|
|
60
|
+
|
|
61
|
+
request_body: Annotated[
|
|
62
|
+
Optional[UpdateCommissionRequestBody],
|
|
63
|
+
FieldMetadata(request=RequestMetadata(media_type="application/json")),
|
|
64
|
+
] = None
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class UpdateCommissionType(str, Enum):
|
|
68
|
+
CLICK = "click"
|
|
69
|
+
LEAD = "lead"
|
|
70
|
+
SALE = "sale"
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class UpdateCommissionStatus(str, Enum):
|
|
74
|
+
PENDING = "pending"
|
|
75
|
+
PROCESSED = "processed"
|
|
76
|
+
PAID = "paid"
|
|
77
|
+
REFUNDED = "refunded"
|
|
78
|
+
DUPLICATE = "duplicate"
|
|
79
|
+
FRAUD = "fraud"
|
|
80
|
+
CANCELED = "canceled"
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class UpdateCommissionResponseBodyTypedDict(TypedDict):
|
|
84
|
+
r"""The updated commission."""
|
|
85
|
+
|
|
86
|
+
id: str
|
|
87
|
+
r"""The commission's unique ID on Dub."""
|
|
88
|
+
amount: float
|
|
89
|
+
earnings: float
|
|
90
|
+
currency: str
|
|
91
|
+
status: UpdateCommissionStatus
|
|
92
|
+
created_at: str
|
|
93
|
+
updated_at: str
|
|
94
|
+
type: NotRequired[UpdateCommissionType]
|
|
95
|
+
invoice_id: NotRequired[Nullable[str]]
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
class UpdateCommissionResponseBody(BaseModel):
|
|
99
|
+
r"""The updated commission."""
|
|
100
|
+
|
|
101
|
+
id: str
|
|
102
|
+
r"""The commission's unique ID on Dub."""
|
|
103
|
+
|
|
104
|
+
amount: float
|
|
105
|
+
|
|
106
|
+
earnings: float
|
|
107
|
+
|
|
108
|
+
currency: str
|
|
109
|
+
|
|
110
|
+
status: UpdateCommissionStatus
|
|
111
|
+
|
|
112
|
+
created_at: Annotated[str, pydantic.Field(alias="createdAt")]
|
|
113
|
+
|
|
114
|
+
updated_at: Annotated[str, pydantic.Field(alias="updatedAt")]
|
|
115
|
+
|
|
116
|
+
type: Optional[UpdateCommissionType] = None
|
|
117
|
+
|
|
118
|
+
invoice_id: Annotated[OptionalNullable[str], pydantic.Field(alias="invoiceId")] = (
|
|
119
|
+
UNSET
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
@model_serializer(mode="wrap")
|
|
123
|
+
def serialize_model(self, handler):
|
|
124
|
+
optional_fields = ["type", "invoiceId"]
|
|
125
|
+
nullable_fields = ["invoiceId"]
|
|
126
|
+
null_default_fields = []
|
|
127
|
+
|
|
128
|
+
serialized = handler(self)
|
|
129
|
+
|
|
130
|
+
m = {}
|
|
131
|
+
|
|
132
|
+
for n, f in type(self).model_fields.items():
|
|
133
|
+
k = f.alias or n
|
|
134
|
+
val = serialized.get(k)
|
|
135
|
+
serialized.pop(k, None)
|
|
136
|
+
|
|
137
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
138
|
+
is_set = (
|
|
139
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
140
|
+
or k in null_default_fields
|
|
141
|
+
) # pylint: disable=no-member
|
|
142
|
+
|
|
143
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
144
|
+
m[k] = val
|
|
145
|
+
elif val != UNSET_SENTINEL and (
|
|
146
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
147
|
+
):
|
|
148
|
+
m[k] = val
|
|
149
|
+
|
|
150
|
+
return m
|