growsurf-python 1.7.1__tar.gz → 1.8.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 (212) hide show
  1. growsurf_python-1.8.0/.release-please-manifest.json +3 -0
  2. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/CHANGELOG.md +20 -0
  3. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/PKG-INFO +1 -1
  4. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/pyproject.toml +1 -1
  5. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/requirements-dev.lock +9 -23
  6. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_version.py +1 -1
  7. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/campaign.py +6 -0
  8. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/campaign_design.py +4 -0
  9. growsurf_python-1.8.0/src/growsurf/types/campaign_create_params.py +70 -0
  10. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/uv.lock +8 -8
  11. growsurf_python-1.7.1/.release-please-manifest.json +0 -3
  12. growsurf_python-1.7.1/src/growsurf/types/campaign_create_params.py +0 -56
  13. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/.gitignore +0 -0
  14. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/CONTRIBUTING.md +0 -0
  15. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/LICENSE +0 -0
  16. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/README.md +0 -0
  17. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/SECURITY.md +0 -0
  18. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/api.md +0 -0
  19. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/bin/check-release-environment +0 -0
  20. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/bin/publish-pypi +0 -0
  21. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/examples/.keep +0 -0
  22. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/release-please-config.json +0 -0
  23. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/__init__.py +0 -0
  24. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_base_client.py +0 -0
  25. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_client.py +0 -0
  26. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_compat.py +0 -0
  27. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_constants.py +0 -0
  28. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_exceptions.py +0 -0
  29. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_files.py +0 -0
  30. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_models.py +0 -0
  31. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_qs.py +0 -0
  32. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_resource.py +0 -0
  33. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_response.py +0 -0
  34. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_streaming.py +0 -0
  35. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_types.py +0 -0
  36. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/__init__.py +0 -0
  37. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_compat.py +0 -0
  38. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_datetime_parse.py +0 -0
  39. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_json.py +0 -0
  40. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_logs.py +0 -0
  41. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_path.py +0 -0
  42. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_proxy.py +0 -0
  43. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_reflection.py +0 -0
  44. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_resources_proxy.py +0 -0
  45. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_streams.py +0 -0
  46. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_sync.py +0 -0
  47. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_transform.py +0 -0
  48. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_typing.py +0 -0
  49. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/_utils/_utils.py +0 -0
  50. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/lib/.keep +0 -0
  51. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/py.typed +0 -0
  52. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/__init__.py +0 -0
  53. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/account.py +0 -0
  54. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/__init__.py +0 -0
  55. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/commission.py +0 -0
  56. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/design.py +0 -0
  57. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/emails.py +0 -0
  58. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/installation.py +0 -0
  59. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/integrations.py +0 -0
  60. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/options.py +0 -0
  61. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/participant.py +0 -0
  62. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/program_resources.py +0 -0
  63. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/reward.py +0 -0
  64. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/rewards.py +0 -0
  65. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/campaign/webhooks.py +0 -0
  66. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/resources/team.py +0 -0
  67. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/__init__.py +0 -0
  68. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/account_create_params.py +0 -0
  69. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/affiliate_application.py +0 -0
  70. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/affiliate_application_answer.py +0 -0
  71. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/affiliate_application_list_response.py +0 -0
  72. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/affiliate_invite.py +0 -0
  73. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/affiliate_invite_list_response.py +0 -0
  74. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/analytics_availability.py +0 -0
  75. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/analytics_unavailable_reason.py +0 -0
  76. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/__init__.py +0 -0
  77. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/campaign.py +0 -0
  78. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/campaign_emails.py +0 -0
  79. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/campaign_installation.py +0 -0
  80. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/campaign_options.py +0 -0
  81. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
  82. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
  83. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
  84. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/delete_program_resource_response.py +0 -0
  85. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
  86. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
  87. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/email_participant_response.py +0 -0
  88. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
  89. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/integration.py +0 -0
  90. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/integration_list_response.py +0 -0
  91. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant.py +0 -0
  92. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_activation_analytics.py +0 -0
  93. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
  94. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_add_params.py +0 -0
  95. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_analytics_params.py +0 -0
  96. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_analytics_response.py +0 -0
  97. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
  98. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
  99. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
  100. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_email_params.py +0 -0
  101. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_get_payout_destination_response.py +0 -0
  102. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
  103. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
  104. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
  105. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
  106. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
  107. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_list_rewards_response.py +0 -0
  108. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_record_transaction_params.py +0 -0
  109. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
  110. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -0
  111. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
  112. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_params.py +0 -0
  113. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_response.py +0 -0
  114. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_reward.py +0 -0
  115. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
  116. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
  117. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
  118. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
  119. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/participant_update_params.py +0 -0
  120. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/pending_analytics_erasure.py +0 -0
  121. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/program_resource.py +0 -0
  122. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/program_resource_list_response.py +0 -0
  123. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/program_resource_upload_result.py +0 -0
  124. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/program_resource_upload_ticket.py +0 -0
  125. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/referral_source.py +0 -0
  126. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/referral_status.py +0 -0
  127. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/reward.py +0 -0
  128. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
  129. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
  130. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/reward_create_params.py +0 -0
  131. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
  132. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
  133. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
  134. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/reward_update_params.py +0 -0
  135. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/webhook.py +0 -0
  136. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
  137. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/webhook_event.py +0 -0
  138. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
  139. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
  140. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
  141. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
  142. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_activation_analytics_response.py +0 -0
  143. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_create_affiliate_invite_params.py +0 -0
  144. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +0 -0
  145. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
  146. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_engagement_analytics.py +0 -0
  147. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_list_affiliate_applications_params.py +0 -0
  148. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_list_affiliate_invites_params.py +0 -0
  149. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
  150. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
  151. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_list_participants_params.py +0 -0
  152. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
  153. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
  154. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_list_response.py +0 -0
  155. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_retrieve_activation_analytics_params.py +0 -0
  156. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_retrieve_analytics_params.py +0 -0
  157. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_retrieve_analytics_response.py +0 -0
  158. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_review_affiliate_application_params.py +0 -0
  159. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/campaign_update_params.py +0 -0
  160. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/commission_structure.py +0 -0
  161. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/create_account_response.py +0 -0
  162. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/email_analytics.py +0 -0
  163. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/participant_commission_list.py +0 -0
  164. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/participant_list.py +0 -0
  165. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/participant_payout_list.py +0 -0
  166. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/referral_list.py +0 -0
  167. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/rotate_api_key_response.py +0 -0
  168. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/team.py +0 -0
  169. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/team_update_params.py +0 -0
  170. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/src/growsurf/types/verification_email_response.py +0 -0
  171. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/__init__.py +0 -0
  172. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/__init__.py +0 -0
  173. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/__init__.py +0 -0
  174. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/test_commission.py +0 -0
  175. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/test_design.py +0 -0
  176. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/test_emails.py +0 -0
  177. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/test_installation.py +0 -0
  178. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/test_integrations.py +0 -0
  179. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/test_options.py +0 -0
  180. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/test_participant.py +0 -0
  181. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/test_program_resources.py +0 -0
  182. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/test_reward.py +0 -0
  183. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/test_rewards.py +0 -0
  184. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/campaign/test_webhooks.py +0 -0
  185. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/test_account.py +0 -0
  186. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/test_campaign.py +0 -0
  187. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/api_resources/test_team_contract.py +0 -0
  188. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/conftest.py +0 -0
  189. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/sample_file.txt +0 -0
  190. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_client.py +0 -0
  191. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_extract_files.py +0 -0
  192. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_files.py +0 -0
  193. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_models.py +0 -0
  194. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_qs.py +0 -0
  195. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_required_args.py +0 -0
  196. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_response.py +0 -0
  197. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_streaming.py +0 -0
  198. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_transform.py +0 -0
  199. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_utils/test_datetime_parse.py +0 -0
  200. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_utils/test_json.py +0 -0
  201. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_utils/test_path.py +0 -0
  202. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_utils/test_proxy.py +0 -0
  203. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/test_utils/test_typing.py +0 -0
  204. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/types/test_affiliate_application.py +0 -0
  205. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/types/test_analytics_reward_status.py +0 -0
  206. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/types/test_email_analytics.py +0 -0
  207. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/types/test_lead_reward_events.py +0 -0
  208. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/types/test_participant_activation_engagement_analytics.py +0 -0
  209. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/types/test_participant_contract.py +0 -0
  210. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/types/test_payout_provider_forward_compat.py +0 -0
  211. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/types/test_referral_source.py +0 -0
  212. {growsurf_python-1.7.1 → growsurf_python-1.8.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.8.0"
3
+ }
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.8.0](https://github.com/growsurf/growsurf-python/compare/v1.7.1...v1.8.0) (2026-09-19)
4
+
5
+
6
+ ### Features
7
+
8
+ * **api:** add campaign design widget section and healthcare goals ([8115287](https://github.com/growsurf/growsurf-python/commit/8115287977ba70fc6407a488daa90a57d7c7be8d))
9
+
10
+
11
+ ### Chores
12
+
13
+ * merge dev into main ([b868b86](https://github.com/growsurf/growsurf-python/commit/b868b8627a22aae8cdcc11e5d09b9b4715a7681d))
14
+ * merge dev into main ([af640f1](https://github.com/growsurf/growsurf-python/commit/af640f17a284ca21a87e927fbb397d5c49f9e6d5))
15
+ * merge dev into main ([e55467c](https://github.com/growsurf/growsurf-python/commit/e55467ce3718631d3bef61d91a1c91850766d7b6))
16
+
17
+
18
+ ### Documentation
19
+
20
+ * **api:** document the starter rewards each campaign goal seeds ([d696b88](https://github.com/growsurf/growsurf-python/commit/d696b8800fafe648a2414b349a60bb5badabc71a))
21
+ * **api:** document the starter rewards each campaign goal seeds ([15d38b6](https://github.com/growsurf/growsurf-python/commit/15d38b6cb62f8aa11126cd37b808dbd9efec5368))
22
+
3
23
  ## [1.7.1](https://github.com/growsurf/growsurf-python/compare/v1.7.0...v1.7.1) (2026-09-18)
4
24
 
5
25
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: growsurf-python
3
- Version: 1.7.1
3
+ Version: 1.8.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,6 +1,6 @@
1
1
  [project]
2
2
  name = "growsurf-python"
3
- version = "1.7.1"
3
+ version = "1.8.0"
4
4
  description = "The official Python library for the growsurf API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -3,7 +3,7 @@
3
3
  -e .
4
4
  annotated-types==0.7.0
5
5
  # via pydantic
6
- anyio==4.12.1
6
+ anyio==4.15.1
7
7
  # via
8
8
  # growsurf-python
9
9
  # httpx
@@ -32,18 +32,14 @@ httpx==0.28.1
32
32
  # via
33
33
  # growsurf-python
34
34
  # respx
35
- idna==3.11
35
+ idna==3.19
36
36
  # via
37
37
  # anyio
38
38
  # httpx
39
39
  importlib-metadata==8.7.1
40
- iniconfig==2.1.0 ; python_full_version < '3.10'
40
+ iniconfig==2.3.0
41
41
  # via pytest
42
- iniconfig==2.3.0 ; python_full_version >= '3.10'
43
- # via pytest
44
- markdown-it-py==3.0.0 ; python_full_version < '3.10'
45
- # via rich
46
- markdown-it-py==4.0.0 ; python_full_version >= '3.10'
42
+ markdown-it-py==4.0.0
47
43
  # via rich
48
44
  mdurl==0.1.2
49
45
  # via markdown-it-py
@@ -62,38 +58,28 @@ pydantic==2.12.5
62
58
  # via growsurf-python
63
59
  pydantic-core==2.41.5
64
60
  # via pydantic
65
- pygments==2.19.2
61
+ pygments==2.21.0
66
62
  # via
67
63
  # pytest
68
64
  # rich
69
65
  pyright==1.1.399
70
- pytest==8.4.2 ; python_full_version < '3.10'
71
- # via
72
- # pytest-asyncio
73
- # pytest-xdist
74
- pytest==9.0.2 ; python_full_version >= '3.10'
66
+ pytest==9.1.1
75
67
  # via
76
68
  # pytest-asyncio
77
69
  # pytest-xdist
78
- pytest-asyncio==1.2.0 ; python_full_version < '3.10'
79
- pytest-asyncio==1.3.0 ; python_full_version >= '3.10'
70
+ pytest-asyncio==1.3.0
80
71
  pytest-xdist==3.8.0
81
- python-dateutil==2.9.0.post0 ; python_full_version < '3.10'
82
- # via time-machine
83
72
  respx==0.22.0
84
73
  rich==14.2.0
85
74
  ruff==0.14.13
86
- six==1.17.0 ; python_full_version < '3.10'
87
- # via python-dateutil
88
75
  sniffio==1.3.1
89
76
  # via growsurf-python
90
- time-machine==2.19.0 ; python_full_version < '3.10'
91
- time-machine==3.2.0 ; python_full_version >= '3.10'
77
+ time-machine==3.2.0
92
78
  tomli==2.4.0 ; python_full_version < '3.11'
93
79
  # via
94
80
  # mypy
95
81
  # pytest
96
- typing-extensions==4.15.0
82
+ typing-extensions==4.16.0
97
83
  # via
98
84
  # anyio
99
85
  # exceptiongroup
@@ -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.7.1" # x-release-please-version
4
+ __version__ = "1.8.0" # x-release-please-version
@@ -231,7 +231,10 @@ class CampaignResource(SyncAPIResource):
231
231
  "B2C_SUBSCRIPTIONS",
232
232
  "FINANCIAL_SERVICES",
233
233
  "ONLINE_EDUCATION",
234
+ "INSURANCE",
234
235
  "ONLINE_INSURANCE",
236
+ "TELEHEALTH",
237
+ "HEALTHCARE_PROVIDERS",
235
238
  ]
236
239
  | Omit = omit,
237
240
  name: str | Omit = omit,
@@ -1415,7 +1418,10 @@ class AsyncCampaignResource(AsyncAPIResource):
1415
1418
  "B2C_SUBSCRIPTIONS",
1416
1419
  "FINANCIAL_SERVICES",
1417
1420
  "ONLINE_EDUCATION",
1421
+ "INSURANCE",
1418
1422
  "ONLINE_INSURANCE",
1423
+ "TELEHEALTH",
1424
+ "HEALTHCARE_PROVIDERS",
1419
1425
  ]
1420
1426
  | Omit = omit,
1421
1427
  name: str | Omit = omit,
@@ -52,6 +52,10 @@ class CampaignDesignResources(TypedDict, total=False):
52
52
  # available to both program types; its manual payout and Wise fields are
53
53
  # affiliate-only. `referredExperience` includes the Claim Offer Popup for both
54
54
  # program types, with its colors under `theme.referredExperienceOfferPopup`.
55
+ # `widget` is the website widget shown in a corner of your own site — a button or a
56
+ # card, its placement and offsets, when it appears, and which pages it appears on —
57
+ # with its colors under `theme.widget`. Both of its audience switches start off, so a
58
+ # program shows nothing until you turn one on.
55
59
  # `GET` returns the fields configured for the program;
56
60
  # `payoutDestinationConfirmation` is omitted when no confirmation fields are
57
61
  # stored. Stored `null` fields are returned as `null`; omitted and `null` fields
@@ -0,0 +1,70 @@
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 Iterable
6
+ from typing_extensions import Literal, Required, Annotated, TypedDict
7
+
8
+ from .._utils import PropertyInfo
9
+ from .campaign.reward_create_params import RewardCreateParams
10
+
11
+ __all__ = ["CampaignCreateParams"]
12
+
13
+
14
+ class CampaignCreateParams(TypedDict, total=False):
15
+ type: Required[Literal["REFERRAL", "AFFILIATE"]]
16
+ """The program type. Immutable after creation."""
17
+
18
+ company_logo_image_url: Annotated[str, PropertyInfo(alias="companyLogoImageUrl")]
19
+
20
+ company_name: Annotated[str, PropertyInfo(alias="companyName")]
21
+
22
+ currency_iso: Annotated[str, PropertyInfo(alias="currencyISO")]
23
+ """ISO 4217 currency code.
24
+
25
+ Defaults to USD. Chosen when the program is created and immutable afterward — it
26
+ cannot be changed on update.
27
+ """
28
+
29
+ goal: Literal[
30
+ "CUSTOMERS",
31
+ "USERS",
32
+ "SUBSCRIBERS",
33
+ "WAITLIST",
34
+ "B2B_SAAS_SELF_SERVICE",
35
+ "B2B_SAAS_ENTERPRISE",
36
+ "B2C_SUBSCRIPTIONS",
37
+ "FINANCIAL_SERVICES",
38
+ "ONLINE_EDUCATION",
39
+ "INSURANCE",
40
+ "ONLINE_INSURANCE",
41
+ "TELEHEALTH",
42
+ "HEALTHCARE_PROVIDERS",
43
+ ]
44
+ """What the program is for, which seeds the share buttons and the starter rewards that
45
+ suit that audience.
46
+
47
+ Programs whose participants refer other businesses (`CUSTOMERS`, `USERS`,
48
+ `B2B_SAAS_SELF_SERVICE`, `B2B_SAAS_ENTERPRISE`, `HEALTHCARE_PROVIDERS`) start with
49
+ the LinkedIn share button visible; consumer, financial, education, insurance,
50
+ telehealth, newsletter, and waitlist programs (`B2C_SUBSCRIPTIONS`,
51
+ `FINANCIAL_SERVICES`, `ONLINE_EDUCATION`, `INSURANCE`, `ONLINE_INSURANCE`,
52
+ `TELEHEALTH`, `SUBSCRIBERS`, `WAITLIST`) start with it hidden, and on a referral
53
+ program each goal also sets the rest of its share buttons to suit that audience.
54
+ When you create a referral program without `rewards`, the goal also decides the
55
+ starter rewards: most goals get one double-sided reward, `HEALTHCARE_PROVIDERS` gets
56
+ a single-sided reward, `SUBSCRIBERS` gets a four-step milestone ladder, and
57
+ `WAITLIST` gets a leaderboard. Every one arrives switched off with a placeholder
58
+ name, so the program awards nothing until you set the amount and turn one on.
59
+ `TELEHEALTH` is for consumer telehealth and wellness subscriptions;
60
+ `HEALTHCARE_PROVIDERS` is for provider networks and clinician-facing products.
61
+ `INSURANCE` replaces `ONLINE_INSURANCE`, which is still accepted. Omit it and every
62
+ share button keeps its standard default. Set only when the program is created; it is
63
+ not accepted on update.
64
+ """
65
+
66
+ name: str
67
+ """The program name. Defaults to a generated friendly label plus the creation date."""
68
+
69
+ rewards: Iterable[RewardCreateParams]
70
+ """Optional inline rewards to create with the program."""
@@ -182,16 +182,16 @@ wheels = [
182
182
 
183
183
  [[package]]
184
184
  name = "anyio"
185
- version = "4.12.1"
185
+ version = "4.15.1"
186
186
  source = { registry = "https://pypi.org/simple" }
187
187
  dependencies = [
188
188
  { name = "exceptiongroup", marker = "python_full_version < '3.11' or (extra == 'group-15-growsurf-python-pydantic-v1' and extra == 'group-15-growsurf-python-pydantic-v2')" },
189
189
  { name = "idna" },
190
- { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'group-15-growsurf-python-pydantic-v1' and extra == 'group-15-growsurf-python-pydantic-v2')" },
190
+ { name = "typing-extensions", marker = "python_full_version < '3.15' or (extra == 'group-15-growsurf-python-pydantic-v1' and extra == 'group-15-growsurf-python-pydantic-v2')" },
191
191
  ]
192
- sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" }
192
+ sdist = { url = "https://files.pythonhosted.org/packages/a9/d2/f4d173e22df740bc37b1db102b386ba719b66e95b0f0d751f556b387e6d2/anyio-4.15.1.tar.gz", hash = "sha256:9f28306018cbd6d329e64a36d58256edff76dd996fe423bc957326e578b82a94", size = 276966, upload-time = "2026-09-05T10:42:39.44Z" }
193
193
  wheels = [
194
- { url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" },
194
+ { url = "https://files.pythonhosted.org/packages/12/b8/4bd346e22b28902df4d651910f5242c28d84e4a5c2435ca5c3f797ed7e2e/anyio-4.15.1-py3-none-any.whl", hash = "sha256:6152fdbbf9a77fdec97731721bebf7c4c44f7c29b424b0065826173efc7ed101", size = 132079, upload-time = "2026-09-05T10:42:37.923Z" },
195
195
  ]
196
196
 
197
197
  [[package]]
@@ -401,7 +401,7 @@ wheels = [
401
401
 
402
402
  [[package]]
403
403
  name = "growsurf-python"
404
- version = "1.4.0"
404
+ version = "1.7.1"
405
405
  source = { editable = "." }
406
406
  dependencies = [
407
407
  { name = "anyio" },
@@ -1353,11 +1353,11 @@ wheels = [
1353
1353
 
1354
1354
  [[package]]
1355
1355
  name = "typing-extensions"
1356
- version = "4.15.0"
1356
+ version = "4.16.0"
1357
1357
  source = { registry = "https://pypi.org/simple" }
1358
- sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" }
1358
+ sdist = { url = "https://files.pythonhosted.org/packages/f6/cc/6253133b5bb138fc3306cebfbda2c520f545d36b5be2c7255cc528bb45d6/typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5", size = 113555, upload-time = "2026-07-02T08:40:05.92Z" }
1359
1359
  wheels = [
1360
- { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" },
1360
+ { url = "https://files.pythonhosted.org/packages/49/d3/b8441a820a491ddfc024b0b0cf0393375b75ea13866d9c66727e54c2fc80/typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8", size = 45571, upload-time = "2026-07-02T08:40:04.659Z" },
1361
1361
  ]
1362
1362
 
1363
1363
  [[package]]
@@ -1,3 +0,0 @@
1
- {
2
- ".": "1.7.1"
3
- }
@@ -1,56 +0,0 @@
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 Iterable
6
- from typing_extensions import Literal, Required, Annotated, TypedDict
7
-
8
- from .._utils import PropertyInfo
9
- from .campaign.reward_create_params import RewardCreateParams
10
-
11
- __all__ = ["CampaignCreateParams"]
12
-
13
-
14
- class CampaignCreateParams(TypedDict, total=False):
15
- type: Required[Literal["REFERRAL", "AFFILIATE"]]
16
- """The program type. Immutable after creation."""
17
-
18
- company_logo_image_url: Annotated[str, PropertyInfo(alias="companyLogoImageUrl")]
19
-
20
- company_name: Annotated[str, PropertyInfo(alias="companyName")]
21
-
22
- currency_iso: Annotated[str, PropertyInfo(alias="currencyISO")]
23
- """ISO 4217 currency code.
24
-
25
- Defaults to USD. Chosen when the program is created and immutable afterward — it
26
- cannot be changed on update.
27
- """
28
-
29
- goal: Literal[
30
- "CUSTOMERS",
31
- "USERS",
32
- "SUBSCRIBERS",
33
- "WAITLIST",
34
- "B2B_SAAS_SELF_SERVICE",
35
- "B2B_SAAS_ENTERPRISE",
36
- "B2C_SUBSCRIPTIONS",
37
- "FINANCIAL_SERVICES",
38
- "ONLINE_EDUCATION",
39
- "ONLINE_INSURANCE",
40
- ]
41
- """What the program is for, which seeds share settings that suit that audience.
42
-
43
- Programs selling to businesses (`CUSTOMERS`, `USERS`, `B2B_SAAS_SELF_SERVICE`,
44
- `B2B_SAAS_ENTERPRISE`) start with the LinkedIn share button visible; consumer,
45
- financial, education, insurance, newsletter, and waitlist programs
46
- (`B2C_SUBSCRIPTIONS`, `FINANCIAL_SERVICES`, `ONLINE_EDUCATION`,
47
- `ONLINE_INSURANCE`, `SUBSCRIBERS`, `WAITLIST`) start with it hidden. Omit it and
48
- every share button keeps its standard default. Set only when the program is
49
- created; it is not accepted on update.
50
- """
51
-
52
- name: str
53
- """The program name. Defaults to a generated friendly label plus the creation date."""
54
-
55
- rewards: Iterable[RewardCreateParams]
56
- """Optional inline rewards to create with the program."""
File without changes
File without changes