dub 0.34.1__tar.gz → 0.35.0__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 (148) hide show
  1. {dub-0.34.1 → dub-0.35.0}/PKG-INFO +4 -8
  2. {dub-0.34.1 → dub-0.35.0}/README-PYPI.md +2 -6
  3. {dub-0.34.1 → dub-0.35.0}/pyproject.toml +2 -2
  4. {dub-0.34.1 → dub-0.35.0}/src/dub/_version.py +3 -3
  5. {dub-0.34.1 → dub-0.35.0}/src/dub/basesdk.py +20 -6
  6. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/__init__.py +108 -26
  7. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticsbrowsers.py +18 -1
  8. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticscities.py +18 -1
  9. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticscontinents.py +18 -1
  10. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticscount.py +18 -1
  11. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticscountries.py +20 -1
  12. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticsdevices.py +18 -1
  13. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticsos.py +18 -1
  14. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticsreferers.py +18 -1
  15. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticsrefererurls.py +18 -1
  16. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticsregions.py +18 -1
  17. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticstimeseries.py +18 -1
  18. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticstoplinks.py +16 -26
  19. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticstopurls.py +18 -1
  20. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/analyticstriggers.py +18 -1
  21. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/commissioncreatedevent.py +96 -64
  22. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/domainschema.py +31 -50
  23. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/folderschema.py +18 -19
  24. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/leadcreatedevent.py +151 -134
  25. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/linkclickedevent.py +57 -70
  26. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/linkschema.py +63 -64
  27. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/linkwebhookevent.py +43 -51
  28. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/partneranalyticscount.py +18 -1
  29. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/partneranalyticstimeseries.py +18 -1
  30. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/partneranalyticstoplinks.py +16 -27
  31. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/partnerapplicationsubmittedevent.py +42 -75
  32. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/partnerenrolledevent.py +477 -83
  33. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/salecreatedevent.py +152 -151
  34. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/badrequest.py +18 -1
  35. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/conflict.py +18 -1
  36. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/forbidden.py +18 -1
  37. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/internalservererror.py +18 -1
  38. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/inviteexpired.py +18 -1
  39. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/notfound.py +18 -1
  40. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/ratelimitexceeded.py +18 -1
  41. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/unauthorized.py +18 -1
  42. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/unprocessableentity.py +18 -1
  43. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/__init__.py +230 -19
  44. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/approvebountysubmission.py +71 -45
  45. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/banpartner.py +14 -19
  46. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/bulkcreatelinks.py +86 -87
  47. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/bulkupdatelinks.py +97 -82
  48. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/checkdomainstatus.py +1 -17
  49. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/createdomain.py +33 -34
  50. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/createfolder.py +18 -19
  51. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/createlink.py +86 -87
  52. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/createpartner.py +560 -168
  53. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/createpartnerlink.py +74 -85
  54. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/createreferralsembedtoken.py +99 -87
  55. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/createtag.py +18 -1
  56. dub-0.35.0/src/dub/models/operations/deactivatepartner.py +65 -0
  57. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/getcustomer.py +106 -105
  58. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/getcustomers.py +123 -105
  59. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/getlinkinfo.py +18 -1
  60. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/getlinks.py +36 -1
  61. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/getlinkscount.py +32 -1
  62. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/getqrcode.py +29 -1
  63. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/gettags.py +20 -1
  64. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/listbountysubmissions.py +63 -26
  65. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/listcommissions.py +129 -64
  66. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/listdomains.py +18 -1
  67. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/listevents.py +414 -389
  68. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/listfolders.py +18 -1
  69. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/listpartners.py +510 -84
  70. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/registerdomain.py +1 -17
  71. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/rejectbountysubmission.py +71 -26
  72. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/retrieveanalytics.py +65 -66
  73. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/retrievelinks.py +30 -19
  74. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/retrievepartneranalytics.py +25 -28
  75. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/tracklead.py +38 -83
  76. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/tracksale.py +52 -95
  77. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/updatecommission.py +126 -64
  78. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/updatecustomer.py +122 -131
  79. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/updatedomain.py +50 -35
  80. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/updatefolder.py +34 -19
  81. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/updatelink.py +101 -86
  82. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/updatetag.py +34 -1
  83. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/upsertlink.py +86 -87
  84. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/upsertpartnerlink.py +72 -78
  85. {dub-0.34.1 → dub-0.35.0}/src/dub/partners.py +288 -0
  86. {dub-0.34.1 → dub-0.35.0}/src/dub/sdk.py +0 -3
  87. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/__init__.py +10 -1
  88. dub-0.34.1/src/dub/models/components/workspaceschema.py +0 -328
  89. dub-0.34.1/src/dub/models/operations/getworkspace.py +0 -21
  90. dub-0.34.1/src/dub/models/operations/updateworkspace.py +0 -78
  91. dub-0.34.1/src/dub/workspaces.py +0 -561
  92. {dub-0.34.1 → dub-0.35.0}/LICENSE +0 -0
  93. {dub-0.34.1 → dub-0.35.0}/py.typed +0 -0
  94. {dub-0.34.1 → dub-0.35.0}/src/dub/__init__.py +0 -0
  95. {dub-0.34.1 → dub-0.35.0}/src/dub/_hooks/__init__.py +0 -0
  96. {dub-0.34.1 → dub-0.35.0}/src/dub/_hooks/registration.py +0 -0
  97. {dub-0.34.1 → dub-0.35.0}/src/dub/_hooks/sdkhooks.py +0 -0
  98. {dub-0.34.1 → dub-0.35.0}/src/dub/_hooks/types.py +0 -0
  99. {dub-0.34.1 → dub-0.35.0}/src/dub/analytics.py +0 -0
  100. {dub-0.34.1 → dub-0.35.0}/src/dub/bounties.py +0 -0
  101. {dub-0.34.1 → dub-0.35.0}/src/dub/commissions.py +0 -0
  102. {dub-0.34.1 → dub-0.35.0}/src/dub/customers.py +0 -0
  103. {dub-0.34.1 → dub-0.35.0}/src/dub/domains.py +0 -0
  104. {dub-0.34.1 → dub-0.35.0}/src/dub/embed_tokens.py +0 -0
  105. {dub-0.34.1 → dub-0.35.0}/src/dub/events.py +0 -0
  106. {dub-0.34.1 → dub-0.35.0}/src/dub/folders.py +0 -0
  107. {dub-0.34.1 → dub-0.35.0}/src/dub/httpclient.py +0 -0
  108. {dub-0.34.1 → dub-0.35.0}/src/dub/links.py +0 -0
  109. {dub-0.34.1 → dub-0.35.0}/src/dub/models/__init__.py +0 -0
  110. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/linkerrorschema.py +0 -0
  111. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/linktagschema.py +0 -0
  112. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/linktagschemaoutput.py +0 -0
  113. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/security.py +0 -0
  114. {dub-0.34.1 → dub-0.35.0}/src/dub/models/components/webhookevent.py +0 -0
  115. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/__init__.py +0 -0
  116. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/duberror.py +0 -0
  117. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/no_response_error.py +0 -0
  118. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/responsevalidationerror.py +0 -0
  119. {dub-0.34.1 → dub-0.35.0}/src/dub/models/errors/sdkerror.py +0 -0
  120. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/bulkdeletelinks.py +0 -0
  121. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/deletecustomer.py +0 -0
  122. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/deletedomain.py +0 -0
  123. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/deletefolder.py +0 -0
  124. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/deletelink.py +0 -0
  125. {dub-0.34.1 → dub-0.35.0}/src/dub/models/operations/deletetag.py +0 -0
  126. {dub-0.34.1 → dub-0.35.0}/src/dub/py.typed +0 -0
  127. {dub-0.34.1 → dub-0.35.0}/src/dub/qr_codes.py +0 -0
  128. {dub-0.34.1 → dub-0.35.0}/src/dub/sdkconfiguration.py +0 -0
  129. {dub-0.34.1 → dub-0.35.0}/src/dub/tags.py +0 -0
  130. {dub-0.34.1 → dub-0.35.0}/src/dub/track.py +0 -0
  131. {dub-0.34.1 → dub-0.35.0}/src/dub/types/__init__.py +0 -0
  132. {dub-0.34.1 → dub-0.35.0}/src/dub/types/basemodel.py +0 -0
  133. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/annotations.py +0 -0
  134. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/datetimes.py +0 -0
  135. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/enums.py +0 -0
  136. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/eventstreaming.py +0 -0
  137. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/forms.py +0 -0
  138. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/headers.py +0 -0
  139. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/logger.py +0 -0
  140. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/metadata.py +0 -0
  141. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/queryparams.py +0 -0
  142. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/requestbodies.py +0 -0
  143. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/retries.py +0 -0
  144. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/security.py +0 -0
  145. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/serializers.py +0 -0
  146. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/unmarshal_json_response.py +0 -0
  147. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/url.py +0 -0
  148. {dub-0.34.1 → dub-0.35.0}/src/dub/utils/values.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dub
3
- Version: 0.34.1
3
+ Version: 0.35.0
4
4
  Summary: Python Client SDK Generated by Speakeasy
5
5
  License-File: LICENSE
6
6
  Author: Speakeasy
7
- Requires-Python: >=3.9.2
7
+ Requires-Python: >=3.10
8
8
  Classifier: Programming Language :: Python :: 3
9
9
  Classifier: Programming Language :: Python :: 3.10
10
10
  Classifier: Programming Language :: Python :: 3.11
@@ -104,7 +104,7 @@ It's also possible to write a standalone Python script without needing to set up
104
104
  ```python
105
105
  #!/usr/bin/env -S uv run --script
106
106
  # /// script
107
- # requires-python = ">=3.9"
107
+ # requires-python = ">=3.10"
108
108
  # dependencies = [
109
109
  # "dub",
110
110
  # ]
@@ -345,6 +345,7 @@ asyncio.run(main())
345
345
  * [upsert_link](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#upsert_link) - Upsert a link for a partner
346
346
  * [analytics](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#analytics) - Retrieve analytics for a partner
347
347
  * [ban](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#ban) - Ban a partner
348
+ * [deactivate](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#deactivate) - Deactivate a partner
348
349
 
349
350
  ### [QRCodes](https://github.com/dubinc/dub-python/blob/master/docs/sdks/qrcodes/README.md)
350
351
 
@@ -362,11 +363,6 @@ asyncio.run(main())
362
363
  * [lead](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#lead) - Track a lead
363
364
  * [sale](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#sale) - Track a sale
364
365
 
365
- ### [Workspaces](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md)
366
-
367
- * [get](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#get) - Retrieve a workspace
368
- * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#update) - Update a workspace
369
-
370
366
  </details>
371
367
  <!-- End Available Resources and Operations [operations] -->
372
368
 
@@ -84,7 +84,7 @@ It's also possible to write a standalone Python script without needing to set up
84
84
  ```python
85
85
  #!/usr/bin/env -S uv run --script
86
86
  # /// script
87
- # requires-python = ">=3.9"
87
+ # requires-python = ">=3.10"
88
88
  # dependencies = [
89
89
  # "dub",
90
90
  # ]
@@ -325,6 +325,7 @@ asyncio.run(main())
325
325
  * [upsert_link](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#upsert_link) - Upsert a link for a partner
326
326
  * [analytics](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#analytics) - Retrieve analytics for a partner
327
327
  * [ban](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#ban) - Ban a partner
328
+ * [deactivate](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#deactivate) - Deactivate a partner
328
329
 
329
330
  ### [QRCodes](https://github.com/dubinc/dub-python/blob/master/docs/sdks/qrcodes/README.md)
330
331
 
@@ -342,11 +343,6 @@ asyncio.run(main())
342
343
  * [lead](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#lead) - Track a lead
343
344
  * [sale](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#sale) - Track a sale
344
345
 
345
- ### [Workspaces](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md)
346
-
347
- * [get](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#get) - Retrieve a workspace
348
- * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#update) - Update a workspace
349
-
350
346
  </details>
351
347
  <!-- End Available Resources and Operations [operations] -->
352
348
 
@@ -1,11 +1,11 @@
1
1
 
2
2
  [project]
3
3
  name = "dub"
4
- version = "0.34.1"
4
+ version = "0.35.0"
5
5
  description = "Python Client SDK Generated by Speakeasy"
6
6
  authors = [{ name = "Speakeasy" },]
7
7
  readme = "README-PYPI.md"
8
- requires-python = ">=3.9.2"
8
+ requires-python = ">=3.10"
9
9
  dependencies = [
10
10
  "httpcore >=1.0.9",
11
11
  "httpx >=0.28.1",
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "dub"
6
- __version__: str = "0.34.1"
6
+ __version__: str = "0.35.0"
7
7
  __openapi_doc_version__: str = "0.0.1"
8
- __gen_version__: str = "2.794.1"
9
- __user_agent__: str = "speakeasy-sdk/python 0.34.1 2.794.1 0.0.1 dub"
8
+ __gen_version__: str = "2.803.3"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.35.0 2.803.3 0.0.1 dub"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -4,7 +4,12 @@ from .sdkconfiguration import SDKConfiguration
4
4
  from dub import utils
5
5
  from dub._hooks import AfterErrorContext, AfterSuccessContext, BeforeRequestContext
6
6
  from dub.models import errors
7
- from dub.utils import RetryConfig, SerializedRequestBody, get_body_content
7
+ from dub.utils import (
8
+ RetryConfig,
9
+ SerializedRequestBody,
10
+ get_body_content,
11
+ run_sync_in_thread,
12
+ )
8
13
  import httpx
9
14
  from typing import Callable, List, Mapping, Optional, Tuple
10
15
  from urllib.parse import parse_qs, urlparse
@@ -308,7 +313,10 @@ class BaseSDK:
308
313
  async def do():
309
314
  http_res = None
310
315
  try:
311
- req = hooks.before_request(BeforeRequestContext(hook_ctx), request)
316
+ req = await run_sync_in_thread(
317
+ hooks.before_request, BeforeRequestContext(hook_ctx), request
318
+ )
319
+
312
320
  logger.debug(
313
321
  "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s",
314
322
  req.method,
@@ -322,7 +330,10 @@ class BaseSDK:
322
330
 
323
331
  http_res = await client.send(req, stream=stream)
324
332
  except Exception as e:
325
- _, e = hooks.after_error(AfterErrorContext(hook_ctx), None, e)
333
+ _, e = await run_sync_in_thread(
334
+ hooks.after_error, AfterErrorContext(hook_ctx), None, e
335
+ )
336
+
326
337
  if e is not None:
327
338
  logger.debug("Request Exception", exc_info=True)
328
339
  raise e
@@ -340,9 +351,10 @@ class BaseSDK:
340
351
  )
341
352
 
342
353
  if utils.match_status_codes(error_status_codes, http_res.status_code):
343
- result, err = hooks.after_error(
344
- AfterErrorContext(hook_ctx), http_res, None
354
+ result, err = await run_sync_in_thread(
355
+ hooks.after_error, AfterErrorContext(hook_ctx), http_res, None
345
356
  )
357
+
346
358
  if err is not None:
347
359
  logger.debug("Request Exception", exc_info=True)
348
360
  raise err
@@ -362,6 +374,8 @@ class BaseSDK:
362
374
  http_res = await do()
363
375
 
364
376
  if not utils.match_status_codes(error_status_codes, http_res.status_code):
365
- http_res = hooks.after_success(AfterSuccessContext(hook_ctx), http_res)
377
+ http_res = await run_sync_in_thread(
378
+ hooks.after_success, AfterSuccessContext(hook_ctx), http_res
379
+ )
366
380
 
367
381
  return http_res
@@ -144,13 +144,49 @@ if TYPE_CHECKING:
144
144
  )
145
145
  from .partnerenrolledevent import (
146
146
  BannedReason,
147
+ Constraints,
148
+ ConstraintsTypedDict,
149
+ Eight,
150
+ EightTypedDict,
151
+ Fields,
152
+ Fields1,
153
+ Fields1TypedDict,
154
+ Fields2,
155
+ Fields2TypedDict,
156
+ Fields3,
157
+ Fields3TypedDict,
158
+ FieldsConstraints,
159
+ FieldsConstraintsTypedDict,
160
+ FieldsOptions,
161
+ FieldsOptionsTypedDict,
162
+ FieldsType,
163
+ FieldsTypedDict,
164
+ Five,
165
+ FiveTypedDict,
166
+ Four,
167
+ FourTypedDict,
147
168
  Links,
148
169
  LinksTypedDict,
170
+ Options,
171
+ OptionsTypedDict,
149
172
  PartnerEnrolledEvent,
150
173
  PartnerEnrolledEventData,
151
174
  PartnerEnrolledEventDataTypedDict,
152
175
  PartnerEnrolledEventEvent,
176
+ PartnerEnrolledEventFieldsDataReferralFormData5Type,
177
+ PartnerEnrolledEventFieldsDataReferralFormData6Type,
178
+ PartnerEnrolledEventFieldsDataReferralFormData7Type,
179
+ PartnerEnrolledEventFieldsDataReferralFormData8Type,
180
+ PartnerEnrolledEventFieldsDataReferralFormDataType,
181
+ PartnerEnrolledEventFieldsDataType,
182
+ PartnerEnrolledEventFieldsType,
153
183
  PartnerEnrolledEventTypedDict,
184
+ ReferralFormData,
185
+ ReferralFormDataTypedDict,
186
+ Seven,
187
+ SevenTypedDict,
188
+ Six,
189
+ SixTypedDict,
154
190
  Status,
155
191
  )
156
192
  from .salecreatedevent import (
@@ -174,16 +210,6 @@ if TYPE_CHECKING:
174
210
  )
175
211
  from .security import Security, SecurityTypedDict
176
212
  from .webhookevent import WebhookEvent, WebhookEventTypedDict
177
- from .workspaceschema import (
178
- Domains,
179
- DomainsTypedDict,
180
- Plan,
181
- Role,
182
- Users,
183
- UsersTypedDict,
184
- WorkspaceSchema,
185
- WorkspaceSchemaTypedDict,
186
- )
187
213
 
188
214
  __all__ = [
189
215
  "AccessLevel",
@@ -237,6 +263,8 @@ __all__ = [
237
263
  "CommissionCreatedEventStatus",
238
264
  "CommissionCreatedEventType",
239
265
  "CommissionCreatedEventTypedDict",
266
+ "Constraints",
267
+ "ConstraintsTypedDict",
240
268
  "Continent",
241
269
  "Customer",
242
270
  "CustomerTypedDict",
@@ -244,12 +272,29 @@ __all__ = [
244
272
  "DataTypedDict",
245
273
  "DomainSchema",
246
274
  "DomainSchemaTypedDict",
247
- "Domains",
248
- "DomainsTypedDict",
275
+ "Eight",
276
+ "EightTypedDict",
249
277
  "Event",
250
278
  "EventTypedDict",
279
+ "Fields",
280
+ "Fields1",
281
+ "Fields1TypedDict",
282
+ "Fields2",
283
+ "Fields2TypedDict",
284
+ "Fields3",
285
+ "Fields3TypedDict",
286
+ "FieldsConstraints",
287
+ "FieldsConstraintsTypedDict",
288
+ "FieldsOptions",
289
+ "FieldsOptionsTypedDict",
290
+ "FieldsType",
291
+ "FieldsTypedDict",
292
+ "Five",
293
+ "FiveTypedDict",
251
294
  "FolderSchema",
252
295
  "FolderSchemaTypedDict",
296
+ "Four",
297
+ "FourTypedDict",
253
298
  "LeadCreatedEvent",
254
299
  "LeadCreatedEventClick",
255
300
  "LeadCreatedEventClickTypedDict",
@@ -286,6 +331,8 @@ __all__ = [
286
331
  "Links",
287
332
  "LinksTypedDict",
288
333
  "One",
334
+ "Options",
335
+ "OptionsTypedDict",
289
336
  "Partner",
290
337
  "PartnerAnalyticsCount",
291
338
  "PartnerAnalyticsCountTypedDict",
@@ -305,13 +352,20 @@ __all__ = [
305
352
  "PartnerEnrolledEventData",
306
353
  "PartnerEnrolledEventDataTypedDict",
307
354
  "PartnerEnrolledEventEvent",
355
+ "PartnerEnrolledEventFieldsDataReferralFormData5Type",
356
+ "PartnerEnrolledEventFieldsDataReferralFormData6Type",
357
+ "PartnerEnrolledEventFieldsDataReferralFormData7Type",
358
+ "PartnerEnrolledEventFieldsDataReferralFormData8Type",
359
+ "PartnerEnrolledEventFieldsDataReferralFormDataType",
360
+ "PartnerEnrolledEventFieldsDataType",
361
+ "PartnerEnrolledEventFieldsType",
308
362
  "PartnerEnrolledEventTypedDict",
309
363
  "PartnerTypedDict",
310
- "Plan",
364
+ "ReferralFormData",
365
+ "ReferralFormDataTypedDict",
311
366
  "Region",
312
367
  "RegisteredDomain",
313
368
  "RegisteredDomainTypedDict",
314
- "Role",
315
369
  "Sale",
316
370
  "SaleCreatedEvent",
317
371
  "SaleCreatedEventClick",
@@ -331,6 +385,10 @@ __all__ = [
331
385
  "SaleTypedDict",
332
386
  "Security",
333
387
  "SecurityTypedDict",
388
+ "Seven",
389
+ "SevenTypedDict",
390
+ "Six",
391
+ "SixTypedDict",
334
392
  "Status",
335
393
  "TestVariants",
336
394
  "TestVariantsTypedDict",
@@ -338,12 +396,8 @@ __all__ = [
338
396
  "Trigger",
339
397
  "Two",
340
398
  "Type",
341
- "Users",
342
- "UsersTypedDict",
343
399
  "WebhookEvent",
344
400
  "WebhookEventTypedDict",
345
- "WorkspaceSchema",
346
- "WorkspaceSchemaTypedDict",
347
401
  ]
348
402
 
349
403
  _dynamic_imports: dict[str, str] = {
@@ -468,13 +522,49 @@ _dynamic_imports: dict[str, str] = {
468
522
  "PartnerApplicationSubmittedEventStatus": ".partnerapplicationsubmittedevent",
469
523
  "PartnerApplicationSubmittedEventTypedDict": ".partnerapplicationsubmittedevent",
470
524
  "BannedReason": ".partnerenrolledevent",
525
+ "Constraints": ".partnerenrolledevent",
526
+ "ConstraintsTypedDict": ".partnerenrolledevent",
527
+ "Eight": ".partnerenrolledevent",
528
+ "EightTypedDict": ".partnerenrolledevent",
529
+ "Fields": ".partnerenrolledevent",
530
+ "Fields1": ".partnerenrolledevent",
531
+ "Fields1TypedDict": ".partnerenrolledevent",
532
+ "Fields2": ".partnerenrolledevent",
533
+ "Fields2TypedDict": ".partnerenrolledevent",
534
+ "Fields3": ".partnerenrolledevent",
535
+ "Fields3TypedDict": ".partnerenrolledevent",
536
+ "FieldsConstraints": ".partnerenrolledevent",
537
+ "FieldsConstraintsTypedDict": ".partnerenrolledevent",
538
+ "FieldsOptions": ".partnerenrolledevent",
539
+ "FieldsOptionsTypedDict": ".partnerenrolledevent",
540
+ "FieldsType": ".partnerenrolledevent",
541
+ "FieldsTypedDict": ".partnerenrolledevent",
542
+ "Five": ".partnerenrolledevent",
543
+ "FiveTypedDict": ".partnerenrolledevent",
544
+ "Four": ".partnerenrolledevent",
545
+ "FourTypedDict": ".partnerenrolledevent",
471
546
  "Links": ".partnerenrolledevent",
472
547
  "LinksTypedDict": ".partnerenrolledevent",
548
+ "Options": ".partnerenrolledevent",
549
+ "OptionsTypedDict": ".partnerenrolledevent",
473
550
  "PartnerEnrolledEvent": ".partnerenrolledevent",
474
551
  "PartnerEnrolledEventData": ".partnerenrolledevent",
475
552
  "PartnerEnrolledEventDataTypedDict": ".partnerenrolledevent",
476
553
  "PartnerEnrolledEventEvent": ".partnerenrolledevent",
554
+ "PartnerEnrolledEventFieldsDataReferralFormData5Type": ".partnerenrolledevent",
555
+ "PartnerEnrolledEventFieldsDataReferralFormData6Type": ".partnerenrolledevent",
556
+ "PartnerEnrolledEventFieldsDataReferralFormData7Type": ".partnerenrolledevent",
557
+ "PartnerEnrolledEventFieldsDataReferralFormData8Type": ".partnerenrolledevent",
558
+ "PartnerEnrolledEventFieldsDataReferralFormDataType": ".partnerenrolledevent",
559
+ "PartnerEnrolledEventFieldsDataType": ".partnerenrolledevent",
560
+ "PartnerEnrolledEventFieldsType": ".partnerenrolledevent",
477
561
  "PartnerEnrolledEventTypedDict": ".partnerenrolledevent",
562
+ "ReferralFormData": ".partnerenrolledevent",
563
+ "ReferralFormDataTypedDict": ".partnerenrolledevent",
564
+ "Seven": ".partnerenrolledevent",
565
+ "SevenTypedDict": ".partnerenrolledevent",
566
+ "Six": ".partnerenrolledevent",
567
+ "SixTypedDict": ".partnerenrolledevent",
478
568
  "Status": ".partnerenrolledevent",
479
569
  "Sale": ".salecreatedevent",
480
570
  "SaleCreatedEvent": ".salecreatedevent",
@@ -497,14 +587,6 @@ _dynamic_imports: dict[str, str] = {
497
587
  "SecurityTypedDict": ".security",
498
588
  "WebhookEvent": ".webhookevent",
499
589
  "WebhookEventTypedDict": ".webhookevent",
500
- "Domains": ".workspaceschema",
501
- "DomainsTypedDict": ".workspaceschema",
502
- "Plan": ".workspaceschema",
503
- "Role": ".workspaceschema",
504
- "Users": ".workspaceschema",
505
- "UsersTypedDict": ".workspaceschema",
506
- "WorkspaceSchema": ".workspaceschema",
507
- "WorkspaceSchemaTypedDict": ".workspaceschema",
508
590
  }
509
591
 
510
592
 
@@ -1,8 +1,9 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from dub.types import BaseModel
4
+ from dub.types import BaseModel, UNSET_SENTINEL
5
5
  import pydantic
6
+ from pydantic import model_serializer
6
7
  from typing import Optional
7
8
  from typing_extensions import Annotated, NotRequired, TypedDict
8
9
 
@@ -35,3 +36,19 @@ class AnalyticsBrowsers(BaseModel):
35
36
 
36
37
  sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
37
38
  r"""The total amount of sales from this browser, in cents"""
39
+
40
+ @model_serializer(mode="wrap")
41
+ def serialize_model(self, handler):
42
+ optional_fields = set(["clicks", "leads", "sales", "saleAmount"])
43
+ serialized = handler(self)
44
+ m = {}
45
+
46
+ for n, f in type(self).model_fields.items():
47
+ k = f.alias or n
48
+ val = serialized.get(k)
49
+
50
+ if val != UNSET_SENTINEL:
51
+ if val is not None or k not in optional_fields:
52
+ m[k] = val
53
+
54
+ return m
@@ -1,8 +1,9 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from dub.types import BaseModel
4
+ from dub.types import BaseModel, UNSET_SENTINEL
5
5
  import pydantic
6
+ from pydantic import model_serializer
6
7
  from typing import Optional
7
8
  from typing_extensions import Annotated, NotRequired, TypedDict
8
9
 
@@ -45,3 +46,19 @@ class AnalyticsCities(BaseModel):
45
46
 
46
47
  sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
47
48
  r"""The total amount of sales from this city, in cents"""
49
+
50
+ @model_serializer(mode="wrap")
51
+ def serialize_model(self, handler):
52
+ optional_fields = set(["clicks", "leads", "sales", "saleAmount"])
53
+ serialized = handler(self)
54
+ m = {}
55
+
56
+ for n, f in type(self).model_fields.items():
57
+ k = f.alias or n
58
+ val = serialized.get(k)
59
+
60
+ if val != UNSET_SENTINEL:
61
+ if val is not None or k not in optional_fields:
62
+ m[k] = val
63
+
64
+ return m
@@ -1,9 +1,10 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from dub.types import BaseModel
4
+ from dub.types import BaseModel, UNSET_SENTINEL
5
5
  from enum import Enum
6
6
  import pydantic
7
+ from pydantic import model_serializer
7
8
  from typing import Optional
8
9
  from typing_extensions import Annotated, NotRequired, TypedDict
9
10
 
@@ -48,3 +49,19 @@ class AnalyticsContinents(BaseModel):
48
49
 
49
50
  sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
50
51
  r"""The total amount of sales from this continent, in cents"""
52
+
53
+ @model_serializer(mode="wrap")
54
+ def serialize_model(self, handler):
55
+ optional_fields = set(["clicks", "leads", "sales", "saleAmount"])
56
+ serialized = handler(self)
57
+ m = {}
58
+
59
+ for n, f in type(self).model_fields.items():
60
+ k = f.alias or n
61
+ val = serialized.get(k)
62
+
63
+ if val != UNSET_SENTINEL:
64
+ if val is not None or k not in optional_fields:
65
+ m[k] = val
66
+
67
+ return m
@@ -1,8 +1,9 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from dub.types import BaseModel
4
+ from dub.types import BaseModel, UNSET_SENTINEL
5
5
  import pydantic
6
+ from pydantic import model_serializer
6
7
  from typing import Optional
7
8
  from typing_extensions import Annotated, NotRequired, TypedDict
8
9
 
@@ -30,3 +31,19 @@ class AnalyticsCount(BaseModel):
30
31
 
31
32
  sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
32
33
  r"""The total amount of sales, in cents"""
34
+
35
+ @model_serializer(mode="wrap")
36
+ def serialize_model(self, handler):
37
+ optional_fields = set(["clicks", "leads", "sales", "saleAmount"])
38
+ serialized = handler(self)
39
+ m = {}
40
+
41
+ for n, f in type(self).model_fields.items():
42
+ k = f.alias or n
43
+ val = serialized.get(k)
44
+
45
+ if val != UNSET_SENTINEL:
46
+ if val is not None or k not in optional_fields:
47
+ m[k] = val
48
+
49
+ return m
@@ -1,9 +1,10 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from dub.types import BaseModel
4
+ from dub.types import BaseModel, UNSET_SENTINEL
5
5
  from enum import Enum
6
6
  import pydantic
7
+ from pydantic import model_serializer
7
8
  from typing import Optional
8
9
  from typing_extensions import Annotated, NotRequired, TypedDict
9
10
 
@@ -50,3 +51,21 @@ class AnalyticsCountries(BaseModel):
50
51
 
51
52
  sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
52
53
  r"""The total amount of sales from this country, in cents"""
54
+
55
+ @model_serializer(mode="wrap")
56
+ def serialize_model(self, handler):
57
+ optional_fields = set(
58
+ ["region", "city", "clicks", "leads", "sales", "saleAmount"]
59
+ )
60
+ serialized = handler(self)
61
+ m = {}
62
+
63
+ for n, f in type(self).model_fields.items():
64
+ k = f.alias or n
65
+ val = serialized.get(k)
66
+
67
+ if val != UNSET_SENTINEL:
68
+ if val is not None or k not in optional_fields:
69
+ m[k] = val
70
+
71
+ return m
@@ -1,8 +1,9 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from dub.types import BaseModel
4
+ from dub.types import BaseModel, UNSET_SENTINEL
5
5
  import pydantic
6
+ from pydantic import model_serializer
6
7
  from typing import Optional
7
8
  from typing_extensions import Annotated, NotRequired, TypedDict
8
9
 
@@ -35,3 +36,19 @@ class AnalyticsDevices(BaseModel):
35
36
 
36
37
  sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
37
38
  r"""The total amount of sales from this device, in cents"""
39
+
40
+ @model_serializer(mode="wrap")
41
+ def serialize_model(self, handler):
42
+ optional_fields = set(["clicks", "leads", "sales", "saleAmount"])
43
+ serialized = handler(self)
44
+ m = {}
45
+
46
+ for n, f in type(self).model_fields.items():
47
+ k = f.alias or n
48
+ val = serialized.get(k)
49
+
50
+ if val != UNSET_SENTINEL:
51
+ if val is not None or k not in optional_fields:
52
+ m[k] = val
53
+
54
+ return m
@@ -1,8 +1,9 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from dub.types import BaseModel
4
+ from dub.types import BaseModel, UNSET_SENTINEL
5
5
  import pydantic
6
+ from pydantic import model_serializer
6
7
  from typing import Optional
7
8
  from typing_extensions import Annotated, NotRequired, TypedDict
8
9
 
@@ -35,3 +36,19 @@ class AnalyticsOS(BaseModel):
35
36
 
36
37
  sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
37
38
  r"""The total amount of sales from this OS, in cents"""
39
+
40
+ @model_serializer(mode="wrap")
41
+ def serialize_model(self, handler):
42
+ optional_fields = set(["clicks", "leads", "sales", "saleAmount"])
43
+ serialized = handler(self)
44
+ m = {}
45
+
46
+ for n, f in type(self).model_fields.items():
47
+ k = f.alias or n
48
+ val = serialized.get(k)
49
+
50
+ if val != UNSET_SENTINEL:
51
+ if val is not None or k not in optional_fields:
52
+ m[k] = val
53
+
54
+ return m
@@ -1,8 +1,9 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from dub.types import BaseModel
4
+ from dub.types import BaseModel, UNSET_SENTINEL
5
5
  import pydantic
6
+ from pydantic import model_serializer
6
7
  from typing import Optional
7
8
  from typing_extensions import Annotated, NotRequired, TypedDict
8
9
 
@@ -35,3 +36,19 @@ class AnalyticsReferers(BaseModel):
35
36
 
36
37
  sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
37
38
  r"""The total amount of sales from this referer, in cents"""
39
+
40
+ @model_serializer(mode="wrap")
41
+ def serialize_model(self, handler):
42
+ optional_fields = set(["clicks", "leads", "sales", "saleAmount"])
43
+ serialized = handler(self)
44
+ m = {}
45
+
46
+ for n, f in type(self).model_fields.items():
47
+ k = f.alias or n
48
+ val = serialized.get(k)
49
+
50
+ if val != UNSET_SENTINEL:
51
+ if val is not None or k not in optional_fields:
52
+ m[k] = val
53
+
54
+ return m
@@ -1,8 +1,9 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from dub.types import BaseModel
4
+ from dub.types import BaseModel, UNSET_SENTINEL
5
5
  import pydantic
6
+ from pydantic import model_serializer
6
7
  from typing import Optional
7
8
  from typing_extensions import Annotated, NotRequired, TypedDict
8
9
 
@@ -35,3 +36,19 @@ class AnalyticsRefererUrls(BaseModel):
35
36
 
36
37
  sale_amount: Annotated[Optional[float], pydantic.Field(alias="saleAmount")] = 0
37
38
  r"""The total amount of sales from this referer to this URL, in cents"""
39
+
40
+ @model_serializer(mode="wrap")
41
+ def serialize_model(self, handler):
42
+ optional_fields = set(["clicks", "leads", "sales", "saleAmount"])
43
+ serialized = handler(self)
44
+ m = {}
45
+
46
+ for n, f in type(self).model_fields.items():
47
+ k = f.alias or n
48
+ val = serialized.get(k)
49
+
50
+ if val != UNSET_SENTINEL:
51
+ if val is not None or k not in optional_fields:
52
+ m[k] = val
53
+
54
+ return m