dub 0.29.3__py3-none-any.whl → 0.32.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/analytics.py +2 -2
- dub/commissions.py +4 -4
- dub/customers.py +10 -10
- dub/domains.py +12 -12
- dub/embed_tokens.py +2 -2
- dub/events.py +2 -2
- dub/folders.py +8 -8
- dub/httpclient.py +0 -1
- dub/links.py +20 -20
- dub/models/components/__init__.py +22 -10
- dub/models/components/clickevent.py +3 -3
- dub/models/components/commissioncreatedevent.py +9 -6
- dub/models/components/folderschema.py +6 -1
- dub/models/components/leadcreatedevent.py +128 -4
- dub/models/components/leadevent.py +3 -3
- dub/models/components/linkclickedevent.py +3 -3
- dub/models/components/linkschema.py +3 -3
- dub/models/components/{tagschema.py → linktagschema.py} +2 -2
- dub/models/components/linkwebhookevent.py +3 -3
- dub/models/components/partnerenrolledevent.py +45 -92
- dub/models/components/salecreatedevent.py +128 -4
- dub/models/components/saleevent.py +3 -3
- dub/models/components/workspaceschema.py +13 -0
- dub/models/errors/badrequest.py +1 -1
- dub/models/errors/conflict.py +1 -1
- dub/models/errors/duberror.py +1 -1
- dub/models/errors/forbidden.py +1 -1
- dub/models/errors/internalservererror.py +1 -1
- dub/models/errors/inviteexpired.py +1 -1
- dub/models/errors/no_response_error.py +1 -1
- dub/models/errors/notfound.py +1 -1
- dub/models/errors/ratelimitexceeded.py +1 -1
- dub/models/errors/responsevalidationerror.py +1 -1
- dub/models/errors/sdkerror.py +1 -1
- dub/models/errors/unauthorized.py +1 -1
- dub/models/errors/unprocessableentity.py +1 -1
- dub/models/operations/bulkcreatelinks.py +2 -2
- dub/models/operations/createcustomer.py +10 -3
- dub/models/operations/createfolder.py +8 -3
- dub/models/operations/createlink.py +2 -2
- dub/models/operations/createpartner.py +47 -94
- dub/models/operations/getcustomer.py +1 -1
- dub/models/operations/getcustomers.py +1 -1
- dub/models/operations/listcommissions.py +11 -2
- dub/models/operations/listevents.py +10 -0
- dub/models/operations/listpartners.py +66 -115
- dub/models/operations/retrieveanalytics.py +14 -1
- dub/models/operations/retrievelinks.py +5 -0
- dub/models/operations/tracklead.py +2 -2
- dub/models/operations/updatecustomer.py +10 -3
- dub/models/operations/updatefolder.py +8 -3
- dub/models/operations/updatelink.py +2 -2
- dub/models/operations/upsertlink.py +2 -2
- dub/partners.py +16 -16
- dub/qr_codes.py +2 -2
- dub/sdk.py +2 -2
- dub/tags.py +20 -20
- dub/track.py +4 -4
- dub/utils/annotations.py +32 -8
- dub/workspaces.py +4 -4
- {dub-0.29.3.dist-info → dub-0.32.0.dist-info}/METADATA +7 -4
- {dub-0.29.3.dist-info → dub-0.32.0.dist-info}/RECORD +65 -65
- {dub-0.29.3.dist-info → dub-0.32.0.dist-info}/WHEEL +1 -1
- {dub-0.29.3.dist-info → dub-0.32.0.dist-info/licenses}/LICENSE +0 -0
|
@@ -17,6 +17,8 @@ class CreateCustomerRequestBodyTypedDict(TypedDict):
|
|
|
17
17
|
r"""Name of the customer in the client's app. If not provided, a random name will be generated."""
|
|
18
18
|
avatar: NotRequired[Nullable[str]]
|
|
19
19
|
r"""Avatar URL of the customer in the client's app."""
|
|
20
|
+
stripe_customer_id: NotRequired[Nullable[str]]
|
|
21
|
+
r"""The customer's Stripe customer ID. Useful for attribution recurring sale events to the partner who referred the customer."""
|
|
20
22
|
|
|
21
23
|
|
|
22
24
|
class CreateCustomerRequestBody(BaseModel):
|
|
@@ -32,10 +34,15 @@ class CreateCustomerRequestBody(BaseModel):
|
|
|
32
34
|
avatar: OptionalNullable[str] = UNSET
|
|
33
35
|
r"""Avatar URL of the customer in the client's app."""
|
|
34
36
|
|
|
37
|
+
stripe_customer_id: Annotated[
|
|
38
|
+
OptionalNullable[str], pydantic.Field(alias="stripeCustomerId")
|
|
39
|
+
] = UNSET
|
|
40
|
+
r"""The customer's Stripe customer ID. Useful for attribution recurring sale events to the partner who referred the customer."""
|
|
41
|
+
|
|
35
42
|
@model_serializer(mode="wrap")
|
|
36
43
|
def serialize_model(self, handler):
|
|
37
|
-
optional_fields = ["email", "name", "avatar"]
|
|
38
|
-
nullable_fields = ["email", "name", "avatar"]
|
|
44
|
+
optional_fields = ["email", "name", "avatar", "stripeCustomerId"]
|
|
45
|
+
nullable_fields = ["email", "name", "avatar", "stripeCustomerId"]
|
|
39
46
|
null_default_fields = []
|
|
40
47
|
|
|
41
48
|
serialized = handler(self)
|
|
@@ -223,9 +230,9 @@ class CreateCustomerDiscount(BaseModel):
|
|
|
223
230
|
optional_fields = ["description", "partnersCount"]
|
|
224
231
|
nullable_fields = [
|
|
225
232
|
"maxDuration",
|
|
226
|
-
"description",
|
|
227
233
|
"couponId",
|
|
228
234
|
"couponTestId",
|
|
235
|
+
"description",
|
|
229
236
|
"partnersCount",
|
|
230
237
|
]
|
|
231
238
|
null_default_fields = []
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
-
from dub.types import BaseModel, Nullable, OptionalNullable, UNSET_SENTINEL
|
|
4
|
+
from dub.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
|
5
5
|
from enum import Enum
|
|
6
6
|
import pydantic
|
|
7
7
|
from pydantic import model_serializer
|
|
@@ -18,6 +18,8 @@ class AccessLevel(str, Enum):
|
|
|
18
18
|
class CreateFolderRequestBodyTypedDict(TypedDict):
|
|
19
19
|
name: str
|
|
20
20
|
r"""The name of the folder."""
|
|
21
|
+
description: NotRequired[Nullable[str]]
|
|
22
|
+
r"""The description of the folder."""
|
|
21
23
|
access_level: NotRequired[Nullable[AccessLevel]]
|
|
22
24
|
r"""The access level of the folder within the workspace."""
|
|
23
25
|
|
|
@@ -26,6 +28,9 @@ class CreateFolderRequestBody(BaseModel):
|
|
|
26
28
|
name: str
|
|
27
29
|
r"""The name of the folder."""
|
|
28
30
|
|
|
31
|
+
description: OptionalNullable[str] = UNSET
|
|
32
|
+
r"""The description of the folder."""
|
|
33
|
+
|
|
29
34
|
access_level: Annotated[
|
|
30
35
|
OptionalNullable[AccessLevel], pydantic.Field(alias="accessLevel")
|
|
31
36
|
] = None
|
|
@@ -33,8 +38,8 @@ class CreateFolderRequestBody(BaseModel):
|
|
|
33
38
|
|
|
34
39
|
@model_serializer(mode="wrap")
|
|
35
40
|
def serialize_model(self, handler):
|
|
36
|
-
optional_fields = ["accessLevel"]
|
|
37
|
-
nullable_fields = ["accessLevel"]
|
|
41
|
+
optional_fields = ["description", "accessLevel"]
|
|
42
|
+
nullable_fields = ["description", "accessLevel"]
|
|
38
43
|
null_default_fields = ["accessLevel"]
|
|
39
44
|
|
|
40
45
|
serialized = handler(self)
|
|
@@ -43,7 +43,7 @@ class CreateLinkRequestBodyTypedDict(TypedDict):
|
|
|
43
43
|
url: str
|
|
44
44
|
r"""The destination URL of the short link."""
|
|
45
45
|
domain: NotRequired[str]
|
|
46
|
-
r"""The domain of the short link. If not provided, the primary domain for the workspace will be used (or `dub.sh` if the workspace has no domains)."""
|
|
46
|
+
r"""The domain of the short link (without protocol). If not provided, the primary domain for the workspace will be used (or `dub.sh` if the workspace has no domains)."""
|
|
47
47
|
key: NotRequired[str]
|
|
48
48
|
r"""The short link slug. If not provided, a random 7-character slug will be generated."""
|
|
49
49
|
key_length: NotRequired[float]
|
|
@@ -127,7 +127,7 @@ class CreateLinkRequestBody(BaseModel):
|
|
|
127
127
|
r"""The destination URL of the short link."""
|
|
128
128
|
|
|
129
129
|
domain: Optional[str] = None
|
|
130
|
-
r"""The domain of the short link. If not provided, the primary domain for the workspace will be used (or `dub.sh` if the workspace has no domains)."""
|
|
130
|
+
r"""The domain of the short link (without protocol). If not provided, the primary domain for the workspace will be used (or `dub.sh` if the workspace has no domains)."""
|
|
131
131
|
|
|
132
132
|
key: Optional[str] = None
|
|
133
133
|
r"""The short link slug. If not provided, a random 7-character slug will be generated."""
|
|
@@ -401,6 +401,7 @@ class CreatePartnerStatus(str, Enum):
|
|
|
401
401
|
REJECTED = "rejected"
|
|
402
402
|
INVITED = "invited"
|
|
403
403
|
DECLINED = "declined"
|
|
404
|
+
DEACTIVATED = "deactivated"
|
|
404
405
|
BANNED = "banned"
|
|
405
406
|
ARCHIVED = "archived"
|
|
406
407
|
|
|
@@ -420,6 +421,8 @@ class CreatePartnerLinkTypedDict(TypedDict):
|
|
|
420
421
|
r"""The number of clicks on the short link."""
|
|
421
422
|
leads: NotRequired[float]
|
|
422
423
|
r"""The number of leads the short link has generated."""
|
|
424
|
+
conversions: NotRequired[float]
|
|
425
|
+
r"""The number of leads that converted to paying customers."""
|
|
423
426
|
sales: NotRequired[float]
|
|
424
427
|
r"""The total number of sales (includes recurring sales) generated by the short link."""
|
|
425
428
|
sale_amount: NotRequired[float]
|
|
@@ -448,6 +451,9 @@ class CreatePartnerLink(BaseModel):
|
|
|
448
451
|
leads: Optional[float] = 0
|
|
449
452
|
r"""The number of leads the short link has generated."""
|
|
450
453
|
|
|
454
|
+
conversions: Optional[float] = 0
|
|
455
|
+
r"""The number of leads that converted to paying customers."""
|
|
456
|
+
|
|
451
457
|
sales: Optional[float] = 0
|
|
452
458
|
r"""The total number of sales (includes recurring sales) generated by the short link."""
|
|
453
459
|
|
|
@@ -467,12 +473,14 @@ class BannedReason(str, Enum):
|
|
|
467
473
|
|
|
468
474
|
|
|
469
475
|
class CreatePartnerResponseBodyTypedDict(TypedDict):
|
|
470
|
-
r"""The created partner"""
|
|
476
|
+
r"""The created or updated partner"""
|
|
471
477
|
|
|
472
478
|
id: str
|
|
473
479
|
r"""The partner's unique ID on Dub."""
|
|
474
480
|
name: str
|
|
475
481
|
r"""The partner's full legal name."""
|
|
482
|
+
company_name: Nullable[str]
|
|
483
|
+
r"""If the partner profile type is a company, this is the partner's legal company name."""
|
|
476
484
|
email: Nullable[str]
|
|
477
485
|
r"""The partner's email address. Should be a unique value across Dub."""
|
|
478
486
|
image: Nullable[str]
|
|
@@ -501,7 +509,7 @@ class CreatePartnerResponseBodyTypedDict(TypedDict):
|
|
|
501
509
|
group_id: NotRequired[Nullable[str]]
|
|
502
510
|
r"""The partner's group ID on Dub."""
|
|
503
511
|
total_commissions: NotRequired[float]
|
|
504
|
-
r"""The total commissions paid to the partner for their referrals
|
|
512
|
+
r"""The total commissions paid to the partner for their referrals"""
|
|
505
513
|
click_reward_id: NotRequired[Nullable[str]]
|
|
506
514
|
lead_reward_id: NotRequired[Nullable[str]]
|
|
507
515
|
sale_reward_id: NotRequired[Nullable[str]]
|
|
@@ -512,43 +520,34 @@ class CreatePartnerResponseBodyTypedDict(TypedDict):
|
|
|
512
520
|
r"""If the partner was banned from the program, this is the date of the ban."""
|
|
513
521
|
banned_reason: NotRequired[Nullable[BannedReason]]
|
|
514
522
|
r"""If the partner was banned from the program, this is the reason for the ban."""
|
|
515
|
-
|
|
516
|
-
r"""The total number of clicks on the partner's links
|
|
517
|
-
|
|
518
|
-
r"""The total number of leads generated by the partner's links
|
|
519
|
-
|
|
520
|
-
r"""The total number of leads that converted to paying customers
|
|
521
|
-
|
|
522
|
-
r"""The total number of sales generated by the partner's links (includes recurring sales)
|
|
523
|
-
|
|
524
|
-
r"""The total amount of sales (in cents) generated by the partner's links
|
|
523
|
+
total_clicks: NotRequired[float]
|
|
524
|
+
r"""The total number of clicks on the partner's links"""
|
|
525
|
+
total_leads: NotRequired[float]
|
|
526
|
+
r"""The total number of leads generated by the partner's links"""
|
|
527
|
+
total_conversions: NotRequired[float]
|
|
528
|
+
r"""The total number of leads that converted to paying customers"""
|
|
529
|
+
total_sales: NotRequired[float]
|
|
530
|
+
r"""The total number of sales generated by the partner's links (includes recurring sales)"""
|
|
531
|
+
total_sale_amount: NotRequired[float]
|
|
532
|
+
r"""The total amount of sales (in cents) generated by the partner's links"""
|
|
525
533
|
net_revenue: NotRequired[float]
|
|
526
|
-
r"""The total net revenue generated by the partner
|
|
534
|
+
r"""The total net revenue generated by the partner"""
|
|
527
535
|
website: NotRequired[Nullable[str]]
|
|
528
536
|
r"""The partner's website URL (including the https protocol)."""
|
|
529
|
-
website_txt_record: NotRequired[Nullable[str]]
|
|
530
|
-
website_verified_at: NotRequired[Nullable[str]]
|
|
531
537
|
youtube: NotRequired[Nullable[str]]
|
|
532
538
|
r"""The partner's YouTube channel username (e.g. `johndoe`)."""
|
|
533
|
-
youtube_verified_at: NotRequired[Nullable[str]]
|
|
534
|
-
youtube_subscriber_count: NotRequired[Nullable[float]]
|
|
535
|
-
youtube_view_count: NotRequired[Nullable[float]]
|
|
536
539
|
twitter: NotRequired[Nullable[str]]
|
|
537
540
|
r"""The partner's Twitter username (e.g. `johndoe`)."""
|
|
538
|
-
twitter_verified_at: NotRequired[Nullable[str]]
|
|
539
541
|
linkedin: NotRequired[Nullable[str]]
|
|
540
542
|
r"""The partner's LinkedIn username (e.g. `johndoe`)."""
|
|
541
|
-
linkedin_verified_at: NotRequired[Nullable[str]]
|
|
542
543
|
instagram: NotRequired[Nullable[str]]
|
|
543
544
|
r"""The partner's Instagram username (e.g. `johndoe`)."""
|
|
544
|
-
instagram_verified_at: NotRequired[Nullable[str]]
|
|
545
545
|
tiktok: NotRequired[Nullable[str]]
|
|
546
546
|
r"""The partner's TikTok username (e.g. `johndoe`)."""
|
|
547
|
-
tiktok_verified_at: NotRequired[Nullable[str]]
|
|
548
547
|
|
|
549
548
|
|
|
550
549
|
class CreatePartnerResponseBody(BaseModel):
|
|
551
|
-
r"""The created partner"""
|
|
550
|
+
r"""The created or updated partner"""
|
|
552
551
|
|
|
553
552
|
id: str
|
|
554
553
|
r"""The partner's unique ID on Dub."""
|
|
@@ -556,6 +555,9 @@ class CreatePartnerResponseBody(BaseModel):
|
|
|
556
555
|
name: str
|
|
557
556
|
r"""The partner's full legal name."""
|
|
558
557
|
|
|
558
|
+
company_name: Annotated[Nullable[str], pydantic.Field(alias="companyName")]
|
|
559
|
+
r"""If the partner profile type is a company, this is the partner's legal company name."""
|
|
560
|
+
|
|
559
561
|
email: Nullable[str]
|
|
560
562
|
r"""The partner's email address. Should be a unique value across Dub."""
|
|
561
563
|
|
|
@@ -602,7 +604,7 @@ class CreatePartnerResponseBody(BaseModel):
|
|
|
602
604
|
total_commissions: Annotated[
|
|
603
605
|
Optional[float], pydantic.Field(alias="totalCommissions")
|
|
604
606
|
] = 0
|
|
605
|
-
r"""The total commissions paid to the partner for their referrals
|
|
607
|
+
r"""The total commissions paid to the partner for their referrals"""
|
|
606
608
|
|
|
607
609
|
click_reward_id: Annotated[
|
|
608
610
|
OptionalNullable[str], pydantic.Field(alias="clickRewardId")
|
|
@@ -635,78 +637,46 @@ class CreatePartnerResponseBody(BaseModel):
|
|
|
635
637
|
] = UNSET
|
|
636
638
|
r"""If the partner was banned from the program, this is the reason for the ban."""
|
|
637
639
|
|
|
638
|
-
|
|
639
|
-
r"""The total number of clicks on the partner's links
|
|
640
|
+
total_clicks: Annotated[Optional[float], pydantic.Field(alias="totalClicks")] = 0
|
|
641
|
+
r"""The total number of clicks on the partner's links"""
|
|
640
642
|
|
|
641
|
-
|
|
642
|
-
r"""The total number of leads generated by the partner's links
|
|
643
|
+
total_leads: Annotated[Optional[float], pydantic.Field(alias="totalLeads")] = 0
|
|
644
|
+
r"""The total number of leads generated by the partner's links"""
|
|
643
645
|
|
|
644
|
-
|
|
645
|
-
|
|
646
|
+
total_conversions: Annotated[
|
|
647
|
+
Optional[float], pydantic.Field(alias="totalConversions")
|
|
648
|
+
] = 0
|
|
649
|
+
r"""The total number of leads that converted to paying customers"""
|
|
646
650
|
|
|
647
|
-
|
|
648
|
-
r"""The total number of sales generated by the partner's links (includes recurring sales)
|
|
651
|
+
total_sales: Annotated[Optional[float], pydantic.Field(alias="totalSales")] = 0
|
|
652
|
+
r"""The total number of sales generated by the partner's links (includes recurring sales)"""
|
|
649
653
|
|
|
650
|
-
|
|
651
|
-
|
|
654
|
+
total_sale_amount: Annotated[
|
|
655
|
+
Optional[float], pydantic.Field(alias="totalSaleAmount")
|
|
656
|
+
] = 0
|
|
657
|
+
r"""The total amount of sales (in cents) generated by the partner's links"""
|
|
652
658
|
|
|
653
659
|
net_revenue: Annotated[Optional[float], pydantic.Field(alias="netRevenue")] = 0
|
|
654
|
-
r"""The total net revenue generated by the partner
|
|
660
|
+
r"""The total net revenue generated by the partner"""
|
|
655
661
|
|
|
656
662
|
website: OptionalNullable[str] = UNSET
|
|
657
663
|
r"""The partner's website URL (including the https protocol)."""
|
|
658
664
|
|
|
659
|
-
website_txt_record: Annotated[
|
|
660
|
-
OptionalNullable[str], pydantic.Field(alias="websiteTxtRecord")
|
|
661
|
-
] = UNSET
|
|
662
|
-
|
|
663
|
-
website_verified_at: Annotated[
|
|
664
|
-
OptionalNullable[str], pydantic.Field(alias="websiteVerifiedAt")
|
|
665
|
-
] = UNSET
|
|
666
|
-
|
|
667
665
|
youtube: OptionalNullable[str] = UNSET
|
|
668
666
|
r"""The partner's YouTube channel username (e.g. `johndoe`)."""
|
|
669
667
|
|
|
670
|
-
youtube_verified_at: Annotated[
|
|
671
|
-
OptionalNullable[str], pydantic.Field(alias="youtubeVerifiedAt")
|
|
672
|
-
] = UNSET
|
|
673
|
-
|
|
674
|
-
youtube_subscriber_count: Annotated[
|
|
675
|
-
OptionalNullable[float], pydantic.Field(alias="youtubeSubscriberCount")
|
|
676
|
-
] = UNSET
|
|
677
|
-
|
|
678
|
-
youtube_view_count: Annotated[
|
|
679
|
-
OptionalNullable[float], pydantic.Field(alias="youtubeViewCount")
|
|
680
|
-
] = UNSET
|
|
681
|
-
|
|
682
668
|
twitter: OptionalNullable[str] = UNSET
|
|
683
669
|
r"""The partner's Twitter username (e.g. `johndoe`)."""
|
|
684
670
|
|
|
685
|
-
twitter_verified_at: Annotated[
|
|
686
|
-
OptionalNullable[str], pydantic.Field(alias="twitterVerifiedAt")
|
|
687
|
-
] = UNSET
|
|
688
|
-
|
|
689
671
|
linkedin: OptionalNullable[str] = UNSET
|
|
690
672
|
r"""The partner's LinkedIn username (e.g. `johndoe`)."""
|
|
691
673
|
|
|
692
|
-
linkedin_verified_at: Annotated[
|
|
693
|
-
OptionalNullable[str], pydantic.Field(alias="linkedinVerifiedAt")
|
|
694
|
-
] = UNSET
|
|
695
|
-
|
|
696
674
|
instagram: OptionalNullable[str] = UNSET
|
|
697
675
|
r"""The partner's Instagram username (e.g. `johndoe`)."""
|
|
698
676
|
|
|
699
|
-
instagram_verified_at: Annotated[
|
|
700
|
-
OptionalNullable[str], pydantic.Field(alias="instagramVerifiedAt")
|
|
701
|
-
] = UNSET
|
|
702
|
-
|
|
703
677
|
tiktok: OptionalNullable[str] = UNSET
|
|
704
678
|
r"""The partner's TikTok username (e.g. `johndoe`)."""
|
|
705
679
|
|
|
706
|
-
tiktok_verified_at: Annotated[
|
|
707
|
-
OptionalNullable[str], pydantic.Field(alias="tiktokVerifiedAt")
|
|
708
|
-
] = UNSET
|
|
709
|
-
|
|
710
680
|
@model_serializer(mode="wrap")
|
|
711
681
|
def serialize_model(self, handler):
|
|
712
682
|
optional_fields = [
|
|
@@ -720,29 +690,21 @@ class CreatePartnerResponseBody(BaseModel):
|
|
|
720
690
|
"applicationId",
|
|
721
691
|
"bannedAt",
|
|
722
692
|
"bannedReason",
|
|
723
|
-
"
|
|
724
|
-
"
|
|
725
|
-
"
|
|
726
|
-
"
|
|
727
|
-
"
|
|
693
|
+
"totalClicks",
|
|
694
|
+
"totalLeads",
|
|
695
|
+
"totalConversions",
|
|
696
|
+
"totalSales",
|
|
697
|
+
"totalSaleAmount",
|
|
728
698
|
"netRevenue",
|
|
729
699
|
"website",
|
|
730
|
-
"websiteTxtRecord",
|
|
731
|
-
"websiteVerifiedAt",
|
|
732
700
|
"youtube",
|
|
733
|
-
"youtubeVerifiedAt",
|
|
734
|
-
"youtubeSubscriberCount",
|
|
735
|
-
"youtubeViewCount",
|
|
736
701
|
"twitter",
|
|
737
|
-
"twitterVerifiedAt",
|
|
738
702
|
"linkedin",
|
|
739
|
-
"linkedinVerifiedAt",
|
|
740
703
|
"instagram",
|
|
741
|
-
"instagramVerifiedAt",
|
|
742
704
|
"tiktok",
|
|
743
|
-
"tiktokVerifiedAt",
|
|
744
705
|
]
|
|
745
706
|
nullable_fields = [
|
|
707
|
+
"companyName",
|
|
746
708
|
"email",
|
|
747
709
|
"image",
|
|
748
710
|
"description",
|
|
@@ -761,20 +723,11 @@ class CreatePartnerResponseBody(BaseModel):
|
|
|
761
723
|
"bannedAt",
|
|
762
724
|
"bannedReason",
|
|
763
725
|
"website",
|
|
764
|
-
"websiteTxtRecord",
|
|
765
|
-
"websiteVerifiedAt",
|
|
766
726
|
"youtube",
|
|
767
|
-
"youtubeVerifiedAt",
|
|
768
|
-
"youtubeSubscriberCount",
|
|
769
|
-
"youtubeViewCount",
|
|
770
727
|
"twitter",
|
|
771
|
-
"twitterVerifiedAt",
|
|
772
728
|
"linkedin",
|
|
773
|
-
"linkedinVerifiedAt",
|
|
774
729
|
"instagram",
|
|
775
|
-
"instagramVerifiedAt",
|
|
776
730
|
"tiktok",
|
|
777
|
-
"tiktokVerifiedAt",
|
|
778
731
|
]
|
|
779
732
|
null_default_fields = []
|
|
780
733
|
|
|
@@ -191,9 +191,9 @@ class GetCustomerDiscount(BaseModel):
|
|
|
191
191
|
optional_fields = ["description", "partnersCount"]
|
|
192
192
|
nullable_fields = [
|
|
193
193
|
"maxDuration",
|
|
194
|
-
"description",
|
|
195
194
|
"couponId",
|
|
196
195
|
"couponTestId",
|
|
196
|
+
"description",
|
|
197
197
|
"partnersCount",
|
|
198
198
|
]
|
|
199
199
|
null_default_fields = []
|
|
@@ -275,9 +275,9 @@ class Discount(BaseModel):
|
|
|
275
275
|
optional_fields = ["description", "partnersCount"]
|
|
276
276
|
nullable_fields = [
|
|
277
277
|
"maxDuration",
|
|
278
|
-
"description",
|
|
279
278
|
"couponId",
|
|
280
279
|
"couponTestId",
|
|
280
|
+
"description",
|
|
281
281
|
"partnersCount",
|
|
282
282
|
]
|
|
283
283
|
null_default_fields = []
|
|
@@ -64,7 +64,9 @@ class ListCommissionsRequestTypedDict(TypedDict):
|
|
|
64
64
|
payout_id: NotRequired[str]
|
|
65
65
|
r"""Filter the list of commissions by the associated payout."""
|
|
66
66
|
partner_id: NotRequired[str]
|
|
67
|
-
r"""Filter the list of commissions by the associated partner."""
|
|
67
|
+
r"""Filter the list of commissions by the associated partner. When specified, takes precedence over `tenantId`."""
|
|
68
|
+
tenant_id: NotRequired[str]
|
|
69
|
+
r"""Filter the list of commissions by the associated partner's `tenantId` (their unique ID within your database)."""
|
|
68
70
|
group_id: NotRequired[str]
|
|
69
71
|
r"""Filter the list of commissions by the associated partner group."""
|
|
70
72
|
invoice_id: NotRequired[str]
|
|
@@ -112,7 +114,14 @@ class ListCommissionsRequest(BaseModel):
|
|
|
112
114
|
pydantic.Field(alias="partnerId"),
|
|
113
115
|
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
114
116
|
] = None
|
|
115
|
-
r"""Filter the list of commissions by the associated partner."""
|
|
117
|
+
r"""Filter the list of commissions by the associated partner. When specified, takes precedence over `tenantId`."""
|
|
118
|
+
|
|
119
|
+
tenant_id: Annotated[
|
|
120
|
+
Optional[str],
|
|
121
|
+
pydantic.Field(alias="tenantId"),
|
|
122
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
123
|
+
] = None
|
|
124
|
+
r"""Filter the list of commissions by the associated partner's `tenantId` (their unique ID within your database)."""
|
|
116
125
|
|
|
117
126
|
group_id: Annotated[
|
|
118
127
|
Optional[str],
|
|
@@ -168,6 +168,8 @@ class ListEventsRequestTypedDict(TypedDict):
|
|
|
168
168
|
r"""The UTM term of the short link."""
|
|
169
169
|
utm_content: NotRequired[Nullable[str]]
|
|
170
170
|
r"""The UTM content of the short link."""
|
|
171
|
+
ref: NotRequired[Nullable[str]]
|
|
172
|
+
r"""The ref of the short link."""
|
|
171
173
|
page: NotRequired[float]
|
|
172
174
|
limit: NotRequired[float]
|
|
173
175
|
sort_order: NotRequired[QueryParamSortOrder]
|
|
@@ -406,6 +408,12 @@ class ListEventsRequest(BaseModel):
|
|
|
406
408
|
] = UNSET
|
|
407
409
|
r"""The UTM content of the short link."""
|
|
408
410
|
|
|
411
|
+
ref: Annotated[
|
|
412
|
+
OptionalNullable[str],
|
|
413
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
414
|
+
] = UNSET
|
|
415
|
+
r"""The ref of the short link."""
|
|
416
|
+
|
|
409
417
|
page: Annotated[
|
|
410
418
|
Optional[float],
|
|
411
419
|
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
@@ -475,6 +483,7 @@ class ListEventsRequest(BaseModel):
|
|
|
475
483
|
"utm_campaign",
|
|
476
484
|
"utm_term",
|
|
477
485
|
"utm_content",
|
|
486
|
+
"ref",
|
|
478
487
|
"page",
|
|
479
488
|
"limit",
|
|
480
489
|
"sortOrder",
|
|
@@ -487,6 +496,7 @@ class ListEventsRequest(BaseModel):
|
|
|
487
496
|
"utm_campaign",
|
|
488
497
|
"utm_term",
|
|
489
498
|
"utm_content",
|
|
499
|
+
"ref",
|
|
490
500
|
]
|
|
491
501
|
null_default_fields = []
|
|
492
502
|
|