dub 0.32.0__tar.gz → 0.34.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 (150) hide show
  1. {dub-0.32.0 → dub-0.34.0}/PKG-INFO +15 -33
  2. {dub-0.32.0 → dub-0.34.0}/README-PYPI.md +14 -32
  3. {dub-0.32.0 → dub-0.34.0}/pyproject.toml +2 -1
  4. {dub-0.32.0 → dub-0.34.0}/src/dub/_version.py +3 -3
  5. {dub-0.32.0 → dub-0.34.0}/src/dub/analytics.py +6 -4
  6. {dub-0.32.0 → dub-0.34.0}/src/dub/basesdk.py +6 -0
  7. {dub-0.32.0 → dub-0.34.0}/src/dub/commissions.py +12 -8
  8. {dub-0.32.0 → dub-0.34.0}/src/dub/customers.py +24 -313
  9. {dub-0.32.0 → dub-0.34.0}/src/dub/domains.py +34 -26
  10. {dub-0.32.0 → dub-0.34.0}/src/dub/embed_tokens.py +6 -4
  11. {dub-0.32.0 → dub-0.34.0}/src/dub/events.py +6 -4
  12. {dub-0.32.0 → dub-0.34.0}/src/dub/folders.py +24 -20
  13. {dub-0.32.0 → dub-0.34.0}/src/dub/links.py +58 -54
  14. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/__init__.py +81 -149
  15. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticstopurls.py +2 -2
  16. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/leadcreatedevent.py +15 -14
  17. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/linkclickedevent.py +19 -18
  18. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/linkerrorschema.py +12 -12
  19. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/linkschema.py +9 -3
  20. dub-0.34.0/src/dub/models/components/linktagschema.py +38 -0
  21. dub-0.32.0/src/dub/models/components/linktagschema.py → dub-0.34.0/src/dub/models/components/linktagschemaoutput.py +2 -2
  22. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/linkwebhookevent.py +15 -16
  23. dub-0.34.0/src/dub/models/components/partnerapplicationsubmittedevent.py +269 -0
  24. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/partnerenrolledevent.py +68 -8
  25. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/salecreatedevent.py +15 -14
  26. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/webhookevent.py +6 -0
  27. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/workspaceschema.py +6 -0
  28. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/__init__.py +147 -57
  29. dub-0.34.0/src/dub/models/operations/banpartner.py +83 -0
  30. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/createpartner.py +68 -59
  31. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/createpartnerlink.py +0 -51
  32. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/createreferralsembedtoken.py +0 -51
  33. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/getcustomers.py +18 -0
  34. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/getlinkinfo.py +0 -2
  35. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/getlinks.py +2 -2
  36. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/getlinkscount.py +2 -2
  37. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/getqrcode.py +1 -1
  38. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/listcommissions.py +13 -2
  39. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/listdomains.py +1 -1
  40. dub-0.34.0/src/dub/models/operations/listevents.py +2550 -0
  41. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/listpartners.py +75 -8
  42. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/retrieveanalytics.py +28 -5
  43. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/retrievelinks.py +44 -9
  44. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/retrievepartneranalytics.py +51 -11
  45. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/tracklead.py +4 -4
  46. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/updatecommission.py +7 -2
  47. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/updatecustomer.py +23 -11
  48. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/updatelink.py +0 -2
  49. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/updateworkspace.py +3 -3
  50. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/upsertpartnerlink.py +0 -51
  51. {dub-0.32.0 → dub-0.34.0}/src/dub/partners.py +316 -24
  52. {dub-0.32.0 → dub-0.34.0}/src/dub/qr_codes.py +4 -2
  53. {dub-0.32.0 → dub-0.34.0}/src/dub/tags.py +24 -20
  54. {dub-0.32.0 → dub-0.34.0}/src/dub/track.py +12 -16
  55. dub-0.34.0/src/dub/types/basemodel.py +77 -0
  56. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/__init__.py +0 -3
  57. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/enums.py +60 -0
  58. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/forms.py +21 -10
  59. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/queryparams.py +14 -2
  60. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/requestbodies.py +3 -3
  61. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/retries.py +69 -5
  62. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/serializers.py +0 -20
  63. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/unmarshal_json_response.py +15 -1
  64. {dub-0.32.0 → dub-0.34.0}/src/dub/workspaces.py +12 -16
  65. dub-0.32.0/src/dub/models/components/clickevent.py +0 -556
  66. dub-0.32.0/src/dub/models/components/continentcode.py +0 -16
  67. dub-0.32.0/src/dub/models/components/leadevent.py +0 -680
  68. dub-0.32.0/src/dub/models/components/saleevent.py +0 -779
  69. dub-0.32.0/src/dub/models/operations/createcustomer.py +0 -382
  70. dub-0.32.0/src/dub/models/operations/listevents.py +0 -545
  71. dub-0.32.0/src/dub/types/basemodel.py +0 -39
  72. {dub-0.32.0 → dub-0.34.0}/LICENSE +0 -0
  73. {dub-0.32.0 → dub-0.34.0}/py.typed +0 -0
  74. {dub-0.32.0 → dub-0.34.0}/src/dub/__init__.py +0 -0
  75. {dub-0.32.0 → dub-0.34.0}/src/dub/_hooks/__init__.py +0 -0
  76. {dub-0.32.0 → dub-0.34.0}/src/dub/_hooks/registration.py +0 -0
  77. {dub-0.32.0 → dub-0.34.0}/src/dub/_hooks/sdkhooks.py +0 -0
  78. {dub-0.32.0 → dub-0.34.0}/src/dub/_hooks/types.py +0 -0
  79. {dub-0.32.0 → dub-0.34.0}/src/dub/httpclient.py +0 -0
  80. {dub-0.32.0 → dub-0.34.0}/src/dub/models/__init__.py +0 -0
  81. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticsbrowsers.py +0 -0
  82. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticscities.py +0 -0
  83. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticscontinents.py +0 -0
  84. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticscount.py +0 -0
  85. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticscountries.py +0 -0
  86. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticsdevices.py +0 -0
  87. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticsos.py +0 -0
  88. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticsreferers.py +0 -0
  89. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticsrefererurls.py +0 -0
  90. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticsregions.py +0 -0
  91. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticstimeseries.py +0 -0
  92. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticstoplinks.py +0 -0
  93. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/analyticstriggers.py +0 -0
  94. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/commissioncreatedevent.py +0 -0
  95. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/domainschema.py +0 -0
  96. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/folderschema.py +0 -0
  97. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/partneranalyticscount.py +0 -0
  98. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/partneranalyticstimeseries.py +0 -0
  99. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/partneranalyticstoplinks.py +0 -0
  100. {dub-0.32.0 → dub-0.34.0}/src/dub/models/components/security.py +0 -0
  101. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/__init__.py +0 -0
  102. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/badrequest.py +0 -0
  103. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/conflict.py +0 -0
  104. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/duberror.py +0 -0
  105. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/forbidden.py +0 -0
  106. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/internalservererror.py +0 -0
  107. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/inviteexpired.py +0 -0
  108. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/no_response_error.py +0 -0
  109. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/notfound.py +0 -0
  110. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/ratelimitexceeded.py +0 -0
  111. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/responsevalidationerror.py +0 -0
  112. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/sdkerror.py +0 -0
  113. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/unauthorized.py +0 -0
  114. {dub-0.32.0 → dub-0.34.0}/src/dub/models/errors/unprocessableentity.py +0 -0
  115. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/bulkcreatelinks.py +0 -0
  116. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/bulkdeletelinks.py +0 -0
  117. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/bulkupdatelinks.py +0 -0
  118. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/checkdomainstatus.py +0 -0
  119. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/createdomain.py +0 -0
  120. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/createfolder.py +0 -0
  121. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/createlink.py +0 -0
  122. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/createtag.py +0 -0
  123. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/deletecustomer.py +0 -0
  124. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/deletedomain.py +0 -0
  125. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/deletefolder.py +0 -0
  126. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/deletelink.py +0 -0
  127. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/deletetag.py +0 -0
  128. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/getcustomer.py +0 -0
  129. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/gettags.py +0 -0
  130. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/getworkspace.py +0 -0
  131. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/listfolders.py +0 -0
  132. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/registerdomain.py +0 -0
  133. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/tracksale.py +0 -0
  134. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/updatedomain.py +0 -0
  135. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/updatefolder.py +0 -0
  136. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/updatetag.py +0 -0
  137. {dub-0.32.0 → dub-0.34.0}/src/dub/models/operations/upsertlink.py +0 -0
  138. {dub-0.32.0 → dub-0.34.0}/src/dub/py.typed +0 -0
  139. {dub-0.32.0 → dub-0.34.0}/src/dub/sdk.py +0 -0
  140. {dub-0.32.0 → dub-0.34.0}/src/dub/sdkconfiguration.py +0 -0
  141. {dub-0.32.0 → dub-0.34.0}/src/dub/types/__init__.py +0 -0
  142. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/annotations.py +0 -0
  143. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/datetimes.py +0 -0
  144. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/eventstreaming.py +0 -0
  145. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/headers.py +0 -0
  146. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/logger.py +0 -0
  147. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/metadata.py +0 -0
  148. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/security.py +0 -0
  149. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/url.py +0 -0
  150. {dub-0.32.0 → dub-0.34.0}/src/dub/utils/values.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dub
3
- Version: 0.32.0
3
+ Version: 0.34.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
 
@@ -285,24 +277,23 @@ asyncio.run(main())
285
277
  <details open>
286
278
  <summary>Available methods</summary>
287
279
 
288
- ### [analytics](https://github.com/dubinc/dub-python/blob/master/docs/sdks/analytics/README.md)
280
+ ### [Analytics](https://github.com/dubinc/dub-python/blob/master/docs/sdks/analytics/README.md)
289
281
 
290
282
  * [retrieve](https://github.com/dubinc/dub-python/blob/master/docs/sdks/analytics/README.md#retrieve) - Retrieve analytics for a link, a domain, or the authenticated workspace.
291
283
 
292
- ### [commissions](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md)
284
+ ### [Commissions](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md)
293
285
 
294
286
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md#list) - Get commissions for a program.
295
287
  * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md#update) - Update a commission.
296
288
 
297
- ### [customers](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md)
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
304
295
 
305
- ### [domains](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md)
296
+ ### [Domains](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md)
306
297
 
307
298
  * [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md#create) - Create a domain
308
299
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md#list) - Retrieve a list of domains
@@ -311,22 +302,22 @@ asyncio.run(main())
311
302
  * [register](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md#register) - Register a domain
312
303
  * [check_status](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md#check_status) - Check the availability of one or more domains
313
304
 
314
- ### [embed_tokens](https://github.com/dubinc/dub-python/blob/master/docs/sdks/embedtokens/README.md)
305
+ ### [EmbedTokens](https://github.com/dubinc/dub-python/blob/master/docs/sdks/embedtokens/README.md)
315
306
 
316
307
  * [referrals](https://github.com/dubinc/dub-python/blob/master/docs/sdks/embedtokens/README.md#referrals) - Create a referrals embed token
317
308
 
318
- ### [events](https://github.com/dubinc/dub-python/blob/master/docs/sdks/events/README.md)
309
+ ### [Events](https://github.com/dubinc/dub-python/blob/master/docs/sdks/events/README.md)
319
310
 
320
311
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/events/README.md#list) - Retrieve a list of events
321
312
 
322
- ### [folders](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md)
313
+ ### [Folders](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md)
323
314
 
324
315
  * [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#create) - Create a folder
325
316
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#list) - Retrieve a list of folders
326
317
  * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#update) - Update a folder
327
318
  * [delete](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#delete) - Delete a folder
328
319
 
329
- ### [links](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md)
320
+ ### [Links](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md)
330
321
 
331
322
  * [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#create) - Create a link
332
323
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#list) - Retrieve a list of links
@@ -339,7 +330,7 @@ asyncio.run(main())
339
330
  * [delete_many](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#delete_many) - Bulk delete links
340
331
  * [upsert](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#upsert) - Upsert a link
341
332
 
342
- ### [partners](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md)
333
+ ### [Partners](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md)
343
334
 
344
335
  * [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#create) - Create or update a partner
345
336
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#list) - List all partners
@@ -347,24 +338,25 @@ 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
- ### [qr_codes](https://github.com/dubinc/dub-python/blob/master/docs/sdks/qrcodes/README.md)
343
+ ### [QRCodes](https://github.com/dubinc/dub-python/blob/master/docs/sdks/qrcodes/README.md)
352
344
 
353
345
  * [get](https://github.com/dubinc/dub-python/blob/master/docs/sdks/qrcodes/README.md#get) - Retrieve a QR code
354
346
 
355
- ### [tags](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md)
347
+ ### [Tags](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md)
356
348
 
357
349
  * [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#create) - Create a tag
358
350
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#list) - Retrieve a list of tags
359
351
  * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#update) - Update a tag
360
352
  * [delete](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#delete) - Delete a tag
361
353
 
362
- ### [track](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md)
354
+ ### [Track](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md)
363
355
 
364
356
  * [lead](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#lead) - Track a lead
365
357
  * [sale](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#sale) - Track a sale
366
358
 
367
- ### [workspaces](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md)
359
+ ### [Workspaces](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md)
368
360
 
369
361
  * [get](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#get) - Retrieve a workspace
370
362
  * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#update) - Update a workspace
@@ -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
 
@@ -135,8 +135,6 @@ with Dub(
135
135
  ],
136
136
  })
137
137
 
138
- assert res is not None
139
-
140
138
  # Handle response
141
139
  print(res)
142
140
  ```
@@ -174,8 +172,6 @@ async def main():
174
172
  ],
175
173
  })
176
174
 
177
- assert res is not None
178
-
179
175
  # Handle response
180
176
  print(res)
181
177
 
@@ -211,8 +207,6 @@ with Dub(
211
207
  ],
212
208
  })
213
209
 
214
- assert res is not None
215
-
216
210
  # Handle response
217
211
  print(res)
218
212
  ```
@@ -250,8 +244,6 @@ async def main():
250
244
  ],
251
245
  })
252
246
 
253
- assert res is not None
254
-
255
247
  # Handle response
256
248
  print(res)
257
249
 
@@ -265,24 +257,23 @@ asyncio.run(main())
265
257
  <details open>
266
258
  <summary>Available methods</summary>
267
259
 
268
- ### [analytics](https://github.com/dubinc/dub-python/blob/master/docs/sdks/analytics/README.md)
260
+ ### [Analytics](https://github.com/dubinc/dub-python/blob/master/docs/sdks/analytics/README.md)
269
261
 
270
262
  * [retrieve](https://github.com/dubinc/dub-python/blob/master/docs/sdks/analytics/README.md#retrieve) - Retrieve analytics for a link, a domain, or the authenticated workspace.
271
263
 
272
- ### [commissions](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md)
264
+ ### [Commissions](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md)
273
265
 
274
266
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md#list) - Get commissions for a program.
275
267
  * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/commissions/README.md#update) - Update a commission.
276
268
 
277
- ### [customers](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md)
269
+ ### [Customers](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md)
278
270
 
279
271
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md#list) - Retrieve a list of customers
280
- * [~~create~~](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md#create) - Create a customer :warning: **Deprecated**
281
272
  * [get](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md#get) - Retrieve a customer
282
273
  * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md#update) - Update a customer
283
274
  * [delete](https://github.com/dubinc/dub-python/blob/master/docs/sdks/customers/README.md#delete) - Delete a customer
284
275
 
285
- ### [domains](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md)
276
+ ### [Domains](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md)
286
277
 
287
278
  * [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md#create) - Create a domain
288
279
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md#list) - Retrieve a list of domains
@@ -291,22 +282,22 @@ asyncio.run(main())
291
282
  * [register](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md#register) - Register a domain
292
283
  * [check_status](https://github.com/dubinc/dub-python/blob/master/docs/sdks/domains/README.md#check_status) - Check the availability of one or more domains
293
284
 
294
- ### [embed_tokens](https://github.com/dubinc/dub-python/blob/master/docs/sdks/embedtokens/README.md)
285
+ ### [EmbedTokens](https://github.com/dubinc/dub-python/blob/master/docs/sdks/embedtokens/README.md)
295
286
 
296
287
  * [referrals](https://github.com/dubinc/dub-python/blob/master/docs/sdks/embedtokens/README.md#referrals) - Create a referrals embed token
297
288
 
298
- ### [events](https://github.com/dubinc/dub-python/blob/master/docs/sdks/events/README.md)
289
+ ### [Events](https://github.com/dubinc/dub-python/blob/master/docs/sdks/events/README.md)
299
290
 
300
291
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/events/README.md#list) - Retrieve a list of events
301
292
 
302
- ### [folders](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md)
293
+ ### [Folders](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md)
303
294
 
304
295
  * [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#create) - Create a folder
305
296
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#list) - Retrieve a list of folders
306
297
  * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#update) - Update a folder
307
298
  * [delete](https://github.com/dubinc/dub-python/blob/master/docs/sdks/folders/README.md#delete) - Delete a folder
308
299
 
309
- ### [links](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md)
300
+ ### [Links](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md)
310
301
 
311
302
  * [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#create) - Create a link
312
303
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#list) - Retrieve a list of links
@@ -319,7 +310,7 @@ asyncio.run(main())
319
310
  * [delete_many](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#delete_many) - Bulk delete links
320
311
  * [upsert](https://github.com/dubinc/dub-python/blob/master/docs/sdks/links/README.md#upsert) - Upsert a link
321
312
 
322
- ### [partners](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md)
313
+ ### [Partners](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md)
323
314
 
324
315
  * [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#create) - Create or update a partner
325
316
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#list) - List all partners
@@ -327,24 +318,25 @@ asyncio.run(main())
327
318
  * [retrieve_links](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#retrieve_links) - Retrieve a partner's links.
328
319
  * [upsert_link](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#upsert_link) - Upsert a link for a partner
329
320
  * [analytics](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#analytics) - Retrieve analytics for a partner
321
+ * [ban](https://github.com/dubinc/dub-python/blob/master/docs/sdks/partners/README.md#ban) - Ban a partner
330
322
 
331
- ### [qr_codes](https://github.com/dubinc/dub-python/blob/master/docs/sdks/qrcodes/README.md)
323
+ ### [QRCodes](https://github.com/dubinc/dub-python/blob/master/docs/sdks/qrcodes/README.md)
332
324
 
333
325
  * [get](https://github.com/dubinc/dub-python/blob/master/docs/sdks/qrcodes/README.md#get) - Retrieve a QR code
334
326
 
335
- ### [tags](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md)
327
+ ### [Tags](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md)
336
328
 
337
329
  * [create](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#create) - Create a tag
338
330
  * [list](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#list) - Retrieve a list of tags
339
331
  * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#update) - Update a tag
340
332
  * [delete](https://github.com/dubinc/dub-python/blob/master/docs/sdks/tags/README.md#delete) - Delete a tag
341
333
 
342
- ### [track](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md)
334
+ ### [Track](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md)
343
335
 
344
336
  * [lead](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#lead) - Track a lead
345
337
  * [sale](https://github.com/dubinc/dub-python/blob/master/docs/sdks/track/README.md#sale) - Track a sale
346
338
 
347
- ### [workspaces](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md)
339
+ ### [Workspaces](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md)
348
340
 
349
341
  * [get](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#get) - Retrieve a workspace
350
342
  * [update](https://github.com/dubinc/dub-python/blob/master/docs/sdks/workspaces/README.md#update) - Update a workspace
@@ -396,8 +388,6 @@ with Dub(
396
388
  ],
397
389
  })
398
390
 
399
- assert res is not None
400
-
401
391
  # Handle response
402
392
  print(res)
403
393
 
@@ -477,8 +467,6 @@ with Dub(
477
467
  ],
478
468
  })
479
469
 
480
- assert res is not None
481
-
482
470
  # Handle response
483
471
  print(res)
484
472
 
@@ -604,8 +592,6 @@ with Dub(
604
592
  ],
605
593
  })
606
594
 
607
- assert res is not None
608
-
609
595
  # Handle response
610
596
  print(res)
611
597
 
@@ -646,8 +632,6 @@ with Dub(
646
632
  },
647
633
  RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False))
648
634
 
649
- assert res is not None
650
-
651
635
  # Handle response
652
636
  print(res)
653
637
 
@@ -682,8 +666,6 @@ with Dub(
682
666
  ],
683
667
  })
684
668
 
685
- assert res is not None
686
-
687
669
  # Handle response
688
670
  print(res)
689
671
 
@@ -1,7 +1,7 @@
1
1
 
2
2
  [project]
3
3
  name = "dub"
4
- version = "0.32.0"
4
+ version = "0.34.0"
5
5
  description = "Python Client SDK Generated by Speakeasy"
6
6
  authors = [{ name = "Speakeasy" },]
7
7
  readme = "README-PYPI.md"
@@ -29,6 +29,7 @@ in-project = true
29
29
  [tool.poetry.group.dev.dependencies]
30
30
  mypy = "==1.15.0"
31
31
  pylint = "==3.2.3"
32
+ pyright = "==1.1.398"
32
33
 
33
34
  [build-system]
34
35
  requires = ["poetry-core"]
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "dub"
6
- __version__: str = "0.32.0"
6
+ __version__: str = "0.34.0"
7
7
  __openapi_doc_version__: str = "0.0.1"
8
- __gen_version__: str = "2.731.6"
9
- __user_agent__: str = "speakeasy-sdk/python 0.32.0 2.731.6 0.0.1 dub"
8
+ __gen_version__: str = "2.793.2"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.34.0 2.793.2 0.0.1 dub"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -21,7 +21,7 @@ class Analytics(BaseSDK):
21
21
  server_url: Optional[str] = None,
22
22
  timeout_ms: Optional[int] = None,
23
23
  http_headers: Optional[Mapping[str, str]] = None,
24
- ) -> Optional[operations.RetrieveAnalyticsResponseBody]:
24
+ ) -> operations.RetrieveAnalyticsResponseBody:
25
25
  r"""Retrieve analytics for a link, a domain, or the authenticated workspace.
26
26
 
27
27
  Retrieve analytics for a link, a domain, or the authenticated workspace. The response type depends on the `event` and `type` query parameters.
@@ -59,6 +59,7 @@ class Analytics(BaseSDK):
59
59
  accept_header_value="application/json",
60
60
  http_headers=http_headers,
61
61
  security=self.sdk_configuration.security,
62
+ allow_empty_value=None,
62
63
  timeout_ms=timeout_ms,
63
64
  )
64
65
 
@@ -98,7 +99,7 @@ class Analytics(BaseSDK):
98
99
  response_data: Any = None
99
100
  if utils.match_response(http_res, "200", "application/json"):
100
101
  return unmarshal_json_response(
101
- Optional[operations.RetrieveAnalyticsResponseBody], http_res
102
+ operations.RetrieveAnalyticsResponseBody, http_res
102
103
  )
103
104
  if utils.match_response(http_res, "400", "application/json"):
104
105
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
@@ -153,7 +154,7 @@ class Analytics(BaseSDK):
153
154
  server_url: Optional[str] = None,
154
155
  timeout_ms: Optional[int] = None,
155
156
  http_headers: Optional[Mapping[str, str]] = None,
156
- ) -> Optional[operations.RetrieveAnalyticsResponseBody]:
157
+ ) -> operations.RetrieveAnalyticsResponseBody:
157
158
  r"""Retrieve analytics for a link, a domain, or the authenticated workspace.
158
159
 
159
160
  Retrieve analytics for a link, a domain, or the authenticated workspace. The response type depends on the `event` and `type` query parameters.
@@ -191,6 +192,7 @@ class Analytics(BaseSDK):
191
192
  accept_header_value="application/json",
192
193
  http_headers=http_headers,
193
194
  security=self.sdk_configuration.security,
195
+ allow_empty_value=None,
194
196
  timeout_ms=timeout_ms,
195
197
  )
196
198
 
@@ -230,7 +232,7 @@ class Analytics(BaseSDK):
230
232
  response_data: Any = None
231
233
  if utils.match_response(http_res, "200", "application/json"):
232
234
  return unmarshal_json_response(
233
- Optional[operations.RetrieveAnalyticsResponseBody], http_res
235
+ operations.RetrieveAnalyticsResponseBody, http_res
234
236
  )
235
237
  if utils.match_response(http_res, "400", "application/json"):
236
238
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
@@ -57,6 +57,7 @@ class BaseSDK:
57
57
  ] = None,
58
58
  url_override: Optional[str] = None,
59
59
  http_headers: Optional[Mapping[str, str]] = None,
60
+ allow_empty_value: Optional[List[str]] = None,
60
61
  ) -> httpx.Request:
61
62
  client = self.sdk_configuration.async_client
62
63
  return self._build_request_with_client(
@@ -77,6 +78,7 @@ class BaseSDK:
77
78
  get_serialized_body,
78
79
  url_override,
79
80
  http_headers,
81
+ allow_empty_value,
80
82
  )
81
83
 
82
84
  def _build_request(
@@ -99,6 +101,7 @@ class BaseSDK:
99
101
  ] = None,
100
102
  url_override: Optional[str] = None,
101
103
  http_headers: Optional[Mapping[str, str]] = None,
104
+ allow_empty_value: Optional[List[str]] = None,
102
105
  ) -> httpx.Request:
103
106
  client = self.sdk_configuration.client
104
107
  return self._build_request_with_client(
@@ -119,6 +122,7 @@ class BaseSDK:
119
122
  get_serialized_body,
120
123
  url_override,
121
124
  http_headers,
125
+ allow_empty_value,
122
126
  )
123
127
 
124
128
  def _build_request_with_client(
@@ -142,6 +146,7 @@ class BaseSDK:
142
146
  ] = None,
143
147
  url_override: Optional[str] = None,
144
148
  http_headers: Optional[Mapping[str, str]] = None,
149
+ allow_empty_value: Optional[List[str]] = None,
145
150
  ) -> httpx.Request:
146
151
  query_params = {}
147
152
 
@@ -157,6 +162,7 @@ class BaseSDK:
157
162
  query_params = utils.get_query_params(
158
163
  request if request_has_query_params else None,
159
164
  _globals if request_has_query_params else None,
165
+ allow_empty_value,
160
166
  )
161
167
  else:
162
168
  # Pick up the query parameter from the override so they can be
@@ -21,7 +21,7 @@ class Commissions(BaseSDK):
21
21
  server_url: Optional[str] = None,
22
22
  timeout_ms: Optional[int] = None,
23
23
  http_headers: Optional[Mapping[str, str]] = None,
24
- ) -> Optional[List[operations.ListCommissionsResponseBody]]:
24
+ ) -> List[operations.ListCommissionsResponseBody]:
25
25
  r"""Get commissions for a program.
26
26
 
27
27
  Retrieve a list of commissions for a program.
@@ -59,6 +59,7 @@ class Commissions(BaseSDK):
59
59
  accept_header_value="application/json",
60
60
  http_headers=http_headers,
61
61
  security=self.sdk_configuration.security,
62
+ allow_empty_value=None,
62
63
  timeout_ms=timeout_ms,
63
64
  )
64
65
 
@@ -98,7 +99,7 @@ class Commissions(BaseSDK):
98
99
  response_data: Any = None
99
100
  if utils.match_response(http_res, "200", "application/json"):
100
101
  return unmarshal_json_response(
101
- Optional[List[operations.ListCommissionsResponseBody]], http_res
102
+ List[operations.ListCommissionsResponseBody], http_res
102
103
  )
103
104
  if utils.match_response(http_res, "400", "application/json"):
104
105
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
@@ -153,7 +154,7 @@ class Commissions(BaseSDK):
153
154
  server_url: Optional[str] = None,
154
155
  timeout_ms: Optional[int] = None,
155
156
  http_headers: Optional[Mapping[str, str]] = None,
156
- ) -> Optional[List[operations.ListCommissionsResponseBody]]:
157
+ ) -> List[operations.ListCommissionsResponseBody]:
157
158
  r"""Get commissions for a program.
158
159
 
159
160
  Retrieve a list of commissions for a program.
@@ -191,6 +192,7 @@ class Commissions(BaseSDK):
191
192
  accept_header_value="application/json",
192
193
  http_headers=http_headers,
193
194
  security=self.sdk_configuration.security,
195
+ allow_empty_value=None,
194
196
  timeout_ms=timeout_ms,
195
197
  )
196
198
 
@@ -230,7 +232,7 @@ class Commissions(BaseSDK):
230
232
  response_data: Any = None
231
233
  if utils.match_response(http_res, "200", "application/json"):
232
234
  return unmarshal_json_response(
233
- Optional[List[operations.ListCommissionsResponseBody]], http_res
235
+ List[operations.ListCommissionsResponseBody], http_res
234
236
  )
235
237
  if utils.match_response(http_res, "400", "application/json"):
236
238
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
@@ -285,7 +287,7 @@ class Commissions(BaseSDK):
285
287
  server_url: Optional[str] = None,
286
288
  timeout_ms: Optional[int] = None,
287
289
  http_headers: Optional[Mapping[str, str]] = None,
288
- ) -> Optional[operations.UpdateCommissionResponseBody]:
290
+ ) -> operations.UpdateCommissionResponseBody:
289
291
  r"""Update a commission.
290
292
 
291
293
  Update an existing commission amount. This is useful for handling refunds (partial or full) or fraudulent sales.
@@ -330,6 +332,7 @@ class Commissions(BaseSDK):
330
332
  "json",
331
333
  Optional[operations.UpdateCommissionRequestBody],
332
334
  ),
335
+ allow_empty_value=None,
333
336
  timeout_ms=timeout_ms,
334
337
  )
335
338
 
@@ -369,7 +372,7 @@ class Commissions(BaseSDK):
369
372
  response_data: Any = None
370
373
  if utils.match_response(http_res, "200", "application/json"):
371
374
  return unmarshal_json_response(
372
- Optional[operations.UpdateCommissionResponseBody], http_res
375
+ operations.UpdateCommissionResponseBody, http_res
373
376
  )
374
377
  if utils.match_response(http_res, "400", "application/json"):
375
378
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)
@@ -424,7 +427,7 @@ class Commissions(BaseSDK):
424
427
  server_url: Optional[str] = None,
425
428
  timeout_ms: Optional[int] = None,
426
429
  http_headers: Optional[Mapping[str, str]] = None,
427
- ) -> Optional[operations.UpdateCommissionResponseBody]:
430
+ ) -> operations.UpdateCommissionResponseBody:
428
431
  r"""Update a commission.
429
432
 
430
433
  Update an existing commission amount. This is useful for handling refunds (partial or full) or fraudulent sales.
@@ -469,6 +472,7 @@ class Commissions(BaseSDK):
469
472
  "json",
470
473
  Optional[operations.UpdateCommissionRequestBody],
471
474
  ),
475
+ allow_empty_value=None,
472
476
  timeout_ms=timeout_ms,
473
477
  )
474
478
 
@@ -508,7 +512,7 @@ class Commissions(BaseSDK):
508
512
  response_data: Any = None
509
513
  if utils.match_response(http_res, "200", "application/json"):
510
514
  return unmarshal_json_response(
511
- Optional[operations.UpdateCommissionResponseBody], http_res
515
+ operations.UpdateCommissionResponseBody, http_res
512
516
  )
513
517
  if utils.match_response(http_res, "400", "application/json"):
514
518
  response_data = unmarshal_json_response(errors.BadRequestData, http_res)