growsurf-python 1.16.0__tar.gz → 1.18.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 (220) hide show
  1. growsurf_python-1.18.0/.release-please-manifest.json +3 -0
  2. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/CHANGELOG.md +31 -0
  3. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/PKG-INFO +1 -1
  4. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/api.md +19 -14
  5. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/pyproject.toml +1 -1
  6. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/requirements-dev.lock +1 -1
  7. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_client.py +1 -38
  8. growsurf_python-1.18.0/src/growsurf/_exceptions.py +199 -0
  9. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_version.py +1 -1
  10. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/__init__.py +0 -14
  11. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/__init__.py +14 -0
  12. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/campaign.py +73 -25
  13. growsurf_python-1.18.0/src/growsurf/resources/campaign/custom_domain.py +450 -0
  14. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/design.py +12 -6
  15. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/emails.py +4 -4
  16. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/installation.py +4 -4
  17. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/options.py +10 -10
  18. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/participant.py +52 -32
  19. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/rewards.py +76 -16
  20. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/webhooks.py +40 -8
  21. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/team.py +34 -2
  22. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/__init__.py +0 -2
  23. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/__init__.py +8 -0
  24. growsurf_python-1.18.0/src/growsurf/types/campaign/campaign_custom_domain.py +49 -0
  25. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/campaign_design.py +16 -12
  26. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/campaign_options.py +1 -1
  27. growsurf_python-1.18.0/src/growsurf/types/campaign/custom_domain_set_params.py +15 -0
  28. growsurf_python-1.18.0/src/growsurf/types/campaign/delete_campaign_custom_domain_response.py +13 -0
  29. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant.py +25 -64
  30. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_add_params.py +13 -3
  31. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_email_params.py +11 -8
  32. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_get_payout_destination_response.py +8 -5
  33. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_list_referrals_params.py +1 -1
  34. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_response.py +1 -1
  35. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/reward_create_params.py +26 -6
  36. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/reward_update_params.py +26 -6
  37. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/webhook_create_params.py +11 -1
  38. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +13 -3
  39. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_create_params.py +10 -5
  40. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_list_referrals_params.py +1 -1
  41. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_update_params.py +3 -2
  42. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/commission_structure.py +5 -0
  43. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/referral_flow_screenshot.py +8 -7
  44. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/referral_list.py +12 -0
  45. growsurf_python-1.18.0/tests/api_resources/campaign/test_custom_domain.py +127 -0
  46. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/test_participant.py +2 -0
  47. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/test_campaign.py +2 -0
  48. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/test_team_contract.py +1 -7
  49. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/uv.lock +305 -239
  50. growsurf_python-1.16.0/.release-please-manifest.json +0 -3
  51. growsurf_python-1.16.0/src/growsurf/_exceptions.py +0 -108
  52. growsurf_python-1.16.0/src/growsurf/resources/account.py +0 -219
  53. growsurf_python-1.16.0/src/growsurf/types/account_create_params.py +0 -23
  54. growsurf_python-1.16.0/src/growsurf/types/create_account_response.py +0 -29
  55. growsurf_python-1.16.0/tests/api_resources/test_account.py +0 -153
  56. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/.gitignore +0 -0
  57. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/CONTRIBUTING.md +0 -0
  58. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/LICENSE +0 -0
  59. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/README.md +0 -0
  60. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/SECURITY.md +0 -0
  61. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/bin/check-release-environment +0 -0
  62. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/bin/publish-pypi +0 -0
  63. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/examples/.keep +0 -0
  64. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/release-please-config.json +0 -0
  65. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/__init__.py +0 -0
  66. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_base_client.py +0 -0
  67. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_compat.py +0 -0
  68. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_constants.py +0 -0
  69. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_files.py +0 -0
  70. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_models.py +0 -0
  71. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_qs.py +0 -0
  72. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_resource.py +0 -0
  73. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_response.py +0 -0
  74. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_streaming.py +0 -0
  75. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_types.py +0 -0
  76. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/__init__.py +0 -0
  77. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_compat.py +0 -0
  78. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_datetime_parse.py +0 -0
  79. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_json.py +0 -0
  80. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_logs.py +0 -0
  81. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_path.py +0 -0
  82. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_proxy.py +0 -0
  83. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_reflection.py +0 -0
  84. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_resources_proxy.py +0 -0
  85. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_streams.py +0 -0
  86. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_sync.py +0 -0
  87. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_transform.py +0 -0
  88. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_typing.py +0 -0
  89. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/_utils/_utils.py +0 -0
  90. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/lib/.keep +0 -0
  91. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/py.typed +0 -0
  92. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/commission.py +0 -0
  93. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/integrations.py +0 -0
  94. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/program_resources.py +0 -0
  95. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/resources/campaign/reward.py +0 -0
  96. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/affiliate_application.py +0 -0
  97. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/affiliate_application_answer.py +0 -0
  98. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/affiliate_application_list_response.py +0 -0
  99. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/affiliate_invite.py +0 -0
  100. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/affiliate_invite_list_response.py +0 -0
  101. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/analytics_availability.py +0 -0
  102. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/analytics_unavailable_reason.py +0 -0
  103. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/campaign.py +0 -0
  104. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/campaign_emails.py +0 -0
  105. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/campaign_installation.py +0 -0
  106. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
  107. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
  108. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
  109. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/delete_program_resource_response.py +0 -0
  110. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
  111. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
  112. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/email_participant_response.py +0 -0
  113. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
  114. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/integration.py +0 -0
  115. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/integration_list_response.py +0 -0
  116. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/language.py +0 -0
  117. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_activation_analytics.py +0 -0
  118. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
  119. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_analytics_params.py +0 -0
  120. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_analytics_response.py +0 -0
  121. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
  122. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
  123. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
  124. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
  125. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
  126. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
  127. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
  128. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_list_rewards_response.py +0 -0
  129. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_record_transaction_params.py +0 -0
  130. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
  131. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -0
  132. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
  133. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_params.py +0 -0
  134. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_reward.py +0 -0
  135. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
  136. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
  137. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
  138. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
  139. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/participant_update_params.py +0 -0
  140. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/pending_analytics_erasure.py +0 -0
  141. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/program_resource.py +0 -0
  142. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/program_resource_list_response.py +0 -0
  143. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/program_resource_upload_result.py +0 -0
  144. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/program_resource_upload_ticket.py +0 -0
  145. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/referral_source.py +0 -0
  146. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/referral_status.py +0 -0
  147. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/reward.py +0 -0
  148. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
  149. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
  150. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
  151. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
  152. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
  153. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/webhook.py +0 -0
  154. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/webhook_event.py +0 -0
  155. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
  156. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
  157. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
  158. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
  159. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_activation_analytics_response.py +0 -0
  160. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_create_affiliate_invite_params.py +0 -0
  161. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
  162. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_engagement_analytics.py +0 -0
  163. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_list_affiliate_applications_params.py +0 -0
  164. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_list_affiliate_invites_params.py +0 -0
  165. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
  166. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
  167. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_list_participants_params.py +0 -0
  168. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
  169. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_list_response.py +0 -0
  170. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_retrieve_activation_analytics_params.py +0 -0
  171. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_retrieve_analytics_params.py +0 -0
  172. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_retrieve_analytics_response.py +0 -0
  173. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/campaign_review_affiliate_application_params.py +0 -0
  174. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/email_analytics.py +0 -0
  175. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/participant_commission_list.py +0 -0
  176. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/participant_list.py +0 -0
  177. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/participant_payout_list.py +0 -0
  178. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/referral_flow_screenshots_response.py +0 -0
  179. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/rotate_api_key_response.py +0 -0
  180. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/team.py +0 -0
  181. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/team_update_params.py +0 -0
  182. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/src/growsurf/types/verification_email_response.py +0 -0
  183. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/__init__.py +0 -0
  184. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/__init__.py +0 -0
  185. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/__init__.py +0 -0
  186. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/test_commission.py +0 -0
  187. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/test_design.py +0 -0
  188. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/test_emails.py +0 -0
  189. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/test_installation.py +0 -0
  190. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/test_integrations.py +0 -0
  191. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/test_options.py +0 -0
  192. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/test_program_resources.py +0 -0
  193. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/test_reward.py +0 -0
  194. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/test_rewards.py +0 -0
  195. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/api_resources/campaign/test_webhooks.py +0 -0
  196. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/conftest.py +0 -0
  197. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/sample_file.txt +0 -0
  198. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_client.py +0 -0
  199. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_extract_files.py +0 -0
  200. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_files.py +0 -0
  201. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_models.py +0 -0
  202. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_qs.py +0 -0
  203. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_required_args.py +0 -0
  204. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_response.py +0 -0
  205. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_streaming.py +0 -0
  206. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_transform.py +0 -0
  207. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_utils/test_datetime_parse.py +0 -0
  208. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_utils/test_json.py +0 -0
  209. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_utils/test_path.py +0 -0
  210. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_utils/test_proxy.py +0 -0
  211. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/test_utils/test_typing.py +0 -0
  212. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/types/test_affiliate_application.py +0 -0
  213. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/types/test_analytics_reward_status.py +0 -0
  214. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/types/test_email_analytics.py +0 -0
  215. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/types/test_lead_reward_events.py +0 -0
  216. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/types/test_participant_activation_engagement_analytics.py +0 -0
  217. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/types/test_participant_contract.py +0 -0
  218. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/types/test_payout_provider_forward_compat.py +0 -0
  219. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/types/test_referral_source.py +0 -0
  220. {growsurf_python-1.16.0 → growsurf_python-1.18.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.18.0"
3
+ }
@@ -1,5 +1,36 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.18.0](https://github.com/growsurf/growsurf-python/compare/v1.17.0...v1.18.0) (2026-11-03)
4
+
5
+
6
+ ### Features
7
+
8
+ * remove account create method (endpoint retired) ([0a464f2](https://github.com/growsurf/growsurf-python/commit/0a464f2e5d7bcb644d333545907b1847117936a2))
9
+ * remove account create method (endpoint retired) ([7a60066](https://github.com/growsurf/growsurf-python/commit/7a60066f82a98eb1715fd457c76a7e1dc63bd386))
10
+
11
+ ## [1.17.0](https://github.com/growsurf/growsurf-python/compare/v1.16.0...v1.17.0) (2026-11-03)
12
+
13
+
14
+ ### Features
15
+
16
+ * add Tint and Glass program styles ([a975c13](https://github.com/growsurf/growsurf-python/commit/a975c13b267bf97ff9d57f26673f92bc29642b35))
17
+ * **api:** add languages.flagCountries to Campaign Options ([d5663f0](https://github.com/growsurf/growsurf-python/commit/d5663f08a9fa3e4ec421a90af9b4491ba4eb6dc4))
18
+ * **api:** sync REST v2 contract changes ([2a0e777](https://github.com/growsurf/growsurf-python/commit/2a0e7778a0bdddadbdfe7b55c225723d2c813d02))
19
+ * expose documented error-body fields and sync campaign and participant models ([65db348](https://github.com/growsurf/growsurf-python/commit/65db34829db847313e17757832f6d8f2324535ba))
20
+ * expose program visual style in campaign design ([0d93f91](https://github.com/growsurf/growsurf-python/commit/0d93f917180557f492016acc623cf449962b7120))
21
+
22
+
23
+ ### Bug Fixes
24
+
25
+ * **deps:** bump aiohttp to 3.14.5 and certifi to 2026.10.23 for security advisories ([c9640ee](https://github.com/growsurf/growsurf-python/commit/c9640eeb58f96838f52b3b24f2168a24b5402e74))
26
+
27
+
28
+ ### Documentation
29
+
30
+ * clarify Add Participant claim-offer wording and page title defaults ([5fc74e8](https://github.com/growsurf/growsurf-python/commit/5fc74e8666defb009a7870ee20701c0ce8ca0506))
31
+ * clarify referral reward metadata amounts ([1bf9897](https://github.com/growsurf/growsurf-python/commit/1bf9897e437a67f4c912fcec24f234d24ebbf155))
32
+ * correct default program style ([4f6bbd5](https://github.com/growsurf/growsurf-python/commit/4f6bbd5425ceb84889d14ddd70b0e2653ef94f04))
33
+
3
34
  ## [1.16.0](https://github.com/growsurf/growsurf-python/compare/v1.15.1...v1.16.0) (2026-10-19)
4
35
 
5
36
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: growsurf-python
3
- Version: 1.16.0
3
+ Version: 1.18.0
4
4
  Summary: The official Python library for the growsurf API
5
5
  Project-URL: Homepage, https://growsurf.com/
6
6
  Project-URL: Repository, https://github.com/growsurf/growsurf-python
@@ -1,17 +1,3 @@
1
- # Account
2
-
3
- Types:
4
-
5
- ```python
6
- from growsurf.types import (
7
- CreateAccountResponse,
8
- )
9
- ```
10
-
11
- Methods:
12
-
13
- - <code title="post /accounts">client.account.<a href="./src/growsurf/resources/account.py">create</a>(\*\*<a href="src/growsurf/types/account_create_params.py">params</a>) -> <a href="./src/growsurf/types/create_account_response.py">CreateAccountResponse</a></code>
14
-
15
1
  # Team
16
2
 
17
3
  Types:
@@ -287,3 +273,22 @@ Methods:
287
273
 
288
274
  - <code title="get /campaign/{id}/installation">client.campaign.installation.<a href="./src/growsurf/resources/campaign/installation.py">retrieve</a>(id) -> <a href="./src/growsurf/types/campaign/campaign_installation.py">CampaignInstallation</a></code>
289
275
  - <code title="patch /campaign/{id}/installation">client.campaign.installation.<a href="./src/growsurf/resources/campaign/installation.py">update</a>(id, \*, body) -> <a href="./src/growsurf/types/campaign/campaign_installation.py">CampaignInstallation</a></code>
276
+
277
+ ## CustomDomain
278
+
279
+ Types:
280
+
281
+ ```python
282
+ from growsurf.types.campaign import (
283
+ CampaignCustomDomain,
284
+ CampaignCustomDomainDNSRecord,
285
+ DeleteCampaignCustomDomainResponse,
286
+ )
287
+ ```
288
+
289
+ Methods:
290
+
291
+ - <code title="get /campaign/{id}/custom-domain">client.campaign.custom_domain.<a href="./src/growsurf/resources/campaign/custom_domain.py">retrieve</a>(id) -> <a href="./src/growsurf/types/campaign/campaign_custom_domain.py">CampaignCustomDomain</a></code>
292
+ - <code title="put /campaign/{id}/custom-domain">client.campaign.custom_domain.<a href="./src/growsurf/resources/campaign/custom_domain.py">set</a>(id, \*\*<a href="src/growsurf/types/campaign/custom_domain_set_params.py">params</a>) -> <a href="./src/growsurf/types/campaign/campaign_custom_domain.py">CampaignCustomDomain</a></code>
293
+ - <code title="post /campaign/{id}/custom-domain/verify">client.campaign.custom_domain.<a href="./src/growsurf/resources/campaign/custom_domain.py">verify</a>(id) -> <a href="./src/growsurf/types/campaign/campaign_custom_domain.py">CampaignCustomDomain</a></code>
294
+ - <code title="delete /campaign/{id}/custom-domain">client.campaign.custom_domain.<a href="./src/growsurf/resources/campaign/custom_domain.py">delete</a>(id) -> <a href="./src/growsurf/types/campaign/delete_campaign_custom_domain_response.py">DeleteCampaignCustomDomainResponse</a></code>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "growsurf-python"
3
- version = "1.16.0"
3
+ version = "1.18.0"
4
4
  description = "The official Python library for the growsurf API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -9,7 +9,7 @@ anyio==4.15.1
9
9
  # httpx
10
10
  backports-asyncio-runner==1.2.0 ; python_full_version < '3.11'
11
11
  # via pytest-asyncio
12
- certifi==2026.1.4
12
+ certifi==2026.10.23
13
13
  # via
14
14
  # httpcore
15
15
  # httpx
@@ -36,9 +36,8 @@ from ._base_client import (
36
36
  )
37
37
 
38
38
  if TYPE_CHECKING:
39
- from .resources import team, account, campaign
39
+ from .resources import team, campaign
40
40
  from .resources.team import TeamResource, AsyncTeamResource
41
- from .resources.account import AccountResource, AsyncAccountResource
42
41
  from .resources.campaign.campaign import CampaignResource, AsyncCampaignResource
43
42
 
44
43
  __all__ = [
@@ -116,12 +115,6 @@ class Growsurf(SyncAPIClient):
116
115
  )
117
116
  self._idempotency_header = "Idempotency-Key"
118
117
 
119
- @cached_property
120
- def account(self) -> AccountResource:
121
- from .resources.account import AccountResource
122
-
123
- return AccountResource(self)
124
-
125
118
  @cached_property
126
119
  def team(self) -> TeamResource:
127
120
  from .resources.team import TeamResource
@@ -319,12 +312,6 @@ class AsyncGrowsurf(AsyncAPIClient):
319
312
  )
320
313
  self._idempotency_header = "Idempotency-Key"
321
314
 
322
- @cached_property
323
- def account(self) -> AsyncAccountResource:
324
- from .resources.account import AsyncAccountResource
325
-
326
- return AsyncAccountResource(self)
327
-
328
315
  @cached_property
329
316
  def team(self) -> AsyncTeamResource:
330
317
  from .resources.team import AsyncTeamResource
@@ -465,12 +452,6 @@ class GrowsurfWithRawResponse:
465
452
  def __init__(self, client: Growsurf) -> None:
466
453
  self._client = client
467
454
 
468
- @cached_property
469
- def account(self) -> account.AccountResourceWithRawResponse:
470
- from .resources.account import AccountResourceWithRawResponse
471
-
472
- return AccountResourceWithRawResponse(self._client.account)
473
-
474
455
  @cached_property
475
456
  def team(self) -> team.TeamResourceWithRawResponse:
476
457
  from .resources.team import TeamResourceWithRawResponse
@@ -490,12 +471,6 @@ class AsyncGrowsurfWithRawResponse:
490
471
  def __init__(self, client: AsyncGrowsurf) -> None:
491
472
  self._client = client
492
473
 
493
- @cached_property
494
- def account(self) -> account.AsyncAccountResourceWithRawResponse:
495
- from .resources.account import AsyncAccountResourceWithRawResponse
496
-
497
- return AsyncAccountResourceWithRawResponse(self._client.account)
498
-
499
474
  @cached_property
500
475
  def team(self) -> team.AsyncTeamResourceWithRawResponse:
501
476
  from .resources.team import AsyncTeamResourceWithRawResponse
@@ -515,12 +490,6 @@ class GrowsurfWithStreamedResponse:
515
490
  def __init__(self, client: Growsurf) -> None:
516
491
  self._client = client
517
492
 
518
- @cached_property
519
- def account(self) -> account.AccountResourceWithStreamingResponse:
520
- from .resources.account import AccountResourceWithStreamingResponse
521
-
522
- return AccountResourceWithStreamingResponse(self._client.account)
523
-
524
493
  @cached_property
525
494
  def team(self) -> team.TeamResourceWithStreamingResponse:
526
495
  from .resources.team import TeamResourceWithStreamingResponse
@@ -540,12 +509,6 @@ class AsyncGrowsurfWithStreamedResponse:
540
509
  def __init__(self, client: AsyncGrowsurf) -> None:
541
510
  self._client = client
542
511
 
543
- @cached_property
544
- def account(self) -> account.AsyncAccountResourceWithStreamingResponse:
545
- from .resources.account import AsyncAccountResourceWithStreamingResponse
546
-
547
- return AsyncAccountResourceWithStreamingResponse(self._client.account)
548
-
549
512
  @cached_property
550
513
  def team(self) -> team.AsyncTeamResourceWithStreamingResponse:
551
514
  from .resources.team import AsyncTeamResourceWithStreamingResponse
@@ -0,0 +1,199 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Dict, List, cast
6
+ from typing_extensions import Literal
7
+
8
+ import httpx
9
+
10
+ __all__ = [
11
+ "BadRequestError",
12
+ "AuthenticationError",
13
+ "PermissionDeniedError",
14
+ "NotFoundError",
15
+ "ConflictError",
16
+ "UnprocessableEntityError",
17
+ "RateLimitError",
18
+ "InternalServerError",
19
+ ]
20
+
21
+
22
+ class GrowsurfError(Exception):
23
+ pass
24
+
25
+
26
+ class APIError(GrowsurfError):
27
+ message: str
28
+ request: httpx.Request
29
+
30
+ body: object | None
31
+ """The API response body.
32
+
33
+ If the API responded with a valid JSON structure then this property will be the
34
+ decoded result.
35
+
36
+ If it isn't a valid JSON structure then this will be the raw response.
37
+
38
+ If there was no response associated with this error then it will be `None`.
39
+ """
40
+
41
+ def __init__(self, message: str, request: httpx.Request, *, body: object | None) -> None: # noqa: ARG002
42
+ super().__init__(message)
43
+ self.request = request
44
+ self.message = message
45
+ self.body = body
46
+
47
+
48
+ class APIResponseValidationError(APIError):
49
+ response: httpx.Response
50
+ status_code: int
51
+
52
+ def __init__(self, response: httpx.Response, body: object | None, *, message: str | None = None) -> None:
53
+ super().__init__(message or "Data returned by API invalid for expected schema.", response.request, body=body)
54
+ self.response = response
55
+ self.status_code = response.status_code
56
+
57
+
58
+ class APIStatusError(APIError):
59
+ """Raised when an API response has a status code of 4xx or 5xx."""
60
+
61
+ response: httpx.Response
62
+ status_code: int
63
+
64
+ # Documented error-body fields. Each is `None` when the body omits it or sends another
65
+ # type; `body` keeps the complete response body, including fields added later.
66
+ error_name: str | None
67
+ """Error name returned for the failed request."""
68
+
69
+ error_code: str | None
70
+ """Stable machine-readable error code."""
71
+
72
+ error_message: str | None
73
+ """Human-readable error message."""
74
+
75
+ errors: List[Dict[str, object]] | None
76
+ """Optional validation details for specific request fields."""
77
+
78
+ support_url: str | None
79
+ """Support URL related to the error, when available."""
80
+
81
+ policy_name: str | None
82
+ """Rate-limit policy name for `429` errors, when available."""
83
+
84
+ level: str | None
85
+ """Error severity level, when available."""
86
+
87
+ timestamp: str | None
88
+ """When the error response was created."""
89
+
90
+ fraud_risk_level: str | None
91
+ """Fraud risk level assigned to the blocked signup."""
92
+
93
+ fraud_reason_code: str | None
94
+ """Machine-readable reason code for the fraud decision."""
95
+
96
+ matched_participant_ids: List[str] | None
97
+ """Existing participant IDs related to the fraud match."""
98
+
99
+ email: str | None
100
+ """Email address from the blocked signup attempt."""
101
+
102
+ referrer_id: str | None
103
+ """Referrer participant ID supplied with the blocked signup, or `null`."""
104
+
105
+ ip_address: str | None
106
+ """IP address supplied with the blocked signup, or `null`."""
107
+
108
+ fingerprint: str | None
109
+ """Browser fingerprint supplied with the blocked signup, or `null`."""
110
+
111
+ blocked_at: str | None
112
+ """When the signup was blocked."""
113
+
114
+ def __init__(self, message: str, *, response: httpx.Response, body: object | None) -> None:
115
+ super().__init__(message, response.request, body=body)
116
+ self.response = response
117
+ self.status_code = response.status_code
118
+
119
+ fields = cast(Dict[str, object], body) if isinstance(body, dict) else {}
120
+ self.error_name = _str_or_none(fields.get("name"))
121
+ self.error_code = _str_or_none(fields.get("code"))
122
+ self.error_message = _str_or_none(fields.get("message"))
123
+ self.errors = _record_list_or_none(fields.get("errors"))
124
+ self.support_url = _str_or_none(fields.get("supportUrl"))
125
+ self.policy_name = _str_or_none(fields.get("policyName"))
126
+ self.level = _str_or_none(fields.get("level"))
127
+ self.timestamp = _str_or_none(fields.get("timestamp"))
128
+ self.fraud_risk_level = _str_or_none(fields.get("fraudRiskLevel"))
129
+ self.fraud_reason_code = _str_or_none(fields.get("fraudReasonCode"))
130
+ self.matched_participant_ids = _str_list_or_none(fields.get("matchedParticipantIds"))
131
+ self.email = _str_or_none(fields.get("email"))
132
+ self.referrer_id = _str_or_none(fields.get("referrerId"))
133
+ self.ip_address = _str_or_none(fields.get("ipAddress"))
134
+ self.fingerprint = _str_or_none(fields.get("fingerprint"))
135
+ self.blocked_at = _str_or_none(fields.get("blockedAt"))
136
+
137
+
138
+ class APIConnectionError(APIError):
139
+ def __init__(self, *, message: str = "Connection error.", request: httpx.Request) -> None:
140
+ super().__init__(message, request, body=None)
141
+
142
+
143
+ class APITimeoutError(APIConnectionError):
144
+ def __init__(self, request: httpx.Request) -> None:
145
+ super().__init__(message="Request timed out.", request=request)
146
+
147
+
148
+ class BadRequestError(APIStatusError):
149
+ status_code: Literal[400] = 400 # pyright: ignore[reportIncompatibleVariableOverride]
150
+
151
+
152
+ class AuthenticationError(APIStatusError):
153
+ status_code: Literal[401] = 401 # pyright: ignore[reportIncompatibleVariableOverride]
154
+
155
+
156
+ class PermissionDeniedError(APIStatusError):
157
+ status_code: Literal[403] = 403 # pyright: ignore[reportIncompatibleVariableOverride]
158
+
159
+
160
+ class NotFoundError(APIStatusError):
161
+ status_code: Literal[404] = 404 # pyright: ignore[reportIncompatibleVariableOverride]
162
+
163
+
164
+ class ConflictError(APIStatusError):
165
+ status_code: Literal[409] = 409 # pyright: ignore[reportIncompatibleVariableOverride]
166
+
167
+
168
+ class UnprocessableEntityError(APIStatusError):
169
+ status_code: Literal[422] = 422 # pyright: ignore[reportIncompatibleVariableOverride]
170
+
171
+
172
+ class RateLimitError(APIStatusError):
173
+ status_code: Literal[429] = 429 # pyright: ignore[reportIncompatibleVariableOverride]
174
+
175
+
176
+ class InternalServerError(APIStatusError):
177
+ pass
178
+
179
+
180
+ def _str_or_none(value: object) -> str | None:
181
+ return value if isinstance(value, str) else None
182
+
183
+
184
+ def _str_list_or_none(value: object) -> List[str] | None:
185
+ if not isinstance(value, list):
186
+ return None
187
+ items = cast(List[object], value)
188
+ if not all(isinstance(item, str) for item in items):
189
+ return None
190
+ return cast(List[str], items)
191
+
192
+
193
+ def _record_list_or_none(value: object) -> List[Dict[str, object]] | None:
194
+ if not isinstance(value, list):
195
+ return None
196
+ items = cast(List[object], value)
197
+ if not all(isinstance(item, dict) for item in items):
198
+ return None
199
+ return cast(List[Dict[str, object]], items)
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "growsurf"
4
- __version__ = "1.16.0" # x-release-please-version
4
+ __version__ = "1.18.0" # x-release-please-version
@@ -8,14 +8,6 @@ from .team import (
8
8
  TeamResourceWithStreamingResponse,
9
9
  AsyncTeamResourceWithStreamingResponse,
10
10
  )
11
- from .account import (
12
- AccountResource,
13
- AsyncAccountResource,
14
- AccountResourceWithRawResponse,
15
- AsyncAccountResourceWithRawResponse,
16
- AccountResourceWithStreamingResponse,
17
- AsyncAccountResourceWithStreamingResponse,
18
- )
19
11
  from .campaign import (
20
12
  CampaignResource,
21
13
  AsyncCampaignResource,
@@ -26,12 +18,6 @@ from .campaign import (
26
18
  )
27
19
 
28
20
  __all__ = [
29
- "AccountResource",
30
- "AsyncAccountResource",
31
- "AccountResourceWithRawResponse",
32
- "AsyncAccountResourceWithRawResponse",
33
- "AccountResourceWithStreamingResponse",
34
- "AsyncAccountResourceWithStreamingResponse",
35
21
  "TeamResource",
36
22
  "AsyncTeamResource",
37
23
  "TeamResourceWithRawResponse",
@@ -88,6 +88,14 @@ from .integrations import (
88
88
  IntegrationsResourceWithStreamingResponse,
89
89
  AsyncIntegrationsResourceWithStreamingResponse,
90
90
  )
91
+ from .custom_domain import (
92
+ CustomDomainResource,
93
+ AsyncCustomDomainResource,
94
+ CustomDomainResourceWithRawResponse,
95
+ AsyncCustomDomainResourceWithRawResponse,
96
+ CustomDomainResourceWithStreamingResponse,
97
+ AsyncCustomDomainResourceWithStreamingResponse,
98
+ )
91
99
  from .program_resources import (
92
100
  ProgramResourcesResource,
93
101
  AsyncProgramResourcesResource,
@@ -158,6 +166,12 @@ __all__ = [
158
166
  "AsyncInstallationResourceWithRawResponse",
159
167
  "InstallationResourceWithStreamingResponse",
160
168
  "AsyncInstallationResourceWithStreamingResponse",
169
+ "CustomDomainResource",
170
+ "AsyncCustomDomainResource",
171
+ "CustomDomainResourceWithRawResponse",
172
+ "AsyncCustomDomainResourceWithRawResponse",
173
+ "CustomDomainResourceWithStreamingResponse",
174
+ "AsyncCustomDomainResourceWithStreamingResponse",
161
175
  "CommissionResource",
162
176
  "AsyncCommissionResource",
163
177
  "CommissionResourceWithRawResponse",