dub 0.27.1__py3-none-any.whl → 0.27.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.
- dub/_version.py +3 -3
- dub/models/components/__init__.py +38 -0
- dub/models/components/analyticstriggers.py +2 -0
- dub/models/components/commissioncreatedevent.py +281 -0
- dub/models/components/partnerenrolledevent.py +201 -74
- dub/models/components/saleevent.py +1 -0
- dub/models/components/webhookevent.py +6 -0
- dub/models/operations/__init__.py +68 -0
- dub/models/operations/createpartner.py +201 -74
- dub/models/operations/listcommissions.py +169 -8
- dub/models/operations/listevents.py +19 -0
- dub/models/operations/listpartners.py +516 -0
- dub/models/operations/retrieveanalytics.py +19 -0
- dub/models/operations/tracksale.py +1 -0
- dub/models/operations/updatecommission.py +169 -8
- dub/partners.py +262 -0
- {dub-0.27.1.dist-info → dub-0.27.2.dist-info}/METADATA +2 -1
- {dub-0.27.1.dist-info → dub-0.27.2.dist-info}/RECORD +20 -18
- {dub-0.27.1.dist-info → dub-0.27.2.dist-info}/LICENSE +0 -0
- {dub-0.27.1.dist-info → dub-0.27.2.dist-info}/WHEEL +0 -0
|
@@ -81,6 +81,155 @@ class UpdateCommissionStatus(str, Enum):
|
|
|
81
81
|
CANCELED = "canceled"
|
|
82
82
|
|
|
83
83
|
|
|
84
|
+
class UpdateCommissionPartnerTypedDict(TypedDict):
|
|
85
|
+
id: str
|
|
86
|
+
r"""The partner's unique ID on Dub."""
|
|
87
|
+
name: str
|
|
88
|
+
r"""The partner's full legal name."""
|
|
89
|
+
email: Nullable[str]
|
|
90
|
+
r"""The partner's email address. Should be a unique value across Dub."""
|
|
91
|
+
image: Nullable[str]
|
|
92
|
+
r"""The partner's avatar image."""
|
|
93
|
+
payouts_enabled_at: Nullable[str]
|
|
94
|
+
r"""The date when the partner enabled payouts."""
|
|
95
|
+
country: Nullable[str]
|
|
96
|
+
r"""The partner's country (required for tax purposes)."""
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
class UpdateCommissionPartner(BaseModel):
|
|
100
|
+
id: str
|
|
101
|
+
r"""The partner's unique ID on Dub."""
|
|
102
|
+
|
|
103
|
+
name: str
|
|
104
|
+
r"""The partner's full legal name."""
|
|
105
|
+
|
|
106
|
+
email: Nullable[str]
|
|
107
|
+
r"""The partner's email address. Should be a unique value across Dub."""
|
|
108
|
+
|
|
109
|
+
image: Nullable[str]
|
|
110
|
+
r"""The partner's avatar image."""
|
|
111
|
+
|
|
112
|
+
payouts_enabled_at: Annotated[
|
|
113
|
+
Nullable[str], pydantic.Field(alias="payoutsEnabledAt")
|
|
114
|
+
]
|
|
115
|
+
r"""The date when the partner enabled payouts."""
|
|
116
|
+
|
|
117
|
+
country: Nullable[str]
|
|
118
|
+
r"""The partner's country (required for tax purposes)."""
|
|
119
|
+
|
|
120
|
+
@model_serializer(mode="wrap")
|
|
121
|
+
def serialize_model(self, handler):
|
|
122
|
+
optional_fields = []
|
|
123
|
+
nullable_fields = ["email", "image", "payoutsEnabledAt", "country"]
|
|
124
|
+
null_default_fields = []
|
|
125
|
+
|
|
126
|
+
serialized = handler(self)
|
|
127
|
+
|
|
128
|
+
m = {}
|
|
129
|
+
|
|
130
|
+
for n, f in type(self).model_fields.items():
|
|
131
|
+
k = f.alias or n
|
|
132
|
+
val = serialized.get(k)
|
|
133
|
+
serialized.pop(k, None)
|
|
134
|
+
|
|
135
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
136
|
+
is_set = (
|
|
137
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
138
|
+
or k in null_default_fields
|
|
139
|
+
) # pylint: disable=no-member
|
|
140
|
+
|
|
141
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
142
|
+
m[k] = val
|
|
143
|
+
elif val != UNSET_SENTINEL and (
|
|
144
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
145
|
+
):
|
|
146
|
+
m[k] = val
|
|
147
|
+
|
|
148
|
+
return m
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
class UpdateCommissionCustomerTypedDict(TypedDict):
|
|
152
|
+
id: str
|
|
153
|
+
r"""The unique ID of the customer. You may use either the customer's `id` on Dub (obtained via `/customers` endpoint) or their `externalId` (unique ID within your system, prefixed with `ext_`, e.g. `ext_123`)."""
|
|
154
|
+
external_id: str
|
|
155
|
+
r"""Unique identifier for the customer in the client's app."""
|
|
156
|
+
name: str
|
|
157
|
+
r"""Name of the customer."""
|
|
158
|
+
created_at: str
|
|
159
|
+
r"""The date the customer was created."""
|
|
160
|
+
email: NotRequired[Nullable[str]]
|
|
161
|
+
r"""Email of the customer."""
|
|
162
|
+
avatar: NotRequired[Nullable[str]]
|
|
163
|
+
r"""Avatar URL of the customer."""
|
|
164
|
+
country: NotRequired[Nullable[str]]
|
|
165
|
+
r"""Country of the customer."""
|
|
166
|
+
sales: NotRequired[Nullable[float]]
|
|
167
|
+
r"""Total number of sales for the customer."""
|
|
168
|
+
sale_amount: NotRequired[Nullable[float]]
|
|
169
|
+
r"""Total amount of sales for the customer."""
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
class UpdateCommissionCustomer(BaseModel):
|
|
173
|
+
id: str
|
|
174
|
+
r"""The unique ID of the customer. You may use either the customer's `id` on Dub (obtained via `/customers` endpoint) or their `externalId` (unique ID within your system, prefixed with `ext_`, e.g. `ext_123`)."""
|
|
175
|
+
|
|
176
|
+
external_id: Annotated[str, pydantic.Field(alias="externalId")]
|
|
177
|
+
r"""Unique identifier for the customer in the client's app."""
|
|
178
|
+
|
|
179
|
+
name: str
|
|
180
|
+
r"""Name of the customer."""
|
|
181
|
+
|
|
182
|
+
created_at: Annotated[str, pydantic.Field(alias="createdAt")]
|
|
183
|
+
r"""The date the customer was created."""
|
|
184
|
+
|
|
185
|
+
email: OptionalNullable[str] = UNSET
|
|
186
|
+
r"""Email of the customer."""
|
|
187
|
+
|
|
188
|
+
avatar: OptionalNullable[str] = UNSET
|
|
189
|
+
r"""Avatar URL of the customer."""
|
|
190
|
+
|
|
191
|
+
country: OptionalNullable[str] = UNSET
|
|
192
|
+
r"""Country of the customer."""
|
|
193
|
+
|
|
194
|
+
sales: OptionalNullable[float] = UNSET
|
|
195
|
+
r"""Total number of sales for the customer."""
|
|
196
|
+
|
|
197
|
+
sale_amount: Annotated[
|
|
198
|
+
OptionalNullable[float], pydantic.Field(alias="saleAmount")
|
|
199
|
+
] = UNSET
|
|
200
|
+
r"""Total amount of sales for the customer."""
|
|
201
|
+
|
|
202
|
+
@model_serializer(mode="wrap")
|
|
203
|
+
def serialize_model(self, handler):
|
|
204
|
+
optional_fields = ["email", "avatar", "country", "sales", "saleAmount"]
|
|
205
|
+
nullable_fields = ["email", "avatar", "country", "sales", "saleAmount"]
|
|
206
|
+
null_default_fields = []
|
|
207
|
+
|
|
208
|
+
serialized = handler(self)
|
|
209
|
+
|
|
210
|
+
m = {}
|
|
211
|
+
|
|
212
|
+
for n, f in type(self).model_fields.items():
|
|
213
|
+
k = f.alias or n
|
|
214
|
+
val = serialized.get(k)
|
|
215
|
+
serialized.pop(k, None)
|
|
216
|
+
|
|
217
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
|
218
|
+
is_set = (
|
|
219
|
+
self.__pydantic_fields_set__.intersection({n})
|
|
220
|
+
or k in null_default_fields
|
|
221
|
+
) # pylint: disable=no-member
|
|
222
|
+
|
|
223
|
+
if val is not None and val != UNSET_SENTINEL:
|
|
224
|
+
m[k] = val
|
|
225
|
+
elif val != UNSET_SENTINEL and (
|
|
226
|
+
not k in optional_fields or (optional_nullable and is_set)
|
|
227
|
+
):
|
|
228
|
+
m[k] = val
|
|
229
|
+
|
|
230
|
+
return m
|
|
231
|
+
|
|
232
|
+
|
|
84
233
|
class UpdateCommissionResponseBodyTypedDict(TypedDict):
|
|
85
234
|
r"""The updated commission."""
|
|
86
235
|
|
|
@@ -90,11 +239,16 @@ class UpdateCommissionResponseBodyTypedDict(TypedDict):
|
|
|
90
239
|
earnings: float
|
|
91
240
|
currency: str
|
|
92
241
|
status: UpdateCommissionStatus
|
|
242
|
+
invoice_id: Nullable[str]
|
|
243
|
+
description: Nullable[str]
|
|
244
|
+
quantity: float
|
|
93
245
|
created_at: str
|
|
94
246
|
updated_at: str
|
|
247
|
+
partner: UpdateCommissionPartnerTypedDict
|
|
95
248
|
type: NotRequired[UpdateCommissionType]
|
|
96
|
-
|
|
97
|
-
|
|
249
|
+
user_id: NotRequired[Nullable[str]]
|
|
250
|
+
r"""The user who created the manual commission."""
|
|
251
|
+
customer: NotRequired[Nullable[UpdateCommissionCustomerTypedDict]]
|
|
98
252
|
|
|
99
253
|
|
|
100
254
|
class UpdateCommissionResponseBody(BaseModel):
|
|
@@ -111,22 +265,29 @@ class UpdateCommissionResponseBody(BaseModel):
|
|
|
111
265
|
|
|
112
266
|
status: UpdateCommissionStatus
|
|
113
267
|
|
|
268
|
+
invoice_id: Annotated[Nullable[str], pydantic.Field(alias="invoiceId")]
|
|
269
|
+
|
|
270
|
+
description: Nullable[str]
|
|
271
|
+
|
|
272
|
+
quantity: float
|
|
273
|
+
|
|
114
274
|
created_at: Annotated[str, pydantic.Field(alias="createdAt")]
|
|
115
275
|
|
|
116
276
|
updated_at: Annotated[str, pydantic.Field(alias="updatedAt")]
|
|
117
277
|
|
|
278
|
+
partner: UpdateCommissionPartner
|
|
279
|
+
|
|
118
280
|
type: Optional[UpdateCommissionType] = None
|
|
119
281
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
)
|
|
282
|
+
user_id: Annotated[OptionalNullable[str], pydantic.Field(alias="userId")] = UNSET
|
|
283
|
+
r"""The user who created the manual commission."""
|
|
123
284
|
|
|
124
|
-
|
|
285
|
+
customer: OptionalNullable[UpdateCommissionCustomer] = UNSET
|
|
125
286
|
|
|
126
287
|
@model_serializer(mode="wrap")
|
|
127
288
|
def serialize_model(self, handler):
|
|
128
|
-
optional_fields = ["type", "
|
|
129
|
-
nullable_fields = ["invoiceId", "description"]
|
|
289
|
+
optional_fields = ["type", "userId", "customer"]
|
|
290
|
+
nullable_fields = ["invoiceId", "description", "userId", "customer"]
|
|
130
291
|
null_default_fields = []
|
|
131
292
|
|
|
132
293
|
serialized = handler(self)
|
dub/partners.py
CHANGED
|
@@ -296,6 +296,268 @@ class Partners(BaseSDK):
|
|
|
296
296
|
|
|
297
297
|
raise errors.SDKError("Unexpected response received", http_res)
|
|
298
298
|
|
|
299
|
+
def list(
|
|
300
|
+
self,
|
|
301
|
+
*,
|
|
302
|
+
request: Union[
|
|
303
|
+
operations.ListPartnersRequest, operations.ListPartnersRequestTypedDict
|
|
304
|
+
],
|
|
305
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
306
|
+
server_url: Optional[str] = None,
|
|
307
|
+
timeout_ms: Optional[int] = None,
|
|
308
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
309
|
+
) -> Optional[List[operations.ListPartnersResponseBody]]:
|
|
310
|
+
r"""List all partners
|
|
311
|
+
|
|
312
|
+
List all partners for a partner program.
|
|
313
|
+
|
|
314
|
+
:param request: The request object to send.
|
|
315
|
+
:param retries: Override the default retry configuration for this method
|
|
316
|
+
:param server_url: Override the default server URL for this method
|
|
317
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
318
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
319
|
+
"""
|
|
320
|
+
base_url = None
|
|
321
|
+
url_variables = None
|
|
322
|
+
if timeout_ms is None:
|
|
323
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
324
|
+
|
|
325
|
+
if server_url is not None:
|
|
326
|
+
base_url = server_url
|
|
327
|
+
else:
|
|
328
|
+
base_url = self._get_url(base_url, url_variables)
|
|
329
|
+
|
|
330
|
+
if not isinstance(request, BaseModel):
|
|
331
|
+
request = utils.unmarshal(request, operations.ListPartnersRequest)
|
|
332
|
+
request = cast(operations.ListPartnersRequest, request)
|
|
333
|
+
|
|
334
|
+
req = self._build_request(
|
|
335
|
+
method="GET",
|
|
336
|
+
path="/partners",
|
|
337
|
+
base_url=base_url,
|
|
338
|
+
url_variables=url_variables,
|
|
339
|
+
request=request,
|
|
340
|
+
request_body_required=False,
|
|
341
|
+
request_has_path_params=False,
|
|
342
|
+
request_has_query_params=True,
|
|
343
|
+
user_agent_header="user-agent",
|
|
344
|
+
accept_header_value="application/json",
|
|
345
|
+
http_headers=http_headers,
|
|
346
|
+
security=self.sdk_configuration.security,
|
|
347
|
+
timeout_ms=timeout_ms,
|
|
348
|
+
)
|
|
349
|
+
|
|
350
|
+
if retries == UNSET:
|
|
351
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
352
|
+
retries = self.sdk_configuration.retry_config
|
|
353
|
+
|
|
354
|
+
retry_config = None
|
|
355
|
+
if isinstance(retries, utils.RetryConfig):
|
|
356
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
357
|
+
|
|
358
|
+
http_res = self.do_request(
|
|
359
|
+
hook_ctx=HookContext(
|
|
360
|
+
config=self.sdk_configuration,
|
|
361
|
+
base_url=base_url or "",
|
|
362
|
+
operation_id="listPartners",
|
|
363
|
+
oauth2_scopes=[],
|
|
364
|
+
security_source=self.sdk_configuration.security,
|
|
365
|
+
),
|
|
366
|
+
request=req,
|
|
367
|
+
error_status_codes=[
|
|
368
|
+
"400",
|
|
369
|
+
"401",
|
|
370
|
+
"403",
|
|
371
|
+
"404",
|
|
372
|
+
"409",
|
|
373
|
+
"410",
|
|
374
|
+
"422",
|
|
375
|
+
"429",
|
|
376
|
+
"4XX",
|
|
377
|
+
"500",
|
|
378
|
+
"5XX",
|
|
379
|
+
],
|
|
380
|
+
retry_config=retry_config,
|
|
381
|
+
)
|
|
382
|
+
|
|
383
|
+
response_data: Any = None
|
|
384
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
385
|
+
return unmarshal_json_response(
|
|
386
|
+
Optional[List[operations.ListPartnersResponseBody]], http_res
|
|
387
|
+
)
|
|
388
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
389
|
+
response_data = unmarshal_json_response(errors.BadRequestData, http_res)
|
|
390
|
+
raise errors.BadRequest(response_data, http_res)
|
|
391
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
392
|
+
response_data = unmarshal_json_response(errors.UnauthorizedData, http_res)
|
|
393
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
394
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
395
|
+
response_data = unmarshal_json_response(errors.ForbiddenData, http_res)
|
|
396
|
+
raise errors.Forbidden(response_data, http_res)
|
|
397
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
398
|
+
response_data = unmarshal_json_response(errors.NotFoundData, http_res)
|
|
399
|
+
raise errors.NotFound(response_data, http_res)
|
|
400
|
+
if utils.match_response(http_res, "409", "application/json"):
|
|
401
|
+
response_data = unmarshal_json_response(errors.ConflictData, http_res)
|
|
402
|
+
raise errors.Conflict(response_data, http_res)
|
|
403
|
+
if utils.match_response(http_res, "410", "application/json"):
|
|
404
|
+
response_data = unmarshal_json_response(errors.InviteExpiredData, http_res)
|
|
405
|
+
raise errors.InviteExpired(response_data, http_res)
|
|
406
|
+
if utils.match_response(http_res, "422", "application/json"):
|
|
407
|
+
response_data = unmarshal_json_response(
|
|
408
|
+
errors.UnprocessableEntityData, http_res
|
|
409
|
+
)
|
|
410
|
+
raise errors.UnprocessableEntity(response_data, http_res)
|
|
411
|
+
if utils.match_response(http_res, "429", "application/json"):
|
|
412
|
+
response_data = unmarshal_json_response(
|
|
413
|
+
errors.RateLimitExceededData, http_res
|
|
414
|
+
)
|
|
415
|
+
raise errors.RateLimitExceeded(response_data, http_res)
|
|
416
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
417
|
+
response_data = unmarshal_json_response(
|
|
418
|
+
errors.InternalServerErrorData, http_res
|
|
419
|
+
)
|
|
420
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
421
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
422
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
423
|
+
raise errors.SDKError("API error occurred", http_res, http_res_text)
|
|
424
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
425
|
+
http_res_text = utils.stream_to_text(http_res)
|
|
426
|
+
raise errors.SDKError("API error occurred", http_res, http_res_text)
|
|
427
|
+
|
|
428
|
+
raise errors.SDKError("Unexpected response received", http_res)
|
|
429
|
+
|
|
430
|
+
async def list_async(
|
|
431
|
+
self,
|
|
432
|
+
*,
|
|
433
|
+
request: Union[
|
|
434
|
+
operations.ListPartnersRequest, operations.ListPartnersRequestTypedDict
|
|
435
|
+
],
|
|
436
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
|
437
|
+
server_url: Optional[str] = None,
|
|
438
|
+
timeout_ms: Optional[int] = None,
|
|
439
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
|
440
|
+
) -> Optional[List[operations.ListPartnersResponseBody]]:
|
|
441
|
+
r"""List all partners
|
|
442
|
+
|
|
443
|
+
List all partners for a partner program.
|
|
444
|
+
|
|
445
|
+
:param request: The request object to send.
|
|
446
|
+
:param retries: Override the default retry configuration for this method
|
|
447
|
+
:param server_url: Override the default server URL for this method
|
|
448
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
|
449
|
+
:param http_headers: Additional headers to set or replace on requests.
|
|
450
|
+
"""
|
|
451
|
+
base_url = None
|
|
452
|
+
url_variables = None
|
|
453
|
+
if timeout_ms is None:
|
|
454
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
|
455
|
+
|
|
456
|
+
if server_url is not None:
|
|
457
|
+
base_url = server_url
|
|
458
|
+
else:
|
|
459
|
+
base_url = self._get_url(base_url, url_variables)
|
|
460
|
+
|
|
461
|
+
if not isinstance(request, BaseModel):
|
|
462
|
+
request = utils.unmarshal(request, operations.ListPartnersRequest)
|
|
463
|
+
request = cast(operations.ListPartnersRequest, request)
|
|
464
|
+
|
|
465
|
+
req = self._build_request_async(
|
|
466
|
+
method="GET",
|
|
467
|
+
path="/partners",
|
|
468
|
+
base_url=base_url,
|
|
469
|
+
url_variables=url_variables,
|
|
470
|
+
request=request,
|
|
471
|
+
request_body_required=False,
|
|
472
|
+
request_has_path_params=False,
|
|
473
|
+
request_has_query_params=True,
|
|
474
|
+
user_agent_header="user-agent",
|
|
475
|
+
accept_header_value="application/json",
|
|
476
|
+
http_headers=http_headers,
|
|
477
|
+
security=self.sdk_configuration.security,
|
|
478
|
+
timeout_ms=timeout_ms,
|
|
479
|
+
)
|
|
480
|
+
|
|
481
|
+
if retries == UNSET:
|
|
482
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
|
483
|
+
retries = self.sdk_configuration.retry_config
|
|
484
|
+
|
|
485
|
+
retry_config = None
|
|
486
|
+
if isinstance(retries, utils.RetryConfig):
|
|
487
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
|
488
|
+
|
|
489
|
+
http_res = await self.do_request_async(
|
|
490
|
+
hook_ctx=HookContext(
|
|
491
|
+
config=self.sdk_configuration,
|
|
492
|
+
base_url=base_url or "",
|
|
493
|
+
operation_id="listPartners",
|
|
494
|
+
oauth2_scopes=[],
|
|
495
|
+
security_source=self.sdk_configuration.security,
|
|
496
|
+
),
|
|
497
|
+
request=req,
|
|
498
|
+
error_status_codes=[
|
|
499
|
+
"400",
|
|
500
|
+
"401",
|
|
501
|
+
"403",
|
|
502
|
+
"404",
|
|
503
|
+
"409",
|
|
504
|
+
"410",
|
|
505
|
+
"422",
|
|
506
|
+
"429",
|
|
507
|
+
"4XX",
|
|
508
|
+
"500",
|
|
509
|
+
"5XX",
|
|
510
|
+
],
|
|
511
|
+
retry_config=retry_config,
|
|
512
|
+
)
|
|
513
|
+
|
|
514
|
+
response_data: Any = None
|
|
515
|
+
if utils.match_response(http_res, "200", "application/json"):
|
|
516
|
+
return unmarshal_json_response(
|
|
517
|
+
Optional[List[operations.ListPartnersResponseBody]], http_res
|
|
518
|
+
)
|
|
519
|
+
if utils.match_response(http_res, "400", "application/json"):
|
|
520
|
+
response_data = unmarshal_json_response(errors.BadRequestData, http_res)
|
|
521
|
+
raise errors.BadRequest(response_data, http_res)
|
|
522
|
+
if utils.match_response(http_res, "401", "application/json"):
|
|
523
|
+
response_data = unmarshal_json_response(errors.UnauthorizedData, http_res)
|
|
524
|
+
raise errors.Unauthorized(response_data, http_res)
|
|
525
|
+
if utils.match_response(http_res, "403", "application/json"):
|
|
526
|
+
response_data = unmarshal_json_response(errors.ForbiddenData, http_res)
|
|
527
|
+
raise errors.Forbidden(response_data, http_res)
|
|
528
|
+
if utils.match_response(http_res, "404", "application/json"):
|
|
529
|
+
response_data = unmarshal_json_response(errors.NotFoundData, http_res)
|
|
530
|
+
raise errors.NotFound(response_data, http_res)
|
|
531
|
+
if utils.match_response(http_res, "409", "application/json"):
|
|
532
|
+
response_data = unmarshal_json_response(errors.ConflictData, http_res)
|
|
533
|
+
raise errors.Conflict(response_data, http_res)
|
|
534
|
+
if utils.match_response(http_res, "410", "application/json"):
|
|
535
|
+
response_data = unmarshal_json_response(errors.InviteExpiredData, http_res)
|
|
536
|
+
raise errors.InviteExpired(response_data, http_res)
|
|
537
|
+
if utils.match_response(http_res, "422", "application/json"):
|
|
538
|
+
response_data = unmarshal_json_response(
|
|
539
|
+
errors.UnprocessableEntityData, http_res
|
|
540
|
+
)
|
|
541
|
+
raise errors.UnprocessableEntity(response_data, http_res)
|
|
542
|
+
if utils.match_response(http_res, "429", "application/json"):
|
|
543
|
+
response_data = unmarshal_json_response(
|
|
544
|
+
errors.RateLimitExceededData, http_res
|
|
545
|
+
)
|
|
546
|
+
raise errors.RateLimitExceeded(response_data, http_res)
|
|
547
|
+
if utils.match_response(http_res, "500", "application/json"):
|
|
548
|
+
response_data = unmarshal_json_response(
|
|
549
|
+
errors.InternalServerErrorData, http_res
|
|
550
|
+
)
|
|
551
|
+
raise errors.InternalServerError(response_data, http_res)
|
|
552
|
+
if utils.match_response(http_res, "4XX", "*"):
|
|
553
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
554
|
+
raise errors.SDKError("API error occurred", http_res, http_res_text)
|
|
555
|
+
if utils.match_response(http_res, "5XX", "*"):
|
|
556
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
|
557
|
+
raise errors.SDKError("API error occurred", http_res, http_res_text)
|
|
558
|
+
|
|
559
|
+
raise errors.SDKError("Unexpected response received", http_res)
|
|
560
|
+
|
|
299
561
|
def create_link(
|
|
300
562
|
self,
|
|
301
563
|
*,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: dub
|
|
3
|
-
Version: 0.27.
|
|
3
|
+
Version: 0.27.2
|
|
4
4
|
Summary: Python Client SDK Generated by Speakeasy
|
|
5
5
|
Author: Speakeasy
|
|
6
6
|
Requires-Python: >=3.9.2
|
|
@@ -331,6 +331,7 @@ asyncio.run(main())
|
|
|
331
331
|
### [partners](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md)
|
|
332
332
|
|
|
333
333
|
* [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#create) - Create a partner
|
|
334
|
+
* [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#list) - List all partners
|
|
334
335
|
* [create_link](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#create_link) - Create a link for a partner
|
|
335
336
|
* [retrieve_links](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#retrieve_links) - Retrieve a partner's links.
|
|
336
337
|
* [upsert_link](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#upsert_link) - Upsert a link for a partner
|
|
@@ -3,7 +3,7 @@ dub/_hooks/__init__.py,sha256=9_7W5jAYw8rcO8Kfc-Ty-lB82BHfksAJJpVFb_UeU1c,146
|
|
|
3
3
|
dub/_hooks/registration.py,sha256=tT-1Cjp5ax1DL-84HBNWPy4wAwgP-0aI4-asLfnkIlw,625
|
|
4
4
|
dub/_hooks/sdkhooks.py,sha256=2rLEjSz1xFGWabNs1voFn0lXSCqkS38bdKVFdnBJufE,2553
|
|
5
5
|
dub/_hooks/types.py,sha256=5vcNbFBNpCxqI7ZebiBtut7T_Gz2i36L5MjTqGvxV7Y,3035
|
|
6
|
-
dub/_version.py,sha256=
|
|
6
|
+
dub/_version.py,sha256=dOWWouDFksY-1l1WoLN-dUOcamc5Ip3q3Gj8smTxWqg,450
|
|
7
7
|
dub/analytics.py,sha256=D4s6aPCiCVxwbG2bIvanBiaDtYZgN1xMwu5DOnuRrVg,12342
|
|
8
8
|
dub/basesdk.py,sha256=6hqUvjS1s4AdIw3STtyBxJwgjqRYCK3ieGqPJVpjBh8,11813
|
|
9
9
|
dub/commissions.py,sha256=OzDAs372f4VszeKJNkR4pR7q5SNI4JiCwz-bzny0YMc,24346
|
|
@@ -15,7 +15,7 @@ dub/folders.py,sha256=6hlJheqGnEu8noq3A-iahury-TxtLJ3e_YiIPr8NDl8,47602
|
|
|
15
15
|
dub/httpclient.py,sha256=Eu73urOAiZQtdUIyOUnPccxCiBbWEKrXG-JrRG3SLM4,3946
|
|
16
16
|
dub/links.py,sha256=vnP7Uu41PtsOr2mqzROSNxQB3InnOoxq4_zNw3_q5L8,121880
|
|
17
17
|
dub/models/__init__.py,sha256=wIW9sbvSKlrGyoPY4mXvHqw-_Inpl6zqpN6U6j-w6SU,83
|
|
18
|
-
dub/models/components/__init__.py,sha256=
|
|
18
|
+
dub/models/components/__init__.py,sha256=oTq9259pixzV1fqpX9nVVKJnuzvN6q5avPBSVc2U6_Y,22314
|
|
19
19
|
dub/models/components/analyticsbrowsers.py,sha256=f6qMrkPFf38u3_PIovvdIc0hsX1YpYEaPxNwbXzkoeY,1172
|
|
20
20
|
dub/models/components/analyticscities.py,sha256=zef22QucFtrOCkPDrpvpNlrbX465_0dFHyZ5va_LRRI,1666
|
|
21
21
|
dub/models/components/analyticscontinents.py,sha256=D_SQTm1Xp_pOt7qZTLJVo2B3RQUP8k3MQmsYRQYbjlI,1616
|
|
@@ -29,8 +29,9 @@ dub/models/components/analyticsregions.py,sha256=--tqwuWSWUYswV_OkQFAbI1PIFala7t
|
|
|
29
29
|
dub/models/components/analyticstimeseries.py,sha256=ZEZpE6oX0FPeiy5snz-kwYhXE9pwGBwzXY0Rq3u9XPI,1186
|
|
30
30
|
dub/models/components/analyticstoplinks.py,sha256=RvhyKQcmDT47F-4sPojhhDgvFYRZCA5k257JrndHSp8,3649
|
|
31
31
|
dub/models/components/analyticstopurls.py,sha256=WN4oF32SSXUlFPpWvx7jKype0SfdBsX1BvrkaKjClRM,1122
|
|
32
|
-
dub/models/components/analyticstriggers.py,sha256=
|
|
32
|
+
dub/models/components/analyticstriggers.py,sha256=reWQ1cQDNgPc_cDhGrMv5EplFviiyWZ0nYTvU7bm3C0,1484
|
|
33
33
|
dub/models/components/clickevent.py,sha256=umzsHdZcvkdaQ2TdbsbpY4a4rMgjvfnxEPk66cCIZ_Y,41254
|
|
34
|
+
dub/models/components/commissioncreatedevent.py,sha256=BOhnoO1CFd40suVoEsKlFsZUTRbmVTdEOy6Oq-jmqjo,8573
|
|
34
35
|
dub/models/components/continentcode.py,sha256=YFw3_x0w7CxCQijsbfiiOoS9FbNATeHyGLcw-LEsXYw,315
|
|
35
36
|
dub/models/components/countrycode.py,sha256=NcNDmnQ0TiXuO9JBZQ4tscUIVXld5dyuNcTCa2rtzUA,3796
|
|
36
37
|
dub/models/components/domainschema.py,sha256=MBaPJhQDSQtMTQYVsV8khaQGpY5BXa6IpwYP7qaWnzQ,5328
|
|
@@ -45,12 +46,12 @@ dub/models/components/linkwebhookevent.py,sha256=MRKTT3SoAo_M6TbZuWj_tTAH-3Wo5w9
|
|
|
45
46
|
dub/models/components/partneranalyticscount.py,sha256=hJOuFVUTFOuXWviLxExwXDZVgPLBcgmqt8VxeHv7JAw,1035
|
|
46
47
|
dub/models/components/partneranalyticstimeseries.py,sha256=Bh431YfEd8v6TD9o9DPCAwGCDo5Rrf1xR1pccm7q5aw,1268
|
|
47
48
|
dub/models/components/partneranalyticstoplinks.py,sha256=xy1F1vueaBX93Gj2AYqqa7jbEueJy-FAVD5GdnjPva8,3755
|
|
48
|
-
dub/models/components/partnerenrolledevent.py,sha256=
|
|
49
|
+
dub/models/components/partnerenrolledevent.py,sha256=fPA1vyaeWbg8eEjRWjPANKEl6RBrmB4RKIBOHhATVy4,15825
|
|
49
50
|
dub/models/components/salecreatedevent.py,sha256=MXY73Oek_E-g3q1MrYjnjM4k-RCboHm08aLu9gkSmd4,41970
|
|
50
|
-
dub/models/components/saleevent.py,sha256=
|
|
51
|
+
dub/models/components/saleevent.py,sha256=A2t1-O5vLlEXnOVGY6tKwA55oOIF1YUX_B6ei3pMoBo,47832
|
|
51
52
|
dub/models/components/security.py,sha256=be_cng1n5ULto_xGGPBKH1ZE5LrtmBTg6kX2uPJqJOw,599
|
|
52
53
|
dub/models/components/tagschema.py,sha256=9aymPZgSYT_OUsr4AtHAt4GLej9v89yuS5X1YSZ72sE,759
|
|
53
|
-
dub/models/components/webhookevent.py,sha256=
|
|
54
|
+
dub/models/components/webhookevent.py,sha256=12SgBns1nVcb0Efs8JR9JO8vmvK25bXMROCT-s0Ue5c,1268
|
|
54
55
|
dub/models/components/workspaceschema.py,sha256=sF5cVYWBXZ-dnPPDJbKDz74lVwPJxGrSiL6fK7M-1XU,10934
|
|
55
56
|
dub/models/errors/__init__.py,sha256=4gkoLx40NaI80l_RqU_PhSyo5b8DRtO9fORjlJ0kHNM,6046
|
|
56
57
|
dub/models/errors/badrequest.py,sha256=G5UFXCXOZy5raqCb_UpY409hSNT0V8lCiQxZs5iCri8,1646
|
|
@@ -66,7 +67,7 @@ dub/models/errors/responsevalidationerror.py,sha256=SRWiFq2Ip-M7luHULq3POe4JSWzO
|
|
|
66
67
|
dub/models/errors/sdkerror.py,sha256=iWxT-KvUgOlqID84qtbl7jG88f3xF9bxVCnMrtshtA0,1216
|
|
67
68
|
dub/models/errors/unauthorized.py,sha256=gTybq5vCh3nFKAnERxwMwETlQZ3T3SR01RKooIreVdo,1710
|
|
68
69
|
dub/models/errors/unprocessableentity.py,sha256=EkqNdp5lZQHA8hJgNdA3gviqMmyjcFx02cTxl3yhyrs,1693
|
|
69
|
-
dub/models/operations/__init__.py,sha256=
|
|
70
|
+
dub/models/operations/__init__.py,sha256=UsmphF6yO3XTsIs4JRIXL4cEU6LNwGOjbubtOE4vBC0,42023
|
|
70
71
|
dub/models/operations/bulkcreatelinks.py,sha256=aY5XyysI5g-6owMgXx_i1rFN4DPM8S7N1y0MzAJgvzU,17896
|
|
71
72
|
dub/models/operations/bulkdeletelinks.py,sha256=u_hEFC9TZ1UnGGgLhQ-Mf3HNDO98Ur49MtdBnNVIRsE,1151
|
|
72
73
|
dub/models/operations/bulkupdatelinks.py,sha256=qo5t0RnwzxpdQnz5IivH9plgjMaJAX0i7gXJHmCck_M,15972
|
|
@@ -75,7 +76,7 @@ dub/models/operations/createcustomer.py,sha256=Fvp70GKEVqqAckvFO7h0dkjcNnFQUY7C3
|
|
|
75
76
|
dub/models/operations/createdomain.py,sha256=dHRvCzE6knsndN4FTFjfijHVmTi8NXKpURz8cM_C-bk,3900
|
|
76
77
|
dub/models/operations/createfolder.py,sha256=j9z0CIsc22VsWAwlCGNwxo6a3VsetD6t4T2LdCELYGE,1884
|
|
77
78
|
dub/models/operations/createlink.py,sha256=Fy934a9A1vWA_GLI-FQ7FQDlMskV-EElvtvFQKd_vmU,17263
|
|
78
|
-
dub/models/operations/createpartner.py,sha256=
|
|
79
|
+
dub/models/operations/createpartner.py,sha256=jj8VwajBFCDYox2O1Rk8HTQW1eM9WbYXD6KQCrcSTc4,36636
|
|
79
80
|
dub/models/operations/createpartnerlink.py,sha256=rOlnyEQdBk2jb5T3ryzvboWney3cRXIG9rCxuwQO58I,17091
|
|
80
81
|
dub/models/operations/createreferralsembedtoken.py,sha256=5FrDNmx68MyArVnQ0-s3MoySTo5DdMk7yUwWfLiUC_0,22792
|
|
81
82
|
dub/models/operations/createtag.py,sha256=XUKuFcLoenYk1oxdeou-gI_s3A4YxtIJKgRiXtLfOpQ,1497
|
|
@@ -92,17 +93,18 @@ dub/models/operations/getlinkscount.py,sha256=KvD0gh-Imn1WmiiRAIYUXHBoNNGEnmfBQX
|
|
|
92
93
|
dub/models/operations/getqrcode.py,sha256=ynCPJc8vy_QEt5FP8OU2s-u6UIt1BhmFSNZC-XPmO4I,3848
|
|
93
94
|
dub/models/operations/gettags.py,sha256=c9p_JrHFnTDJURyR5iiKFKpXFHlzJDt3R5X1U-anyYg,2664
|
|
94
95
|
dub/models/operations/getworkspace.py,sha256=V4-NfsEg3M1BTeoE13sDyazefb2_kI4yFxnzgvHPv4s,625
|
|
95
|
-
dub/models/operations/listcommissions.py,sha256=
|
|
96
|
+
dub/models/operations/listcommissions.py,sha256=dAazZ_vEaQRmaF6YbQyprCtKySG3-DMWPP8EwMOAOCE,13576
|
|
96
97
|
dub/models/operations/listdomains.py,sha256=gbQrJyBIvTGKSeqJo0Jb08iE44Xu39NS9zbfetx4p-s,1936
|
|
97
|
-
dub/models/operations/listevents.py,sha256=
|
|
98
|
+
dub/models/operations/listevents.py,sha256=4OgIqqibUD0u0COwd2S0YzZNLGujndeCiszAjHrPp2Y,18894
|
|
98
99
|
dub/models/operations/listfolders.py,sha256=5FGf62ZTjquVXjq5axlzQgYGfEnrEwDn8QLlgGH_7jQ,1209
|
|
100
|
+
dub/models/operations/listpartners.py,sha256=FdhVmtUCp8ja9tvLTtl5l5KqPG1eec9wj3D0m8YBtRY,19708
|
|
99
101
|
dub/models/operations/registerdomain.py,sha256=fjozn1tFU-cNarHdAqN_flQoGAE498ob-f4A2bIAiOc,2058
|
|
100
|
-
dub/models/operations/retrieveanalytics.py,sha256=
|
|
102
|
+
dub/models/operations/retrieveanalytics.py,sha256=UJFwNJuvGxMJjmjJkukiSwZPKCKhS31NA3dZ3gSsORc,20132
|
|
101
103
|
dub/models/operations/retrievelinks.py,sha256=22oIJQnrwI3euUnSWJR21LjfADLTkrpou9o558gTLc8,2801
|
|
102
104
|
dub/models/operations/retrievepartneranalytics.py,sha256=9aldT3YxBAwQtNPu0Mat5Uxrmz6zMGnri5cqaxUDHdk,4968
|
|
103
105
|
dub/models/operations/tracklead.py,sha256=_c1iIlWtZCJjwg6Hbfiphj4rFVCThFE2UnRuXsDEYKE,6881
|
|
104
|
-
dub/models/operations/tracksale.py,sha256=
|
|
105
|
-
dub/models/operations/updatecommission.py,sha256=
|
|
106
|
+
dub/models/operations/tracksale.py,sha256=GDt1G0nAeelTlI7QxP3iCVmBYa9PMhLbJRChCLgvOeE,9021
|
|
107
|
+
dub/models/operations/updatecommission.py,sha256=N_okp7jc6jqI4CnGRvTEKTw-QPb5DEwGVGfKmOSRQrY,11019
|
|
106
108
|
dub/models/operations/updatecustomer.py,sha256=1IqNatrmNmDVtMH-47uR1NXq4Zr_ASc4Wvt1yssl_gk,13554
|
|
107
109
|
dub/models/operations/updatedomain.py,sha256=rexCga7uNxgBZLPiCMcaudc2cQGB0E_qX2HI0DgG_3M,4519
|
|
108
110
|
dub/models/operations/updatefolder.py,sha256=dNvSPY67g58SWynB8ic5rcgT-h7THRmyxuzuFdO42GQ,2581
|
|
@@ -111,7 +113,7 @@ dub/models/operations/updatetag.py,sha256=0nGAU6if5BsetDArXCIn8YvlDgG17N1Cp8q1o9
|
|
|
111
113
|
dub/models/operations/updateworkspace.py,sha256=qdlmA-Rz8_fC3iQs7bzmcn0qL9Lu3a04ziEIYfX3Ugo,2690
|
|
112
114
|
dub/models/operations/upsertlink.py,sha256=V5vzhu4GwEszHVmq6U7ZookZW7ty7xIH0zWIzgTZUHA,17386
|
|
113
115
|
dub/models/operations/upsertpartnerlink.py,sha256=Z0xtZHGzePne4wM2XaouR8f_pJrHA6avCmczxEo-9p0,17091
|
|
114
|
-
dub/partners.py,sha256=
|
|
116
|
+
dub/partners.py,sha256=y-lObDvW0e7UMFkmF2bjrikimU0zb1Lf2U-KSANCvnU,72639
|
|
115
117
|
dub/py.typed,sha256=zrp19r0G21lr2yRiMC0f8MFkQFGj9wMpSbboePMg8KM,59
|
|
116
118
|
dub/qr_codes.py,sha256=r1kxjwW54UDxdVZ74l5U1bxbkvMcrSC9nlPUHDZYBsI,11572
|
|
117
119
|
dub/sdk.py,sha256=HpmndHemBNHJc01BpabuqN_CCCwRbgy_Jltb9ndB8nI,7597
|
|
@@ -138,7 +140,7 @@ dub/utils/unmarshal_json_response.py,sha256=FcgE-IWPMAHWDdw6QEZeLeD5G_rflScZbT10
|
|
|
138
140
|
dub/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
|
|
139
141
|
dub/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
|
|
140
142
|
dub/workspaces.py,sha256=qqg3JuPFsC14D9OqUeMxYvXHOoIJOJ9To1faAG7x8kM,24373
|
|
141
|
-
dub-0.27.
|
|
142
|
-
dub-0.27.
|
|
143
|
-
dub-0.27.
|
|
144
|
-
dub-0.27.
|
|
143
|
+
dub-0.27.2.dist-info/LICENSE,sha256=kc_aZ6YHHcdSsRy-mGsT0Ehji0ZgR_zevXiUt05V2KY,1079
|
|
144
|
+
dub-0.27.2.dist-info/METADATA,sha256=B8iwjj3kL29vI1WAc52I8hG9-7IgR2AVBfitFHzCAew,30475
|
|
145
|
+
dub-0.27.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
146
|
+
dub-0.27.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|