dub 0.32.0__py3-none-any.whl → 0.33.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.
Files changed (45) hide show
  1. dub/_version.py +3 -3
  2. dub/analytics.py +4 -4
  3. dub/commissions.py +8 -8
  4. dub/customers.py +16 -313
  5. dub/domains.py +22 -26
  6. dub/embed_tokens.py +4 -4
  7. dub/events.py +4 -4
  8. dub/folders.py +16 -20
  9. dub/links.py +38 -54
  10. dub/models/components/__init__.py +32 -0
  11. dub/models/components/analyticstopurls.py +2 -2
  12. dub/models/components/clickevent.py +7 -6
  13. dub/models/components/leadcreatedevent.py +7 -6
  14. dub/models/components/leadevent.py +7 -6
  15. dub/models/components/linkclickedevent.py +7 -6
  16. dub/models/components/linkschema.py +6 -0
  17. dub/models/components/linkwebhookevent.py +7 -6
  18. dub/models/components/partnerapplicationsubmittedevent.py +269 -0
  19. dub/models/components/partnerenrolledevent.py +64 -4
  20. dub/models/components/salecreatedevent.py +7 -6
  21. dub/models/components/saleevent.py +7 -6
  22. dub/models/components/webhookevent.py +6 -0
  23. dub/models/components/workspaceschema.py +6 -0
  24. dub/models/operations/__init__.py +17 -35
  25. dub/models/operations/banpartner.py +83 -0
  26. dub/models/operations/createpartner.py +64 -4
  27. dub/models/operations/listcommissions.py +13 -2
  28. dub/models/operations/listevents.py +10 -0
  29. dub/models/operations/listpartners.py +71 -4
  30. dub/models/operations/retrieveanalytics.py +12 -0
  31. dub/models/operations/retrievelinks.py +42 -7
  32. dub/models/operations/retrievepartneranalytics.py +51 -11
  33. dub/models/operations/updatecommission.py +7 -2
  34. dub/partners.py +298 -24
  35. dub/qr_codes.py +2 -2
  36. dub/tags.py +16 -24
  37. dub/track.py +8 -16
  38. dub/utils/retries.py +69 -5
  39. dub/utils/unmarshal_json_response.py +15 -1
  40. dub/workspaces.py +8 -16
  41. {dub-0.32.0.dist-info → dub-0.33.0.dist-info}/METADATA +2 -20
  42. {dub-0.32.0.dist-info → dub-0.33.0.dist-info}/RECORD +44 -43
  43. dub/models/operations/createcustomer.py +0 -382
  44. {dub-0.32.0.dist-info → dub-0.33.0.dist-info}/WHEEL +0 -0
  45. {dub-0.32.0.dist-info → dub-0.33.0.dist-info}/licenses/LICENSE +0 -0
dub/track.py CHANGED
@@ -23,7 +23,7 @@ class Track(BaseSDK):
23
23
  server_url: Optional[str] = None,
24
24
  timeout_ms: Optional[int] = None,
25
25
  http_headers: Optional[Mapping[str, str]] = None,
26
- ) -> Optional[operations.TrackLeadResponseBody]:
26
+ ) -> operations.TrackLeadResponseBody:
27
27
  r"""Track a lead
28
28
 
29
29
  Track a lead for a short link.
@@ -104,9 +104,7 @@ class Track(BaseSDK):
104
104
 
105
105
  response_data: Any = None
106
106
  if utils.match_response(http_res, "200", "application/json"):
107
- return unmarshal_json_response(
108
- Optional[operations.TrackLeadResponseBody], http_res
109
- )
107
+ return unmarshal_json_response(operations.TrackLeadResponseBody, http_res)
110
108
  if utils.match_response(http_res, "400", "application/json"):
111
109
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
112
110
  raise errors.BadRequest(response_data, http_res)
@@ -162,7 +160,7 @@ class Track(BaseSDK):
162
160
  server_url: Optional[str] = None,
163
161
  timeout_ms: Optional[int] = None,
164
162
  http_headers: Optional[Mapping[str, str]] = None,
165
- ) -> Optional[operations.TrackLeadResponseBody]:
163
+ ) -> operations.TrackLeadResponseBody:
166
164
  r"""Track a lead
167
165
 
168
166
  Track a lead for a short link.
@@ -243,9 +241,7 @@ class Track(BaseSDK):
243
241
 
244
242
  response_data: Any = None
245
243
  if utils.match_response(http_res, "200", "application/json"):
246
- return unmarshal_json_response(
247
- Optional[operations.TrackLeadResponseBody], http_res
248
- )
244
+ return unmarshal_json_response(operations.TrackLeadResponseBody, http_res)
249
245
  if utils.match_response(http_res, "400", "application/json"):
250
246
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
251
247
  raise errors.BadRequest(response_data, http_res)
@@ -301,7 +297,7 @@ class Track(BaseSDK):
301
297
  server_url: Optional[str] = None,
302
298
  timeout_ms: Optional[int] = None,
303
299
  http_headers: Optional[Mapping[str, str]] = None,
304
- ) -> Optional[operations.TrackSaleResponseBody]:
300
+ ) -> operations.TrackSaleResponseBody:
305
301
  r"""Track a sale
306
302
 
307
303
  Track a sale for a short link.
@@ -382,9 +378,7 @@ class Track(BaseSDK):
382
378
 
383
379
  response_data: Any = None
384
380
  if utils.match_response(http_res, "200", "application/json"):
385
- return unmarshal_json_response(
386
- Optional[operations.TrackSaleResponseBody], http_res
387
- )
381
+ return unmarshal_json_response(operations.TrackSaleResponseBody, http_res)
388
382
  if utils.match_response(http_res, "400", "application/json"):
389
383
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
390
384
  raise errors.BadRequest(response_data, http_res)
@@ -440,7 +434,7 @@ class Track(BaseSDK):
440
434
  server_url: Optional[str] = None,
441
435
  timeout_ms: Optional[int] = None,
442
436
  http_headers: Optional[Mapping[str, str]] = None,
443
- ) -> Optional[operations.TrackSaleResponseBody]:
437
+ ) -> operations.TrackSaleResponseBody:
444
438
  r"""Track a sale
445
439
 
446
440
  Track a sale for a short link.
@@ -521,9 +515,7 @@ class Track(BaseSDK):
521
515
 
522
516
  response_data: Any = None
523
517
  if utils.match_response(http_res, "200", "application/json"):
524
- return unmarshal_json_response(
525
- Optional[operations.TrackSaleResponseBody], http_res
526
- )
518
+ return unmarshal_json_response(operations.TrackSaleResponseBody, http_res)
527
519
  if utils.match_response(http_res, "400", "application/json"):
528
520
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
529
521
  raise errors.BadRequest(response_data, http_res)
dub/utils/retries.py CHANGED
@@ -3,7 +3,9 @@
3
3
  import asyncio
4
4
  import random
5
5
  import time
6
- from typing import List
6
+ from datetime import datetime
7
+ from email.utils import parsedate_to_datetime
8
+ from typing import List, Optional
7
9
 
8
10
  import httpx
9
11
 
@@ -51,9 +53,11 @@ class Retries:
51
53
 
52
54
  class TemporaryError(Exception):
53
55
  response: httpx.Response
56
+ retry_after: Optional[int]
54
57
 
55
58
  def __init__(self, response: httpx.Response):
56
59
  self.response = response
60
+ self.retry_after = _parse_retry_after_header(response)
57
61
 
58
62
 
59
63
  class PermanentError(Exception):
@@ -63,6 +67,62 @@ class PermanentError(Exception):
63
67
  self.inner = inner
64
68
 
65
69
 
70
+ def _parse_retry_after_header(response: httpx.Response) -> Optional[int]:
71
+ """Parse Retry-After header from response.
72
+
73
+ Returns:
74
+ Retry interval in milliseconds, or None if header is missing or invalid.
75
+ """
76
+ retry_after_header = response.headers.get("retry-after")
77
+ if not retry_after_header:
78
+ return None
79
+
80
+ try:
81
+ seconds = float(retry_after_header)
82
+ return round(seconds * 1000)
83
+ except ValueError:
84
+ pass
85
+
86
+ try:
87
+ retry_date = parsedate_to_datetime(retry_after_header)
88
+ delta = (retry_date - datetime.now(retry_date.tzinfo)).total_seconds()
89
+ return round(max(0, delta) * 1000)
90
+ except (ValueError, TypeError):
91
+ pass
92
+
93
+ return None
94
+
95
+
96
+ def _get_sleep_interval(
97
+ exception: Exception,
98
+ initial_interval: int,
99
+ max_interval: int,
100
+ exponent: float,
101
+ retries: int,
102
+ ) -> float:
103
+ """Get sleep interval for retry with exponential backoff.
104
+
105
+ Args:
106
+ exception: The exception that triggered the retry.
107
+ initial_interval: Initial retry interval in milliseconds.
108
+ max_interval: Maximum retry interval in milliseconds.
109
+ exponent: Base for exponential backoff calculation.
110
+ retries: Current retry attempt count.
111
+
112
+ Returns:
113
+ Sleep interval in seconds.
114
+ """
115
+ if (
116
+ isinstance(exception, TemporaryError)
117
+ and exception.retry_after is not None
118
+ and exception.retry_after > 0
119
+ ):
120
+ return exception.retry_after / 1000
121
+
122
+ sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1)
123
+ return min(sleep, max_interval / 1000)
124
+
125
+
66
126
  def retry(func, retries: Retries):
67
127
  if retries.config.strategy == "backoff":
68
128
 
@@ -183,8 +243,10 @@ def retry_with_backoff(
183
243
  return exception.response
184
244
 
185
245
  raise
186
- sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1)
187
- sleep = min(sleep, max_interval / 1000)
246
+
247
+ sleep = _get_sleep_interval(
248
+ exception, initial_interval, max_interval, exponent, retries
249
+ )
188
250
  time.sleep(sleep)
189
251
  retries += 1
190
252
 
@@ -211,7 +273,9 @@ async def retry_with_backoff_async(
211
273
  return exception.response
212
274
 
213
275
  raise
214
- sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1)
215
- sleep = min(sleep, max_interval / 1000)
276
+
277
+ sleep = _get_sleep_interval(
278
+ exception, initial_interval, max_interval, exponent, retries
279
+ )
216
280
  await asyncio.sleep(sleep)
217
281
  retries += 1
@@ -1,12 +1,26 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
- from typing import Any, Optional
3
+ from typing import Any, Optional, Type, TypeVar, overload
4
4
 
5
5
  import httpx
6
6
 
7
7
  from .serializers import unmarshal_json
8
8
  from dub.models import errors
9
9
 
10
+ T = TypeVar("T")
11
+
12
+
13
+ @overload
14
+ def unmarshal_json_response(
15
+ typ: Type[T], http_res: httpx.Response, body: Optional[str] = None
16
+ ) -> T: ...
17
+
18
+
19
+ @overload
20
+ def unmarshal_json_response(
21
+ typ: Any, http_res: httpx.Response, body: Optional[str] = None
22
+ ) -> Any: ...
23
+
10
24
 
11
25
  def unmarshal_json_response(
12
26
  typ: Any, http_res: httpx.Response, body: Optional[str] = None
dub/workspaces.py CHANGED
@@ -20,7 +20,7 @@ class Workspaces(BaseSDK):
20
20
  server_url: Optional[str] = None,
21
21
  timeout_ms: Optional[int] = None,
22
22
  http_headers: Optional[Mapping[str, str]] = None,
23
- ) -> Optional[components.WorkspaceSchema]:
23
+ ) -> components.WorkspaceSchema:
24
24
  r"""Retrieve a workspace
25
25
 
26
26
  Retrieve a workspace for the authenticated user.
@@ -96,9 +96,7 @@ class Workspaces(BaseSDK):
96
96
 
97
97
  response_data: Any = None
98
98
  if utils.match_response(http_res, "200", "application/json"):
99
- return unmarshal_json_response(
100
- Optional[components.WorkspaceSchema], http_res
101
- )
99
+ return unmarshal_json_response(components.WorkspaceSchema, http_res)
102
100
  if utils.match_response(http_res, "400", "application/json"):
103
101
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
104
102
  raise errors.BadRequest(response_data, http_res)
@@ -151,7 +149,7 @@ class Workspaces(BaseSDK):
151
149
  server_url: Optional[str] = None,
152
150
  timeout_ms: Optional[int] = None,
153
151
  http_headers: Optional[Mapping[str, str]] = None,
154
- ) -> Optional[components.WorkspaceSchema]:
152
+ ) -> components.WorkspaceSchema:
155
153
  r"""Retrieve a workspace
156
154
 
157
155
  Retrieve a workspace for the authenticated user.
@@ -227,9 +225,7 @@ class Workspaces(BaseSDK):
227
225
 
228
226
  response_data: Any = None
229
227
  if utils.match_response(http_res, "200", "application/json"):
230
- return unmarshal_json_response(
231
- Optional[components.WorkspaceSchema], http_res
232
- )
228
+ return unmarshal_json_response(components.WorkspaceSchema, http_res)
233
229
  if utils.match_response(http_res, "400", "application/json"):
234
230
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
235
231
  raise errors.BadRequest(response_data, http_res)
@@ -286,7 +282,7 @@ class Workspaces(BaseSDK):
286
282
  server_url: Optional[str] = None,
287
283
  timeout_ms: Optional[int] = None,
288
284
  http_headers: Optional[Mapping[str, str]] = None,
289
- ) -> Optional[components.WorkspaceSchema]:
285
+ ) -> components.WorkspaceSchema:
290
286
  r"""Update a workspace
291
287
 
292
288
  Update a workspace by ID or slug.
@@ -373,9 +369,7 @@ class Workspaces(BaseSDK):
373
369
 
374
370
  response_data: Any = None
375
371
  if utils.match_response(http_res, "200", "application/json"):
376
- return unmarshal_json_response(
377
- Optional[components.WorkspaceSchema], http_res
378
- )
372
+ return unmarshal_json_response(components.WorkspaceSchema, http_res)
379
373
  if utils.match_response(http_res, "400", "application/json"):
380
374
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
381
375
  raise errors.BadRequest(response_data, http_res)
@@ -432,7 +426,7 @@ class Workspaces(BaseSDK):
432
426
  server_url: Optional[str] = None,
433
427
  timeout_ms: Optional[int] = None,
434
428
  http_headers: Optional[Mapping[str, str]] = None,
435
- ) -> Optional[components.WorkspaceSchema]:
429
+ ) -> components.WorkspaceSchema:
436
430
  r"""Update a workspace
437
431
 
438
432
  Update a workspace by ID or slug.
@@ -519,9 +513,7 @@ class Workspaces(BaseSDK):
519
513
 
520
514
  response_data: Any = None
521
515
  if utils.match_response(http_res, "200", "application/json"):
522
- return unmarshal_json_response(
523
- Optional[components.WorkspaceSchema], http_res
524
- )
516
+ return unmarshal_json_response(components.WorkspaceSchema, http_res)
525
517
  if utils.match_response(http_res, "400", "application/json"):
526
518
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
527
519
  raise errors.BadRequest(response_data, http_res)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dub
3
- Version: 0.32.0
3
+ Version: 0.33.0
4
4
  Summary: Python Client SDK Generated by Speakeasy
5
5
  License-File: LICENSE
6
6
  Author: Speakeasy
@@ -155,8 +155,6 @@ with Dub(
155
155
  ],
156
156
  })
157
157
 
158
- assert res is not None
159
-
160
158
  # Handle response
161
159
  print(res)
162
160
  ```
@@ -194,8 +192,6 @@ async def main():
194
192
  ],
195
193
  })
196
194
 
197
- assert res is not None
198
-
199
195
  # Handle response
200
196
  print(res)
201
197
 
@@ -231,8 +227,6 @@ with Dub(
231
227
  ],
232
228
  })
233
229
 
234
- assert res is not None
235
-
236
230
  # Handle response
237
231
  print(res)
238
232
  ```
@@ -270,8 +264,6 @@ async def main():
270
264
  ],
271
265
  })
272
266
 
273
- assert res is not None
274
-
275
267
  # Handle response
276
268
  print(res)
277
269
 
@@ -297,7 +289,6 @@ asyncio.run(main())
297
289
  ### [customers](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md)
298
290
 
299
291
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md#list) - Retrieve a list of customers
300
- * [~~create~~](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md#create) - Create a customer :warning: **Deprecated**
301
292
  * [get](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md#get) - Retrieve a customer
302
293
  * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md#update) - Update a customer
303
294
  * [delete](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md#delete) - Delete a customer
@@ -347,6 +338,7 @@ asyncio.run(main())
347
338
  * [retrieve_links](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#retrieve_links) - Retrieve a partner's links.
348
339
  * [upsert_link](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#upsert_link) - Upsert a link for a partner
349
340
  * [analytics](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#analytics) - Retrieve analytics for a partner
341
+ * [ban](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#ban) - Ban a partner
350
342
 
351
343
  ### [qr_codes](https://github.com/dubinc/dub-python/blob/master/docs/sdks/qrcodes/README.md)
352
344
 
@@ -416,8 +408,6 @@ with Dub(
416
408
  ],
417
409
  })
418
410
 
419
- assert res is not None
420
-
421
411
  # Handle response
422
412
  print(res)
423
413
 
@@ -497,8 +487,6 @@ with Dub(
497
487
  ],
498
488
  })
499
489
 
500
- assert res is not None
501
-
502
490
  # Handle response
503
491
  print(res)
504
492
 
@@ -624,8 +612,6 @@ with Dub(
624
612
  ],
625
613
  })
626
614
 
627
- assert res is not None
628
-
629
615
  # Handle response
630
616
  print(res)
631
617
 
@@ -666,8 +652,6 @@ with Dub(
666
652
  },
667
653
  RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False))
668
654
 
669
- assert res is not None
670
-
671
655
  # Handle response
672
656
  print(res)
673
657
 
@@ -702,8 +686,6 @@ with Dub(
702
686
  ],
703
687
  })
704
688
 
705
- assert res is not None
706
-
707
689
  # Handle response
708
690
  print(res)
709
691
 
@@ -3,19 +3,19 @@ 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=4rOsORDlCntBg6GM0mD-kXODUXQCbJEkXEtH9x33XuA,450
7
- dub/analytics.py,sha256=xvVtJe_38OEYKy7AlZbOHPfJKU3UDq-OHkNixVAiCNU,12346
6
+ dub/_version.py,sha256=O9gMKNMP0tyVcgQ2NTaV6UbRz7P-cFhNmOaC3o34QCo,450
7
+ dub/analytics.py,sha256=9Z3qSz591YLmyg619YAcin25bDlGorruZ2HvfQbRMZw,12306
8
8
  dub/basesdk.py,sha256=ZpolQ0D1eZ93wq3jecXpg7RHj8NuFodyWkk9l4eIcqY,12108
9
- dub/commissions.py,sha256=e3u9hNaDirZsNTVjW0gAdh6EvOCkKx9iEanbuY0tLYk,24354
10
- dub/customers.py,sha256=2u5v9o0PGOEA7hKMA0g0q_zW4lP_FCEBsEqqOrq5q7M,59917
11
- dub/domains.py,sha256=cM89-Wl6qB_BMsNHEQxlegx2bAaGgJZSwKI5me-zKGE,73980
12
- dub/embed_tokens.py,sha256=mHiV80fB50elm45w7PLk2F2cx1lzdc8auHGD1BiAxFw,13028
13
- dub/events.py,sha256=qD-J8_ruVxgKASHEJw-gToeFC7565qLVNyZmbwLWvwg,11993
14
- dub/folders.py,sha256=jh47ZDBVOFPFyrvr_VMbc9fjATIHfwLlbEv36L9unh4,47618
9
+ dub/commissions.py,sha256=WXXwm6DKA1tJko-aVlvl-aV5N2sVmlyTJ1y8Gt7zj6w,24274
10
+ dub/customers.py,sha256=OM-HfOt7b0B-M3gihbiBV8ntcGtx_Wd9BO56O5MDHrQ,46908
11
+ dub/domains.py,sha256=wE0-QHAKig7ZBSJOvtdRABzvML2xv6WRX5Y6Zfj_J9k,73684
12
+ dub/embed_tokens.py,sha256=DrUkqTRQvl6zJAqNA8sjKLFG7xQdKmdP98j9bc59i1o,12988
13
+ dub/events.py,sha256=zrUeMGRdHUewa94KrTQSwamycTiVdKDYvAbfGPCb2hg,11953
14
+ dub/folders.py,sha256=99eoCKuw0dZ9tV7pay3LgjBIeOcXrq9EnMztMv36dHs,47398
15
15
  dub/httpclient.py,sha256=dqTPONDBpRn4ktXfcetQiRXnG93f0pJkFhqsYFhLUac,3945
16
- dub/links.py,sha256=FnSJDe8DsAUSiCJlBRuhAe7VXFifWp6naZlmStdHTfA,121920
16
+ dub/links.py,sha256=UP-uh3JR-RwureHq1IhgJv4WxoCMZQQp4wyfe3yRaxM,121284
17
17
  dub/models/__init__.py,sha256=wIW9sbvSKlrGyoPY4mXvHqw-_Inpl6zqpN6U6j-w6SU,83
18
- dub/models/components/__init__.py,sha256=rMMtB5P2N1-Xfh9IMq_RtpuzEVxSuToTGDM4Gip7HOY,21416
18
+ dub/models/components/__init__.py,sha256=OGpIrEQnmmA8_U_Gwi79-_MJuzN4kF7--7PzP3-NGQo,23193
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
@@ -28,29 +28,30 @@ dub/models/components/analyticsrefererurls.py,sha256=HDhayuZqqT1wvW09I-ialrQ1pvS
28
28
  dub/models/components/analyticsregions.py,sha256=--tqwuWSWUYswV_OkQFAbI1PIFala7t2d40-mUGZHXA,1637
29
29
  dub/models/components/analyticstimeseries.py,sha256=ZEZpE6oX0FPeiy5snz-kwYhXE9pwGBwzXY0Rq3u9XPI,1186
30
30
  dub/models/components/analyticstoplinks.py,sha256=RvhyKQcmDT47F-4sPojhhDgvFYRZCA5k257JrndHSp8,3649
31
- dub/models/components/analyticstopurls.py,sha256=WN4oF32SSXUlFPpWvx7jKype0SfdBsX1BvrkaKjClRM,1122
31
+ dub/models/components/analyticstopurls.py,sha256=1x5MhFQKnXk-VJ0SP3LC7dI7Q4EuUf2smvNCsru3EFs,1190
32
32
  dub/models/components/analyticstriggers.py,sha256=reWQ1cQDNgPc_cDhGrMv5EplFviiyWZ0nYTvU7bm3C0,1484
33
- dub/models/components/clickevent.py,sha256=hC5mYgoz0PjC9DexFA6-zlW5bfEjLfj-PsmT7jjLEGQ,18729
33
+ dub/models/components/clickevent.py,sha256=v7-9uwT1pPArfVFXkPhYGqv2gn1aejKeCXgW-WPZWjc,18719
34
34
  dub/models/components/commissioncreatedevent.py,sha256=9dVdgcBxxDwsOAy4tR-WFWzewa2WRNM7Y1l0-ofw83k,9431
35
35
  dub/models/components/continentcode.py,sha256=YFw3_x0w7CxCQijsbfiiOoS9FbNATeHyGLcw-LEsXYw,315
36
36
  dub/models/components/domainschema.py,sha256=m0QHTiOcO20Ne77d1VanWGSdOxdi5Zt4kIgtQFpXbgI,6688
37
37
  dub/models/components/folderschema.py,sha256=RTeyCW0V8AvFtGDREay_2imS76T063aJZ-OhyyGN0Oc,2577
38
- dub/models/components/leadcreatedevent.py,sha256=JPUbQVYrbNZMg9a_3jtaSiR4qV8LI75p4ldcWMmQQvQ,21936
39
- dub/models/components/leadevent.py,sha256=K7peTLu20Aonjs6FyM7h6zm6qGl2EWaBZYH3yo6GbMo,22973
40
- dub/models/components/linkclickedevent.py,sha256=WKH2KDjCwUmmRO2ra0eJlRf2HK-eytQYc1BIwXOETuM,14870
38
+ dub/models/components/leadcreatedevent.py,sha256=Tf5zZU4LlaN9Qap3OmhEkk1MPB93bqBfGyMIe21ziHM,21926
39
+ dub/models/components/leadevent.py,sha256=Z6tKQv-NknAyTA4uuoG6eb12rwZ53Ue7KmyKeSQS5M4,22963
40
+ dub/models/components/linkclickedevent.py,sha256=00QRCa2kdLpM5myJBK6-h-3-KBx0BKdv8CwIZMsVC44,14860
41
41
  dub/models/components/linkerrorschema.py,sha256=BHHLHZv1ojPYUO78d8kCKIjgq68uuMMhW7LbyLMbzqo,1114
42
- dub/models/components/linkschema.py,sha256=Gm54r1-BSdQotEuoJ0wieU30dsc6Gi1Z9O5i40vY75s,15052
42
+ dub/models/components/linkschema.py,sha256=9QwFsmfP051YIyiY4Jhxexl7XCzM2dNrj4GN01WgsWc,15584
43
43
  dub/models/components/linktagschema.py,sha256=yBMX0ZFB4UbA85UkWRuLYMPaRsb7d1b6NTECgWNDeQs,767
44
- dub/models/components/linkwebhookevent.py,sha256=Ro2crHS5IQ7zI0Wn2Fem7BbqaJ5mO5ddqRB6QWSkZ2Y,13488
44
+ dub/models/components/linkwebhookevent.py,sha256=64mau-eTg9F85xgf0lff8HG9mEtdyRqnt7kKRYKTckE,13478
45
45
  dub/models/components/partneranalyticscount.py,sha256=hJOuFVUTFOuXWviLxExwXDZVgPLBcgmqt8VxeHv7JAw,1035
46
46
  dub/models/components/partneranalyticstimeseries.py,sha256=Bh431YfEd8v6TD9o9DPCAwGCDo5Rrf1xR1pccm7q5aw,1268
47
47
  dub/models/components/partneranalyticstoplinks.py,sha256=xy1F1vueaBX93Gj2AYqqa7jbEueJy-FAVD5GdnjPva8,3755
48
- dub/models/components/partnerenrolledevent.py,sha256=5PZyS88A2yUy6YXLN-j6DMGwOhgACpAIbJpZNwWeO5o,14486
49
- dub/models/components/salecreatedevent.py,sha256=aoEBGq_GbJ2gHEkuy57nAXhdbMKWu8rvI2HbaYpqtHE,23354
50
- dub/models/components/saleevent.py,sha256=dJU-OXhgIeBIK_-MsLoB9-VX2IDfOvLIQKHR9g8Mlrw,26588
48
+ dub/models/components/partnerapplicationsubmittedevent.py,sha256=TH8zxEDeHPwdoVrIYwUzwRNmPUtWZm0cOV8vxYW-yxs,8431
49
+ dub/models/components/partnerenrolledevent.py,sha256=sah0lh_CAR7qH-k1CsIftU0nrUaMBYp74pU2pgISKAU,17359
50
+ dub/models/components/salecreatedevent.py,sha256=EiMQ0o4nDBfIOWq7n7ds3AxJZjk7MJ3y59DIrUgKTRA,23344
51
+ dub/models/components/saleevent.py,sha256=9BXCm0r0pW2IuCgXe0yKE3iBWT-IB5v2PMJtgmMfTis,26578
51
52
  dub/models/components/security.py,sha256=be_cng1n5ULto_xGGPBKH1ZE5LrtmBTg6kX2uPJqJOw,599
52
- dub/models/components/webhookevent.py,sha256=12SgBns1nVcb0Efs8JR9JO8vmvK25bXMROCT-s0Ue5c,1268
53
- dub/models/components/workspaceschema.py,sha256=FMrY1H_D04E6T5A8WqBw1nL5QsRahnXD6wF1bPPC2kc,11449
53
+ dub/models/components/webhookevent.py,sha256=2yVpFqxevDgyJi5MLBynfo_B3E8FZhp_FsMHmJpmyrU,1496
54
+ dub/models/components/workspaceschema.py,sha256=uSFutfeVfOx5gjQhoZtcFE_K7J_TmAgNBMBXpnx8yNM,11671
54
55
  dub/models/errors/__init__.py,sha256=puGRbwSI00uEfD5rs_zvN4GtHhVFXRqrkK60R_nSI24,6462
55
56
  dub/models/errors/badrequest.py,sha256=h7qM4M-ttdI6M1yzlT05D1zUfJB8p0oQyYdKwTz-T6c,1758
56
57
  dub/models/errors/conflict.py,sha256=PvwtAXs2dAs6evhPJ2Ql3NhNrpMlg0vOcFQ2RGM1tjI,1674
@@ -65,16 +66,16 @@ dub/models/errors/responsevalidationerror.py,sha256=ODuGOuGulVoPYKLAXuKF4HWDZ7uq
65
66
  dub/models/errors/sdkerror.py,sha256=K1Fk_HkOwYdNxWGY0XTOzCz4o0XeDqwFLNAmXeO2zQg,1279
66
67
  dub/models/errors/unauthorized.py,sha256=wTZD3otsoV2MxnV6zmXnoliC0lRinkOjEZ0Fu6yaUNc,1822
67
68
  dub/models/errors/unprocessableentity.py,sha256=Ns3lkmwq8Puc2Gscwg1yUMP6lkuedUbZjY-OEWEFwR4,1805
68
- dub/models/operations/__init__.py,sha256=6QGs9nw8vRYABShC-xkeD2XooGq2t9oZiJGv2NwOjAI,42440
69
+ dub/models/operations/__init__.py,sha256=V6S8eYhlMovlHcdXvD82xc0CjCOmPMWOKNMCyb7-7Bc,41615
70
+ dub/models/operations/banpartner.py,sha256=ytTEip4T1xdnuC4NxWy2NATHlz00L6xW0GQKKJ6K1BM,2709
69
71
  dub/models/operations/bulkcreatelinks.py,sha256=BHsqm2NHfaVPOUeN3F576egqYYbqSnkJjzaxwchr6pw,17870
70
72
  dub/models/operations/bulkdeletelinks.py,sha256=u_hEFC9TZ1UnGGgLhQ-Mf3HNDO98Ur49MtdBnNVIRsE,1151
71
73
  dub/models/operations/bulkupdatelinks.py,sha256=TCkPBC7wD-EZdJm0m9XSznY7sNF8pixyXPXokb3S4XY,15879
72
74
  dub/models/operations/checkdomainstatus.py,sha256=W085WT-gUgU73qDi4LlXppdiPVC0Pm1CpPXTqTM56sI,2538
73
- dub/models/operations/createcustomer.py,sha256=U84gPtRbF6ODG75Ila8h5p7CtB0RWH6VjY9-7J3AjNQ,12485
74
75
  dub/models/operations/createdomain.py,sha256=dHRvCzE6knsndN4FTFjfijHVmTi8NXKpURz8cM_C-bk,3900
75
76
  dub/models/operations/createfolder.py,sha256=Ott0-OYEpdlun-oZBx2RrOMFsMONO4tko8ESa6GLp18,2097
76
77
  dub/models/operations/createlink.py,sha256=bwg4k7nm1igtZeopPvSuMHRSsKZYedhIfv791VWV_ws,17208
77
- dub/models/operations/createpartner.py,sha256=bc9c97SZg0Shjux7SnRtAzXk1GksxZKB2sgpc2VPb2U,32038
78
+ dub/models/operations/createpartner.py,sha256=k7WF_wud0uA08WDWgPSSPCssRW72hyMv0kfWK1yVSQU,34911
78
79
  dub/models/operations/createpartnerlink.py,sha256=rOlnyEQdBk2jb5T3ryzvboWney3cRXIG9rCxuwQO58I,17091
79
80
  dub/models/operations/createreferralsembedtoken.py,sha256=wu1piQus6oCum3m8etYP6zKKy6pks3pj36x_04Hbfp8,19414
80
81
  dub/models/operations/createtag.py,sha256=g0iRXZ4_w-608SLWjU4SvI4paKVpNehvJVYeoWm4NZc,1479
@@ -91,18 +92,18 @@ dub/models/operations/getlinkscount.py,sha256=PR5EPwhjTTpnlPnWqZX42U7HIT7wtygtIF
91
92
  dub/models/operations/getqrcode.py,sha256=ynCPJc8vy_QEt5FP8OU2s-u6UIt1BhmFSNZC-XPmO4I,3848
92
93
  dub/models/operations/gettags.py,sha256=c9p_JrHFnTDJURyR5iiKFKpXFHlzJDt3R5X1U-anyYg,2664
93
94
  dub/models/operations/getworkspace.py,sha256=V4-NfsEg3M1BTeoE13sDyazefb2_kI4yFxnzgvHPv4s,625
94
- dub/models/operations/listcommissions.py,sha256=u0Qggw_eE76vgYogAhJ3gLidukT2As2zpPBTu2YkAS8,14493
95
+ dub/models/operations/listcommissions.py,sha256=66DflUWCKuK1Bv_li2jeya1qV_BiX5IsozhpT5dnq60,14897
95
96
  dub/models/operations/listdomains.py,sha256=gbQrJyBIvTGKSeqJo0Jb08iE44Xu39NS9zbfetx4p-s,1936
96
- dub/models/operations/listevents.py,sha256=7uU9cbHk5Ewwxl4rwGqBwHitevKQ7pkEbHel1yrI8r8,19476
97
+ dub/models/operations/listevents.py,sha256=AZcFROo0lsUuqLcjCN1S3I50zlmWCywKMWRKkaUEHoA,19812
97
98
  dub/models/operations/listfolders.py,sha256=5FGf62ZTjquVXjq5axlzQgYGfEnrEwDn8QLlgGH_7jQ,1209
98
- dub/models/operations/listpartners.py,sha256=dmI9WmrAFa1SeSap_PL37PfsBfpUbgvtX9NkbLxcf_4,18253
99
+ dub/models/operations/listpartners.py,sha256=3jNF6-pUd_6p72QuQreFDC2Xy33pmKAiob52r-qS_sE,21447
99
100
  dub/models/operations/registerdomain.py,sha256=fjozn1tFU-cNarHdAqN_flQoGAE498ob-f4A2bIAiOc,2058
100
- dub/models/operations/retrieveanalytics.py,sha256=WR-GSzM_tCJLL9hzJmjyUJdT1qKEQ5IsxT2W58qLwy4,20814
101
- dub/models/operations/retrievelinks.py,sha256=kuMoY11IcxC0B2suLFqUzhKU9IQnj_6nFotCkHpfmfo,3063
102
- dub/models/operations/retrievepartneranalytics.py,sha256=up_lKTeJBLQBmVaPOU9r06t-TysfnePx9eM5h6sFci4,5328
101
+ dub/models/operations/retrieveanalytics.py,sha256=p21QifcOOt6C0GWkRfp8-yWJornspT9W33oMDeXRiTU,21216
102
+ dub/models/operations/retrievelinks.py,sha256=UKHBX74DNOKHxGi5SoT9j6vc8-SUPmob1qWApvS2PTc,4592
103
+ dub/models/operations/retrievepartneranalytics.py,sha256=4bbue9Ef8qW0ioDkiMSpoXjyfOT5Z--ZORtj8GGOoCQ,6756
103
104
  dub/models/operations/tracklead.py,sha256=J6KcI7SS6Saa58PWZP0sYLsL0cdpW307v5UMeEfXn4k,11991
104
105
  dub/models/operations/tracksale.py,sha256=F604McUWJ-cjNeXDV-bvUKD7pEnsbOUdbzTsWt8vfFk,11172
105
- dub/models/operations/updatecommission.py,sha256=N_okp7jc6jqI4CnGRvTEKTw-QPb5DEwGVGfKmOSRQrY,11019
106
+ dub/models/operations/updatecommission.py,sha256=LqMCCQKAHAJNdWvyg91TbjYWveW0Gg-c3RqGpYHsFLU,11253
106
107
  dub/models/operations/updatecustomer.py,sha256=zEX_PDLybrFOFn7dqNjhEUsWnj92graAKnmedeTPb5E,13996
107
108
  dub/models/operations/updatedomain.py,sha256=rexCga7uNxgBZLPiCMcaudc2cQGB0E_qX2HI0DgG_3M,4519
108
109
  dub/models/operations/updatefolder.py,sha256=d1PFkkQ-xApd22N0weWZ6FIfyJ8ZPH2xuIm5lFC0YKw,2794
@@ -111,13 +112,13 @@ dub/models/operations/updatetag.py,sha256=_cQx77PnR9Jqz9xJ3q3ZwQwpntSibcnlkFFcRb
111
112
  dub/models/operations/updateworkspace.py,sha256=CKxZZGfgJJeKgWIllyBGmQIPjgfxF0BQMRxNu-c91is,2429
112
113
  dub/models/operations/upsertlink.py,sha256=Wli0fSeYDCa7vX9MbAeAFj0GA32ae2RBQGqrgnDA_7U,17331
113
114
  dub/models/operations/upsertpartnerlink.py,sha256=Z0xtZHGzePne4wM2XaouR8f_pJrHA6avCmczxEo-9p0,17091
114
- dub/partners.py,sha256=tnvoudR8uE83lu5EbNGrNOSxXE5QPxkbJx7JndRYKGM,73061
115
+ dub/partners.py,sha256=D3svY-Q_6vWZYY88-SS74Jy6_GKj2TOBBMkIAbOlDM8,84933
115
116
  dub/py.typed,sha256=zrp19r0G21lr2yRiMC0f8MFkQFGj9wMpSbboePMg8KM,59
116
- dub/qr_codes.py,sha256=Ir924ClQQOKFkOnDpCTsR8_GKAlXtBt5HGSvAnZojcg,11576
117
+ dub/qr_codes.py,sha256=l1v6zB9DFJM3P0-jGzdHUvEXAsQuhzmtBnTVarTWzto,11556
117
118
  dub/sdk.py,sha256=5CYWxNW6k-XRskdIwLZ_xhpXtGi8rXgfx_aB0RM7Wtg,8127
118
119
  dub/sdkconfiguration.py,sha256=2aIgzM94TIYQe5zkQmHhDsdlxJdV6cfhWX0pspYMHow,1605
119
- dub/tags.py,sha256=mVsJpmBAr8ju1vmfcwDIfkjk0_zZ06ev0P5TpeAXjEY,47227
120
- dub/track.py,sha256=-bgoyMOB_VWFR9PA5-DuVVLpHtuIzc-12BDbnfqKnus,24518
120
+ dub/tags.py,sha256=Bw0JRT6Wn6dBwG-eQmNON7KXL34Yg3F6ZgONH0kN7XQ,46947
121
+ dub/track.py,sha256=B05w47VaQaecw3WHvqu8Q5Bjr9htQxxmniIKFVz7KHs,24318
121
122
  dub/types/__init__.py,sha256=RArOwSgeeTIva6h-4ttjXwMUeCkz10nAFBL9D-QljI4,377
122
123
  dub/types/basemodel.py,sha256=L79WXvTECbSqaJzs8D3ud_KdIWkU7Cx2wbohDAktE9E,1127
123
124
  dub/utils/__init__.py,sha256=88uXYJ3d7C29IuuhPMgWfu4i00tNl555vaqrLA61hds,5766
@@ -131,14 +132,14 @@ dub/utils/logger.py,sha256=9nUtlKHo3RFsIVyMw5jq3wEKZMVwHnZMSc6xLp-otC0,520
131
132
  dub/utils/metadata.py,sha256=Per2KFXXOqOtoUWXrlIfjrSrBg199KrRW0nKQDgHIBU,3136
132
133
  dub/utils/queryparams.py,sha256=MTK6inMS1_WwjmMJEJmAn67tSHHJyarpdGRlorRHEtI,5899
133
134
  dub/utils/requestbodies.py,sha256=ySjEyjcLi731LNUahWvLOrES2HihuA8VrOJx4eQ7Qzg,2101
134
- dub/utils/retries.py,sha256=6yhfZifqIat9i76xF0lTR2jLj1IN9BNGyqqxATlEFPU,6348
135
+ dub/utils/retries.py,sha256=stPJEFtmK8gOM6aT0DpEJp9Z39oXX1-8I69jpa2n3Ww,8130
135
136
  dub/utils/security.py,sha256=ktep3HKwbFs-MLxUYTM8Jd4v-ZBum5_Z0u1PFIdYBX0,5516
136
137
  dub/utils/serializers.py,sha256=Hndks5M_rJXVub_N5lu0gKZQUoEmWrn6PN7R-0HwvOE,5999
137
- dub/utils/unmarshal_json_response.py,sha256=FcgE-IWPMAHWDdw6QEZeLeD5G_rflScZbT10T_IIJ0U,586
138
+ dub/utils/unmarshal_json_response.py,sha256=bq-O_sDTisDOcbllFkpH0hAUh0nkOvc-ORF_73pUgr8,875
138
139
  dub/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
139
140
  dub/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
140
- dub/workspaces.py,sha256=kYL8Q2ekB82xrQXiM1y603A3Ao9GQzMArVt3sn0RQuQ,24381
141
- dub-0.32.0.dist-info/METADATA,sha256=NLfr94FdVK62lNOjeI4fd8BFrmk1bpiXeUE5_91NvYw,30753
142
- dub-0.32.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
143
- dub-0.32.0.dist-info/licenses/LICENSE,sha256=kc_aZ6YHHcdSsRy-mGsT0Ehji0ZgR_zevXiUt05V2KY,1079
144
- dub-0.32.0.dist-info/RECORD,,
141
+ dub/workspaces.py,sha256=KuklneWZXoJLEyKjdcUysm8XLPU9e8WetCWm-lIV03U,24181
142
+ dub-0.33.0.dist-info/METADATA,sha256=OgLt0N5sH4vReiamHukeUImS_GP_yNc9xkl6BXKX9Ks,30449
143
+ dub-0.33.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
144
+ dub-0.33.0.dist-info/licenses/LICENSE,sha256=kc_aZ6YHHcdSsRy-mGsT0Ehji0ZgR_zevXiUt05V2KY,1079
145
+ dub-0.33.0.dist-info/RECORD,,