dub 0.22.1__py3-none-any.whl → 0.23.1__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/embed_tokens.py +4 -4
- dub/events.py +5 -5
- dub/folders.py +4 -4
- dub/httpclient.py +35 -15
- dub/links.py +4 -4
- dub/models/components/leadcreatedevent.py +14 -2
- dub/models/components/leadevent.py +14 -5
- dub/models/components/partnerenrolledevent.py +8 -0
- dub/models/components/salecreatedevent.py +14 -2
- dub/models/components/saleevent.py +14 -5
- dub/models/operations/__init__.py +4 -0
- dub/models/operations/createcustomer.py +21 -0
- dub/models/operations/createpartner.py +8 -0
- dub/models/operations/getcustomer.py +21 -0
- dub/models/operations/getcustomers.py +70 -0
- dub/models/operations/getlinks.py +2 -2
- dub/models/operations/getlinkscount.py +2 -2
- dub/models/operations/listevents.py +11 -13
- dub/models/operations/updatecustomer.py +21 -0
- dub/models/operations/updatelink.py +0 -2
- dub/partners.py +6 -6
- dub/tags.py +4 -4
- {dub-0.22.1.dist-info → dub-0.23.1.dist-info}/METADATA +6 -6
- {dub-0.22.1.dist-info → dub-0.23.1.dist-info}/RECORD +27 -27
- {dub-0.22.1.dist-info → dub-0.23.1.dist-info}/WHEEL +1 -1
- {dub-0.22.1.dist-info → dub-0.23.1.dist-info}/LICENSE +0 -0
dub/_version.py
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
import importlib.metadata
|
|
4
4
|
|
|
5
5
|
__title__: str = "dub"
|
|
6
|
-
__version__: str = "0.
|
|
6
|
+
__version__: str = "0.23.1"
|
|
7
7
|
__openapi_doc_version__: str = "0.0.1"
|
|
8
|
-
__gen_version__: str = "2.
|
|
9
|
-
__user_agent__: str = "speakeasy-sdk/python 0.
|
|
8
|
+
__gen_version__: str = "2.598.22"
|
|
9
|
+
__user_agent__: str = "speakeasy-sdk/python 0.23.1 2.598.22 0.0.1 dub"
|
|
10
10
|
|
|
11
11
|
try:
|
|
12
12
|
if __package__ is not None:
|
dub/embed_tokens.py
CHANGED
|
@@ -23,9 +23,9 @@ class EmbedTokens(BaseSDK):
|
|
|
23
23
|
timeout_ms: Optional[int] = None,
|
|
24
24
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
25
25
|
) -> Optional[operations.CreateReferralsEmbedTokenResponseBody]:
|
|
26
|
-
r"""Create a
|
|
26
|
+
r"""Create a referrals embed token
|
|
27
27
|
|
|
28
|
-
Create a
|
|
28
|
+
Create a referrals embed token for the given partner/tenant.
|
|
29
29
|
|
|
30
30
|
:param request: The request object to send.
|
|
31
31
|
:param retries: Override the default retry configuration for this method
|
|
@@ -181,9 +181,9 @@ class EmbedTokens(BaseSDK):
|
|
|
181
181
|
timeout_ms: Optional[int] = None,
|
|
182
182
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
183
183
|
) -> Optional[operations.CreateReferralsEmbedTokenResponseBody]:
|
|
184
|
-
r"""Create a
|
|
184
|
+
r"""Create a referrals embed token
|
|
185
185
|
|
|
186
|
-
Create a
|
|
186
|
+
Create a referrals embed token for the given partner/tenant.
|
|
187
187
|
|
|
188
188
|
:param request: The request object to send.
|
|
189
189
|
:param retries: Override the default retry configuration for this method
|
dub/events.py
CHANGED
|
@@ -5,7 +5,7 @@ from dub import utils
|
|
|
5
5
|
from dub._hooks import HookContext
|
|
6
6
|
from dub.models import errors, operations
|
|
7
7
|
from dub.types import BaseModel, OptionalNullable, UNSET
|
|
8
|
-
from typing import Any, Mapping, Optional, Union, cast
|
|
8
|
+
from typing import Any, List, Mapping, Optional, Union, cast
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class Events(BaseSDK):
|
|
@@ -19,7 +19,7 @@ class Events(BaseSDK):
|
|
|
19
19
|
server_url: Optional[str] = None,
|
|
20
20
|
timeout_ms: Optional[int] = None,
|
|
21
21
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
22
|
-
) -> Optional[operations.ListEventsResponseBody]:
|
|
22
|
+
) -> Optional[List[operations.ListEventsResponseBody]]:
|
|
23
23
|
r"""Retrieve a list of events
|
|
24
24
|
|
|
25
25
|
Retrieve a paginated list of events for the authenticated workspace.
|
|
@@ -95,7 +95,7 @@ class Events(BaseSDK):
|
|
|
95
95
|
response_data: Any = None
|
|
96
96
|
if utils.match_response(http_res, "200", "application/json"):
|
|
97
97
|
return utils.unmarshal_json(
|
|
98
|
-
http_res.text, Optional[operations.ListEventsResponseBody]
|
|
98
|
+
http_res.text, Optional[List[operations.ListEventsResponseBody]]
|
|
99
99
|
)
|
|
100
100
|
if utils.match_response(http_res, "400", "application/json"):
|
|
101
101
|
response_data = utils.unmarshal_json(http_res.text, errors.BadRequestData)
|
|
@@ -162,7 +162,7 @@ class Events(BaseSDK):
|
|
|
162
162
|
server_url: Optional[str] = None,
|
|
163
163
|
timeout_ms: Optional[int] = None,
|
|
164
164
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
165
|
-
) -> Optional[operations.ListEventsResponseBody]:
|
|
165
|
+
) -> Optional[List[operations.ListEventsResponseBody]]:
|
|
166
166
|
r"""Retrieve a list of events
|
|
167
167
|
|
|
168
168
|
Retrieve a paginated list of events for the authenticated workspace.
|
|
@@ -238,7 +238,7 @@ class Events(BaseSDK):
|
|
|
238
238
|
response_data: Any = None
|
|
239
239
|
if utils.match_response(http_res, "200", "application/json"):
|
|
240
240
|
return utils.unmarshal_json(
|
|
241
|
-
http_res.text, Optional[operations.ListEventsResponseBody]
|
|
241
|
+
http_res.text, Optional[List[operations.ListEventsResponseBody]]
|
|
242
242
|
)
|
|
243
243
|
if utils.match_response(http_res, "400", "application/json"):
|
|
244
244
|
response_data = utils.unmarshal_json(http_res.text, errors.BadRequestData)
|
dub/folders.py
CHANGED
|
@@ -23,9 +23,9 @@ class Folders(BaseSDK):
|
|
|
23
23
|
timeout_ms: Optional[int] = None,
|
|
24
24
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
25
25
|
) -> Optional[components.FolderSchema]:
|
|
26
|
-
r"""Create a
|
|
26
|
+
r"""Create a folder
|
|
27
27
|
|
|
28
|
-
Create a
|
|
28
|
+
Create a folder for the authenticated workspace.
|
|
29
29
|
|
|
30
30
|
:param request: The request object to send.
|
|
31
31
|
:param retries: Override the default retry configuration for this method
|
|
@@ -178,9 +178,9 @@ class Folders(BaseSDK):
|
|
|
178
178
|
timeout_ms: Optional[int] = None,
|
|
179
179
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
180
180
|
) -> Optional[components.FolderSchema]:
|
|
181
|
-
r"""Create a
|
|
181
|
+
r"""Create a folder
|
|
182
182
|
|
|
183
|
-
Create a
|
|
183
|
+
Create a folder for the authenticated workspace.
|
|
184
184
|
|
|
185
185
|
:param request: The request object to send.
|
|
186
186
|
:param retries: Override the default retry configuration for this method
|
dub/httpclient.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
# pyright: reportReturnType = false
|
|
4
4
|
import asyncio
|
|
5
|
-
from concurrent.futures import ThreadPoolExecutor
|
|
6
5
|
from typing_extensions import Protocol, runtime_checkable
|
|
7
6
|
import httpx
|
|
8
7
|
from typing import Any, Optional, Union
|
|
@@ -116,21 +115,42 @@ def close_clients(
|
|
|
116
115
|
pass
|
|
117
116
|
|
|
118
117
|
if async_client is not None and not async_client_supplied:
|
|
119
|
-
|
|
118
|
+
# First, try the simplest approach - use asyncio.run()
|
|
119
|
+
# This works when we're not in an async context
|
|
120
120
|
try:
|
|
121
|
-
asyncio.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
121
|
+
asyncio.run(async_client.aclose())
|
|
122
|
+
except RuntimeError as e:
|
|
123
|
+
# If we get "RuntimeError: This event loop is already running",
|
|
124
|
+
# it means we're in an async context
|
|
125
|
+
if "already running" in str(e):
|
|
126
|
+
try:
|
|
127
|
+
# We're in an async context, so get the running loop
|
|
128
|
+
loop = asyncio.get_running_loop()
|
|
129
|
+
# Create a task but don't wait for it
|
|
130
|
+
loop.create_task(async_client.aclose())
|
|
131
|
+
except Exception:
|
|
132
|
+
# If we can't get the loop or create a task, just ignore
|
|
133
|
+
# The GC will eventually clean up the resources
|
|
134
|
+
pass
|
|
135
|
+
# If we get "RuntimeError: There is no current event loop in thread",
|
|
136
|
+
# we're not in an async context, but asyncio.run() failed for some reason
|
|
137
|
+
# In this case, we can try to create a new event loop explicitly
|
|
138
|
+
elif "no current event loop" in str(e):
|
|
139
|
+
try:
|
|
140
|
+
# Create a new event loop and run the coroutine
|
|
141
|
+
loop = asyncio.new_event_loop()
|
|
142
|
+
asyncio.set_event_loop(loop)
|
|
143
|
+
try:
|
|
144
|
+
loop.run_until_complete(async_client.aclose())
|
|
145
|
+
finally:
|
|
146
|
+
loop.close()
|
|
147
|
+
asyncio.set_event_loop(None)
|
|
148
|
+
except Exception:
|
|
149
|
+
# If this also fails, just ignore
|
|
150
|
+
pass
|
|
151
|
+
# For any other RuntimeError, just ignore
|
|
133
152
|
else:
|
|
134
|
-
|
|
153
|
+
pass
|
|
135
154
|
except Exception:
|
|
155
|
+
# For any other exception, just ignore
|
|
136
156
|
pass
|
dub/links.py
CHANGED
|
@@ -24,9 +24,9 @@ class Links(BaseSDK):
|
|
|
24
24
|
timeout_ms: Optional[int] = None,
|
|
25
25
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
26
26
|
) -> Optional[components.LinkSchema]:
|
|
27
|
-
r"""Create a
|
|
27
|
+
r"""Create a link
|
|
28
28
|
|
|
29
|
-
Create a
|
|
29
|
+
Create a link for the authenticated workspace.
|
|
30
30
|
|
|
31
31
|
:param request: The request object to send.
|
|
32
32
|
:param retries: Override the default retry configuration for this method
|
|
@@ -173,9 +173,9 @@ class Links(BaseSDK):
|
|
|
173
173
|
timeout_ms: Optional[int] = None,
|
|
174
174
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
175
175
|
) -> Optional[components.LinkSchema]:
|
|
176
|
-
r"""Create a
|
|
176
|
+
r"""Create a link
|
|
177
177
|
|
|
178
|
-
Create a
|
|
178
|
+
Create a link for the authenticated workspace.
|
|
179
179
|
|
|
180
180
|
:param request: The request object to send.
|
|
181
181
|
:param retries: Override the default retry configuration for this method
|
|
@@ -29,6 +29,10 @@ class LeadCreatedEventCustomerTypedDict(TypedDict):
|
|
|
29
29
|
r"""Avatar URL of the customer."""
|
|
30
30
|
country: NotRequired[Nullable[str]]
|
|
31
31
|
r"""Country of the customer."""
|
|
32
|
+
sales: NotRequired[Nullable[float]]
|
|
33
|
+
r"""Total number of sales for the customer."""
|
|
34
|
+
sale_amount: NotRequired[Nullable[float]]
|
|
35
|
+
r"""Total amount of sales for the customer."""
|
|
32
36
|
|
|
33
37
|
|
|
34
38
|
class LeadCreatedEventCustomer(BaseModel):
|
|
@@ -53,10 +57,18 @@ class LeadCreatedEventCustomer(BaseModel):
|
|
|
53
57
|
country: OptionalNullable[str] = UNSET
|
|
54
58
|
r"""Country of the customer."""
|
|
55
59
|
|
|
60
|
+
sales: OptionalNullable[float] = UNSET
|
|
61
|
+
r"""Total number of sales for the customer."""
|
|
62
|
+
|
|
63
|
+
sale_amount: Annotated[
|
|
64
|
+
OptionalNullable[float], pydantic.Field(alias="saleAmount")
|
|
65
|
+
] = UNSET
|
|
66
|
+
r"""Total amount of sales for the customer."""
|
|
67
|
+
|
|
56
68
|
@model_serializer(mode="wrap")
|
|
57
69
|
def serialize_model(self, handler):
|
|
58
|
-
optional_fields = ["email", "avatar", "country"]
|
|
59
|
-
nullable_fields = ["email", "avatar", "country"]
|
|
70
|
+
optional_fields = ["email", "avatar", "country", "sales", "saleAmount"]
|
|
71
|
+
nullable_fields = ["email", "avatar", "country", "sales", "saleAmount"]
|
|
60
72
|
null_default_fields = []
|
|
61
73
|
|
|
62
74
|
serialized = handler(self)
|
|
@@ -1138,6 +1138,10 @@ class CustomerTypedDict(TypedDict):
|
|
|
1138
1138
|
r"""Avatar URL of the customer."""
|
|
1139
1139
|
country: NotRequired[Nullable[str]]
|
|
1140
1140
|
r"""Country of the customer."""
|
|
1141
|
+
sales: NotRequired[Nullable[float]]
|
|
1142
|
+
r"""Total number of sales for the customer."""
|
|
1143
|
+
sale_amount: NotRequired[Nullable[float]]
|
|
1144
|
+
r"""Total amount of sales for the customer."""
|
|
1141
1145
|
|
|
1142
1146
|
|
|
1143
1147
|
class Customer(BaseModel):
|
|
@@ -1162,10 +1166,18 @@ class Customer(BaseModel):
|
|
|
1162
1166
|
country: OptionalNullable[str] = UNSET
|
|
1163
1167
|
r"""Country of the customer."""
|
|
1164
1168
|
|
|
1169
|
+
sales: OptionalNullable[float] = UNSET
|
|
1170
|
+
r"""Total number of sales for the customer."""
|
|
1171
|
+
|
|
1172
|
+
sale_amount: Annotated[
|
|
1173
|
+
OptionalNullable[float], pydantic.Field(alias="saleAmount")
|
|
1174
|
+
] = UNSET
|
|
1175
|
+
r"""Total amount of sales for the customer."""
|
|
1176
|
+
|
|
1165
1177
|
@model_serializer(mode="wrap")
|
|
1166
1178
|
def serialize_model(self, handler):
|
|
1167
|
-
optional_fields = ["email", "avatar", "country"]
|
|
1168
|
-
nullable_fields = ["email", "avatar", "country"]
|
|
1179
|
+
optional_fields = ["email", "avatar", "country", "sales", "saleAmount"]
|
|
1180
|
+
nullable_fields = ["email", "avatar", "country", "sales", "saleAmount"]
|
|
1169
1181
|
null_default_fields = []
|
|
1170
1182
|
|
|
1171
1183
|
serialized = handler(self)
|
|
@@ -1198,7 +1210,6 @@ class LeadEventTypedDict(TypedDict):
|
|
|
1198
1210
|
timestamp: str
|
|
1199
1211
|
event_id: str
|
|
1200
1212
|
event_name: str
|
|
1201
|
-
metadata: str
|
|
1202
1213
|
click: LeadEventClickTypedDict
|
|
1203
1214
|
link: LeadEventLinkTypedDict
|
|
1204
1215
|
customer: CustomerTypedDict
|
|
@@ -1239,8 +1250,6 @@ class LeadEvent(BaseModel):
|
|
|
1239
1250
|
|
|
1240
1251
|
event_name: Annotated[str, pydantic.Field(alias="eventName")]
|
|
1241
1252
|
|
|
1242
|
-
metadata: str
|
|
1243
|
-
|
|
1244
1253
|
click: LeadEventClick
|
|
1245
1254
|
|
|
1246
1255
|
link: LeadEventLink
|
|
@@ -78,6 +78,8 @@ class PartnerEnrolledEventDataTypedDict(TypedDict):
|
|
|
78
78
|
email: Nullable[str]
|
|
79
79
|
image: Nullable[str]
|
|
80
80
|
country: Nullable[str]
|
|
81
|
+
paypal_email: Nullable[str]
|
|
82
|
+
stripe_connect_id: Nullable[str]
|
|
81
83
|
payouts_enabled_at: Nullable[str]
|
|
82
84
|
created_at: str
|
|
83
85
|
status: Status
|
|
@@ -104,6 +106,10 @@ class PartnerEnrolledEventData(BaseModel):
|
|
|
104
106
|
|
|
105
107
|
country: Nullable[str]
|
|
106
108
|
|
|
109
|
+
paypal_email: Annotated[Nullable[str], pydantic.Field(alias="paypalEmail")]
|
|
110
|
+
|
|
111
|
+
stripe_connect_id: Annotated[Nullable[str], pydantic.Field(alias="stripeConnectId")]
|
|
112
|
+
|
|
107
113
|
payouts_enabled_at: Annotated[
|
|
108
114
|
Nullable[str], pydantic.Field(alias="payoutsEnabledAt")
|
|
109
115
|
]
|
|
@@ -150,6 +156,8 @@ class PartnerEnrolledEventData(BaseModel):
|
|
|
150
156
|
"image",
|
|
151
157
|
"description",
|
|
152
158
|
"country",
|
|
159
|
+
"paypalEmail",
|
|
160
|
+
"stripeConnectId",
|
|
153
161
|
"payoutsEnabledAt",
|
|
154
162
|
"tenantId",
|
|
155
163
|
"links",
|
|
@@ -29,6 +29,10 @@ class SaleCreatedEventCustomerTypedDict(TypedDict):
|
|
|
29
29
|
r"""Avatar URL of the customer."""
|
|
30
30
|
country: NotRequired[Nullable[str]]
|
|
31
31
|
r"""Country of the customer."""
|
|
32
|
+
sales: NotRequired[Nullable[float]]
|
|
33
|
+
r"""Total number of sales for the customer."""
|
|
34
|
+
sale_amount: NotRequired[Nullable[float]]
|
|
35
|
+
r"""Total amount of sales for the customer."""
|
|
32
36
|
|
|
33
37
|
|
|
34
38
|
class SaleCreatedEventCustomer(BaseModel):
|
|
@@ -53,10 +57,18 @@ class SaleCreatedEventCustomer(BaseModel):
|
|
|
53
57
|
country: OptionalNullable[str] = UNSET
|
|
54
58
|
r"""Country of the customer."""
|
|
55
59
|
|
|
60
|
+
sales: OptionalNullable[float] = UNSET
|
|
61
|
+
r"""Total number of sales for the customer."""
|
|
62
|
+
|
|
63
|
+
sale_amount: Annotated[
|
|
64
|
+
OptionalNullable[float], pydantic.Field(alias="saleAmount")
|
|
65
|
+
] = UNSET
|
|
66
|
+
r"""Total amount of sales for the customer."""
|
|
67
|
+
|
|
56
68
|
@model_serializer(mode="wrap")
|
|
57
69
|
def serialize_model(self, handler):
|
|
58
|
-
optional_fields = ["email", "avatar", "country"]
|
|
59
|
-
nullable_fields = ["email", "avatar", "country"]
|
|
70
|
+
optional_fields = ["email", "avatar", "country", "sales", "saleAmount"]
|
|
71
|
+
nullable_fields = ["email", "avatar", "country", "sales", "saleAmount"]
|
|
60
72
|
null_default_fields = []
|
|
61
73
|
|
|
62
74
|
serialized = handler(self)
|
|
@@ -1138,6 +1138,10 @@ class SaleEventCustomerTypedDict(TypedDict):
|
|
|
1138
1138
|
r"""Avatar URL of the customer."""
|
|
1139
1139
|
country: NotRequired[Nullable[str]]
|
|
1140
1140
|
r"""Country of the customer."""
|
|
1141
|
+
sales: NotRequired[Nullable[float]]
|
|
1142
|
+
r"""Total number of sales for the customer."""
|
|
1143
|
+
sale_amount: NotRequired[Nullable[float]]
|
|
1144
|
+
r"""Total amount of sales for the customer."""
|
|
1141
1145
|
|
|
1142
1146
|
|
|
1143
1147
|
class SaleEventCustomer(BaseModel):
|
|
@@ -1162,10 +1166,18 @@ class SaleEventCustomer(BaseModel):
|
|
|
1162
1166
|
country: OptionalNullable[str] = UNSET
|
|
1163
1167
|
r"""Country of the customer."""
|
|
1164
1168
|
|
|
1169
|
+
sales: OptionalNullable[float] = UNSET
|
|
1170
|
+
r"""Total number of sales for the customer."""
|
|
1171
|
+
|
|
1172
|
+
sale_amount: Annotated[
|
|
1173
|
+
OptionalNullable[float], pydantic.Field(alias="saleAmount")
|
|
1174
|
+
] = UNSET
|
|
1175
|
+
r"""Total amount of sales for the customer."""
|
|
1176
|
+
|
|
1165
1177
|
@model_serializer(mode="wrap")
|
|
1166
1178
|
def serialize_model(self, handler):
|
|
1167
|
-
optional_fields = ["email", "avatar", "country"]
|
|
1168
|
-
nullable_fields = ["email", "avatar", "country"]
|
|
1179
|
+
optional_fields = ["email", "avatar", "country", "sales", "saleAmount"]
|
|
1180
|
+
nullable_fields = ["email", "avatar", "country", "sales", "saleAmount"]
|
|
1169
1181
|
null_default_fields = []
|
|
1170
1182
|
|
|
1171
1183
|
serialized = handler(self)
|
|
@@ -1272,7 +1284,6 @@ class SaleEventTypedDict(TypedDict):
|
|
|
1272
1284
|
r"""Deprecated. Use `sale.invoiceId` instead."""
|
|
1273
1285
|
payment_processor: str
|
|
1274
1286
|
r"""Deprecated. Use `sale.paymentProcessor` instead."""
|
|
1275
|
-
metadata: str
|
|
1276
1287
|
click_id: str
|
|
1277
1288
|
r"""Deprecated. Use `click.id` instead."""
|
|
1278
1289
|
link_id: str
|
|
@@ -1338,8 +1349,6 @@ class SaleEvent(BaseModel):
|
|
|
1338
1349
|
payment_processor: str
|
|
1339
1350
|
r"""Deprecated. Use `sale.paymentProcessor` instead."""
|
|
1340
1351
|
|
|
1341
|
-
metadata: str
|
|
1342
|
-
|
|
1343
1352
|
click_id: Annotated[
|
|
1344
1353
|
str,
|
|
1345
1354
|
pydantic.Field(
|
|
@@ -157,6 +157,8 @@ from .getcustomers import (
|
|
|
157
157
|
GetCustomersLinkTypedDict,
|
|
158
158
|
GetCustomersPartner,
|
|
159
159
|
GetCustomersPartnerTypedDict,
|
|
160
|
+
GetCustomersQueryParamSortBy,
|
|
161
|
+
GetCustomersQueryParamSortOrder,
|
|
160
162
|
GetCustomersRequest,
|
|
161
163
|
GetCustomersRequestTypedDict,
|
|
162
164
|
GetCustomersResponseBody,
|
|
@@ -476,6 +478,8 @@ __all__ = [
|
|
|
476
478
|
"GetCustomersLinkTypedDict",
|
|
477
479
|
"GetCustomersPartner",
|
|
478
480
|
"GetCustomersPartnerTypedDict",
|
|
481
|
+
"GetCustomersQueryParamSortBy",
|
|
482
|
+
"GetCustomersQueryParamSortOrder",
|
|
479
483
|
"GetCustomersRequest",
|
|
480
484
|
"GetCustomersRequestTypedDict",
|
|
481
485
|
"GetCustomersResponseBody",
|
|
@@ -72,6 +72,8 @@ class CreateCustomerLinkTypedDict(TypedDict):
|
|
|
72
72
|
r"""The short link slug. If not provided, a random 7-character slug will be generated."""
|
|
73
73
|
short_link: str
|
|
74
74
|
r"""The full URL of the short link, including the https protocol (e.g. `https://dub.sh/try`)."""
|
|
75
|
+
url: str
|
|
76
|
+
r"""The destination URL of the short link."""
|
|
75
77
|
program_id: Nullable[str]
|
|
76
78
|
r"""The ID of the program the short link is associated with."""
|
|
77
79
|
|
|
@@ -89,6 +91,9 @@ class CreateCustomerLink(BaseModel):
|
|
|
89
91
|
short_link: Annotated[str, pydantic.Field(alias="shortLink")]
|
|
90
92
|
r"""The full URL of the short link, including the https protocol (e.g. `https://dub.sh/try`)."""
|
|
91
93
|
|
|
94
|
+
url: str
|
|
95
|
+
r"""The destination URL of the short link."""
|
|
96
|
+
|
|
92
97
|
program_id: Annotated[Nullable[str], pydantic.Field(alias="programId")]
|
|
93
98
|
r"""The ID of the program the short link is associated with."""
|
|
94
99
|
|
|
@@ -259,6 +264,10 @@ class CreateCustomerResponseBodyTypedDict(TypedDict):
|
|
|
259
264
|
r"""Avatar URL of the customer."""
|
|
260
265
|
country: NotRequired[Nullable[str]]
|
|
261
266
|
r"""Country of the customer."""
|
|
267
|
+
sales: NotRequired[Nullable[float]]
|
|
268
|
+
r"""Total number of sales for the customer."""
|
|
269
|
+
sale_amount: NotRequired[Nullable[float]]
|
|
270
|
+
r"""Total amount of sales for the customer."""
|
|
262
271
|
link: NotRequired[Nullable[CreateCustomerLinkTypedDict]]
|
|
263
272
|
program_id: NotRequired[Nullable[str]]
|
|
264
273
|
partner: NotRequired[Nullable[CreateCustomerPartnerTypedDict]]
|
|
@@ -289,6 +298,14 @@ class CreateCustomerResponseBody(BaseModel):
|
|
|
289
298
|
country: OptionalNullable[str] = UNSET
|
|
290
299
|
r"""Country of the customer."""
|
|
291
300
|
|
|
301
|
+
sales: OptionalNullable[float] = UNSET
|
|
302
|
+
r"""Total number of sales for the customer."""
|
|
303
|
+
|
|
304
|
+
sale_amount: Annotated[
|
|
305
|
+
OptionalNullable[float], pydantic.Field(alias="saleAmount")
|
|
306
|
+
] = UNSET
|
|
307
|
+
r"""Total amount of sales for the customer."""
|
|
308
|
+
|
|
292
309
|
link: OptionalNullable[CreateCustomerLink] = UNSET
|
|
293
310
|
|
|
294
311
|
program_id: Annotated[OptionalNullable[str], pydantic.Field(alias="programId")] = (
|
|
@@ -305,6 +322,8 @@ class CreateCustomerResponseBody(BaseModel):
|
|
|
305
322
|
"email",
|
|
306
323
|
"avatar",
|
|
307
324
|
"country",
|
|
325
|
+
"sales",
|
|
326
|
+
"saleAmount",
|
|
308
327
|
"link",
|
|
309
328
|
"programId",
|
|
310
329
|
"partner",
|
|
@@ -314,6 +333,8 @@ class CreateCustomerResponseBody(BaseModel):
|
|
|
314
333
|
"email",
|
|
315
334
|
"avatar",
|
|
316
335
|
"country",
|
|
336
|
+
"sales",
|
|
337
|
+
"saleAmount",
|
|
317
338
|
"link",
|
|
318
339
|
"programId",
|
|
319
340
|
"partner",
|
|
@@ -707,6 +707,8 @@ class CreatePartnerResponseBodyTypedDict(TypedDict):
|
|
|
707
707
|
email: Nullable[str]
|
|
708
708
|
image: Nullable[str]
|
|
709
709
|
country: Nullable[str]
|
|
710
|
+
paypal_email: Nullable[str]
|
|
711
|
+
stripe_connect_id: Nullable[str]
|
|
710
712
|
payouts_enabled_at: Nullable[str]
|
|
711
713
|
created_at: str
|
|
712
714
|
status: Status
|
|
@@ -735,6 +737,10 @@ class CreatePartnerResponseBody(BaseModel):
|
|
|
735
737
|
|
|
736
738
|
country: Nullable[str]
|
|
737
739
|
|
|
740
|
+
paypal_email: Annotated[Nullable[str], pydantic.Field(alias="paypalEmail")]
|
|
741
|
+
|
|
742
|
+
stripe_connect_id: Annotated[Nullable[str], pydantic.Field(alias="stripeConnectId")]
|
|
743
|
+
|
|
738
744
|
payouts_enabled_at: Annotated[
|
|
739
745
|
Nullable[str], pydantic.Field(alias="payoutsEnabledAt")
|
|
740
746
|
]
|
|
@@ -781,6 +787,8 @@ class CreatePartnerResponseBody(BaseModel):
|
|
|
781
787
|
"image",
|
|
782
788
|
"description",
|
|
783
789
|
"country",
|
|
790
|
+
"paypalEmail",
|
|
791
|
+
"stripeConnectId",
|
|
784
792
|
"payoutsEnabledAt",
|
|
785
793
|
"tenantId",
|
|
786
794
|
"links",
|
|
@@ -40,6 +40,8 @@ class GetCustomerLinkTypedDict(TypedDict):
|
|
|
40
40
|
r"""The short link slug. If not provided, a random 7-character slug will be generated."""
|
|
41
41
|
short_link: str
|
|
42
42
|
r"""The full URL of the short link, including the https protocol (e.g. `https://dub.sh/try`)."""
|
|
43
|
+
url: str
|
|
44
|
+
r"""The destination URL of the short link."""
|
|
43
45
|
program_id: Nullable[str]
|
|
44
46
|
r"""The ID of the program the short link is associated with."""
|
|
45
47
|
|
|
@@ -57,6 +59,9 @@ class GetCustomerLink(BaseModel):
|
|
|
57
59
|
short_link: Annotated[str, pydantic.Field(alias="shortLink")]
|
|
58
60
|
r"""The full URL of the short link, including the https protocol (e.g. `https://dub.sh/try`)."""
|
|
59
61
|
|
|
62
|
+
url: str
|
|
63
|
+
r"""The destination URL of the short link."""
|
|
64
|
+
|
|
60
65
|
program_id: Annotated[Nullable[str], pydantic.Field(alias="programId")]
|
|
61
66
|
r"""The ID of the program the short link is associated with."""
|
|
62
67
|
|
|
@@ -227,6 +232,10 @@ class GetCustomerResponseBodyTypedDict(TypedDict):
|
|
|
227
232
|
r"""Avatar URL of the customer."""
|
|
228
233
|
country: NotRequired[Nullable[str]]
|
|
229
234
|
r"""Country of the customer."""
|
|
235
|
+
sales: NotRequired[Nullable[float]]
|
|
236
|
+
r"""Total number of sales for the customer."""
|
|
237
|
+
sale_amount: NotRequired[Nullable[float]]
|
|
238
|
+
r"""Total amount of sales for the customer."""
|
|
230
239
|
link: NotRequired[Nullable[GetCustomerLinkTypedDict]]
|
|
231
240
|
program_id: NotRequired[Nullable[str]]
|
|
232
241
|
partner: NotRequired[Nullable[GetCustomerPartnerTypedDict]]
|
|
@@ -257,6 +266,14 @@ class GetCustomerResponseBody(BaseModel):
|
|
|
257
266
|
country: OptionalNullable[str] = UNSET
|
|
258
267
|
r"""Country of the customer."""
|
|
259
268
|
|
|
269
|
+
sales: OptionalNullable[float] = UNSET
|
|
270
|
+
r"""Total number of sales for the customer."""
|
|
271
|
+
|
|
272
|
+
sale_amount: Annotated[
|
|
273
|
+
OptionalNullable[float], pydantic.Field(alias="saleAmount")
|
|
274
|
+
] = UNSET
|
|
275
|
+
r"""Total amount of sales for the customer."""
|
|
276
|
+
|
|
260
277
|
link: OptionalNullable[GetCustomerLink] = UNSET
|
|
261
278
|
|
|
262
279
|
program_id: Annotated[OptionalNullable[str], pydantic.Field(alias="programId")] = (
|
|
@@ -273,6 +290,8 @@ class GetCustomerResponseBody(BaseModel):
|
|
|
273
290
|
"email",
|
|
274
291
|
"avatar",
|
|
275
292
|
"country",
|
|
293
|
+
"sales",
|
|
294
|
+
"saleAmount",
|
|
276
295
|
"link",
|
|
277
296
|
"programId",
|
|
278
297
|
"partner",
|
|
@@ -282,6 +301,8 @@ class GetCustomerResponseBody(BaseModel):
|
|
|
282
301
|
"email",
|
|
283
302
|
"avatar",
|
|
284
303
|
"country",
|
|
304
|
+
"sales",
|
|
305
|
+
"saleAmount",
|
|
285
306
|
"link",
|
|
286
307
|
"programId",
|
|
287
308
|
"partner",
|
|
@@ -10,6 +10,20 @@ from typing import Optional
|
|
|
10
10
|
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
11
11
|
|
|
12
12
|
|
|
13
|
+
class GetCustomersQueryParamSortBy(str, Enum):
|
|
14
|
+
r"""The field to sort the customers by. The default is `createdAt`."""
|
|
15
|
+
|
|
16
|
+
CREATED_AT = "createdAt"
|
|
17
|
+
SALE_AMOUNT = "saleAmount"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class GetCustomersQueryParamSortOrder(str, Enum):
|
|
21
|
+
r"""The sort order. The default is `desc`."""
|
|
22
|
+
|
|
23
|
+
ASC = "asc"
|
|
24
|
+
DESC = "desc"
|
|
25
|
+
|
|
26
|
+
|
|
13
27
|
class GetCustomersRequestTypedDict(TypedDict):
|
|
14
28
|
email: NotRequired[str]
|
|
15
29
|
r"""A case-sensitive filter on the list based on the customer's `email` field. The value must be a string. Takes precedence over `externalId`."""
|
|
@@ -17,8 +31,16 @@ class GetCustomersRequestTypedDict(TypedDict):
|
|
|
17
31
|
r"""A case-sensitive filter on the list based on the customer's `externalId` field. The value must be a string. Takes precedence over `search`."""
|
|
18
32
|
search: NotRequired[str]
|
|
19
33
|
r"""A search query to filter customers by email, externalId, or name. If `email` or `externalId` is provided, this will be ignored."""
|
|
34
|
+
country: NotRequired[str]
|
|
35
|
+
r"""A filter on the list based on the customer's `country` field."""
|
|
36
|
+
link_id: NotRequired[str]
|
|
37
|
+
r"""A filter on the list based on the customer's `linkId` field (the referral link ID)."""
|
|
20
38
|
include_expanded_fields: NotRequired[bool]
|
|
21
39
|
r"""Whether to include expanded fields on the customer (`link`, `partner`, `discount`)."""
|
|
40
|
+
sort_by: NotRequired[GetCustomersQueryParamSortBy]
|
|
41
|
+
r"""The field to sort the customers by. The default is `createdAt`."""
|
|
42
|
+
sort_order: NotRequired[GetCustomersQueryParamSortOrder]
|
|
43
|
+
r"""The sort order. The default is `desc`."""
|
|
22
44
|
page: NotRequired[float]
|
|
23
45
|
r"""The page number for pagination."""
|
|
24
46
|
page_size: NotRequired[float]
|
|
@@ -45,6 +67,19 @@ class GetCustomersRequest(BaseModel):
|
|
|
45
67
|
] = None
|
|
46
68
|
r"""A search query to filter customers by email, externalId, or name. If `email` or `externalId` is provided, this will be ignored."""
|
|
47
69
|
|
|
70
|
+
country: Annotated[
|
|
71
|
+
Optional[str],
|
|
72
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
73
|
+
] = None
|
|
74
|
+
r"""A filter on the list based on the customer's `country` field."""
|
|
75
|
+
|
|
76
|
+
link_id: Annotated[
|
|
77
|
+
Optional[str],
|
|
78
|
+
pydantic.Field(alias="linkId"),
|
|
79
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
80
|
+
] = None
|
|
81
|
+
r"""A filter on the list based on the customer's `linkId` field (the referral link ID)."""
|
|
82
|
+
|
|
48
83
|
include_expanded_fields: Annotated[
|
|
49
84
|
Optional[bool],
|
|
50
85
|
pydantic.Field(alias="includeExpandedFields"),
|
|
@@ -52,6 +87,20 @@ class GetCustomersRequest(BaseModel):
|
|
|
52
87
|
] = None
|
|
53
88
|
r"""Whether to include expanded fields on the customer (`link`, `partner`, `discount`)."""
|
|
54
89
|
|
|
90
|
+
sort_by: Annotated[
|
|
91
|
+
Optional[GetCustomersQueryParamSortBy],
|
|
92
|
+
pydantic.Field(alias="sortBy"),
|
|
93
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
94
|
+
] = GetCustomersQueryParamSortBy.CREATED_AT
|
|
95
|
+
r"""The field to sort the customers by. The default is `createdAt`."""
|
|
96
|
+
|
|
97
|
+
sort_order: Annotated[
|
|
98
|
+
Optional[GetCustomersQueryParamSortOrder],
|
|
99
|
+
pydantic.Field(alias="sortOrder"),
|
|
100
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
101
|
+
] = GetCustomersQueryParamSortOrder.DESC
|
|
102
|
+
r"""The sort order. The default is `desc`."""
|
|
103
|
+
|
|
55
104
|
page: Annotated[
|
|
56
105
|
Optional[float],
|
|
57
106
|
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
@@ -75,6 +124,8 @@ class GetCustomersLinkTypedDict(TypedDict):
|
|
|
75
124
|
r"""The short link slug. If not provided, a random 7-character slug will be generated."""
|
|
76
125
|
short_link: str
|
|
77
126
|
r"""The full URL of the short link, including the https protocol (e.g. `https://dub.sh/try`)."""
|
|
127
|
+
url: str
|
|
128
|
+
r"""The destination URL of the short link."""
|
|
78
129
|
program_id: Nullable[str]
|
|
79
130
|
r"""The ID of the program the short link is associated with."""
|
|
80
131
|
|
|
@@ -92,6 +143,9 @@ class GetCustomersLink(BaseModel):
|
|
|
92
143
|
short_link: Annotated[str, pydantic.Field(alias="shortLink")]
|
|
93
144
|
r"""The full URL of the short link, including the https protocol (e.g. `https://dub.sh/try`)."""
|
|
94
145
|
|
|
146
|
+
url: str
|
|
147
|
+
r"""The destination URL of the short link."""
|
|
148
|
+
|
|
95
149
|
program_id: Annotated[Nullable[str], pydantic.Field(alias="programId")]
|
|
96
150
|
r"""The ID of the program the short link is associated with."""
|
|
97
151
|
|
|
@@ -260,6 +314,10 @@ class GetCustomersResponseBodyTypedDict(TypedDict):
|
|
|
260
314
|
r"""Avatar URL of the customer."""
|
|
261
315
|
country: NotRequired[Nullable[str]]
|
|
262
316
|
r"""Country of the customer."""
|
|
317
|
+
sales: NotRequired[Nullable[float]]
|
|
318
|
+
r"""Total number of sales for the customer."""
|
|
319
|
+
sale_amount: NotRequired[Nullable[float]]
|
|
320
|
+
r"""Total amount of sales for the customer."""
|
|
263
321
|
link: NotRequired[Nullable[GetCustomersLinkTypedDict]]
|
|
264
322
|
program_id: NotRequired[Nullable[str]]
|
|
265
323
|
partner: NotRequired[Nullable[GetCustomersPartnerTypedDict]]
|
|
@@ -288,6 +346,14 @@ class GetCustomersResponseBody(BaseModel):
|
|
|
288
346
|
country: OptionalNullable[str] = UNSET
|
|
289
347
|
r"""Country of the customer."""
|
|
290
348
|
|
|
349
|
+
sales: OptionalNullable[float] = UNSET
|
|
350
|
+
r"""Total number of sales for the customer."""
|
|
351
|
+
|
|
352
|
+
sale_amount: Annotated[
|
|
353
|
+
OptionalNullable[float], pydantic.Field(alias="saleAmount")
|
|
354
|
+
] = UNSET
|
|
355
|
+
r"""Total amount of sales for the customer."""
|
|
356
|
+
|
|
291
357
|
link: OptionalNullable[GetCustomersLink] = UNSET
|
|
292
358
|
|
|
293
359
|
program_id: Annotated[OptionalNullable[str], pydantic.Field(alias="programId")] = (
|
|
@@ -304,6 +370,8 @@ class GetCustomersResponseBody(BaseModel):
|
|
|
304
370
|
"email",
|
|
305
371
|
"avatar",
|
|
306
372
|
"country",
|
|
373
|
+
"sales",
|
|
374
|
+
"saleAmount",
|
|
307
375
|
"link",
|
|
308
376
|
"programId",
|
|
309
377
|
"partner",
|
|
@@ -313,6 +381,8 @@ class GetCustomersResponseBody(BaseModel):
|
|
|
313
381
|
"email",
|
|
314
382
|
"avatar",
|
|
315
383
|
"country",
|
|
384
|
+
"sales",
|
|
385
|
+
"saleAmount",
|
|
316
386
|
"link",
|
|
317
387
|
"programId",
|
|
318
388
|
"partner",
|
|
@@ -114,14 +114,14 @@ class GetLinksRequest(BaseModel):
|
|
|
114
114
|
tag_ids: Annotated[
|
|
115
115
|
Optional[QueryParamTagIds],
|
|
116
116
|
pydantic.Field(alias="tagIds"),
|
|
117
|
-
FieldMetadata(query=QueryParamMetadata(style="form", explode=
|
|
117
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=False)),
|
|
118
118
|
] = None
|
|
119
119
|
r"""The tag IDs to filter the links by."""
|
|
120
120
|
|
|
121
121
|
tag_names: Annotated[
|
|
122
122
|
Optional[QueryParamTagNames],
|
|
123
123
|
pydantic.Field(alias="tagNames"),
|
|
124
|
-
FieldMetadata(query=QueryParamMetadata(style="form", explode=
|
|
124
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=False)),
|
|
125
125
|
] = None
|
|
126
126
|
r"""The unique name of the tags assigned to the short link (case insensitive)."""
|
|
127
127
|
|
|
@@ -99,14 +99,14 @@ class GetLinksCountRequest(BaseModel):
|
|
|
99
99
|
tag_ids: Annotated[
|
|
100
100
|
Optional[GetLinksCountQueryParamTagIds],
|
|
101
101
|
pydantic.Field(alias="tagIds"),
|
|
102
|
-
FieldMetadata(query=QueryParamMetadata(style="form", explode=
|
|
102
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=False)),
|
|
103
103
|
] = None
|
|
104
104
|
r"""The tag IDs to filter the links by."""
|
|
105
105
|
|
|
106
106
|
tag_names: Annotated[
|
|
107
107
|
Optional[GetLinksCountQueryParamTagNames],
|
|
108
108
|
pydantic.Field(alias="tagNames"),
|
|
109
|
-
FieldMetadata(query=QueryParamMetadata(style="form", explode=
|
|
109
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=False)),
|
|
110
110
|
] = None
|
|
111
111
|
r"""The unique name of the tags assigned to the short link (case insensitive)."""
|
|
112
112
|
|
|
@@ -9,10 +9,10 @@ from dub.models.components import (
|
|
|
9
9
|
saleevent as components_saleevent,
|
|
10
10
|
)
|
|
11
11
|
from dub.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
|
12
|
-
from dub.utils import FieldMetadata, QueryParamMetadata
|
|
12
|
+
from dub.utils import FieldMetadata, QueryParamMetadata, get_discriminator
|
|
13
13
|
from enum import Enum
|
|
14
14
|
import pydantic
|
|
15
|
-
from pydantic import model_serializer
|
|
15
|
+
from pydantic import Discriminator, Tag, model_serializer
|
|
16
16
|
from typing import List, Optional, Union
|
|
17
17
|
from typing_extensions import (
|
|
18
18
|
Annotated,
|
|
@@ -491,20 +491,18 @@ class ListEventsRequest(BaseModel):
|
|
|
491
491
|
ListEventsResponseBodyTypedDict = TypeAliasType(
|
|
492
492
|
"ListEventsResponseBodyTypedDict",
|
|
493
493
|
Union[
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
494
|
+
components_clickevent.ClickEventTypedDict,
|
|
495
|
+
components_leadevent.LeadEventTypedDict,
|
|
496
|
+
components_saleevent.SaleEventTypedDict,
|
|
497
497
|
],
|
|
498
498
|
)
|
|
499
|
-
r"""A list of events"""
|
|
500
499
|
|
|
501
500
|
|
|
502
|
-
ListEventsResponseBody =
|
|
503
|
-
"ListEventsResponseBody",
|
|
501
|
+
ListEventsResponseBody = Annotated[
|
|
504
502
|
Union[
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
503
|
+
Annotated[components_clickevent.ClickEvent, Tag("click")],
|
|
504
|
+
Annotated[components_leadevent.LeadEvent, Tag("lead")],
|
|
505
|
+
Annotated[components_saleevent.SaleEvent, Tag("sale")],
|
|
508
506
|
],
|
|
509
|
-
)
|
|
510
|
-
|
|
507
|
+
Discriminator(lambda m: get_discriminator(m, "event", "event")),
|
|
508
|
+
]
|
|
@@ -106,6 +106,8 @@ class UpdateCustomerLinkTypedDict(TypedDict):
|
|
|
106
106
|
r"""The short link slug. If not provided, a random 7-character slug will be generated."""
|
|
107
107
|
short_link: str
|
|
108
108
|
r"""The full URL of the short link, including the https protocol (e.g. `https://dub.sh/try`)."""
|
|
109
|
+
url: str
|
|
110
|
+
r"""The destination URL of the short link."""
|
|
109
111
|
program_id: Nullable[str]
|
|
110
112
|
r"""The ID of the program the short link is associated with."""
|
|
111
113
|
|
|
@@ -123,6 +125,9 @@ class UpdateCustomerLink(BaseModel):
|
|
|
123
125
|
short_link: Annotated[str, pydantic.Field(alias="shortLink")]
|
|
124
126
|
r"""The full URL of the short link, including the https protocol (e.g. `https://dub.sh/try`)."""
|
|
125
127
|
|
|
128
|
+
url: str
|
|
129
|
+
r"""The destination URL of the short link."""
|
|
130
|
+
|
|
126
131
|
program_id: Annotated[Nullable[str], pydantic.Field(alias="programId")]
|
|
127
132
|
r"""The ID of the program the short link is associated with."""
|
|
128
133
|
|
|
@@ -293,6 +298,10 @@ class UpdateCustomerResponseBodyTypedDict(TypedDict):
|
|
|
293
298
|
r"""Avatar URL of the customer."""
|
|
294
299
|
country: NotRequired[Nullable[str]]
|
|
295
300
|
r"""Country of the customer."""
|
|
301
|
+
sales: NotRequired[Nullable[float]]
|
|
302
|
+
r"""Total number of sales for the customer."""
|
|
303
|
+
sale_amount: NotRequired[Nullable[float]]
|
|
304
|
+
r"""Total amount of sales for the customer."""
|
|
296
305
|
link: NotRequired[Nullable[UpdateCustomerLinkTypedDict]]
|
|
297
306
|
program_id: NotRequired[Nullable[str]]
|
|
298
307
|
partner: NotRequired[Nullable[UpdateCustomerPartnerTypedDict]]
|
|
@@ -323,6 +332,14 @@ class UpdateCustomerResponseBody(BaseModel):
|
|
|
323
332
|
country: OptionalNullable[str] = UNSET
|
|
324
333
|
r"""Country of the customer."""
|
|
325
334
|
|
|
335
|
+
sales: OptionalNullable[float] = UNSET
|
|
336
|
+
r"""Total number of sales for the customer."""
|
|
337
|
+
|
|
338
|
+
sale_amount: Annotated[
|
|
339
|
+
OptionalNullable[float], pydantic.Field(alias="saleAmount")
|
|
340
|
+
] = UNSET
|
|
341
|
+
r"""Total amount of sales for the customer."""
|
|
342
|
+
|
|
326
343
|
link: OptionalNullable[UpdateCustomerLink] = UNSET
|
|
327
344
|
|
|
328
345
|
program_id: Annotated[OptionalNullable[str], pydantic.Field(alias="programId")] = (
|
|
@@ -339,6 +356,8 @@ class UpdateCustomerResponseBody(BaseModel):
|
|
|
339
356
|
"email",
|
|
340
357
|
"avatar",
|
|
341
358
|
"country",
|
|
359
|
+
"sales",
|
|
360
|
+
"saleAmount",
|
|
342
361
|
"link",
|
|
343
362
|
"programId",
|
|
344
363
|
"partner",
|
|
@@ -348,6 +367,8 @@ class UpdateCustomerResponseBody(BaseModel):
|
|
|
348
367
|
"email",
|
|
349
368
|
"avatar",
|
|
350
369
|
"country",
|
|
370
|
+
"sales",
|
|
371
|
+
"saleAmount",
|
|
351
372
|
"link",
|
|
352
373
|
"programId",
|
|
353
374
|
"partner",
|
|
@@ -87,7 +87,6 @@ class UpdateLinkRequestBodyTypedDict(TypedDict):
|
|
|
87
87
|
description: NotRequired[Nullable[str]]
|
|
88
88
|
r"""The custom link preview description (og:description). Will be used for Custom Social Media Cards if `proxy` is true. Learn more: https://d.to/og"""
|
|
89
89
|
image: NotRequired[Nullable[str]]
|
|
90
|
-
r"""The custom link preview image (og:image). Will be used for Custom Social Media Cards if `proxy` is true. Learn more: https://d.to/og"""
|
|
91
90
|
video: NotRequired[Nullable[str]]
|
|
92
91
|
r"""The custom link preview video (og:video). Will be used for Custom Social Media Cards if `proxy` is true. Learn more: https://d.to/og"""
|
|
93
92
|
rewrite: NotRequired[bool]
|
|
@@ -222,7 +221,6 @@ class UpdateLinkRequestBody(BaseModel):
|
|
|
222
221
|
r"""The custom link preview description (og:description). Will be used for Custom Social Media Cards if `proxy` is true. Learn more: https://d.to/og"""
|
|
223
222
|
|
|
224
223
|
image: OptionalNullable[str] = UNSET
|
|
225
|
-
r"""The custom link preview image (og:image). Will be used for Custom Social Media Cards if `proxy` is true. Learn more: https://d.to/og"""
|
|
226
224
|
|
|
227
225
|
video: OptionalNullable[str] = UNSET
|
|
228
226
|
r"""The custom link preview video (og:video). Will be used for Custom Social Media Cards if `proxy` is true. Learn more: https://d.to/og"""
|
dub/partners.py
CHANGED
|
@@ -23,9 +23,9 @@ class Partners(BaseSDK):
|
|
|
23
23
|
timeout_ms: Optional[int] = None,
|
|
24
24
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
25
25
|
) -> Optional[operations.CreatePartnerResponseBody]:
|
|
26
|
-
r"""Create a
|
|
26
|
+
r"""Create a partner
|
|
27
27
|
|
|
28
|
-
Create a
|
|
28
|
+
Create a partner for a program. If partner exists, automatically enrolls them.
|
|
29
29
|
|
|
30
30
|
:param request: The request object to send.
|
|
31
31
|
:param retries: Override the default retry configuration for this method
|
|
@@ -178,9 +178,9 @@ class Partners(BaseSDK):
|
|
|
178
178
|
timeout_ms: Optional[int] = None,
|
|
179
179
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
180
180
|
) -> Optional[operations.CreatePartnerResponseBody]:
|
|
181
|
-
r"""Create a
|
|
181
|
+
r"""Create a partner
|
|
182
182
|
|
|
183
|
-
Create a
|
|
183
|
+
Create a partner for a program. If partner exists, automatically enrolls them.
|
|
184
184
|
|
|
185
185
|
:param request: The request object to send.
|
|
186
186
|
:param retries: Override the default retry configuration for this method
|
|
@@ -335,7 +335,7 @@ class Partners(BaseSDK):
|
|
|
335
335
|
) -> Optional[components.LinkSchema]:
|
|
336
336
|
r"""Create a link for a partner
|
|
337
337
|
|
|
338
|
-
Create a
|
|
338
|
+
Create a link for a partner that is enrolled in your program.
|
|
339
339
|
|
|
340
340
|
:param request: The request object to send.
|
|
341
341
|
:param retries: Override the default retry configuration for this method
|
|
@@ -488,7 +488,7 @@ class Partners(BaseSDK):
|
|
|
488
488
|
) -> Optional[components.LinkSchema]:
|
|
489
489
|
r"""Create a link for a partner
|
|
490
490
|
|
|
491
|
-
Create a
|
|
491
|
+
Create a link for a partner that is enrolled in your program.
|
|
492
492
|
|
|
493
493
|
:param request: The request object to send.
|
|
494
494
|
:param retries: Override the default retry configuration for this method
|
dub/tags.py
CHANGED
|
@@ -23,9 +23,9 @@ class Tags(BaseSDK):
|
|
|
23
23
|
timeout_ms: Optional[int] = None,
|
|
24
24
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
25
25
|
) -> Optional[components.TagSchema]:
|
|
26
|
-
r"""Create a
|
|
26
|
+
r"""Create a tag
|
|
27
27
|
|
|
28
|
-
Create a
|
|
28
|
+
Create a tag for the authenticated workspace.
|
|
29
29
|
|
|
30
30
|
:param request: The request object to send.
|
|
31
31
|
:param retries: Override the default retry configuration for this method
|
|
@@ -172,9 +172,9 @@ class Tags(BaseSDK):
|
|
|
172
172
|
timeout_ms: Optional[int] = None,
|
|
173
173
|
http_headers: Optional[Mapping[str, str]] = None,
|
|
174
174
|
) -> Optional[components.TagSchema]:
|
|
175
|
-
r"""Create a
|
|
175
|
+
r"""Create a tag
|
|
176
176
|
|
|
177
|
-
Create a
|
|
177
|
+
Create a tag for the authenticated workspace.
|
|
178
178
|
|
|
179
179
|
:param request: The request object to send.
|
|
180
180
|
:param retries: Override the default retry configuration for this method
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: dub
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.23.1
|
|
4
4
|
Summary: Python Client SDK Generated by Speakeasy
|
|
5
5
|
Author: Speakeasy
|
|
6
6
|
Requires-Python: >=3.9
|
|
@@ -295,7 +295,7 @@ asyncio.run(main())
|
|
|
295
295
|
|
|
296
296
|
### [embed_tokens](https://github.com/dubinc/dub-python/blob/master/docs/sdks/embedtokens/README.md)
|
|
297
297
|
|
|
298
|
-
* [referrals](https://github.com/dubinc/dub-python/blob/master/docs/sdks/embedtokens/README.md#referrals) - Create a
|
|
298
|
+
* [referrals](https://github.com/dubinc/dub-python/blob/master/docs/sdks/embedtokens/README.md#referrals) - Create a referrals embed token
|
|
299
299
|
|
|
300
300
|
### [events](https://github.com/dubinc/dub-python/blob/master/docs/sdks/events/README.md)
|
|
301
301
|
|
|
@@ -303,14 +303,14 @@ asyncio.run(main())
|
|
|
303
303
|
|
|
304
304
|
### [folders](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md)
|
|
305
305
|
|
|
306
|
-
* [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#create) - Create a
|
|
306
|
+
* [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#create) - Create a folder
|
|
307
307
|
* [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#list) - Retrieve a list of folders
|
|
308
308
|
* [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#update) - Update a folder
|
|
309
309
|
* [delete](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#delete) - Delete a folder
|
|
310
310
|
|
|
311
311
|
### [links](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md)
|
|
312
312
|
|
|
313
|
-
* [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#create) - Create a
|
|
313
|
+
* [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#create) - Create a link
|
|
314
314
|
* [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#list) - Retrieve a list of links
|
|
315
315
|
* [count](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#count) - Retrieve links count
|
|
316
316
|
* [get](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#get) - Retrieve a link
|
|
@@ -323,7 +323,7 @@ asyncio.run(main())
|
|
|
323
323
|
|
|
324
324
|
### [partners](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md)
|
|
325
325
|
|
|
326
|
-
* [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#create) - Create a
|
|
326
|
+
* [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#create) - Create a partner
|
|
327
327
|
* [create_link](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#create_link) - Create a link for a partner
|
|
328
328
|
* [retrieve_links](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#retrieve_links) - Retrieve a partner's links.
|
|
329
329
|
* [upsert_link](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#upsert_link) - Upsert a link for a partner
|
|
@@ -336,7 +336,7 @@ asyncio.run(main())
|
|
|
336
336
|
|
|
337
337
|
### [tags](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md)
|
|
338
338
|
|
|
339
|
-
* [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#create) - Create a
|
|
339
|
+
* [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#create) - Create a tag
|
|
340
340
|
* [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#list) - Retrieve a list of tags
|
|
341
341
|
* [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#update) - Update a tag
|
|
342
342
|
* [delete](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#delete) - Delete a tag
|
|
@@ -3,16 +3,16 @@ 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=_f63z3zj-1mQYfbDbEgt_0Yzys8yQtKEivmhKxOPeU8,2806
|
|
6
|
-
dub/_version.py,sha256=
|
|
6
|
+
dub/_version.py,sha256=itxF-4-_-hTrDXKcPmhi5P222jDGX-YMM3uhk2ooAKc,452
|
|
7
7
|
dub/analytics.py,sha256=vlYINh0VlD1myVlTz5GbsJxoTEk45avOATjpJ_P_b9I,12938
|
|
8
8
|
dub/basesdk.py,sha256=rDM8sEHVtFjFSi7RgfDnl3T0gLUJzqguXrSxFOWFRqE,12105
|
|
9
9
|
dub/customers.py,sha256=8iLNQxjcU2gpWJsZp43XwKGNl2S9ONJQeo9IYtgdc-0,63157
|
|
10
10
|
dub/domains.py,sha256=Te3xPLGz0rusk0zMC0Q_lGryvIwN17HxKSuyChaxLNM,52450
|
|
11
|
-
dub/embed_tokens.py,sha256=
|
|
12
|
-
dub/events.py,sha256=
|
|
13
|
-
dub/folders.py,sha256=
|
|
14
|
-
dub/httpclient.py,sha256=
|
|
15
|
-
dub/links.py,sha256
|
|
11
|
+
dub/embed_tokens.py,sha256=brox--k6QHwvcAQlpxtMt7GrOoGdgYmbWP1qoSuQCbE,13654
|
|
12
|
+
dub/events.py,sha256=HyGsrKz18bEfjrKBOAwXKyo4MFKJ1EXK6uZoHmwUZ0U,12585
|
|
13
|
+
dub/folders.py,sha256=X6DIToZTRqmzjGulZE_4CrBYUyi2a8HrpEIjm3W-DnQ,50316
|
|
14
|
+
dub/httpclient.py,sha256=xAUX3nxG-fwYAE9lfv9uaspYKMFRJf5NM79mV2HKb1I,5486
|
|
15
|
+
dub/links.py,sha256=Nq6Xo-jaw-hL0rcB8a-tAnDu6qUe9kTAcArhPugwRyY,128470
|
|
16
16
|
dub/models/__init__.py,sha256=HRiFG5CV9y2HvWWQl_JQNbYTPme0UYR1Mhh13Qc-5jE,84
|
|
17
17
|
dub/models/components/__init__.py,sha256=l2w2vvyhJTRJaSRPIxgqig8KphSuEuhiyvO4G1Lynf4,10710
|
|
18
18
|
dub/models/components/analyticsbrowsers.py,sha256=f6qMrkPFf38u3_PIovvdIc0hsX1YpYEaPxNwbXzkoeY,1172
|
|
@@ -34,8 +34,8 @@ dub/models/components/continentcode.py,sha256=YFw3_x0w7CxCQijsbfiiOoS9FbNATeHyGL
|
|
|
34
34
|
dub/models/components/countrycode.py,sha256=ZDcCf4vay2mX6w6qzRliHkcXkV60zGJOgNvr3nfqHyQ,3713
|
|
35
35
|
dub/models/components/domainschema.py,sha256=MBaPJhQDSQtMTQYVsV8khaQGpY5BXa6IpwYP7qaWnzQ,5328
|
|
36
36
|
dub/models/components/folderschema.py,sha256=6bniUPyjg8U_DQO3ETJKYdypLSvjy4Bire9GdXovGxw,2666
|
|
37
|
-
dub/models/components/leadcreatedevent.py,sha256=
|
|
38
|
-
dub/models/components/leadevent.py,sha256=
|
|
37
|
+
dub/models/components/leadcreatedevent.py,sha256=VJiD78KspBq0Y9scs_s5e-tk0QtMLoL8B5Te7cYD0Xo,40656
|
|
38
|
+
dub/models/components/leadevent.py,sha256=knRNJj561GgQM0jU7qwSCKoQhNoKkkpCNPpXLEfI9Ek,44531
|
|
39
39
|
dub/models/components/linkclickedevent.py,sha256=jMdhw1NNlK8wQK28JchgdOZ54IKpLO24AqBwxfZtAF8,37459
|
|
40
40
|
dub/models/components/linkerrorschema.py,sha256=BHHLHZv1ojPYUO78d8kCKIjgq68uuMMhW7LbyLMbzqo,1114
|
|
41
41
|
dub/models/components/linkgeotargeting.py,sha256=F0jUhoTXU2goK_4F0dLonIKu3y93fRQiwbdrgWP4itA,24054
|
|
@@ -44,9 +44,9 @@ dub/models/components/linkwebhookevent.py,sha256=r4Y8ba4iIDiA920YFzlmdf-8-z1Rdn4
|
|
|
44
44
|
dub/models/components/partneranalyticscount.py,sha256=hJOuFVUTFOuXWviLxExwXDZVgPLBcgmqt8VxeHv7JAw,1035
|
|
45
45
|
dub/models/components/partneranalyticstimeseries.py,sha256=Bh431YfEd8v6TD9o9DPCAwGCDo5Rrf1xR1pccm7q5aw,1268
|
|
46
46
|
dub/models/components/partneranalyticstoplinks.py,sha256=xy1F1vueaBX93Gj2AYqqa7jbEueJy-FAVD5GdnjPva8,3755
|
|
47
|
-
dub/models/components/partnerenrolledevent.py,sha256=
|
|
48
|
-
dub/models/components/salecreatedevent.py,sha256=
|
|
49
|
-
dub/models/components/saleevent.py,sha256=
|
|
47
|
+
dub/models/components/partnerenrolledevent.py,sha256=nicL9KiA-e4DkRT0UCEgoqt5BeG6k5-6yS6z8BBgJts,6192
|
|
48
|
+
dub/models/components/salecreatedevent.py,sha256=0iC7LapQdrWFUPCuyr3vlsoqzYGnjVeUX1wwyXeToCs,42010
|
|
49
|
+
dub/models/components/saleevent.py,sha256=YT3fOa4J-glEqlepgo-22Dhu9rfD7VrbGLpGG8ntuFY,47528
|
|
50
50
|
dub/models/components/security.py,sha256=be_cng1n5ULto_xGGPBKH1ZE5LrtmBTg6kX2uPJqJOw,599
|
|
51
51
|
dub/models/components/tagschema.py,sha256=9aymPZgSYT_OUsr4AtHAt4GLej9v89yuS5X1YSZ72sE,759
|
|
52
52
|
dub/models/components/webhookevent.py,sha256=oDE16DmD_gDcnzqXSDKsSSXzItXdl_O4qY_rjxPo3EE,1090
|
|
@@ -62,15 +62,15 @@ dub/models/errors/ratelimitexceeded.py,sha256=0S2eQlQMdVQ8BZYXX59AQZkf5HtexijmQn
|
|
|
62
62
|
dub/models/errors/sdkerror.py,sha256=kd75e3JYF2TXNgRZopcV-oGdBWoBZqRcvrwqn2fsFYs,528
|
|
63
63
|
dub/models/errors/unauthorized.py,sha256=ranMcawvM0oJxxVkShfZsc7V5YYjbz9luhHywE_ObIg,1525
|
|
64
64
|
dub/models/errors/unprocessableentity.py,sha256=TxgP43hrqcBW-UDMo8yJ7B0_o_skIH_dXw3DfEWG_cY,1515
|
|
65
|
-
dub/models/operations/__init__.py,sha256=
|
|
65
|
+
dub/models/operations/__init__.py,sha256=7DnUmcFdZqCHYpkVeZLTwsWBPhvSZCL42BYlUrefULc,19336
|
|
66
66
|
dub/models/operations/bulkcreatelinks.py,sha256=tT5lA_5LxR_k-WgIFNpYHZu4uvLANSssZbmZ7IamFFA,17466
|
|
67
67
|
dub/models/operations/bulkdeletelinks.py,sha256=u_hEFC9TZ1UnGGgLhQ-Mf3HNDO98Ur49MtdBnNVIRsE,1151
|
|
68
68
|
dub/models/operations/bulkupdatelinks.py,sha256=DDEW9Zp2BKPSwdzYGSnATxuFUsv175z3fq4UQ15IvME,16022
|
|
69
|
-
dub/models/operations/createcustomer.py,sha256=
|
|
69
|
+
dub/models/operations/createcustomer.py,sha256=xWg93_tjIkLo2E0zWxF93eoR15-fKaIaVVLxbEDzAL8,11604
|
|
70
70
|
dub/models/operations/createdomain.py,sha256=dHRvCzE6knsndN4FTFjfijHVmTi8NXKpURz8cM_C-bk,3900
|
|
71
71
|
dub/models/operations/createfolder.py,sha256=j9z0CIsc22VsWAwlCGNwxo6a3VsetD6t4T2LdCELYGE,1884
|
|
72
72
|
dub/models/operations/createlink.py,sha256=ThSHn-TNxF70sRWHXt723nBofdMjQ1_hkSZExnwIvVw,16833
|
|
73
|
-
dub/models/operations/createpartner.py,sha256=
|
|
73
|
+
dub/models/operations/createpartner.py,sha256=yO5ykGwO-mJOKMC0EXo5vlB8DRdm4o-ctBvMFkzqE0E,25955
|
|
74
74
|
dub/models/operations/createpartnerlink.py,sha256=RfQ2uiU6ZDOw8pR3eksEY6rKviSsf0oUKGMDkp5s2NQ,16880
|
|
75
75
|
dub/models/operations/createreferralsembedtoken.py,sha256=q7Q1aAdhEbMDlRqh2M7VFAeAqpYEhFO1P9Cz3TGJhsU,21667
|
|
76
76
|
dub/models/operations/createtag.py,sha256=XUKuFcLoenYk1oxdeou-gI_s3A4YxtIJKgRiXtLfOpQ,1497
|
|
@@ -79,37 +79,37 @@ dub/models/operations/deletedomain.py,sha256=VtuDxUCmAcEmNn1vmrdlSKmASHSFwoho-Co
|
|
|
79
79
|
dub/models/operations/deletefolder.py,sha256=lpetbObqu9jd-XLl-unlvmSTuztW8Ecn-dhGNxN60Yc,815
|
|
80
80
|
dub/models/operations/deletelink.py,sha256=o3Uia06QBrKb--6OkShjKkcqaK0dpt_Jw3AClUqTQq4,1062
|
|
81
81
|
dub/models/operations/deletetag.py,sha256=UJz-O6oTuvOdzuUXUQktw699hEv0cs1eJW9C3wQBQBc,785
|
|
82
|
-
dub/models/operations/getcustomer.py,sha256=
|
|
83
|
-
dub/models/operations/getcustomers.py,sha256=
|
|
82
|
+
dub/models/operations/getcustomer.py,sha256=048vTawzBPpsdhpBa22SD_rGqqtcWdIjnfInycaMqG0,10795
|
|
83
|
+
dub/models/operations/getcustomers.py,sha256=hlbwYOORKlSnPCqJ56nXHpzjqQwzeb7ntaJteqymmgE,13987
|
|
84
84
|
dub/models/operations/getlinkinfo.py,sha256=I4bhM6HeW7IFg1J-68Uou5-OHA7XdQcM8I_lRBtXAJI,1530
|
|
85
|
-
dub/models/operations/getlinks.py,sha256=
|
|
86
|
-
dub/models/operations/getlinkscount.py,sha256=
|
|
85
|
+
dub/models/operations/getlinks.py,sha256=9BPKj--6Zt9HvFPEIPU-a2aheaOvtIvHGc8PHTMkkbg,7472
|
|
86
|
+
dub/models/operations/getlinkscount.py,sha256=KvD0gh-Imn1WmiiRAIYUXHBoNNGEnmfBQXqdbLXU7EQ,5851
|
|
87
87
|
dub/models/operations/getqrcode.py,sha256=ynCPJc8vy_QEt5FP8OU2s-u6UIt1BhmFSNZC-XPmO4I,3848
|
|
88
88
|
dub/models/operations/gettags.py,sha256=c9p_JrHFnTDJURyR5iiKFKpXFHlzJDt3R5X1U-anyYg,2664
|
|
89
89
|
dub/models/operations/getworkspace.py,sha256=V4-NfsEg3M1BTeoE13sDyazefb2_kI4yFxnzgvHPv4s,625
|
|
90
90
|
dub/models/operations/listdomains.py,sha256=gbQrJyBIvTGKSeqJo0Jb08iE44Xu39NS9zbfetx4p-s,1936
|
|
91
|
-
dub/models/operations/listevents.py,sha256=
|
|
91
|
+
dub/models/operations/listevents.py,sha256=V-RYIPZwLN3djEK4oFBWafVd-BzzPrTYcShwkvGbmfA,17611
|
|
92
92
|
dub/models/operations/listfolders.py,sha256=3XQRy8yCZ6r1ftzOWw7CFTdFUXdz2qD3IlOP5rKixxw,1575
|
|
93
93
|
dub/models/operations/retrieveanalytics.py,sha256=Y8bP9pXuaTOqpfgqOjWTXVgXyj8Rl4-HfdfbS3OoxsU,18845
|
|
94
94
|
dub/models/operations/retrievelinks.py,sha256=1bLrT_Q2y60eU_gdOHTu99VW8c09gX3nkidb0R5qLuk,2988
|
|
95
95
|
dub/models/operations/retrievepartneranalytics.py,sha256=MmBDRCB5lQ1lKkfHpeMnZcQXkKIjSCVGEUVcvJgZ_Io,5275
|
|
96
96
|
dub/models/operations/tracklead.py,sha256=FxdbxL9r3PF0eqo4aOcGXCS7EERq11x07NEdPDkqeps,6855
|
|
97
97
|
dub/models/operations/tracksale.py,sha256=q_IL4dHay_dDTmRYH80zI6JphCyk46yHoLHBFEJEILg,8189
|
|
98
|
-
dub/models/operations/updatecustomer.py,sha256=
|
|
98
|
+
dub/models/operations/updatecustomer.py,sha256=dAD833OtFmvAYTWTq93jj5X0RWody5kX-UqjChtvVOc,13115
|
|
99
99
|
dub/models/operations/updatedomain.py,sha256=rexCga7uNxgBZLPiCMcaudc2cQGB0E_qX2HI0DgG_3M,4519
|
|
100
100
|
dub/models/operations/updatefolder.py,sha256=dNvSPY67g58SWynB8ic5rcgT-h7THRmyxuzuFdO42GQ,2581
|
|
101
|
-
dub/models/operations/updatelink.py,sha256=
|
|
101
|
+
dub/models/operations/updatelink.py,sha256=b6BbDMh7BOtNQc_vcsqRGKBtrlRnW9VG8BDIv1RUogw,17567
|
|
102
102
|
dub/models/operations/updatepartnersale.py,sha256=GkykJPynsw2nWexos36ygnxvJX-EJY_sFNfwYFeeuCk,3415
|
|
103
103
|
dub/models/operations/updatetag.py,sha256=0nGAU6if5BsetDArXCIn8YvlDgG17N1Cp8q1o9F6ff4,2101
|
|
104
104
|
dub/models/operations/updateworkspace.py,sha256=qdlmA-Rz8_fC3iQs7bzmcn0qL9Lu3a04ziEIYfX3Ugo,2690
|
|
105
105
|
dub/models/operations/upsertlink.py,sha256=RdVy-L4I_mCqwaIhmU1DosYfndpW6yh_8OslaFs2v5s,16956
|
|
106
106
|
dub/models/operations/upsertpartnerlink.py,sha256=h08QRwsQyiIvDTUKu1ANE9mrwikDCqIzP8hWAKnc38Y,16880
|
|
107
|
-
dub/partners.py,sha256=
|
|
107
|
+
dub/partners.py,sha256=QcVBNdY4Vk0rTPYwi6dApSs19Ql38sgQda-0B4SAdhE,77547
|
|
108
108
|
dub/py.typed,sha256=zrp19r0G21lr2yRiMC0f8MFkQFGj9wMpSbboePMg8KM,59
|
|
109
109
|
dub/qr_codes.py,sha256=E0qlx0gs5CWbcz4M-GMLjvoMlGmUmAtHb3dtEWUO8cY,12164
|
|
110
110
|
dub/sdk.py,sha256=29q0R5TMeRAf-Qd2qI0RIzTGtFDJsQ4v1AwBF8ie6eQ,6357
|
|
111
111
|
dub/sdkconfiguration.py,sha256=iGOSRTCoNX5k8H98ONo6B8rS6v5CtjAUN69Z6t5ftPg,1762
|
|
112
|
-
dub/tags.py,sha256=
|
|
112
|
+
dub/tags.py,sha256=d9Sb4yZVKMQfdSqFNHFCfkTIVy0cgFLE3jA_TtPQp_Q,49757
|
|
113
113
|
dub/track.py,sha256=znqpHDO_LBQmIiN4BO3PXCklIUz4xR0S8SKd5oElTJg,25772
|
|
114
114
|
dub/types/__init__.py,sha256=RArOwSgeeTIva6h-4ttjXwMUeCkz10nAFBL9D-QljI4,377
|
|
115
115
|
dub/types/basemodel.py,sha256=L79WXvTECbSqaJzs8D3ud_KdIWkU7Cx2wbohDAktE9E,1127
|
|
@@ -130,7 +130,7 @@ dub/utils/serializers.py,sha256=hiHBXM1AY8_N2Z_rvFfNSYwvLBkSQlPGFp8poasdU4s,5986
|
|
|
130
130
|
dub/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
|
|
131
131
|
dub/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
|
|
132
132
|
dub/workspaces.py,sha256=d4eBlOvwuYlENsGcYI0fHQKN-cpC8U9kekTbfNJ2C_4,25635
|
|
133
|
-
dub-0.
|
|
134
|
-
dub-0.
|
|
135
|
-
dub-0.
|
|
136
|
-
dub-0.
|
|
133
|
+
dub-0.23.1.dist-info/LICENSE,sha256=kc_aZ6YHHcdSsRy-mGsT0Ehji0ZgR_zevXiUt05V2KY,1079
|
|
134
|
+
dub-0.23.1.dist-info/METADATA,sha256=dGf5ogpJ9f-IH_6aVobG3o81MFyqVHxT8bO5V1CeR1I,27567
|
|
135
|
+
dub-0.23.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
136
|
+
dub-0.23.1.dist-info/RECORD,,
|
|
File without changes
|