growsurf-python 1.4.0__tar.gz → 1.5.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 (214) hide show
  1. growsurf_python-1.5.0/.release-please-manifest.json +3 -0
  2. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/CHANGELOG.md +17 -0
  3. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/CONTRIBUTING.md +3 -4
  4. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/PKG-INFO +10 -5
  5. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/README.md +9 -4
  6. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/api.md +17 -1
  7. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/pyproject.toml +1 -1
  8. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_base_client.py +1 -3
  9. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_version.py +1 -1
  10. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/account.py +34 -22
  11. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/campaign/__init__.py +28 -0
  12. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/campaign/campaign.py +296 -14
  13. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/campaign/design.py +8 -4
  14. growsurf_python-1.5.0/src/growsurf/resources/campaign/integrations.py +181 -0
  15. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/campaign/options.py +4 -2
  16. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/campaign/participant.py +44 -16
  17. growsurf_python-1.5.0/src/growsurf/resources/campaign/program_resources.py +427 -0
  18. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/campaign/rewards.py +8 -8
  19. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/team.py +14 -10
  20. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/__init__.py +9 -0
  21. growsurf_python-1.5.0/src/growsurf/types/analytics_availability.py +7 -0
  22. growsurf_python-1.5.0/src/growsurf/types/analytics_unavailable_reason.py +15 -0
  23. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/__init__.py +17 -1
  24. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/campaign.py +1 -1
  25. growsurf_python-1.5.0/src/growsurf/types/campaign/campaign_design.py +66 -0
  26. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/campaign_emails.py +4 -2
  27. growsurf_python-1.5.0/src/growsurf/types/campaign/campaign_options.py +15 -0
  28. growsurf_python-1.5.0/src/growsurf/types/campaign/delete_program_resource_response.py +12 -0
  29. growsurf_python-1.5.0/src/growsurf/types/campaign/integration.py +38 -0
  30. growsurf_python-1.5.0/src/growsurf/types/campaign/integration_list_response.py +16 -0
  31. growsurf_python-1.5.0/src/growsurf/types/campaign/participant_activation_analytics.py +84 -0
  32. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_analytics_params.py +4 -3
  33. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_analytics_response.py +16 -0
  34. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_get_payout_destination_response.py +10 -10
  35. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_list_rewards_response.py +1 -1
  36. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_record_transaction_params.py +7 -1
  37. growsurf_python-1.5.0/src/growsurf/types/campaign/participant_refund_transaction_params.py +58 -0
  38. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_response.py +4 -4
  39. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_reward.py +4 -0
  40. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_update_params.py +1 -3
  41. growsurf_python-1.5.0/src/growsurf/types/campaign/program_resource.py +36 -0
  42. growsurf_python-1.5.0/src/growsurf/types/campaign/program_resource_list_response.py +12 -0
  43. growsurf_python-1.5.0/src/growsurf/types/campaign/program_resource_upload_result.py +24 -0
  44. growsurf_python-1.5.0/src/growsurf/types/campaign/program_resource_upload_ticket.py +19 -0
  45. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/reward_create_params.py +2 -2
  46. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/reward_update_params.py +2 -2
  47. growsurf_python-1.5.0/src/growsurf/types/campaign_activation_analytics_response.py +174 -0
  48. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_create_params.py +23 -0
  49. growsurf_python-1.5.0/src/growsurf/types/campaign_engagement_analytics.py +201 -0
  50. growsurf_python-1.5.0/src/growsurf/types/campaign_retrieve_activation_analytics_params.py +26 -0
  51. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_retrieve_analytics_params.py +11 -2
  52. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_retrieve_analytics_response.py +7 -3
  53. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/commission_structure.py +6 -1
  54. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/create_account_response.py +4 -3
  55. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/participant_commission_list.py +3 -3
  56. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/participant_list.py +1 -1
  57. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/participant_payout_list.py +1 -1
  58. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/campaign/test_design.py +45 -3
  59. growsurf_python-1.5.0/tests/api_resources/campaign/test_integrations.py +108 -0
  60. growsurf_python-1.5.0/tests/api_resources/campaign/test_program_resources.py +180 -0
  61. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/campaign/test_rewards.py +25 -1
  62. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/test_campaign.py +84 -0
  63. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_client.py +2 -6
  64. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/types/test_analytics_reward_status.py +10 -0
  65. growsurf_python-1.5.0/tests/types/test_participant_activation_engagement_analytics.py +247 -0
  66. growsurf_python-1.5.0/tests/types/test_participant_contract.py +115 -0
  67. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/types/test_payout_provider_forward_compat.py +18 -3
  68. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/uv.lock +1 -1
  69. growsurf_python-1.4.0/.release-please-manifest.json +0 -3
  70. growsurf_python-1.4.0/src/growsurf/types/campaign/campaign_design.py +0 -20
  71. growsurf_python-1.4.0/src/growsurf/types/campaign/campaign_options.py +0 -14
  72. growsurf_python-1.4.0/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -43
  73. growsurf_python-1.4.0/tests/types/test_participant_contract.py +0 -22
  74. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/.gitignore +0 -0
  75. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/LICENSE +0 -0
  76. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/SECURITY.md +0 -0
  77. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/bin/check-release-environment +0 -0
  78. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/bin/publish-pypi +0 -0
  79. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/examples/.keep +0 -0
  80. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/release-please-config.json +0 -0
  81. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/requirements-dev.lock +0 -0
  82. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/__init__.py +0 -0
  83. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_client.py +0 -0
  84. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_compat.py +0 -0
  85. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_constants.py +0 -0
  86. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_exceptions.py +0 -0
  87. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_files.py +0 -0
  88. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_models.py +0 -0
  89. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_qs.py +0 -0
  90. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_resource.py +0 -0
  91. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_response.py +0 -0
  92. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_streaming.py +0 -0
  93. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_types.py +0 -0
  94. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/__init__.py +0 -0
  95. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_compat.py +0 -0
  96. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_datetime_parse.py +0 -0
  97. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_json.py +0 -0
  98. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_logs.py +0 -0
  99. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_path.py +0 -0
  100. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_proxy.py +0 -0
  101. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_reflection.py +0 -0
  102. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_resources_proxy.py +0 -0
  103. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_streams.py +0 -0
  104. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_sync.py +0 -0
  105. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_transform.py +0 -0
  106. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_typing.py +0 -0
  107. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/_utils/_utils.py +0 -0
  108. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/lib/.keep +0 -0
  109. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/py.typed +0 -0
  110. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/__init__.py +0 -0
  111. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/campaign/commission.py +0 -0
  112. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/campaign/emails.py +0 -0
  113. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/campaign/installation.py +0 -0
  114. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/campaign/reward.py +0 -0
  115. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/resources/campaign/webhooks.py +0 -0
  116. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/account_create_params.py +0 -0
  117. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/affiliate_application.py +0 -0
  118. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/affiliate_application_answer.py +0 -0
  119. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/affiliate_application_list_response.py +0 -0
  120. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/affiliate_invite.py +0 -0
  121. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/affiliate_invite_list_response.py +0 -0
  122. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/campaign_installation.py +0 -0
  123. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
  124. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
  125. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
  126. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
  127. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
  128. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/email_participant_response.py +0 -0
  129. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
  130. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant.py +0 -0
  131. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
  132. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_add_params.py +0 -0
  133. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
  134. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
  135. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
  136. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_email_params.py +0 -0
  137. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
  138. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
  139. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
  140. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
  141. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
  142. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
  143. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
  144. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_params.py +0 -0
  145. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
  146. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
  147. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
  148. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
  149. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/referral_source.py +0 -0
  150. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/referral_status.py +0 -0
  151. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/reward.py +0 -0
  152. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
  153. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
  154. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
  155. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
  156. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
  157. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/webhook.py +0 -0
  158. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
  159. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/webhook_event.py +0 -0
  160. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
  161. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
  162. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
  163. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
  164. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_create_affiliate_invite_params.py +0 -0
  165. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +0 -0
  166. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
  167. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_list_affiliate_applications_params.py +0 -0
  168. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_list_affiliate_invites_params.py +0 -0
  169. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
  170. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
  171. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_list_participants_params.py +0 -0
  172. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
  173. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
  174. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_list_response.py +0 -0
  175. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_review_affiliate_application_params.py +0 -0
  176. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/campaign_update_params.py +0 -0
  177. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/email_analytics.py +0 -0
  178. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/referral_list.py +0 -0
  179. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/rotate_api_key_response.py +0 -0
  180. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/team.py +0 -0
  181. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/team_update_params.py +0 -0
  182. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/src/growsurf/types/verification_email_response.py +0 -0
  183. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/__init__.py +0 -0
  184. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/__init__.py +0 -0
  185. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/campaign/__init__.py +0 -0
  186. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/campaign/test_commission.py +0 -0
  187. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/campaign/test_emails.py +0 -0
  188. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/campaign/test_installation.py +0 -0
  189. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/campaign/test_options.py +0 -0
  190. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/campaign/test_participant.py +0 -0
  191. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/campaign/test_reward.py +0 -0
  192. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/campaign/test_webhooks.py +0 -0
  193. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/test_account.py +0 -0
  194. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/api_resources/test_team_contract.py +0 -0
  195. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/conftest.py +0 -0
  196. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/sample_file.txt +0 -0
  197. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_extract_files.py +0 -0
  198. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_files.py +0 -0
  199. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_models.py +0 -0
  200. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_qs.py +0 -0
  201. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_required_args.py +0 -0
  202. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_response.py +0 -0
  203. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_streaming.py +0 -0
  204. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_transform.py +0 -0
  205. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_utils/test_datetime_parse.py +0 -0
  206. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_utils/test_json.py +0 -0
  207. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_utils/test_path.py +0 -0
  208. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_utils/test_proxy.py +0 -0
  209. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/test_utils/test_typing.py +0 -0
  210. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/types/test_affiliate_application.py +0 -0
  211. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/types/test_email_analytics.py +0 -0
  212. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/types/test_lead_reward_events.py +0 -0
  213. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/types/test_referral_source.py +0 -0
  214. {growsurf_python-1.4.0 → growsurf_python-1.5.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.5.0"
3
+ }
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.5.0](https://github.com/growsurf/growsurf-python/compare/v1.4.0...v1.5.0) (2026-09-10)
4
+
5
+
6
+ ### Features
7
+
8
+ * **api:** add campaign integrations list endpoint ([8c03034](https://github.com/growsurf/growsurf-python/commit/8c030344295d243028f6949d033e658dce29d1c9))
9
+ * **api:** add EMBEDDABLE_ELEMENT portal view source ([beb0a4b](https://github.com/growsurf/growsurf-python/commit/beb0a4b371924bb08800796190d963b34baf52d7))
10
+ * **api:** add paymentProvider and testMode to transaction params ([42c3297](https://github.com/growsurf/growsurf-python/commit/42c32971fa5ba3de8e8eb510cf9e1de1799574fc))
11
+ * **api:** add refundHistoryComplete to refund transaction params ([08e67d7](https://github.com/growsurf/growsurf-python/commit/08e67d797bcdf41949f752ef44bc7f3194f5e82f))
12
+ * **api:** sync analytics and program resources ([3fc6106](https://github.com/growsurf/growsurf-python/commit/3fc610630ccc6e1a138ab998f8a0bafcf5e2f7d2))
13
+ * **api:** sync reward, program resource, and analytics types with the REST contract ([45d95ea](https://github.com/growsurf/growsurf-python/commit/45d95ea7504e5e5f74a2a16cd521a8d03800d0e1))
14
+
15
+
16
+ ### Chores
17
+
18
+ * apply ruff formatting ([fb8d066](https://github.com/growsurf/growsurf-python/commit/fb8d066a4df35e73eb7b9ea79c31f21bd2bab02b))
19
+
3
20
  ## [1.4.0](https://github.com/growsurf/growsurf-python/compare/v1.3.0...v1.4.0) (2026-08-25)
4
21
 
5
22
 
@@ -34,13 +34,12 @@ $ pip install -r requirements-dev.lock
34
34
 
35
35
  ## Modifying/Adding code
36
36
 
37
- Most of the SDK is generated code. Modifications to code will be persisted between generations, but may
38
- result in merge conflicts between manual patches and changes from the generator. The generator will never
39
- modify the contents of the `src/growsurf/lib/` and `examples/` directories.
37
+ GrowSurf maintains this SDK by hand. Keep resources, request and response types, exports, documentation,
38
+ and tests aligned with the public GrowSurf OpenAPI contract.
40
39
 
41
40
  ## Adding and running examples
42
41
 
43
- All files in the `examples/` directory are not modified by the generator and can be freely edited or added to.
42
+ Examples are maintained by hand and can be freely edited or added to.
44
43
 
45
44
  ```py
46
45
  # add an example to examples/<your-example>.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: growsurf-python
3
- Version: 1.4.0
3
+ Version: 1.5.0
4
4
  Summary: The official Python library for the growsurf API
5
5
  Project-URL: Homepage, https://github.com/growsurf/growsurf-python
6
6
  Project-URL: Repository, https://github.com/growsurf/growsurf-python
@@ -41,7 +41,7 @@ The Growsurf Python library provides convenient access to the Growsurf REST API
41
41
  application. The library includes type definitions for all request params and response fields,
42
42
  and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
43
43
 
44
- It is generated with [Stainless](https://www.stainless.com/).
44
+ The library was originally generated with [Stainless](https://www.stainless.com/) and is now maintained by hand.
45
45
 
46
46
  ## Documentation
47
47
 
@@ -174,18 +174,23 @@ Error codes are as follows:
174
174
  | ----------- | -------------------------- |
175
175
  | 400 | `BadRequestError` |
176
176
  | 401 | `AuthenticationError` |
177
+ | 402 | `APIStatusError` |
177
178
  | 403 | `PermissionDeniedError` |
178
179
  | 404 | `NotFoundError` |
180
+ | 406 | `APIStatusError` |
181
+ | 409 | `ConflictError` |
179
182
  | 422 | `UnprocessableEntityError` |
183
+ | 423 | `APIStatusError` |
180
184
  | 429 | `RateLimitError` |
181
185
  | >=500 | `InternalServerError` |
182
186
  | N/A | `APIConnectionError` |
183
187
 
184
188
  ### Retries
185
189
 
186
- Certain errors are automatically retried 2 times by default, with a short exponential backoff.
187
- Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,
188
- 429 Rate Limit, and >=500 Internal errors are all retried by default.
190
+ `GET` and `HEAD` requests are retried up to 2 times by default, with a short exponential backoff. API-key rotation is also retried because the SDK generates and reuses an `Idempotency-Key` for that request. Other `POST`, `PATCH`, and `DELETE` requests are not retried automatically.
191
+
192
+ For requests that are safe to retry, the SDK retries connection errors, 408 Request Timeout, 409 Conflict,
193
+ 429 Rate Limit, and >=500 Internal errors.
189
194
 
190
195
  You can use the `max_retries` option to configure or disable retry settings:
191
196
 
@@ -7,7 +7,7 @@ The Growsurf Python library provides convenient access to the Growsurf REST API
7
7
  application. The library includes type definitions for all request params and response fields,
8
8
  and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
9
9
 
10
- It is generated with [Stainless](https://www.stainless.com/).
10
+ The library was originally generated with [Stainless](https://www.stainless.com/) and is now maintained by hand.
11
11
 
12
12
  ## Documentation
13
13
 
@@ -140,18 +140,23 @@ Error codes are as follows:
140
140
  | ----------- | -------------------------- |
141
141
  | 400 | `BadRequestError` |
142
142
  | 401 | `AuthenticationError` |
143
+ | 402 | `APIStatusError` |
143
144
  | 403 | `PermissionDeniedError` |
144
145
  | 404 | `NotFoundError` |
146
+ | 406 | `APIStatusError` |
147
+ | 409 | `ConflictError` |
145
148
  | 422 | `UnprocessableEntityError` |
149
+ | 423 | `APIStatusError` |
146
150
  | 429 | `RateLimitError` |
147
151
  | >=500 | `InternalServerError` |
148
152
  | N/A | `APIConnectionError` |
149
153
 
150
154
  ### Retries
151
155
 
152
- Certain errors are automatically retried 2 times by default, with a short exponential backoff.
153
- Connection errors (for example, due to a network connectivity problem), 408 Request Timeout, 409 Conflict,
154
- 429 Rate Limit, and >=500 Internal errors are all retried by default.
156
+ `GET` and `HEAD` requests are retried up to 2 times by default, with a short exponential backoff. API-key rotation is also retried because the SDK generates and reuses an `Idempotency-Key` for that request. Other `POST`, `PATCH`, and `DELETE` requests are not retried automatically.
157
+
158
+ For requests that are safe to retry, the SDK retries connection errors, 408 Request Timeout, 409 Conflict,
159
+ 429 Rate Limit, and >=500 Internal errors.
155
160
 
156
161
  You can use the `max_retries` option to configure or disable retry settings:
157
162
 
@@ -176,6 +176,18 @@ Methods:
176
176
  - <code title="get /campaign/{id}/reward-configs">client.campaign.rewards.<a href="./src/growsurf/resources/campaign/rewards.py">list</a>(id) -> <a href="./src/growsurf/types/campaign/campaign_reward_list_response.py">CampaignRewardListResponse</a></code>
177
177
  - <code title="delete /campaign/{id}/reward-configs/{campaignRewardId}">client.campaign.rewards.<a href="./src/growsurf/resources/campaign/rewards.py">delete</a>(campaign_reward_id, \*, id) -> <a href="./src/growsurf/types/campaign/delete_reward_response.py">DeleteRewardResponse</a></code>
178
178
 
179
+ ## Integrations
180
+
181
+ Types:
182
+
183
+ ```python
184
+ from growsurf.types.campaign import Integration, IntegrationListResponse
185
+ ```
186
+
187
+ Methods:
188
+
189
+ - <code title="get /campaign/{id}/integrations">client.campaign.integrations.<a href="./src/growsurf/resources/campaign/integrations.py">list</a>(id) -> <a href="./src/growsurf/types/campaign/integration_list_response.py">IntegrationListResponse</a></code>
190
+
179
191
  ## Webhooks
180
192
 
181
193
  Types:
@@ -203,7 +215,11 @@ Methods:
203
215
  Types:
204
216
 
205
217
  ```python
206
- from growsurf.types.campaign import CampaignDesign
218
+ from growsurf.types.campaign import (
219
+ CampaignDesign,
220
+ CampaignDesignResources,
221
+ CampaignDesignResourcesIcon,
222
+ )
207
223
  ```
208
224
 
209
225
  Methods:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "growsurf-python"
3
- version = "1.4.0"
3
+ version = "1.5.0"
4
4
  description = "The official Python library for the growsurf API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -794,9 +794,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
794
794
  method = options.method.lower()
795
795
  url = URL(str(options.url))
796
796
  path = url.path.rstrip("/")
797
- return method in {"get", "head"} or (
798
- method == "post" and url.is_relative_url and path == "/api-key/rotate"
799
- )
797
+ return method in {"get", "head"} or (method == "post" and url.is_relative_url and path == "/api-key/rotate")
800
798
 
801
799
  def _should_retry(self, response: httpx.Response) -> bool:
802
800
  # Note: this is not a standard header
@@ -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.4.0" # x-release-please-version
4
+ __version__ = "1.5.0" # x-release-please-version
@@ -48,19 +48,25 @@ class AccountResource(SyncAPIResource):
48
48
  ) -> CreateAccountResponse:
49
49
  """
50
50
  Creates a new GrowSurf account. This is the only endpoint that does not require
51
- an API key. The response includes an API key for the new account, shown once in
52
- the response. The key is locked until the team owner's email address is
51
+ an API key. Before calling it, an authorized account owner must review and
52
+ approve GrowSurf's [Terms of Service](https://growsurf.com/terms) and [Privacy
53
+ Policy](https://growsurf.com/privacy). The account starts a 14-day Business
54
+ trial without a credit card. The response includes an API key for the new
55
+ account, shown once in the response. The key is a secret: store it in a secret
56
+ manager and do not put it in logs, screenshots, URLs, model context, analytics,
57
+ or generated output. The key is locked until the team owner's email address is
53
58
  verified: authenticated program and resource endpoints return a `403` with error
54
59
  code `EMAIL_NOT_VERIFIED_ERROR` until then (resend the email via `POST
55
- /team/owner/verification-email`, then retry). A welcome email is sent to the
56
- address with the verification link and a set-password link for dashboard access.
57
- Accounts whose email is never verified are deleted automatically after 7 days.
58
- For security, the API key is rotated the first time the account owner signs in
59
- to the GrowSurf dashboard. Some actions (such as emailing participants)
60
- additionally require GrowSurf to verify the team first. By creating an account
61
- you agree, on behalf of the account holder, to GrowSurf's [Terms of
62
- Service](https://growsurf.com/terms) and [Privacy
63
- Policy](https://growsurf.com/privacy).
60
+ /team/owner/verification-email`, then retry). Verification unlocks this same key
61
+ - keep it and retry rather than requesting a replacement. A welcome email is
62
+ sent to the address with the verification link and a set-password link for
63
+ dashboard access. Accounts whose email is never verified are deleted
64
+ automatically after 7 days. Separately, for security, the API key is replaced
65
+ the first time the account owner signs in to the GrowSurf dashboard; email
66
+ verification does not trigger that, and the previous key then returns a `403`
67
+ with error code `NOT_AUTHORIZED_ERROR`. Some actions (such as emailing participants)
68
+ additionally require GrowSurf to verify the team first. Calling this endpoint
69
+ accepts those policies on the account holder's behalf.
64
70
 
65
71
  Args:
66
72
  email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
@@ -128,19 +134,25 @@ class AsyncAccountResource(AsyncAPIResource):
128
134
  ) -> CreateAccountResponse:
129
135
  """
130
136
  Creates a new GrowSurf account. This is the only endpoint that does not require
131
- an API key. The response includes an API key for the new account, shown once in
132
- the response. The key is locked until the team owner's email address is
137
+ an API key. Before calling it, an authorized account owner must review and
138
+ approve GrowSurf's [Terms of Service](https://growsurf.com/terms) and [Privacy
139
+ Policy](https://growsurf.com/privacy). The account starts a 14-day Business
140
+ trial without a credit card. The response includes an API key for the new
141
+ account, shown once in the response. The key is a secret: store it in a secret
142
+ manager and do not put it in logs, screenshots, URLs, model context, analytics,
143
+ or generated output. The key is locked until the team owner's email address is
133
144
  verified: authenticated program and resource endpoints return a `403` with error
134
145
  code `EMAIL_NOT_VERIFIED_ERROR` until then (resend the email via `POST
135
- /team/owner/verification-email`, then retry). A welcome email is sent to the
136
- address with the verification link and a set-password link for dashboard access.
137
- Accounts whose email is never verified are deleted automatically after 7 days.
138
- For security, the API key is rotated the first time the account owner signs in
139
- to the GrowSurf dashboard. Some actions (such as emailing participants)
140
- additionally require GrowSurf to verify the team first. By creating an account
141
- you agree, on behalf of the account holder, to GrowSurf's [Terms of
142
- Service](https://growsurf.com/terms) and [Privacy
143
- Policy](https://growsurf.com/privacy).
146
+ /team/owner/verification-email`, then retry). Verification unlocks this same key
147
+ - keep it and retry rather than requesting a replacement. A welcome email is
148
+ sent to the address with the verification link and a set-password link for
149
+ dashboard access. Accounts whose email is never verified are deleted
150
+ automatically after 7 days. Separately, for security, the API key is replaced
151
+ the first time the account owner signs in to the GrowSurf dashboard; email
152
+ verification does not trigger that, and the previous key then returns a `403`
153
+ with error code `NOT_AUTHORIZED_ERROR`. Some actions (such as emailing participants)
154
+ additionally require GrowSurf to verify the team first. Calling this endpoint
155
+ accepts those policies on the account holder's behalf.
144
156
 
145
157
  Args:
146
158
  email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
@@ -80,6 +80,22 @@ from .installation import (
80
80
  InstallationResourceWithStreamingResponse,
81
81
  AsyncInstallationResourceWithStreamingResponse,
82
82
  )
83
+ from .integrations import (
84
+ IntegrationsResource,
85
+ AsyncIntegrationsResource,
86
+ IntegrationsResourceWithRawResponse,
87
+ AsyncIntegrationsResourceWithRawResponse,
88
+ IntegrationsResourceWithStreamingResponse,
89
+ AsyncIntegrationsResourceWithStreamingResponse,
90
+ )
91
+ from .program_resources import (
92
+ ProgramResourcesResource,
93
+ AsyncProgramResourcesResource,
94
+ ProgramResourcesResourceWithRawResponse,
95
+ AsyncProgramResourcesResourceWithRawResponse,
96
+ ProgramResourcesResourceWithStreamingResponse,
97
+ AsyncProgramResourcesResourceWithStreamingResponse,
98
+ )
83
99
 
84
100
  __all__ = [
85
101
  "ParticipantResource",
@@ -100,6 +116,18 @@ __all__ = [
100
116
  "AsyncRewardsResourceWithRawResponse",
101
117
  "RewardsResourceWithStreamingResponse",
102
118
  "AsyncRewardsResourceWithStreamingResponse",
119
+ "ProgramResourcesResource",
120
+ "AsyncProgramResourcesResource",
121
+ "ProgramResourcesResourceWithRawResponse",
122
+ "AsyncProgramResourcesResourceWithRawResponse",
123
+ "ProgramResourcesResourceWithStreamingResponse",
124
+ "AsyncProgramResourcesResourceWithStreamingResponse",
125
+ "IntegrationsResource",
126
+ "AsyncIntegrationsResource",
127
+ "IntegrationsResourceWithRawResponse",
128
+ "AsyncIntegrationsResourceWithRawResponse",
129
+ "IntegrationsResourceWithStreamingResponse",
130
+ "AsyncIntegrationsResourceWithStreamingResponse",
103
131
  "WebhooksResource",
104
132
  "AsyncWebhooksResource",
105
133
  "WebhooksResourceWithRawResponse",