growsurf-python 1.8.0__tar.gz → 1.9.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 (213) hide show
  1. growsurf_python-1.9.0/.release-please-manifest.json +3 -0
  2. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/CHANGELOG.md +12 -0
  3. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/PKG-INFO +1 -1
  4. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/api.md +3 -0
  5. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/pyproject.toml +1 -1
  6. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_version.py +1 -1
  7. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/campaign.py +91 -0
  8. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/__init__.py +2 -0
  9. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant.py +12 -0
  10. growsurf_python-1.9.0/src/growsurf/types/referral_flow_screenshot.py +33 -0
  11. growsurf_python-1.9.0/src/growsurf/types/referral_flow_screenshots_response.py +22 -0
  12. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/test_campaign.py +85 -0
  13. growsurf_python-1.8.0/.release-please-manifest.json +0 -3
  14. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/.gitignore +0 -0
  15. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/CONTRIBUTING.md +0 -0
  16. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/LICENSE +0 -0
  17. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/README.md +0 -0
  18. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/SECURITY.md +0 -0
  19. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/bin/check-release-environment +0 -0
  20. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/bin/publish-pypi +0 -0
  21. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/examples/.keep +0 -0
  22. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/release-please-config.json +0 -0
  23. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/requirements-dev.lock +0 -0
  24. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/__init__.py +0 -0
  25. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_base_client.py +0 -0
  26. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_client.py +0 -0
  27. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_compat.py +0 -0
  28. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_constants.py +0 -0
  29. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_exceptions.py +0 -0
  30. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_files.py +0 -0
  31. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_models.py +0 -0
  32. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_qs.py +0 -0
  33. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_resource.py +0 -0
  34. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_response.py +0 -0
  35. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_streaming.py +0 -0
  36. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_types.py +0 -0
  37. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/__init__.py +0 -0
  38. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_compat.py +0 -0
  39. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_datetime_parse.py +0 -0
  40. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_json.py +0 -0
  41. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_logs.py +0 -0
  42. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_path.py +0 -0
  43. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_proxy.py +0 -0
  44. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_reflection.py +0 -0
  45. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_resources_proxy.py +0 -0
  46. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_streams.py +0 -0
  47. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_sync.py +0 -0
  48. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_transform.py +0 -0
  49. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_typing.py +0 -0
  50. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/_utils/_utils.py +0 -0
  51. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/lib/.keep +0 -0
  52. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/py.typed +0 -0
  53. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/__init__.py +0 -0
  54. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/account.py +0 -0
  55. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/__init__.py +0 -0
  56. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/commission.py +0 -0
  57. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/design.py +0 -0
  58. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/emails.py +0 -0
  59. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/installation.py +0 -0
  60. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/integrations.py +0 -0
  61. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/options.py +0 -0
  62. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/participant.py +0 -0
  63. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/program_resources.py +0 -0
  64. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/reward.py +0 -0
  65. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/rewards.py +0 -0
  66. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/campaign/webhooks.py +0 -0
  67. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/resources/team.py +0 -0
  68. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/account_create_params.py +0 -0
  69. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/affiliate_application.py +0 -0
  70. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/affiliate_application_answer.py +0 -0
  71. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/affiliate_application_list_response.py +0 -0
  72. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/affiliate_invite.py +0 -0
  73. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/affiliate_invite_list_response.py +0 -0
  74. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/analytics_availability.py +0 -0
  75. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/analytics_unavailable_reason.py +0 -0
  76. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/__init__.py +0 -0
  77. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/campaign.py +0 -0
  78. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/campaign_design.py +0 -0
  79. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/campaign_emails.py +0 -0
  80. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/campaign_installation.py +0 -0
  81. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/campaign_options.py +0 -0
  82. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
  83. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
  84. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
  85. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/delete_program_resource_response.py +0 -0
  86. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
  87. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
  88. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/email_participant_response.py +0 -0
  89. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
  90. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/integration.py +0 -0
  91. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/integration_list_response.py +0 -0
  92. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_activation_analytics.py +0 -0
  93. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
  94. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_add_params.py +0 -0
  95. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_analytics_params.py +0 -0
  96. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_analytics_response.py +0 -0
  97. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
  98. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
  99. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
  100. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_email_params.py +0 -0
  101. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_get_payout_destination_response.py +0 -0
  102. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
  103. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
  104. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
  105. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
  106. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
  107. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_list_rewards_response.py +0 -0
  108. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_record_transaction_params.py +0 -0
  109. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
  110. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -0
  111. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
  112. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_params.py +0 -0
  113. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_response.py +0 -0
  114. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_reward.py +0 -0
  115. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
  116. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
  117. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
  118. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
  119. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/participant_update_params.py +0 -0
  120. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/pending_analytics_erasure.py +0 -0
  121. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/program_resource.py +0 -0
  122. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/program_resource_list_response.py +0 -0
  123. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/program_resource_upload_result.py +0 -0
  124. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/program_resource_upload_ticket.py +0 -0
  125. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/referral_source.py +0 -0
  126. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/referral_status.py +0 -0
  127. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/reward.py +0 -0
  128. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
  129. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
  130. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/reward_create_params.py +0 -0
  131. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
  132. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
  133. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
  134. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/reward_update_params.py +0 -0
  135. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/webhook.py +0 -0
  136. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
  137. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/webhook_event.py +0 -0
  138. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
  139. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
  140. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
  141. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
  142. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_activation_analytics_response.py +0 -0
  143. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_create_affiliate_invite_params.py +0 -0
  144. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +0 -0
  145. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
  146. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_create_params.py +0 -0
  147. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_engagement_analytics.py +0 -0
  148. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_list_affiliate_applications_params.py +0 -0
  149. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_list_affiliate_invites_params.py +0 -0
  150. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
  151. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
  152. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_list_participants_params.py +0 -0
  153. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
  154. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
  155. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_list_response.py +0 -0
  156. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_retrieve_activation_analytics_params.py +0 -0
  157. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_retrieve_analytics_params.py +0 -0
  158. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_retrieve_analytics_response.py +0 -0
  159. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_review_affiliate_application_params.py +0 -0
  160. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/campaign_update_params.py +0 -0
  161. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/commission_structure.py +0 -0
  162. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/create_account_response.py +0 -0
  163. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/email_analytics.py +0 -0
  164. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/participant_commission_list.py +0 -0
  165. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/participant_list.py +0 -0
  166. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/participant_payout_list.py +0 -0
  167. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/referral_list.py +0 -0
  168. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/rotate_api_key_response.py +0 -0
  169. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/team.py +0 -0
  170. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/team_update_params.py +0 -0
  171. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/src/growsurf/types/verification_email_response.py +0 -0
  172. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/__init__.py +0 -0
  173. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/__init__.py +0 -0
  174. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/__init__.py +0 -0
  175. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/test_commission.py +0 -0
  176. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/test_design.py +0 -0
  177. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/test_emails.py +0 -0
  178. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/test_installation.py +0 -0
  179. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/test_integrations.py +0 -0
  180. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/test_options.py +0 -0
  181. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/test_participant.py +0 -0
  182. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/test_program_resources.py +0 -0
  183. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/test_reward.py +0 -0
  184. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/test_rewards.py +0 -0
  185. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/campaign/test_webhooks.py +0 -0
  186. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/test_account.py +0 -0
  187. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/api_resources/test_team_contract.py +0 -0
  188. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/conftest.py +0 -0
  189. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/sample_file.txt +0 -0
  190. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_client.py +0 -0
  191. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_extract_files.py +0 -0
  192. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_files.py +0 -0
  193. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_models.py +0 -0
  194. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_qs.py +0 -0
  195. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_required_args.py +0 -0
  196. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_response.py +0 -0
  197. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_streaming.py +0 -0
  198. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_transform.py +0 -0
  199. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_utils/test_datetime_parse.py +0 -0
  200. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_utils/test_json.py +0 -0
  201. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_utils/test_path.py +0 -0
  202. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_utils/test_proxy.py +0 -0
  203. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/test_utils/test_typing.py +0 -0
  204. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/types/test_affiliate_application.py +0 -0
  205. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/types/test_analytics_reward_status.py +0 -0
  206. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/types/test_email_analytics.py +0 -0
  207. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/types/test_lead_reward_events.py +0 -0
  208. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/types/test_participant_activation_engagement_analytics.py +0 -0
  209. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/types/test_participant_contract.py +0 -0
  210. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/types/test_payout_provider_forward_compat.py +0 -0
  211. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/types/test_referral_source.py +0 -0
  212. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/tests/utils.py +0 -0
  213. {growsurf_python-1.8.0 → growsurf_python-1.9.0}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.9.0"
3
+ }
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.9.0](https://github.com/growsurf/growsurf-python/compare/v1.8.0...v1.9.0) (2026-09-21)
4
+
5
+
6
+ ### Features
7
+
8
+ * **api:** add referral-flow screenshot capture and participant leadCount ([609e999](https://github.com/growsurf/growsurf-python/commit/609e99910a61e62eb764c3ea52fd880d3b7cdabf))
9
+
10
+
11
+ ### Chores
12
+
13
+ * merge origin/main ([7c2e7cc](https://github.com/growsurf/growsurf-python/commit/7c2e7cc12f1bb7ce33db786b7e75450c74ebae37))
14
+
3
15
  ## [1.8.0](https://github.com/growsurf/growsurf-python/compare/v1.7.1...v1.8.0) (2026-09-19)
4
16
 
5
17
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: growsurf-python
3
- Version: 1.8.0
3
+ Version: 1.9.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
@@ -52,6 +52,8 @@ from growsurf.types import (
52
52
  CampaignListResponse,
53
53
  CampaignCreateMobileParticipantTokenResponse,
54
54
  CampaignRetrieveAnalyticsResponse,
55
+ ReferralFlowScreenshot,
56
+ ReferralFlowScreenshotsResponse,
55
57
  )
56
58
  ```
57
59
 
@@ -63,6 +65,7 @@ Methods:
63
65
  - <code title="get /campaigns">client.campaign.<a href="./src/growsurf/resources/campaign/campaign.py">list</a>() -> <a href="./src/growsurf/types/campaign_list_response.py">CampaignListResponse</a></code>
64
66
  - <code title="post /campaign/{id}/clone">client.campaign.<a href="./src/growsurf/resources/campaign/campaign.py">clone</a>(id) -> <a href="./src/growsurf/types/campaign/campaign.py">Campaign</a></code>
65
67
  - <code title="post /campaign/{id}/mobile-participant-token">client.campaign.<a href="./src/growsurf/resources/campaign/campaign.py">create_mobile_participant_token</a>(id, \*\*<a href="src/growsurf/types/campaign_create_mobile_participant_token_params.py">params</a>) -> <a href="./src/growsurf/types/campaign_create_mobile_participant_token_response.py">CampaignCreateMobileParticipantTokenResponse</a></code>
68
+ - <code title="post /campaign/{id}/referral-flow-screenshots">client.campaign.<a href="./src/growsurf/resources/campaign/campaign.py">capture_referral_flow_screenshots</a>(id) -> <a href="./src/growsurf/types/referral_flow_screenshots_response.py">ReferralFlowScreenshotsResponse</a></code>
66
69
  - <code title="get /campaign/{id}/commissions">client.campaign.<a href="./src/growsurf/resources/campaign/campaign.py">list_commissions</a>(id, \*\*<a href="src/growsurf/types/campaign_list_commissions_params.py">params</a>) -> <a href="./src/growsurf/types/participant_commission_list.py">ParticipantCommissionList</a></code>
67
70
  - <code title="get /campaign/{id}/leaderboard">client.campaign.<a href="./src/growsurf/resources/campaign/campaign.py">list_leaderboard</a>(id, \*\*<a href="src/growsurf/types/campaign_list_leaderboard_params.py">params</a>) -> <a href="./src/growsurf/types/participant_list.py">ParticipantList</a></code>
68
71
  - <code title="get /campaign/{id}/participants">client.campaign.<a href="./src/growsurf/resources/campaign/campaign.py">list_participants</a>(id, \*\*<a href="src/growsurf/types/campaign_list_participants_params.py">params</a>) -> <a href="./src/growsurf/types/participant_list.py">ParticipantList</a></code>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "growsurf-python"
3
- version = "1.8.0"
3
+ version = "1.9.0"
4
4
  description = "The official Python library for the growsurf API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -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.8.0" # x-release-please-version
4
+ __version__ = "1.9.0" # x-release-please-version
@@ -133,6 +133,7 @@ from ...types.participant_payout_list import ParticipantPayoutList
133
133
  from ...types.campaign.referral_status import ReferralStatus
134
134
  from ...types.participant_commission_list import ParticipantCommissionList
135
135
  from ...types.affiliate_invite_list_response import AffiliateInviteListResponse
136
+ from ...types.referral_flow_screenshots_response import ReferralFlowScreenshotsResponse
136
137
  from ...types.affiliate_application_list_response import AffiliateApplicationListResponse
137
138
  from ...types.campaign_retrieve_analytics_response import CampaignRetrieveAnalyticsResponse
138
139
  from ...types.campaign_activation_analytics_response import CampaignActivationAnalyticsResponse
@@ -500,6 +501,45 @@ class CampaignResource(SyncAPIResource):
500
501
  cast_to=CampaignCreateMobileParticipantTokenResponse,
501
502
  )
502
503
 
504
+ def capture_referral_flow_screenshots(
505
+ self,
506
+ id: str,
507
+ *,
508
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
509
+ # The extra values given here take precedence over values defined on the client or passed to this method.
510
+ extra_headers: Headers | None = None,
511
+ extra_query: Query | None = None,
512
+ extra_body: Body | None = None,
513
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
514
+ ) -> ReferralFlowScreenshotsResponse:
515
+ """
516
+ Renders the program's current saved configuration into two preview images: the
517
+ referrer window a participant sees, and the referred-friend experience. Use them
518
+ to show a person what the draft looks like before anything launches. The images
519
+ render GrowSurf's own preview, not the program's installed website, so they do
520
+ not prove an installation. Each `url` is private and expires; capture again when
521
+ you need a fresh view. Only the account owner's credential can capture
522
+ screenshots, and the endpoint takes no request body.
523
+
524
+ Args:
525
+ extra_headers: Send extra headers
526
+
527
+ extra_query: Add additional query parameters to the request
528
+
529
+ extra_body: Add additional JSON properties to the request
530
+
531
+ timeout: Override the client-level default timeout for this request, in seconds
532
+ """
533
+ if not id:
534
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
535
+ return self._post(
536
+ path_template("/campaign/{id}/referral-flow-screenshots", id=id),
537
+ options=make_request_options(
538
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
539
+ ),
540
+ cast_to=ReferralFlowScreenshotsResponse,
541
+ )
542
+
503
543
  def list_commissions(
504
544
  self,
505
545
  id: str,
@@ -1687,6 +1727,45 @@ class AsyncCampaignResource(AsyncAPIResource):
1687
1727
  cast_to=CampaignCreateMobileParticipantTokenResponse,
1688
1728
  )
1689
1729
 
1730
+ async def capture_referral_flow_screenshots(
1731
+ self,
1732
+ id: str,
1733
+ *,
1734
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1735
+ # The extra values given here take precedence over values defined on the client or passed to this method.
1736
+ extra_headers: Headers | None = None,
1737
+ extra_query: Query | None = None,
1738
+ extra_body: Body | None = None,
1739
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
1740
+ ) -> ReferralFlowScreenshotsResponse:
1741
+ """
1742
+ Renders the program's current saved configuration into two preview images: the
1743
+ referrer window a participant sees, and the referred-friend experience. Use them
1744
+ to show a person what the draft looks like before anything launches. The images
1745
+ render GrowSurf's own preview, not the program's installed website, so they do
1746
+ not prove an installation. Each `url` is private and expires; capture again when
1747
+ you need a fresh view. Only the account owner's credential can capture
1748
+ screenshots, and the endpoint takes no request body.
1749
+
1750
+ Args:
1751
+ extra_headers: Send extra headers
1752
+
1753
+ extra_query: Add additional query parameters to the request
1754
+
1755
+ extra_body: Add additional JSON properties to the request
1756
+
1757
+ timeout: Override the client-level default timeout for this request, in seconds
1758
+ """
1759
+ if not id:
1760
+ raise ValueError(f"Expected a non-empty value for `id` but received {id!r}")
1761
+ return await self._post(
1762
+ path_template("/campaign/{id}/referral-flow-screenshots", id=id),
1763
+ options=make_request_options(
1764
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1765
+ ),
1766
+ cast_to=ReferralFlowScreenshotsResponse,
1767
+ )
1768
+
1690
1769
  async def list_commissions(
1691
1770
  self,
1692
1771
  id: str,
@@ -2537,6 +2616,9 @@ class CampaignResourceWithRawResponse:
2537
2616
  self.create_mobile_participant_token = to_raw_response_wrapper(
2538
2617
  campaign.create_mobile_participant_token,
2539
2618
  )
2619
+ self.capture_referral_flow_screenshots = to_raw_response_wrapper(
2620
+ campaign.capture_referral_flow_screenshots,
2621
+ )
2540
2622
  self.list_commissions = to_raw_response_wrapper(
2541
2623
  campaign.list_commissions,
2542
2624
  )
@@ -2656,6 +2738,9 @@ class AsyncCampaignResourceWithRawResponse:
2656
2738
  self.create_mobile_participant_token = async_to_raw_response_wrapper(
2657
2739
  campaign.create_mobile_participant_token,
2658
2740
  )
2741
+ self.capture_referral_flow_screenshots = async_to_raw_response_wrapper(
2742
+ campaign.capture_referral_flow_screenshots,
2743
+ )
2659
2744
  self.list_commissions = async_to_raw_response_wrapper(
2660
2745
  campaign.list_commissions,
2661
2746
  )
@@ -2775,6 +2860,9 @@ class CampaignResourceWithStreamingResponse:
2775
2860
  self.create_mobile_participant_token = to_streamed_response_wrapper(
2776
2861
  campaign.create_mobile_participant_token,
2777
2862
  )
2863
+ self.capture_referral_flow_screenshots = to_streamed_response_wrapper(
2864
+ campaign.capture_referral_flow_screenshots,
2865
+ )
2778
2866
  self.list_commissions = to_streamed_response_wrapper(
2779
2867
  campaign.list_commissions,
2780
2868
  )
@@ -2894,6 +2982,9 @@ class AsyncCampaignResourceWithStreamingResponse:
2894
2982
  self.create_mobile_participant_token = async_to_streamed_response_wrapper(
2895
2983
  campaign.create_mobile_participant_token,
2896
2984
  )
2985
+ self.capture_referral_flow_screenshots = async_to_streamed_response_wrapper(
2986
+ campaign.capture_referral_flow_screenshots,
2987
+ )
2897
2988
  self.list_commissions = async_to_streamed_response_wrapper(
2898
2989
  campaign.list_commissions,
2899
2990
  )
@@ -23,6 +23,7 @@ from .campaign_update_params import CampaignUpdateParams as CampaignUpdateParams
23
23
  from .create_account_response import CreateAccountResponse as CreateAccountResponse
24
24
  from .participant_payout_list import ParticipantPayoutList as ParticipantPayoutList
25
25
  from .rotate_api_key_response import RotateApiKeyResponse as RotateApiKeyResponse
26
+ from .referral_flow_screenshot import ReferralFlowScreenshot as ReferralFlowScreenshot
26
27
  from .participant_commission_list import ParticipantCommissionList as ParticipantCommissionList
27
28
  from .verification_email_response import VerificationEmailResponse as VerificationEmailResponse
28
29
  from .affiliate_application_answer import AffiliateApplicationAnswer as AffiliateApplicationAnswer
@@ -35,6 +36,7 @@ from .campaign_list_commissions_params import CampaignListCommissionsParams as C
35
36
  from .campaign_list_leaderboard_params import CampaignListLeaderboardParams as CampaignListLeaderboardParams
36
37
  from .campaign_list_participants_params import CampaignListParticipantsParams as CampaignListParticipantsParams
37
38
  from .campaign_retrieve_analytics_params import CampaignRetrieveAnalyticsParams as CampaignRetrieveAnalyticsParams
39
+ from .referral_flow_screenshots_response import ReferralFlowScreenshotsResponse as ReferralFlowScreenshotsResponse
38
40
  from .affiliate_application_list_response import AffiliateApplicationListResponse as AffiliateApplicationListResponse
39
41
  from .campaign_retrieve_analytics_response import CampaignRetrieveAnalyticsResponse as CampaignRetrieveAnalyticsResponse
40
42
  from .campaign_activation_analytics_response import (
@@ -49,6 +49,12 @@ class Referrer(BaseModel):
49
49
 
50
50
  last_name: Optional[str] = FieldInfo(alias="lastName", default=None)
51
51
 
52
+ lead_count: Optional[int] = FieldInfo(alias="leadCount", default=None)
53
+ """
54
+ The number of pending referrals the participant made that have not converted
55
+ into successful referrals yet.
56
+ """
57
+
52
58
  metadata: Optional[Dict[str, object]] = None
53
59
  """Shallow custom metadata object."""
54
60
 
@@ -145,6 +151,12 @@ class Participant(BaseModel):
145
151
 
146
152
  last_name: Optional[str] = FieldInfo(alias="lastName", default=None)
147
153
 
154
+ lead_count: Optional[int] = FieldInfo(alias="leadCount", default=None)
155
+ """
156
+ The number of pending referrals the participant made that have not converted
157
+ into successful referrals yet.
158
+ """
159
+
148
160
  metadata: Optional[Dict[str, object]] = None
149
161
  """Shallow custom metadata object."""
150
162
 
@@ -0,0 +1,33 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from datetime import datetime
4
+ from typing_extensions import Literal
5
+
6
+ from pydantic import Field as FieldInfo
7
+
8
+ from .._models import BaseModel
9
+
10
+ __all__ = ["ReferralFlowScreenshot"]
11
+
12
+
13
+ class ReferralFlowScreenshot(BaseModel):
14
+ view: Literal["referrer", "referredFriend"]
15
+ """Which side of the referral flow the image shows."""
16
+
17
+ label: str
18
+ """Short human-readable name for the view, such as `Referrer window`."""
19
+
20
+ url: str
21
+ """Private URL of the image. It stops working at `expiresAt`."""
22
+
23
+ expires_at: datetime = FieldInfo(alias="expiresAt")
24
+ """ISO 8601 time after which `url` no longer resolves."""
25
+
26
+ width: int
27
+ """Image width in pixels."""
28
+
29
+ height: int
30
+ """Image height in pixels."""
31
+
32
+ content_type: str = FieldInfo(alias="contentType")
33
+ """MIME type of the image."""
@@ -0,0 +1,22 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List
4
+ from datetime import datetime
5
+
6
+ from pydantic import Field as FieldInfo
7
+
8
+ from .._models import BaseModel
9
+ from .referral_flow_screenshot import ReferralFlowScreenshot
10
+
11
+ __all__ = ["ReferralFlowScreenshotsResponse"]
12
+
13
+
14
+ class ReferralFlowScreenshotsResponse(BaseModel):
15
+ generated_at: datetime = FieldInfo(alias="generatedAt")
16
+ """ISO 8601 time the images were rendered."""
17
+
18
+ expires_at: datetime = FieldInfo(alias="expiresAt")
19
+ """ISO 8601 time after which every `url` in `screenshots` stops working."""
20
+
21
+ screenshots: List[ReferralFlowScreenshot]
22
+ """One entry per view, in referrer then referred-friend order."""
@@ -20,6 +20,7 @@ from growsurf.types import (
20
20
  ParticipantPayoutList,
21
21
  ParticipantCommissionList,
22
22
  AffiliateInviteListResponse,
23
+ ReferralFlowScreenshotsResponse,
23
24
  AffiliateApplicationListResponse,
24
25
  CampaignRetrieveAnalyticsResponse,
25
26
  CampaignCreateMobileParticipantTokenResponse,
@@ -362,6 +363,48 @@ class TestCampaign:
362
363
  email="dev@stainless.com",
363
364
  )
364
365
 
366
+ @pytest.mark.skip(reason="Mock server tests are disabled")
367
+ @parametrize
368
+ def test_method_capture_referral_flow_screenshots(self, client: Growsurf) -> None:
369
+ campaign = client.campaign.capture_referral_flow_screenshots(
370
+ "id",
371
+ )
372
+ assert_matches_type(ReferralFlowScreenshotsResponse, campaign, path=["response"])
373
+
374
+ @pytest.mark.skip(reason="Mock server tests are disabled")
375
+ @parametrize
376
+ def test_raw_response_capture_referral_flow_screenshots(self, client: Growsurf) -> None:
377
+ response = client.campaign.with_raw_response.capture_referral_flow_screenshots(
378
+ "id",
379
+ )
380
+
381
+ assert response.is_closed is True
382
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
383
+ campaign = response.parse()
384
+ assert_matches_type(ReferralFlowScreenshotsResponse, campaign, path=["response"])
385
+
386
+ @pytest.mark.skip(reason="Mock server tests are disabled")
387
+ @parametrize
388
+ def test_streaming_response_capture_referral_flow_screenshots(self, client: Growsurf) -> None:
389
+ with client.campaign.with_streaming_response.capture_referral_flow_screenshots(
390
+ "id",
391
+ ) as response:
392
+ assert not response.is_closed
393
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
394
+
395
+ campaign = response.parse()
396
+ assert_matches_type(ReferralFlowScreenshotsResponse, campaign, path=["response"])
397
+
398
+ assert cast(Any, response.is_closed) is True
399
+
400
+ @pytest.mark.skip(reason="Mock server tests are disabled")
401
+ @parametrize
402
+ def test_path_params_capture_referral_flow_screenshots(self, client: Growsurf) -> None:
403
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
404
+ client.campaign.with_raw_response.capture_referral_flow_screenshots(
405
+ "",
406
+ )
407
+
365
408
  @pytest.mark.skip(reason="Mock server tests are disabled")
366
409
  @parametrize
367
410
  def test_method_list_commissions(self, client: Growsurf) -> None:
@@ -1384,6 +1427,48 @@ class TestAsyncCampaign:
1384
1427
  email="dev@stainless.com",
1385
1428
  )
1386
1429
 
1430
+ @pytest.mark.skip(reason="Mock server tests are disabled")
1431
+ @parametrize
1432
+ async def test_method_capture_referral_flow_screenshots(self, async_client: AsyncGrowsurf) -> None:
1433
+ campaign = await async_client.campaign.capture_referral_flow_screenshots(
1434
+ "id",
1435
+ )
1436
+ assert_matches_type(ReferralFlowScreenshotsResponse, campaign, path=["response"])
1437
+
1438
+ @pytest.mark.skip(reason="Mock server tests are disabled")
1439
+ @parametrize
1440
+ async def test_raw_response_capture_referral_flow_screenshots(self, async_client: AsyncGrowsurf) -> None:
1441
+ response = await async_client.campaign.with_raw_response.capture_referral_flow_screenshots(
1442
+ "id",
1443
+ )
1444
+
1445
+ assert response.is_closed is True
1446
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
1447
+ campaign = await response.parse()
1448
+ assert_matches_type(ReferralFlowScreenshotsResponse, campaign, path=["response"])
1449
+
1450
+ @pytest.mark.skip(reason="Mock server tests are disabled")
1451
+ @parametrize
1452
+ async def test_streaming_response_capture_referral_flow_screenshots(self, async_client: AsyncGrowsurf) -> None:
1453
+ async with async_client.campaign.with_streaming_response.capture_referral_flow_screenshots(
1454
+ "id",
1455
+ ) as response:
1456
+ assert not response.is_closed
1457
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
1458
+
1459
+ campaign = await response.parse()
1460
+ assert_matches_type(ReferralFlowScreenshotsResponse, campaign, path=["response"])
1461
+
1462
+ assert cast(Any, response.is_closed) is True
1463
+
1464
+ @pytest.mark.skip(reason="Mock server tests are disabled")
1465
+ @parametrize
1466
+ async def test_path_params_capture_referral_flow_screenshots(self, async_client: AsyncGrowsurf) -> None:
1467
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `id` but received ''"):
1468
+ await async_client.campaign.with_raw_response.capture_referral_flow_screenshots(
1469
+ "",
1470
+ )
1471
+
1387
1472
  @pytest.mark.skip(reason="Mock server tests are disabled")
1388
1473
  @parametrize
1389
1474
  async def test_method_list_commissions(self, async_client: AsyncGrowsurf) -> None:
@@ -1,3 +0,0 @@
1
- {
2
- ".": "1.8.0"
3
- }
File without changes