growsurf-python 1.4.0__tar.gz → 1.5.1__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.1/.release-please-manifest.json +3 -0
  2. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/CHANGELOG.md +29 -0
  3. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/CONTRIBUTING.md +3 -4
  4. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/PKG-INFO +10 -5
  5. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/README.md +9 -4
  6. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/api.md +17 -1
  7. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/pyproject.toml +1 -1
  8. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_base_client.py +1 -3
  9. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_version.py +1 -1
  10. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/account.py +42 -28
  11. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/__init__.py +28 -0
  12. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/campaign.py +296 -14
  13. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/design.py +8 -4
  14. growsurf_python-1.5.1/src/growsurf/resources/campaign/integrations.py +181 -0
  15. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/options.py +4 -2
  16. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/participant.py +44 -16
  17. growsurf_python-1.5.1/src/growsurf/resources/campaign/program_resources.py +427 -0
  18. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/rewards.py +8 -8
  19. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/team.py +14 -10
  20. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/__init__.py +9 -0
  21. growsurf_python-1.5.1/src/growsurf/types/analytics_availability.py +7 -0
  22. growsurf_python-1.5.1/src/growsurf/types/analytics_unavailable_reason.py +15 -0
  23. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/__init__.py +17 -1
  24. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/campaign.py +1 -1
  25. growsurf_python-1.5.1/src/growsurf/types/campaign/campaign_design.py +66 -0
  26. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/campaign_emails.py +4 -2
  27. growsurf_python-1.5.1/src/growsurf/types/campaign/campaign_options.py +15 -0
  28. growsurf_python-1.5.1/src/growsurf/types/campaign/delete_program_resource_response.py +12 -0
  29. growsurf_python-1.5.1/src/growsurf/types/campaign/integration.py +38 -0
  30. growsurf_python-1.5.1/src/growsurf/types/campaign/integration_list_response.py +16 -0
  31. growsurf_python-1.5.1/src/growsurf/types/campaign/participant_activation_analytics.py +84 -0
  32. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_analytics_params.py +4 -3
  33. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_analytics_response.py +16 -0
  34. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_get_payout_destination_response.py +10 -10
  35. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_rewards_response.py +1 -1
  36. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_record_transaction_params.py +7 -1
  37. growsurf_python-1.5.1/src/growsurf/types/campaign/participant_refund_transaction_params.py +58 -0
  38. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_response.py +4 -4
  39. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_reward.py +4 -0
  40. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_update_params.py +1 -3
  41. growsurf_python-1.5.1/src/growsurf/types/campaign/program_resource.py +36 -0
  42. growsurf_python-1.5.1/src/growsurf/types/campaign/program_resource_list_response.py +12 -0
  43. growsurf_python-1.5.1/src/growsurf/types/campaign/program_resource_upload_result.py +24 -0
  44. growsurf_python-1.5.1/src/growsurf/types/campaign/program_resource_upload_ticket.py +19 -0
  45. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_create_params.py +2 -2
  46. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_update_params.py +2 -2
  47. growsurf_python-1.5.1/src/growsurf/types/campaign_activation_analytics_response.py +174 -0
  48. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_create_params.py +23 -0
  49. growsurf_python-1.5.1/src/growsurf/types/campaign_engagement_analytics.py +201 -0
  50. growsurf_python-1.5.1/src/growsurf/types/campaign_retrieve_activation_analytics_params.py +26 -0
  51. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_retrieve_analytics_params.py +11 -2
  52. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_retrieve_analytics_response.py +7 -3
  53. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/commission_structure.py +6 -1
  54. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/create_account_response.py +4 -3
  55. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/participant_commission_list.py +3 -3
  56. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/participant_list.py +1 -1
  57. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/participant_payout_list.py +1 -1
  58. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_design.py +45 -3
  59. growsurf_python-1.5.1/tests/api_resources/campaign/test_integrations.py +108 -0
  60. growsurf_python-1.5.1/tests/api_resources/campaign/test_program_resources.py +180 -0
  61. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_rewards.py +25 -1
  62. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/test_campaign.py +84 -0
  63. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_client.py +2 -6
  64. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_analytics_reward_status.py +10 -0
  65. growsurf_python-1.5.1/tests/types/test_participant_activation_engagement_analytics.py +247 -0
  66. growsurf_python-1.5.1/tests/types/test_participant_contract.py +115 -0
  67. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_payout_provider_forward_compat.py +18 -3
  68. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/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.1}/.gitignore +0 -0
  75. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/LICENSE +0 -0
  76. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/SECURITY.md +0 -0
  77. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/bin/check-release-environment +0 -0
  78. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/bin/publish-pypi +0 -0
  79. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/examples/.keep +0 -0
  80. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/release-please-config.json +0 -0
  81. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/requirements-dev.lock +0 -0
  82. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/__init__.py +0 -0
  83. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_client.py +0 -0
  84. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_compat.py +0 -0
  85. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_constants.py +0 -0
  86. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_exceptions.py +0 -0
  87. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_files.py +0 -0
  88. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_models.py +0 -0
  89. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_qs.py +0 -0
  90. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_resource.py +0 -0
  91. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_response.py +0 -0
  92. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_streaming.py +0 -0
  93. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_types.py +0 -0
  94. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/__init__.py +0 -0
  95. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_compat.py +0 -0
  96. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_datetime_parse.py +0 -0
  97. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_json.py +0 -0
  98. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_logs.py +0 -0
  99. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_path.py +0 -0
  100. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_proxy.py +0 -0
  101. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_reflection.py +0 -0
  102. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_resources_proxy.py +0 -0
  103. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_streams.py +0 -0
  104. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_sync.py +0 -0
  105. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_transform.py +0 -0
  106. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_typing.py +0 -0
  107. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_utils.py +0 -0
  108. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/lib/.keep +0 -0
  109. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/py.typed +0 -0
  110. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/__init__.py +0 -0
  111. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/commission.py +0 -0
  112. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/emails.py +0 -0
  113. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/installation.py +0 -0
  114. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/reward.py +0 -0
  115. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/webhooks.py +0 -0
  116. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/account_create_params.py +0 -0
  117. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/affiliate_application.py +0 -0
  118. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/affiliate_application_answer.py +0 -0
  119. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/affiliate_application_list_response.py +0 -0
  120. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/affiliate_invite.py +0 -0
  121. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/affiliate_invite_list_response.py +0 -0
  122. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/campaign_installation.py +0 -0
  123. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
  124. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
  125. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
  126. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
  127. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
  128. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/email_participant_response.py +0 -0
  129. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
  130. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant.py +0 -0
  131. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
  132. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_add_params.py +0 -0
  133. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
  134. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
  135. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
  136. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_email_params.py +0 -0
  137. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
  138. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
  139. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
  140. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
  141. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
  142. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
  143. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
  144. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_params.py +0 -0
  145. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
  146. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
  147. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
  148. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
  149. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/referral_source.py +0 -0
  150. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/referral_status.py +0 -0
  151. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward.py +0 -0
  152. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
  153. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
  154. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
  155. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
  156. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
  157. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook.py +0 -0
  158. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
  159. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_event.py +0 -0
  160. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
  161. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
  162. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
  163. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
  164. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_create_affiliate_invite_params.py +0 -0
  165. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +0 -0
  166. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
  167. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_affiliate_applications_params.py +0 -0
  168. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_affiliate_invites_params.py +0 -0
  169. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
  170. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
  171. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_participants_params.py +0 -0
  172. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
  173. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
  174. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_response.py +0 -0
  175. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_review_affiliate_application_params.py +0 -0
  176. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_update_params.py +0 -0
  177. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/email_analytics.py +0 -0
  178. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/referral_list.py +0 -0
  179. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/rotate_api_key_response.py +0 -0
  180. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/team.py +0 -0
  181. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/team_update_params.py +0 -0
  182. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/verification_email_response.py +0 -0
  183. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/__init__.py +0 -0
  184. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/__init__.py +0 -0
  185. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/__init__.py +0 -0
  186. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_commission.py +0 -0
  187. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_emails.py +0 -0
  188. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_installation.py +0 -0
  189. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_options.py +0 -0
  190. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_participant.py +0 -0
  191. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_reward.py +0 -0
  192. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_webhooks.py +0 -0
  193. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/test_account.py +0 -0
  194. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/test_team_contract.py +0 -0
  195. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/conftest.py +0 -0
  196. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/sample_file.txt +0 -0
  197. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_extract_files.py +0 -0
  198. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_files.py +0 -0
  199. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_models.py +0 -0
  200. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_qs.py +0 -0
  201. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_required_args.py +0 -0
  202. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_response.py +0 -0
  203. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_streaming.py +0 -0
  204. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_transform.py +0 -0
  205. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_utils/test_datetime_parse.py +0 -0
  206. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_utils/test_json.py +0 -0
  207. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_utils/test_path.py +0 -0
  208. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_utils/test_proxy.py +0 -0
  209. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_utils/test_typing.py +0 -0
  210. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_affiliate_application.py +0 -0
  211. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_email_analytics.py +0 -0
  212. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_lead_reward_events.py +0 -0
  213. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_referral_source.py +0 -0
  214. {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.5.1"
3
+ }
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.5.1](https://github.com/growsurf/growsurf-python/compare/v1.5.0...v1.5.1) (2026-09-10)
4
+
5
+
6
+ ### Chores
7
+
8
+ * merge main (release 1.5.0) into dev ([1bc5ac8](https://github.com/growsurf/growsurf-python/commit/1bc5ac8dd57d1f6ab8ab168eb313365ab7e9d785))
9
+
10
+
11
+ ### Documentation
12
+
13
+ * **api:** warn that a new account API key cannot be recovered ([f068cb8](https://github.com/growsurf/growsurf-python/commit/f068cb81afffb6b99451a9f416eb743c2eba3a8f))
14
+
15
+ ## [1.5.0](https://github.com/growsurf/growsurf-python/compare/v1.4.0...v1.5.0) (2026-09-10)
16
+
17
+
18
+ ### Features
19
+
20
+ * **api:** add campaign integrations list endpoint ([8c03034](https://github.com/growsurf/growsurf-python/commit/8c030344295d243028f6949d033e658dce29d1c9))
21
+ * **api:** add EMBEDDABLE_ELEMENT portal view source ([beb0a4b](https://github.com/growsurf/growsurf-python/commit/beb0a4b371924bb08800796190d963b34baf52d7))
22
+ * **api:** add paymentProvider and testMode to transaction params ([42c3297](https://github.com/growsurf/growsurf-python/commit/42c32971fa5ba3de8e8eb510cf9e1de1799574fc))
23
+ * **api:** add refundHistoryComplete to refund transaction params ([08e67d7](https://github.com/growsurf/growsurf-python/commit/08e67d797bcdf41949f752ef44bc7f3194f5e82f))
24
+ * **api:** sync analytics and program resources ([3fc6106](https://github.com/growsurf/growsurf-python/commit/3fc610630ccc6e1a138ab998f8a0bafcf5e2f7d2))
25
+ * **api:** sync reward, program resource, and analytics types with the REST contract ([45d95ea](https://github.com/growsurf/growsurf-python/commit/45d95ea7504e5e5f74a2a16cd521a8d03800d0e1))
26
+
27
+
28
+ ### Chores
29
+
30
+ * apply ruff formatting ([fb8d066](https://github.com/growsurf/growsurf-python/commit/fb8d066a4df35e73eb7b9ea79c31f21bd2bab02b))
31
+
3
32
  ## [1.4.0](https://github.com/growsurf/growsurf-python/compare/v1.3.0...v1.4.0) (2026-08-25)
4
33
 
5
34
 
@@ -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.1
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.1"
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.1" # x-release-please-version
@@ -47,20 +47,27 @@ class AccountResource(SyncAPIResource):
47
47
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
48
48
  ) -> CreateAccountResponse:
49
49
  """
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
53
- verified: authenticated program and resource endpoints return a `403` with error
54
- 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).
50
+ Creates a new GrowSurf account. This is the only endpoint that does not require an API key.
51
+ Before calling it, an authorized account owner must review and approve GrowSurf's [Terms of
52
+ Service](https://growsurf.com/terms) and [Privacy Policy](https://growsurf.com/privacy). The
53
+ account starts a 14-day Business trial without a credit card. The response includes an API
54
+ key for the new account, shown once in the response. The key is a secret: store it in a
55
+ secret manager and do not put it in logs, screenshots, URLs, model context, analytics, or
56
+ generated output. A lost key cannot be recovered through this API, so do not create an
57
+ account here unless you can store the key somewhere that outlives the current conversation.
58
+ If you cannot, ask the account owner to connect GrowSurf's hosted MCP server at
59
+ `https://mcp.growsurf.com` instead, which keeps the credential with your tool rather than in
60
+ chat. The key is locked until the team owner's email address is verified: authenticated
61
+ program and resource endpoints return a `403` with error code `EMAIL_NOT_VERIFIED_ERROR`
62
+ until then (resend the email via `POST /team/owner/verification-email`, then retry).
63
+ Verification unlocks this same key - keep it and retry rather than requesting a replacement.
64
+ A welcome email is sent to the address with the verification link and a set-password link
65
+ for dashboard access. Accounts whose email is never verified are deleted automatically after
66
+ 7 days. Separately, for security, the API key is replaced the first time the account owner
67
+ signs in to the GrowSurf dashboard; email verification does not trigger that, and the
68
+ previous key then returns a `403` with error code `NOT_AUTHORIZED_ERROR`. Some actions (such
69
+ as emailing participants) additionally require GrowSurf to verify the team first. Calling
70
+ this endpoint accepts those policies on the account holder's behalf.
64
71
 
65
72
  Args:
66
73
  email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
@@ -127,20 +134,27 @@ class AsyncAccountResource(AsyncAPIResource):
127
134
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
128
135
  ) -> CreateAccountResponse:
129
136
  """
130
- 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
133
- verified: authenticated program and resource endpoints return a `403` with error
134
- 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).
137
+ Creates a new GrowSurf account. This is the only endpoint that does not require an API key.
138
+ Before calling it, an authorized account owner must review and approve GrowSurf's [Terms of
139
+ Service](https://growsurf.com/terms) and [Privacy Policy](https://growsurf.com/privacy). The
140
+ account starts a 14-day Business trial without a credit card. The response includes an API
141
+ key for the new account, shown once in the response. The key is a secret: store it in a
142
+ secret manager and do not put it in logs, screenshots, URLs, model context, analytics, or
143
+ generated output. A lost key cannot be recovered through this API, so do not create an
144
+ account here unless you can store the key somewhere that outlives the current conversation.
145
+ If you cannot, ask the account owner to connect GrowSurf's hosted MCP server at
146
+ `https://mcp.growsurf.com` instead, which keeps the credential with your tool rather than in
147
+ chat. The key is locked until the team owner's email address is verified: authenticated
148
+ program and resource endpoints return a `403` with error code `EMAIL_NOT_VERIFIED_ERROR`
149
+ until then (resend the email via `POST /team/owner/verification-email`, then retry).
150
+ Verification unlocks this same key - keep it and retry rather than requesting a replacement.
151
+ A welcome email is sent to the address with the verification link and a set-password link
152
+ for dashboard access. Accounts whose email is never verified are deleted automatically after
153
+ 7 days. Separately, for security, the API key is replaced the first time the account owner
154
+ signs in to the GrowSurf dashboard; email verification does not trigger that, and the
155
+ previous key then returns a `403` with error code `NOT_AUTHORIZED_ERROR`. Some actions (such
156
+ as emailing participants) additionally require GrowSurf to verify the team first. Calling
157
+ this endpoint accepts those policies on the account holder's behalf.
144
158
 
145
159
  Args:
146
160
  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",