dub 0.26.10__tar.gz → 0.26.12__tar.gz

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 (144) hide show
  1. {dub-0.26.10 → dub-0.26.12}/PKG-INFO +1 -1
  2. {dub-0.26.10 → dub-0.26.12}/pyproject.toml +1 -1
  3. {dub-0.26.10 → dub-0.26.12}/src/dub/_version.py +3 -3
  4. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/__init__.py +1 -13
  5. dub-0.26.12/src/dub/models/components/analyticscities.py +47 -0
  6. dub-0.26.12/src/dub/models/components/analyticscountries.py +52 -0
  7. dub-0.26.12/src/dub/models/components/analyticsregions.py +50 -0
  8. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/countrycode.py +1 -1
  9. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/saleevent.py +2 -2
  10. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/workspaceschema.py +5 -0
  11. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/createpartner.py +24 -28
  12. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/createpartnerlink.py +0 -5
  13. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/createreferralsembedtoken.py +24 -26
  14. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/listevents.py +2 -2
  15. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/retrieveanalytics.py +2 -2
  16. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/retrievelinks.py +0 -7
  17. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/retrievepartneranalytics.py +0 -9
  18. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/tracksale.py +14 -14
  19. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/upsertpartnerlink.py +0 -5
  20. dub-0.26.10/src/dub/models/components/analyticscities.py +0 -303
  21. dub-0.26.10/src/dub/models/components/analyticscountries.py +0 -307
  22. dub-0.26.10/src/dub/models/components/analyticsregions.py +0 -305
  23. {dub-0.26.10 → dub-0.26.12}/LICENSE +0 -0
  24. {dub-0.26.10 → dub-0.26.12}/README-PYPI.md +0 -0
  25. {dub-0.26.10 → dub-0.26.12}/py.typed +0 -0
  26. {dub-0.26.10 → dub-0.26.12}/src/dub/__init__.py +0 -0
  27. {dub-0.26.10 → dub-0.26.12}/src/dub/_hooks/__init__.py +0 -0
  28. {dub-0.26.10 → dub-0.26.12}/src/dub/_hooks/registration.py +0 -0
  29. {dub-0.26.10 → dub-0.26.12}/src/dub/_hooks/sdkhooks.py +0 -0
  30. {dub-0.26.10 → dub-0.26.12}/src/dub/_hooks/types.py +0 -0
  31. {dub-0.26.10 → dub-0.26.12}/src/dub/analytics.py +0 -0
  32. {dub-0.26.10 → dub-0.26.12}/src/dub/basesdk.py +0 -0
  33. {dub-0.26.10 → dub-0.26.12}/src/dub/commissions.py +0 -0
  34. {dub-0.26.10 → dub-0.26.12}/src/dub/customers.py +0 -0
  35. {dub-0.26.10 → dub-0.26.12}/src/dub/domains.py +0 -0
  36. {dub-0.26.10 → dub-0.26.12}/src/dub/embed_tokens.py +0 -0
  37. {dub-0.26.10 → dub-0.26.12}/src/dub/events.py +0 -0
  38. {dub-0.26.10 → dub-0.26.12}/src/dub/folders.py +0 -0
  39. {dub-0.26.10 → dub-0.26.12}/src/dub/httpclient.py +0 -0
  40. {dub-0.26.10 → dub-0.26.12}/src/dub/links.py +0 -0
  41. {dub-0.26.10 → dub-0.26.12}/src/dub/models/__init__.py +0 -0
  42. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/analyticsbrowsers.py +0 -0
  43. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/analyticscontinents.py +0 -0
  44. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/analyticscount.py +0 -0
  45. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/analyticsdevices.py +0 -0
  46. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/analyticsos.py +0 -0
  47. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/analyticsreferers.py +0 -0
  48. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/analyticsrefererurls.py +0 -0
  49. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/analyticstimeseries.py +0 -0
  50. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/analyticstoplinks.py +0 -0
  51. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/analyticstopurls.py +0 -0
  52. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/analyticstriggers.py +0 -0
  53. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/clickevent.py +0 -0
  54. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/continentcode.py +0 -0
  55. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/domainschema.py +0 -0
  56. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/folderschema.py +0 -0
  57. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/leadcreatedevent.py +0 -0
  58. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/leadevent.py +0 -0
  59. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/linkclickedevent.py +0 -0
  60. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/linkerrorschema.py +0 -0
  61. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/linkgeotargeting.py +0 -0
  62. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/linkschema.py +0 -0
  63. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/linkwebhookevent.py +0 -0
  64. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/partneranalyticscount.py +0 -0
  65. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/partneranalyticstimeseries.py +0 -0
  66. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/partneranalyticstoplinks.py +0 -0
  67. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/partnerenrolledevent.py +0 -0
  68. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/salecreatedevent.py +0 -0
  69. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/security.py +0 -0
  70. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/tagschema.py +0 -0
  71. {dub-0.26.10 → dub-0.26.12}/src/dub/models/components/webhookevent.py +0 -0
  72. {dub-0.26.10 → dub-0.26.12}/src/dub/models/errors/__init__.py +0 -0
  73. {dub-0.26.10 → dub-0.26.12}/src/dub/models/errors/badrequest.py +0 -0
  74. {dub-0.26.10 → dub-0.26.12}/src/dub/models/errors/conflict.py +0 -0
  75. {dub-0.26.10 → dub-0.26.12}/src/dub/models/errors/forbidden.py +0 -0
  76. {dub-0.26.10 → dub-0.26.12}/src/dub/models/errors/internalservererror.py +0 -0
  77. {dub-0.26.10 → dub-0.26.12}/src/dub/models/errors/inviteexpired.py +0 -0
  78. {dub-0.26.10 → dub-0.26.12}/src/dub/models/errors/notfound.py +0 -0
  79. {dub-0.26.10 → dub-0.26.12}/src/dub/models/errors/ratelimitexceeded.py +0 -0
  80. {dub-0.26.10 → dub-0.26.12}/src/dub/models/errors/sdkerror.py +0 -0
  81. {dub-0.26.10 → dub-0.26.12}/src/dub/models/errors/unauthorized.py +0 -0
  82. {dub-0.26.10 → dub-0.26.12}/src/dub/models/errors/unprocessableentity.py +0 -0
  83. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/__init__.py +0 -0
  84. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/bulkcreatelinks.py +0 -0
  85. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/bulkdeletelinks.py +0 -0
  86. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/bulkupdatelinks.py +0 -0
  87. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/checkdomainstatus.py +0 -0
  88. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/createcustomer.py +0 -0
  89. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/createdomain.py +0 -0
  90. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/createfolder.py +0 -0
  91. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/createlink.py +0 -0
  92. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/createtag.py +0 -0
  93. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/deletecustomer.py +0 -0
  94. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/deletedomain.py +0 -0
  95. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/deletefolder.py +0 -0
  96. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/deletelink.py +0 -0
  97. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/deletetag.py +0 -0
  98. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/getcustomer.py +0 -0
  99. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/getcustomers.py +0 -0
  100. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/getlinkinfo.py +0 -0
  101. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/getlinks.py +0 -0
  102. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/getlinkscount.py +0 -0
  103. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/getqrcode.py +0 -0
  104. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/gettags.py +0 -0
  105. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/getworkspace.py +0 -0
  106. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/listcommissions.py +0 -0
  107. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/listdomains.py +0 -0
  108. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/listfolders.py +0 -0
  109. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/registerdomain.py +0 -0
  110. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/tracklead.py +9 -9
  111. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/updatecommission.py +0 -0
  112. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/updatecustomer.py +0 -0
  113. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/updatedomain.py +0 -0
  114. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/updatefolder.py +0 -0
  115. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/updatelink.py +0 -0
  116. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/updatetag.py +0 -0
  117. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/updateworkspace.py +0 -0
  118. {dub-0.26.10 → dub-0.26.12}/src/dub/models/operations/upsertlink.py +0 -0
  119. {dub-0.26.10 → dub-0.26.12}/src/dub/partners.py +0 -0
  120. {dub-0.26.10 → dub-0.26.12}/src/dub/py.typed +0 -0
  121. {dub-0.26.10 → dub-0.26.12}/src/dub/qr_codes.py +0 -0
  122. {dub-0.26.10 → dub-0.26.12}/src/dub/sdk.py +0 -0
  123. {dub-0.26.10 → dub-0.26.12}/src/dub/sdkconfiguration.py +0 -0
  124. {dub-0.26.10 → dub-0.26.12}/src/dub/tags.py +0 -0
  125. {dub-0.26.10 → dub-0.26.12}/src/dub/track.py +0 -0
  126. {dub-0.26.10 → dub-0.26.12}/src/dub/types/__init__.py +0 -0
  127. {dub-0.26.10 → dub-0.26.12}/src/dub/types/basemodel.py +0 -0
  128. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/__init__.py +0 -0
  129. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/annotations.py +0 -0
  130. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/datetimes.py +0 -0
  131. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/enums.py +0 -0
  132. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/eventstreaming.py +0 -0
  133. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/forms.py +0 -0
  134. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/headers.py +0 -0
  135. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/logger.py +0 -0
  136. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/metadata.py +0 -0
  137. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/queryparams.py +0 -0
  138. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/requestbodies.py +0 -0
  139. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/retries.py +0 -0
  140. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/security.py +0 -0
  141. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/serializers.py +0 -0
  142. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/url.py +0 -0
  143. {dub-0.26.10 → dub-0.26.12}/src/dub/utils/values.py +0 -0
  144. {dub-0.26.10 → dub-0.26.12}/src/dub/workspaces.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dub
3
- Version: 0.26.10
3
+ Version: 0.26.12
4
4
  Summary: Python Client SDK Generated by Speakeasy
5
5
  Author: Speakeasy
6
6
  Requires-Python: >=3.9.2
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dub"
3
- version = "0.26.10"
3
+ version = "0.26.12"
4
4
  description = "Python Client SDK Generated by Speakeasy"
5
5
  authors = [{ name = "Speakeasy" },]
6
6
  readme = "README-PYPI.md"
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "dub"
6
- __version__: str = "0.26.10"
6
+ __version__: str = "0.26.12"
7
7
  __openapi_doc_version__: str = "0.0.1"
8
- __gen_version__: str = "2.634.1"
9
- __user_agent__: str = "speakeasy-sdk/python 0.26.10 2.634.1 0.0.1 dub"
8
+ __gen_version__: str = "2.644.1"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.26.12 2.644.1 0.0.1 dub"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -5,11 +5,7 @@ from importlib import import_module
5
5
 
6
6
  if TYPE_CHECKING:
7
7
  from .analyticsbrowsers import AnalyticsBrowsers, AnalyticsBrowsersTypedDict
8
- from .analyticscities import (
9
- AnalyticsCities,
10
- AnalyticsCitiesCountry,
11
- AnalyticsCitiesTypedDict,
12
- )
8
+ from .analyticscities import AnalyticsCities, AnalyticsCitiesTypedDict
13
9
  from .analyticscontinents import (
14
10
  AnalyticsContinents,
15
11
  AnalyticsContinentsTypedDict,
@@ -20,7 +16,6 @@ if TYPE_CHECKING:
20
16
  AnalyticsCountries,
21
17
  AnalyticsCountriesTypedDict,
22
18
  City,
23
- Country,
24
19
  Region,
25
20
  )
26
21
  from .analyticsdevices import AnalyticsDevices, AnalyticsDevicesTypedDict
@@ -33,7 +28,6 @@ if TYPE_CHECKING:
33
28
  from .analyticsregions import (
34
29
  AnalyticsRegions,
35
30
  AnalyticsRegionsCity,
36
- AnalyticsRegionsCountry,
37
31
  AnalyticsRegionsTypedDict,
38
32
  )
39
33
  from .analyticstimeseries import AnalyticsTimeseries, AnalyticsTimeseriesTypedDict
@@ -216,7 +210,6 @@ __all__ = [
216
210
  "AnalyticsBrowsers",
217
211
  "AnalyticsBrowsersTypedDict",
218
212
  "AnalyticsCities",
219
- "AnalyticsCitiesCountry",
220
213
  "AnalyticsCitiesTypedDict",
221
214
  "AnalyticsContinents",
222
215
  "AnalyticsContinentsTypedDict",
@@ -234,7 +227,6 @@ __all__ = [
234
227
  "AnalyticsReferersTypedDict",
235
228
  "AnalyticsRegions",
236
229
  "AnalyticsRegionsCity",
237
- "AnalyticsRegionsCountry",
238
230
  "AnalyticsRegionsTypedDict",
239
231
  "AnalyticsTimeseries",
240
232
  "AnalyticsTimeseriesTypedDict",
@@ -257,7 +249,6 @@ __all__ = [
257
249
  "Color",
258
250
  "Continent",
259
251
  "ContinentCode",
260
- "Country",
261
252
  "CountryCode",
262
253
  "Customer",
263
254
  "CustomerTypedDict",
@@ -402,7 +393,6 @@ _dynamic_imports: dict[str, str] = {
402
393
  "AnalyticsBrowsers": ".analyticsbrowsers",
403
394
  "AnalyticsBrowsersTypedDict": ".analyticsbrowsers",
404
395
  "AnalyticsCities": ".analyticscities",
405
- "AnalyticsCitiesCountry": ".analyticscities",
406
396
  "AnalyticsCitiesTypedDict": ".analyticscities",
407
397
  "AnalyticsContinents": ".analyticscontinents",
408
398
  "AnalyticsContinentsTypedDict": ".analyticscontinents",
@@ -412,7 +402,6 @@ _dynamic_imports: dict[str, str] = {
412
402
  "AnalyticsCountries": ".analyticscountries",
413
403
  "AnalyticsCountriesTypedDict": ".analyticscountries",
414
404
  "City": ".analyticscountries",
415
- "Country": ".analyticscountries",
416
405
  "Region": ".analyticscountries",
417
406
  "AnalyticsDevices": ".analyticsdevices",
418
407
  "AnalyticsDevicesTypedDict": ".analyticsdevices",
@@ -424,7 +413,6 @@ _dynamic_imports: dict[str, str] = {
424
413
  "AnalyticsRefererUrlsTypedDict": ".analyticsrefererurls",
425
414
  "AnalyticsRegions": ".analyticsregions",
426
415
  "AnalyticsRegionsCity": ".analyticsregions",
427
- "AnalyticsRegionsCountry": ".analyticsregions",
428
416
  "AnalyticsRegionsTypedDict": ".analyticsregions",
429
417
  "AnalyticsTimeseries": ".analyticstimeseries",
430
418
  "AnalyticsTimeseriesTypedDict": ".analyticstimeseries",
@@ -0,0 +1,47 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from dub.types import BaseModel
5
+ import pydantic
6
+ from typing import Optional
7
+ from typing_extensions import Annotated, NotRequired, TypedDict
8
+
9
+
10
+ class AnalyticsCitiesTypedDict(TypedDict):
11
+ country: str
12
+ r"""The 2-letter ISO 3166-1 country code of the country where this city is located. Learn more: https://d.to/geo"""
13
+ region: str
14
+ r"""The 2-letter ISO 3166-2 region code representing the region associated with the location of the user."""
15
+ city: str
16
+ r"""The name of the city"""
17
+ clicks: NotRequired[float]
18
+ r"""The number of clicks from this city"""
19
+ leads: NotRequired[float]
20
+ r"""The number of leads from this city"""
21
+ sales: NotRequired[float]
22
+ r"""The number of sales from this city"""
23
+ sale_amount: NotRequired[float]
24
+ r"""The total amount of sales from this city, in cents"""
25
+
26
+
27
+ class AnalyticsCities(BaseModel):
28
+ country: str
29
+ r"""The 2-letter ISO 3166-1 country code of the country where this city is located. Learn more: https://d.to/geo"""
30
+
31
+ region: str
32
+ r"""The 2-letter ISO 3166-2 region code representing the region associated with the location of the user."""
33
+
34
+ city: str
35
+ r"""The name of the city"""
36
+
37
+ clicks: Optional[float] = 0
38
+ r"""The number of clicks from this city"""
39
+
40
+ leads: Optional[float] = 0
41
+ r"""The number of leads from this city"""
42
+
43
+ sales: Optional[float] = 0
44
+ r"""The number of sales from this city"""
45
+
46
+ sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
47
+ r"""The total amount of sales from this city, in cents"""
@@ -0,0 +1,52 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from dub.types import BaseModel
5
+ from enum import Enum
6
+ import pydantic
7
+ from typing import Optional
8
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
+
10
+
11
+ class Region(str, Enum):
12
+ WILDCARD_ = "*"
13
+
14
+
15
+ class City(str, Enum):
16
+ WILDCARD_ = "*"
17
+
18
+
19
+ class AnalyticsCountriesTypedDict(TypedDict):
20
+ country: str
21
+ r"""The 2-letter ISO 3166-1 country code of the country. Learn more: https://d.to/geo"""
22
+ region: NotRequired[Region]
23
+ city: NotRequired[City]
24
+ clicks: NotRequired[float]
25
+ r"""The number of clicks from this country"""
26
+ leads: NotRequired[float]
27
+ r"""The number of leads from this country"""
28
+ sales: NotRequired[float]
29
+ r"""The number of sales from this country"""
30
+ sale_amount: NotRequired[float]
31
+ r"""The total amount of sales from this country, in cents"""
32
+
33
+
34
+ class AnalyticsCountries(BaseModel):
35
+ country: str
36
+ r"""The 2-letter ISO 3166-1 country code of the country. Learn more: https://d.to/geo"""
37
+
38
+ region: Optional[Region] = Region.WILDCARD_
39
+
40
+ city: Optional[City] = City.WILDCARD_
41
+
42
+ clicks: Optional[float] = 0
43
+ r"""The number of clicks from this country"""
44
+
45
+ leads: Optional[float] = 0
46
+ r"""The number of leads from this country"""
47
+
48
+ sales: Optional[float] = 0
49
+ r"""The number of sales from this country"""
50
+
51
+ sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
52
+ r"""The total amount of sales from this country, in cents"""
@@ -0,0 +1,50 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from dub.types import BaseModel
5
+ from enum import Enum
6
+ import pydantic
7
+ from typing import Optional
8
+ from typing_extensions import Annotated, NotRequired, TypedDict
9
+
10
+
11
+ class AnalyticsRegionsCity(str, Enum):
12
+ WILDCARD_ = "*"
13
+
14
+
15
+ class AnalyticsRegionsTypedDict(TypedDict):
16
+ country: str
17
+ r"""The 2-letter ISO 3166-1 country code of the country. Learn more: https://d.to/geo"""
18
+ region: str
19
+ r"""The 2-letter ISO 3166-2 region code of the region."""
20
+ city: NotRequired[AnalyticsRegionsCity]
21
+ clicks: NotRequired[float]
22
+ r"""The number of clicks from this region"""
23
+ leads: NotRequired[float]
24
+ r"""The number of leads from this region"""
25
+ sales: NotRequired[float]
26
+ r"""The number of sales from this region"""
27
+ sale_amount: NotRequired[float]
28
+ r"""The total amount of sales from this region, in cents"""
29
+
30
+
31
+ class AnalyticsRegions(BaseModel):
32
+ country: str
33
+ r"""The 2-letter ISO 3166-1 country code of the country. Learn more: https://d.to/geo"""
34
+
35
+ region: str
36
+ r"""The 2-letter ISO 3166-2 region code of the region."""
37
+
38
+ city: Optional[AnalyticsRegionsCity] = AnalyticsRegionsCity.WILDCARD_
39
+
40
+ clicks: Optional[float] = 0
41
+ r"""The number of clicks from this region"""
42
+
43
+ leads: Optional[float] = 0
44
+ r"""The number of leads from this region"""
45
+
46
+ sales: Optional[float] = 0
47
+ r"""The number of sales from this region"""
48
+
49
+ sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
50
+ r"""The total amount of sales from this region, in cents"""
@@ -5,7 +5,7 @@ from enum import Enum
5
5
 
6
6
 
7
7
  class CountryCode(str, Enum):
8
- r"""The country to retrieve analytics for."""
8
+ r"""The country to retrieve analytics for. Must be passed as a 2-letter ISO 3166-1 country code. Learn more: https://d.to/geo"""
9
9
 
10
10
  AF = "AF"
11
11
  AL = "AL"
@@ -1217,7 +1217,7 @@ class PaymentProcessor(str, Enum):
1217
1217
 
1218
1218
  class SaleTypedDict(TypedDict):
1219
1219
  amount: int
1220
- r"""The amount of the sale in cents."""
1220
+ r"""The amount of the sale in cents (for all two-decimal currencies). If the sale is in a zero-decimal currency, pass the full integer value (e.g. `1437` JPY). Learn more: https://d.to/currency"""
1221
1221
  payment_processor: PaymentProcessor
1222
1222
  r"""The payment processor via which the sale was made."""
1223
1223
  invoice_id: NotRequired[Nullable[str]]
@@ -1226,7 +1226,7 @@ class SaleTypedDict(TypedDict):
1226
1226
 
1227
1227
  class Sale(BaseModel):
1228
1228
  amount: int
1229
- r"""The amount of the sale in cents."""
1229
+ r"""The amount of the sale in cents (for all two-decimal currencies). If the sale is in a zero-decimal currency, pass the full integer value (e.g. `1437` JPY). Learn more: https://d.to/currency"""
1230
1230
 
1231
1231
  payment_processor: Annotated[
1232
1232
  PaymentProcessor, pydantic.Field(alias="paymentProcessor")
@@ -127,6 +127,8 @@ class WorkspaceSchemaTypedDict(TypedDict):
127
127
  r"""The dollar amount of partner payouts processed in the current billing cycle (in cents)."""
128
128
  payouts_limit: float
129
129
  r"""The max dollar amount of partner payouts that can be processed within a billing cycle (in cents)."""
130
+ payout_fee: float
131
+ r"""The processing fee (in decimals) for partner payouts. For card payments, an additional 0.03 is added to the fee. Learn more: https://d.to/payouts"""
130
132
  domains_limit: float
131
133
  r"""The domains limit of the workspace."""
132
134
  tags_limit: float
@@ -212,6 +214,9 @@ class WorkspaceSchema(BaseModel):
212
214
  payouts_limit: Annotated[float, pydantic.Field(alias="payoutsLimit")]
213
215
  r"""The max dollar amount of partner payouts that can be processed within a billing cycle (in cents)."""
214
216
 
217
+ payout_fee: Annotated[float, pydantic.Field(alias="payoutFee")]
218
+ r"""The processing fee (in decimals) for partner payouts. For card payments, an additional 0.03 is added to the fee. Learn more: https://d.to/payouts"""
219
+
215
220
  domains_limit: Annotated[float, pydantic.Field(alias="domainsLimit")]
216
221
  r"""The domains limit of the workspace."""
217
222
 
@@ -10,7 +10,7 @@ from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
10
10
 
11
11
 
12
12
  class Country(str, Enum):
13
- r"""Country where the partner is based."""
13
+ r"""The partner's country of residence. Must be passed as a 2-letter ISO 3166-1 country code. Learn more: https://d.to/geo"""
14
14
 
15
15
  AF = "AF"
16
16
  AL = "AL"
@@ -560,50 +560,45 @@ class LinkProps(BaseModel):
560
560
 
561
561
 
562
562
  class CreatePartnerRequestBodyTypedDict(TypedDict):
563
- program_id: str
564
- r"""The ID of the program to create a partner for."""
565
- name: str
566
- r"""Full legal name of the partner."""
567
563
  email: str
568
- r"""Email for the partner in your system. Partners will be able to claim their profile by signing up to Dub Partners with this email."""
564
+ r"""The partner's email address. Partners will be able to claim their profile by signing up at `partners.dub.co` with this email."""
565
+ name: NotRequired[Nullable[str]]
566
+ r"""The partner's full name. If undefined, the partner's email will be used in lieu of their name (e.g. `john@acme.com`)"""
569
567
  username: NotRequired[Nullable[str]]
570
- r"""A unique username for the partner in your system (max 100 characters). This will be used to create a short link for the partner using your program's default domain. If not provided, Dub will try to generate a username from the partner's name or email."""
568
+ r"""The partner's unique username in your system (max 100 characters). This will be used to create a short link for the partner using your program's default domain. If not provided, Dub will try to generate a username from the partner's name or email."""
571
569
  image: NotRequired[Nullable[str]]
572
- r"""Avatar image for the partner – if not provided, a default avatar will be used."""
570
+ r"""The partner's avatar image. If not provided, a default avatar will be used."""
571
+ tenant_id: NotRequired[str]
572
+ r"""The partner's unique ID in your system. Useful for retrieving the partner's links and stats later on. If not provided, the partner will be created as a standalone partner."""
573
573
  country: NotRequired[Nullable[Country]]
574
- r"""Country where the partner is based."""
574
+ r"""The partner's country of residence. Must be passed as a 2-letter ISO 3166-1 country code. Learn more: https://d.to/geo"""
575
575
  description: NotRequired[Nullable[str]]
576
- r"""A brief description of the partner and their background."""
577
- tenant_id: NotRequired[str]
578
- r"""The ID of the partner in your system."""
576
+ r"""A brief description of the partner and their background. Max 5,000 characters."""
579
577
  link_props: NotRequired[LinkPropsTypedDict]
580
578
  r"""Additional properties that you can pass to the partner's short link. Will be used to override the default link properties for this partner."""
581
579
 
582
580
 
583
581
  class CreatePartnerRequestBody(BaseModel):
584
- program_id: Annotated[str, pydantic.Field(alias="programId")]
585
- r"""The ID of the program to create a partner for."""
586
-
587
- name: str
588
- r"""Full legal name of the partner."""
589
-
590
582
  email: str
591
- r"""Email for the partner in your system. Partners will be able to claim their profile by signing up to Dub Partners with this email."""
583
+ r"""The partner's email address. Partners will be able to claim their profile by signing up at `partners.dub.co` with this email."""
584
+
585
+ name: OptionalNullable[str] = UNSET
586
+ r"""The partner's full name. If undefined, the partner's email will be used in lieu of their name (e.g. `john@acme.com`)"""
592
587
 
593
588
  username: OptionalNullable[str] = UNSET
594
- r"""A unique username for the partner in your system (max 100 characters). This will be used to create a short link for the partner using your program's default domain. If not provided, Dub will try to generate a username from the partner's name or email."""
589
+ r"""The partner's unique username in your system (max 100 characters). This will be used to create a short link for the partner using your program's default domain. If not provided, Dub will try to generate a username from the partner's name or email."""
595
590
 
596
591
  image: OptionalNullable[str] = UNSET
597
- r"""Avatar image for the partner – if not provided, a default avatar will be used."""
592
+ r"""The partner's avatar image. If not provided, a default avatar will be used."""
593
+
594
+ tenant_id: Annotated[Optional[str], pydantic.Field(alias="tenantId")] = None
595
+ r"""The partner's unique ID in your system. Useful for retrieving the partner's links and stats later on. If not provided, the partner will be created as a standalone partner."""
598
596
 
599
597
  country: OptionalNullable[Country] = UNSET
600
- r"""Country where the partner is based."""
598
+ r"""The partner's country of residence. Must be passed as a 2-letter ISO 3166-1 country code. Learn more: https://d.to/geo"""
601
599
 
602
600
  description: OptionalNullable[str] = UNSET
603
- r"""A brief description of the partner and their background."""
604
-
605
- tenant_id: Annotated[Optional[str], pydantic.Field(alias="tenantId")] = None
606
- r"""The ID of the partner in your system."""
601
+ r"""A brief description of the partner and their background. Max 5,000 characters."""
607
602
 
608
603
  link_props: Annotated[Optional[LinkProps], pydantic.Field(alias="linkProps")] = None
609
604
  r"""Additional properties that you can pass to the partner's short link. Will be used to override the default link properties for this partner."""
@@ -611,14 +606,15 @@ class CreatePartnerRequestBody(BaseModel):
611
606
  @model_serializer(mode="wrap")
612
607
  def serialize_model(self, handler):
613
608
  optional_fields = [
609
+ "name",
614
610
  "username",
615
611
  "image",
612
+ "tenantId",
616
613
  "country",
617
614
  "description",
618
- "tenantId",
619
615
  "linkProps",
620
616
  ]
621
- nullable_fields = ["username", "image", "country", "description"]
617
+ nullable_fields = ["name", "username", "image", "country", "description"]
622
618
  null_default_fields = []
623
619
 
624
620
  serialized = handler(self)
@@ -308,8 +308,6 @@ class CreatePartnerLinkLinkProps(BaseModel):
308
308
 
309
309
 
310
310
  class CreatePartnerLinkRequestBodyTypedDict(TypedDict):
311
- program_id: str
312
- r"""The ID of the program that the partner is enrolled in."""
313
311
  partner_id: NotRequired[Nullable[str]]
314
312
  r"""The ID of the partner to create a link for. Will take precedence over `tenantId` if provided."""
315
313
  tenant_id: NotRequired[Nullable[str]]
@@ -325,9 +323,6 @@ class CreatePartnerLinkRequestBodyTypedDict(TypedDict):
325
323
 
326
324
 
327
325
  class CreatePartnerLinkRequestBody(BaseModel):
328
- program_id: Annotated[str, pydantic.Field(alias="programId")]
329
- r"""The ID of the program that the partner is enrolled in."""
330
-
331
326
  partner_id: Annotated[OptionalNullable[str], pydantic.Field(alias="partnerId")] = (
332
327
  UNSET
333
328
  )
@@ -10,7 +10,7 @@ from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
10
10
 
11
11
 
12
12
  class CreateReferralsEmbedTokenCountry(str, Enum):
13
- r"""Country where the partner is based."""
13
+ r"""The partner's country of residence. Must be passed as a 2-letter ISO 3166-1 country code. Learn more: https://d.to/geo"""
14
14
 
15
15
  AF = "AF"
16
16
  AL = "AL"
@@ -566,45 +566,45 @@ class CreateReferralsEmbedTokenLinkProps(BaseModel):
566
566
 
567
567
 
568
568
  class PartnerTypedDict(TypedDict):
569
- name: str
570
- r"""Full legal name of the partner."""
571
569
  email: str
572
- r"""Email for the partner in your system. Partners will be able to claim their profile by signing up to Dub Partners with this email."""
570
+ r"""The partner's email address. Partners will be able to claim their profile by signing up at `partners.dub.co` with this email."""
571
+ name: NotRequired[Nullable[str]]
572
+ r"""The partner's full name. If undefined, the partner's email will be used in lieu of their name (e.g. `john@acme.com`)"""
573
573
  username: NotRequired[Nullable[str]]
574
- r"""A unique username for the partner in your system (max 100 characters). This will be used to create a short link for the partner using your program's default domain. If not provided, Dub will try to generate a username from the partner's name or email."""
574
+ r"""The partner's unique username in your system (max 100 characters). This will be used to create a short link for the partner using your program's default domain. If not provided, Dub will try to generate a username from the partner's name or email."""
575
575
  image: NotRequired[Nullable[str]]
576
- r"""Avatar image for the partner – if not provided, a default avatar will be used."""
576
+ r"""The partner's avatar image. If not provided, a default avatar will be used."""
577
+ tenant_id: NotRequired[str]
578
+ r"""The partner's unique ID in your system. Useful for retrieving the partner's links and stats later on. If not provided, the partner will be created as a standalone partner."""
577
579
  country: NotRequired[Nullable[CreateReferralsEmbedTokenCountry]]
578
- r"""Country where the partner is based."""
580
+ r"""The partner's country of residence. Must be passed as a 2-letter ISO 3166-1 country code. Learn more: https://d.to/geo"""
579
581
  description: NotRequired[Nullable[str]]
580
- r"""A brief description of the partner and their background."""
581
- tenant_id: NotRequired[str]
582
- r"""The ID of the partner in your system."""
582
+ r"""A brief description of the partner and their background. Max 5,000 characters."""
583
583
  link_props: NotRequired[CreateReferralsEmbedTokenLinkPropsTypedDict]
584
584
  r"""Additional properties that you can pass to the partner's short link. Will be used to override the default link properties for this partner."""
585
585
 
586
586
 
587
587
  class Partner(BaseModel):
588
- name: str
589
- r"""Full legal name of the partner."""
590
-
591
588
  email: str
592
- r"""Email for the partner in your system. Partners will be able to claim their profile by signing up to Dub Partners with this email."""
589
+ r"""The partner's email address. Partners will be able to claim their profile by signing up at `partners.dub.co` with this email."""
590
+
591
+ name: OptionalNullable[str] = UNSET
592
+ r"""The partner's full name. If undefined, the partner's email will be used in lieu of their name (e.g. `john@acme.com`)"""
593
593
 
594
594
  username: OptionalNullable[str] = UNSET
595
- r"""A unique username for the partner in your system (max 100 characters). This will be used to create a short link for the partner using your program's default domain. If not provided, Dub will try to generate a username from the partner's name or email."""
595
+ r"""The partner's unique username in your system (max 100 characters). This will be used to create a short link for the partner using your program's default domain. If not provided, Dub will try to generate a username from the partner's name or email."""
596
596
 
597
597
  image: OptionalNullable[str] = UNSET
598
- r"""Avatar image for the partner – if not provided, a default avatar will be used."""
598
+ r"""The partner's avatar image. If not provided, a default avatar will be used."""
599
+
600
+ tenant_id: Annotated[Optional[str], pydantic.Field(alias="tenantId")] = None
601
+ r"""The partner's unique ID in your system. Useful for retrieving the partner's links and stats later on. If not provided, the partner will be created as a standalone partner."""
599
602
 
600
603
  country: OptionalNullable[CreateReferralsEmbedTokenCountry] = UNSET
601
- r"""Country where the partner is based."""
604
+ r"""The partner's country of residence. Must be passed as a 2-letter ISO 3166-1 country code. Learn more: https://d.to/geo"""
602
605
 
603
606
  description: OptionalNullable[str] = UNSET
604
- r"""A brief description of the partner and their background."""
605
-
606
- tenant_id: Annotated[Optional[str], pydantic.Field(alias="tenantId")] = None
607
- r"""The ID of the partner in your system."""
607
+ r"""A brief description of the partner and their background. Max 5,000 characters."""
608
608
 
609
609
  link_props: Annotated[
610
610
  Optional[CreateReferralsEmbedTokenLinkProps], pydantic.Field(alias="linkProps")
@@ -614,14 +614,15 @@ class Partner(BaseModel):
614
614
  @model_serializer(mode="wrap")
615
615
  def serialize_model(self, handler):
616
616
  optional_fields = [
617
+ "name",
617
618
  "username",
618
619
  "image",
620
+ "tenantId",
619
621
  "country",
620
622
  "description",
621
- "tenantId",
622
623
  "linkProps",
623
624
  ]
624
- nullable_fields = ["username", "image", "country", "description"]
625
+ nullable_fields = ["name", "username", "image", "country", "description"]
625
626
  null_default_fields = []
626
627
 
627
628
  serialized = handler(self)
@@ -650,15 +651,12 @@ class Partner(BaseModel):
650
651
 
651
652
 
652
653
  class CreateReferralsEmbedTokenRequestBodyTypedDict(TypedDict):
653
- program_id: str
654
654
  partner_id: NotRequired[str]
655
655
  tenant_id: NotRequired[str]
656
656
  partner: NotRequired[PartnerTypedDict]
657
657
 
658
658
 
659
659
  class CreateReferralsEmbedTokenRequestBody(BaseModel):
660
- program_id: Annotated[str, pydantic.Field(alias="programId")]
661
-
662
660
  partner_id: Annotated[Optional[str], pydantic.Field(alias="partnerId")] = None
663
661
 
664
662
  tenant_id: Annotated[Optional[str], pydantic.Field(alias="tenantId")] = None
@@ -115,7 +115,7 @@ class ListEventsRequestTypedDict(TypedDict):
115
115
  timezone: NotRequired[str]
116
116
  r"""The IANA time zone code for aligning timeseries granularity (e.g. America/New_York). Defaults to UTC."""
117
117
  country: NotRequired[components_countrycode.CountryCode]
118
- r"""The country to retrieve analytics for."""
118
+ r"""The country to retrieve analytics for. Must be passed as a 2-letter ISO 3166-1 country code. Learn more: https://d.to/geo"""
119
119
  city: NotRequired[str]
120
120
  r"""The city to retrieve analytics for."""
121
121
  region: NotRequired[str]
@@ -255,7 +255,7 @@ class ListEventsRequest(BaseModel):
255
255
  Optional[components_countrycode.CountryCode],
256
256
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
257
257
  ] = None
258
- r"""The country to retrieve analytics for."""
258
+ r"""The country to retrieve analytics for. Must be passed as a 2-letter ISO 3166-1 country code. Learn more: https://d.to/geo"""
259
259
 
260
260
  city: Annotated[
261
261
  Optional[str],
@@ -126,7 +126,7 @@ class RetrieveAnalyticsRequestTypedDict(TypedDict):
126
126
  timezone: NotRequired[str]
127
127
  r"""The IANA time zone code for aligning timeseries granularity (e.g. America/New_York). Defaults to UTC."""
128
128
  country: NotRequired[components_countrycode.CountryCode]
129
- r"""The country to retrieve analytics for."""
129
+ r"""The country to retrieve analytics for. Must be passed as a 2-letter ISO 3166-1 country code. Learn more: https://d.to/geo"""
130
130
  city: NotRequired[str]
131
131
  r"""The city to retrieve analytics for."""
132
132
  region: NotRequired[str]
@@ -265,7 +265,7 @@ class RetrieveAnalyticsRequest(BaseModel):
265
265
  Optional[components_countrycode.CountryCode],
266
266
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
267
267
  ] = None
268
- r"""The country to retrieve analytics for."""
268
+ r"""The country to retrieve analytics for. Must be passed as a 2-letter ISO 3166-1 country code. Learn more: https://d.to/geo"""
269
269
 
270
270
  city: Annotated[
271
271
  Optional[str],
@@ -9,18 +9,11 @@ from typing_extensions import Annotated, NotRequired, TypedDict
9
9
 
10
10
 
11
11
  class RetrieveLinksRequestTypedDict(TypedDict):
12
- program_id: str
13
12
  partner_id: NotRequired[str]
14
13
  tenant_id: NotRequired[str]
15
14
 
16
15
 
17
16
  class RetrieveLinksRequest(BaseModel):
18
- program_id: Annotated[
19
- str,
20
- pydantic.Field(alias="programId"),
21
- FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
22
- ]
23
-
24
17
  partner_id: Annotated[
25
18
  Optional[str],
26
19
  pydantic.Field(alias="partnerId"),
@@ -37,8 +37,6 @@ class RetrievePartnerAnalyticsQueryParamGroupBy(str, Enum):
37
37
 
38
38
 
39
39
  class RetrievePartnerAnalyticsRequestTypedDict(TypedDict):
40
- program_id: str
41
- r"""The ID of the program to retrieve analytics for."""
42
40
  partner_id: NotRequired[str]
43
41
  r"""The ID of the partner to retrieve analytics for."""
44
42
  tenant_id: NotRequired[str]
@@ -56,13 +54,6 @@ class RetrievePartnerAnalyticsRequestTypedDict(TypedDict):
56
54
 
57
55
 
58
56
  class RetrievePartnerAnalyticsRequest(BaseModel):
59
- program_id: Annotated[
60
- str,
61
- pydantic.Field(alias="programId"),
62
- FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
63
- ]
64
- r"""The ID of the program to retrieve analytics for."""
65
-
66
57
  partner_id: Annotated[
67
58
  Optional[str],
68
59
  pydantic.Field(alias="partnerId"),