growsurf-python 1.17.0__tar.gz → 1.19.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 (219) hide show
  1. growsurf_python-1.19.0/.release-please-manifest.json +3 -0
  2. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/CHANGELOG.md +16 -0
  3. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/PKG-INFO +1 -1
  4. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/api.md +0 -14
  5. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/pyproject.toml +1 -1
  6. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_client.py +1 -38
  7. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_version.py +1 -1
  8. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/__init__.py +0 -14
  9. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/campaign.py +4 -4
  10. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/participant.py +4 -4
  11. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/__init__.py +0 -2
  12. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/language.py +2 -0
  13. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_add_params.py +1 -1
  14. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_reward.py +26 -0
  15. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +1 -1
  16. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/test_team_contract.py +1 -7
  17. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/uv.lock +1 -1
  18. growsurf_python-1.17.0/.release-please-manifest.json +0 -3
  19. growsurf_python-1.17.0/src/growsurf/resources/account.py +0 -219
  20. growsurf_python-1.17.0/src/growsurf/types/account_create_params.py +0 -23
  21. growsurf_python-1.17.0/src/growsurf/types/create_account_response.py +0 -29
  22. growsurf_python-1.17.0/tests/api_resources/test_account.py +0 -153
  23. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/.gitignore +0 -0
  24. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/CONTRIBUTING.md +0 -0
  25. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/LICENSE +0 -0
  26. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/README.md +0 -0
  27. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/SECURITY.md +0 -0
  28. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/bin/check-release-environment +0 -0
  29. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/bin/publish-pypi +0 -0
  30. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/examples/.keep +0 -0
  31. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/release-please-config.json +0 -0
  32. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/requirements-dev.lock +0 -0
  33. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/__init__.py +0 -0
  34. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_base_client.py +0 -0
  35. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_compat.py +0 -0
  36. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_constants.py +0 -0
  37. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_exceptions.py +0 -0
  38. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_files.py +0 -0
  39. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_models.py +0 -0
  40. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_qs.py +0 -0
  41. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_resource.py +0 -0
  42. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_response.py +0 -0
  43. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_streaming.py +0 -0
  44. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_types.py +0 -0
  45. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/__init__.py +0 -0
  46. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_compat.py +0 -0
  47. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_datetime_parse.py +0 -0
  48. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_json.py +0 -0
  49. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_logs.py +0 -0
  50. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_path.py +0 -0
  51. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_proxy.py +0 -0
  52. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_reflection.py +0 -0
  53. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_resources_proxy.py +0 -0
  54. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_streams.py +0 -0
  55. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_sync.py +0 -0
  56. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_transform.py +0 -0
  57. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_typing.py +0 -0
  58. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_utils.py +0 -0
  59. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/lib/.keep +0 -0
  60. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/py.typed +0 -0
  61. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/__init__.py +0 -0
  62. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/commission.py +0 -0
  63. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/custom_domain.py +0 -0
  64. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/design.py +0 -0
  65. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/emails.py +0 -0
  66. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/installation.py +0 -0
  67. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/integrations.py +0 -0
  68. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/options.py +0 -0
  69. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/program_resources.py +0 -0
  70. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/reward.py +0 -0
  71. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/rewards.py +0 -0
  72. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/webhooks.py +0 -0
  73. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/team.py +0 -0
  74. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/affiliate_application.py +0 -0
  75. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/affiliate_application_answer.py +0 -0
  76. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/affiliate_application_list_response.py +0 -0
  77. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/affiliate_invite.py +0 -0
  78. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/affiliate_invite_list_response.py +0 -0
  79. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/analytics_availability.py +0 -0
  80. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/analytics_unavailable_reason.py +0 -0
  81. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/__init__.py +0 -0
  82. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign.py +0 -0
  83. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_custom_domain.py +0 -0
  84. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_design.py +0 -0
  85. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_emails.py +0 -0
  86. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_installation.py +0 -0
  87. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_options.py +0 -0
  88. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
  89. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
  90. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
  91. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/custom_domain_set_params.py +0 -0
  92. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/delete_campaign_custom_domain_response.py +0 -0
  93. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/delete_program_resource_response.py +0 -0
  94. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
  95. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
  96. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/email_participant_response.py +0 -0
  97. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
  98. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/integration.py +0 -0
  99. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/integration_list_response.py +0 -0
  100. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant.py +0 -0
  101. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_activation_analytics.py +0 -0
  102. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
  103. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_analytics_params.py +0 -0
  104. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_analytics_response.py +0 -0
  105. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
  106. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
  107. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
  108. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_email_params.py +0 -0
  109. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_get_payout_destination_response.py +0 -0
  110. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
  111. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
  112. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
  113. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
  114. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
  115. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_rewards_response.py +0 -0
  116. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_record_transaction_params.py +0 -0
  117. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
  118. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -0
  119. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
  120. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_params.py +0 -0
  121. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_response.py +0 -0
  122. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
  123. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
  124. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
  125. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
  126. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_update_params.py +0 -0
  127. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/pending_analytics_erasure.py +0 -0
  128. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/program_resource.py +0 -0
  129. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/program_resource_list_response.py +0 -0
  130. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/program_resource_upload_result.py +0 -0
  131. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/program_resource_upload_ticket.py +0 -0
  132. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/referral_source.py +0 -0
  133. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/referral_status.py +0 -0
  134. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward.py +0 -0
  135. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
  136. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
  137. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_create_params.py +0 -0
  138. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
  139. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
  140. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
  141. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_update_params.py +0 -0
  142. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook.py +0 -0
  143. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
  144. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_event.py +0 -0
  145. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
  146. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
  147. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
  148. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
  149. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_activation_analytics_response.py +0 -0
  150. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_create_affiliate_invite_params.py +0 -0
  151. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
  152. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_create_params.py +0 -0
  153. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_engagement_analytics.py +0 -0
  154. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_affiliate_applications_params.py +0 -0
  155. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_affiliate_invites_params.py +0 -0
  156. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
  157. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
  158. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_participants_params.py +0 -0
  159. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
  160. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
  161. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_response.py +0 -0
  162. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_retrieve_activation_analytics_params.py +0 -0
  163. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_retrieve_analytics_params.py +0 -0
  164. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_retrieve_analytics_response.py +0 -0
  165. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_review_affiliate_application_params.py +0 -0
  166. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_update_params.py +0 -0
  167. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/commission_structure.py +0 -0
  168. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/email_analytics.py +0 -0
  169. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/participant_commission_list.py +0 -0
  170. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/participant_list.py +0 -0
  171. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/participant_payout_list.py +0 -0
  172. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/referral_flow_screenshot.py +0 -0
  173. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/referral_flow_screenshots_response.py +0 -0
  174. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/referral_list.py +0 -0
  175. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/rotate_api_key_response.py +0 -0
  176. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/team.py +0 -0
  177. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/team_update_params.py +0 -0
  178. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/verification_email_response.py +0 -0
  179. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/__init__.py +0 -0
  180. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/__init__.py +0 -0
  181. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/__init__.py +0 -0
  182. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_commission.py +0 -0
  183. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_custom_domain.py +0 -0
  184. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_design.py +0 -0
  185. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_emails.py +0 -0
  186. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_installation.py +0 -0
  187. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_integrations.py +0 -0
  188. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_options.py +0 -0
  189. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_participant.py +0 -0
  190. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_program_resources.py +0 -0
  191. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_reward.py +0 -0
  192. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_rewards.py +0 -0
  193. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_webhooks.py +0 -0
  194. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/test_campaign.py +0 -0
  195. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/conftest.py +0 -0
  196. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/sample_file.txt +0 -0
  197. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_client.py +0 -0
  198. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_extract_files.py +0 -0
  199. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_files.py +0 -0
  200. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_models.py +0 -0
  201. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_qs.py +0 -0
  202. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_required_args.py +0 -0
  203. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_response.py +0 -0
  204. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_streaming.py +0 -0
  205. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_transform.py +0 -0
  206. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_utils/test_datetime_parse.py +0 -0
  207. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_utils/test_json.py +0 -0
  208. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_utils/test_path.py +0 -0
  209. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_utils/test_proxy.py +0 -0
  210. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_utils/test_typing.py +0 -0
  211. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_affiliate_application.py +0 -0
  212. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_analytics_reward_status.py +0 -0
  213. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_email_analytics.py +0 -0
  214. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_lead_reward_events.py +0 -0
  215. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_participant_activation_engagement_analytics.py +0 -0
  216. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_participant_contract.py +0 -0
  217. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_payout_provider_forward_compat.py +0 -0
  218. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_referral_source.py +0 -0
  219. {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.19.0"
3
+ }
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.19.0](https://github.com/growsurf/growsurf-python/compare/v1.18.0...v1.19.0) (2026-11-04)
4
+
5
+
6
+ ### Features
7
+
8
+ * add reward amountSource and percentOff, and zh-TW and es-419 languages ([b0011f8](https://github.com/growsurf/growsurf-python/commit/b0011f8dbbb97057fc98977412e0dbabc37f283a))
9
+ * add reward amountSource and percentOff, and zh-TW and es-419 languages ([a3a8427](https://github.com/growsurf/growsurf-python/commit/a3a8427f3722d23146f31ee994974d96bb028c0a))
10
+
11
+ ## [1.18.0](https://github.com/growsurf/growsurf-python/compare/v1.17.0...v1.18.0) (2026-11-03)
12
+
13
+
14
+ ### Features
15
+
16
+ * remove account create method (endpoint retired) ([0a464f2](https://github.com/growsurf/growsurf-python/commit/0a464f2e5d7bcb644d333545907b1847117936a2))
17
+ * remove account create method (endpoint retired) ([7a60066](https://github.com/growsurf/growsurf-python/commit/7a60066f82a98eb1715fd457c76a7e1dc63bd386))
18
+
3
19
  ## [1.17.0](https://github.com/growsurf/growsurf-python/compare/v1.16.0...v1.17.0) (2026-11-03)
4
20
 
5
21
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: growsurf-python
3
- Version: 1.17.0
3
+ Version: 1.19.0
4
4
  Summary: The official Python library for the growsurf API
5
5
  Project-URL: Homepage, https://growsurf.com/
6
6
  Project-URL: Repository, https://github.com/growsurf/growsurf-python
@@ -1,17 +1,3 @@
1
- # Account
2
-
3
- Types:
4
-
5
- ```python
6
- from growsurf.types import (
7
- CreateAccountResponse,
8
- )
9
- ```
10
-
11
- Methods:
12
-
13
- - <code title="post /accounts">client.account.<a href="./src/growsurf/resources/account.py">create</a>(\*\*<a href="src/growsurf/types/account_create_params.py">params</a>) -> <a href="./src/growsurf/types/create_account_response.py">CreateAccountResponse</a></code>
14
-
15
1
  # Team
16
2
 
17
3
  Types:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "growsurf-python"
3
- version = "1.17.0"
3
+ version = "1.19.0"
4
4
  description = "The official Python library for the growsurf API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -36,9 +36,8 @@ from ._base_client import (
36
36
  )
37
37
 
38
38
  if TYPE_CHECKING:
39
- from .resources import team, account, campaign
39
+ from .resources import team, campaign
40
40
  from .resources.team import TeamResource, AsyncTeamResource
41
- from .resources.account import AccountResource, AsyncAccountResource
42
41
  from .resources.campaign.campaign import CampaignResource, AsyncCampaignResource
43
42
 
44
43
  __all__ = [
@@ -116,12 +115,6 @@ class Growsurf(SyncAPIClient):
116
115
  )
117
116
  self._idempotency_header = "Idempotency-Key"
118
117
 
119
- @cached_property
120
- def account(self) -> AccountResource:
121
- from .resources.account import AccountResource
122
-
123
- return AccountResource(self)
124
-
125
118
  @cached_property
126
119
  def team(self) -> TeamResource:
127
120
  from .resources.team import TeamResource
@@ -319,12 +312,6 @@ class AsyncGrowsurf(AsyncAPIClient):
319
312
  )
320
313
  self._idempotency_header = "Idempotency-Key"
321
314
 
322
- @cached_property
323
- def account(self) -> AsyncAccountResource:
324
- from .resources.account import AsyncAccountResource
325
-
326
- return AsyncAccountResource(self)
327
-
328
315
  @cached_property
329
316
  def team(self) -> AsyncTeamResource:
330
317
  from .resources.team import AsyncTeamResource
@@ -465,12 +452,6 @@ class GrowsurfWithRawResponse:
465
452
  def __init__(self, client: Growsurf) -> None:
466
453
  self._client = client
467
454
 
468
- @cached_property
469
- def account(self) -> account.AccountResourceWithRawResponse:
470
- from .resources.account import AccountResourceWithRawResponse
471
-
472
- return AccountResourceWithRawResponse(self._client.account)
473
-
474
455
  @cached_property
475
456
  def team(self) -> team.TeamResourceWithRawResponse:
476
457
  from .resources.team import TeamResourceWithRawResponse
@@ -490,12 +471,6 @@ class AsyncGrowsurfWithRawResponse:
490
471
  def __init__(self, client: AsyncGrowsurf) -> None:
491
472
  self._client = client
492
473
 
493
- @cached_property
494
- def account(self) -> account.AsyncAccountResourceWithRawResponse:
495
- from .resources.account import AsyncAccountResourceWithRawResponse
496
-
497
- return AsyncAccountResourceWithRawResponse(self._client.account)
498
-
499
474
  @cached_property
500
475
  def team(self) -> team.AsyncTeamResourceWithRawResponse:
501
476
  from .resources.team import AsyncTeamResourceWithRawResponse
@@ -515,12 +490,6 @@ class GrowsurfWithStreamedResponse:
515
490
  def __init__(self, client: Growsurf) -> None:
516
491
  self._client = client
517
492
 
518
- @cached_property
519
- def account(self) -> account.AccountResourceWithStreamingResponse:
520
- from .resources.account import AccountResourceWithStreamingResponse
521
-
522
- return AccountResourceWithStreamingResponse(self._client.account)
523
-
524
493
  @cached_property
525
494
  def team(self) -> team.TeamResourceWithStreamingResponse:
526
495
  from .resources.team import TeamResourceWithStreamingResponse
@@ -540,12 +509,6 @@ class AsyncGrowsurfWithStreamedResponse:
540
509
  def __init__(self, client: AsyncGrowsurf) -> None:
541
510
  self._client = client
542
511
 
543
- @cached_property
544
- def account(self) -> account.AsyncAccountResourceWithStreamingResponse:
545
- from .resources.account import AsyncAccountResourceWithStreamingResponse
546
-
547
- return AsyncAccountResourceWithStreamingResponse(self._client.account)
548
-
549
512
  @cached_property
550
513
  def team(self) -> team.AsyncTeamResourceWithStreamingResponse:
551
514
  from .resources.team import AsyncTeamResourceWithStreamingResponse
@@ -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.17.0" # x-release-please-version
4
+ __version__ = "1.19.0" # x-release-please-version
@@ -8,14 +8,6 @@ from .team import (
8
8
  TeamResourceWithStreamingResponse,
9
9
  AsyncTeamResourceWithStreamingResponse,
10
10
  )
11
- from .account import (
12
- AccountResource,
13
- AsyncAccountResource,
14
- AccountResourceWithRawResponse,
15
- AsyncAccountResourceWithRawResponse,
16
- AccountResourceWithStreamingResponse,
17
- AsyncAccountResourceWithStreamingResponse,
18
- )
19
11
  from .campaign import (
20
12
  CampaignResource,
21
13
  AsyncCampaignResource,
@@ -26,12 +18,6 @@ from .campaign import (
26
18
  )
27
19
 
28
20
  __all__ = [
29
- "AccountResource",
30
- "AsyncAccountResource",
31
- "AccountResourceWithRawResponse",
32
- "AsyncAccountResourceWithRawResponse",
33
- "AccountResourceWithStreamingResponse",
34
- "AsyncAccountResourceWithStreamingResponse",
35
21
  "TeamResource",
36
22
  "AsyncTeamResource",
37
23
  "TeamResourceWithRawResponse",
@@ -487,8 +487,8 @@ class CampaignResource(SyncAPIResource):
487
487
  is_affiliate: Affiliate programs only. Controls affiliate enrollment for a new participant.
488
488
 
489
489
  language: The language of the participant's portal and program emails. Stored when it is one of
490
- the program's languages. A regional tag maps to its language (for example, `es-MX` is
491
- stored as `es`). Any other value is ignored and the program's base language applies.
490
+ the program's languages. A regional tag maps to its language (for example, `fr-BE` is
491
+ stored as `fr`). Any other value is ignored and the program's base language applies.
492
492
  Applied only when this request creates the participant.
493
493
 
494
494
  referred_at: When the participant was referred, in Unix milliseconds. Used only with a valid
@@ -1732,8 +1732,8 @@ class AsyncCampaignResource(AsyncAPIResource):
1732
1732
  is_affiliate: Affiliate programs only. Controls affiliate enrollment for a new participant.
1733
1733
 
1734
1734
  language: The language of the participant's portal and program emails. Stored when it is one of
1735
- the program's languages. A regional tag maps to its language (for example, `es-MX` is
1736
- stored as `es`). Any other value is ignored and the program's base language applies.
1735
+ the program's languages. A regional tag maps to its language (for example, `fr-BE` is
1736
+ stored as `fr`). Any other value is ignored and the program's base language applies.
1737
1737
  Applied only when this request creates the participant.
1738
1738
 
1739
1739
  referred_at: When the participant was referred, in Unix milliseconds. Used only with a valid
@@ -337,8 +337,8 @@ class ParticipantResource(SyncAPIResource):
337
337
  unchanged.
338
338
 
339
339
  language: The language of the participant's portal and program emails. Stored when it is one of
340
- the program's languages. A regional tag maps to its language (for example, `es-MX` is
341
- stored as `es`). Any other value is ignored and the program's base language applies.
340
+ the program's languages. A regional tag maps to its language (for example, `fr-BE` is
341
+ stored as `fr`). Any other value is ignored and the program's base language applies.
342
342
  Applied only when this request creates the participant.
343
343
 
344
344
  metadata: Shallow custom metadata object.
@@ -1624,8 +1624,8 @@ class AsyncParticipantResource(AsyncAPIResource):
1624
1624
  unchanged.
1625
1625
 
1626
1626
  language: The language of the participant's portal and program emails. Stored when it is one of
1627
- the program's languages. A regional tag maps to its language (for example, `es-MX` is
1628
- stored as `es`). Any other value is ignored and the program's base language applies.
1627
+ the program's languages. A regional tag maps to its language (for example, `fr-BE` is
1628
+ stored as `fr`). Any other value is ignored and the program's base language applies.
1629
1629
  Applied only when this request creates the participant.
1630
1630
 
1631
1631
  metadata: Shallow custom metadata object.
@@ -14,13 +14,11 @@ from .affiliate_invite import AffiliateInvite as AffiliateInvite
14
14
  from .participant_list import ParticipantList as ParticipantList
15
15
  from .team_update_params import TeamUpdateParams as TeamUpdateParams
16
16
  from .commission_structure import CommissionStructure as CommissionStructure
17
- from .account_create_params import AccountCreateParams as AccountCreateParams
18
17
  from .affiliate_application import AffiliateApplication as AffiliateApplication
19
18
  from .analytics_availability import AnalyticsAvailability as AnalyticsAvailability
20
19
  from .campaign_create_params import CampaignCreateParams as CampaignCreateParams
21
20
  from .campaign_list_response import CampaignListResponse as CampaignListResponse
22
21
  from .campaign_update_params import CampaignUpdateParams as CampaignUpdateParams
23
- from .create_account_response import CreateAccountResponse as CreateAccountResponse
24
22
  from .participant_payout_list import ParticipantPayoutList as ParticipantPayoutList
25
23
  from .rotate_api_key_response import RotateApiKeyResponse as RotateApiKeyResponse
26
24
  from .referral_flow_screenshot import ReferralFlowScreenshot as ReferralFlowScreenshot
@@ -46,4 +46,6 @@ Language: TypeAlias = Literal[
46
46
  "fil",
47
47
  "af",
48
48
  "sw",
49
+ "zh-TW",
50
+ "es-419",
49
51
  ]
@@ -32,7 +32,7 @@ class ParticipantAddParams(TypedDict, total=False):
32
32
  """The language of the participant's portal and program emails.
33
33
 
34
34
  Stored when it is one of the program's languages. A regional tag maps to its
35
- language (for example, `es-MX` is stored as `es`). Any other value is ignored and
35
+ language (for example, `fr-BE` is stored as `fr`). Any other value is ignored and
36
36
  the program's base language applies. Applied only when this request creates the
37
37
  participant.
38
38
  """
@@ -23,6 +23,29 @@ class ParticipantReward(BaseModel):
23
23
  approved_at: Optional[int] = FieldInfo(alias="approvedAt", default=None)
24
24
 
25
25
  amount: Optional[float] = None
26
+ """What the reward is worth in major units of `currency_iso`.
27
+
28
+ `None` for a percent-off coupon or when no amount is available.
29
+ """
30
+
31
+ amount_source: Optional[
32
+ Literal[
33
+ "STRIPE",
34
+ "CHARGEBEE",
35
+ "RECURLY",
36
+ "CHARGIFY",
37
+ "PAYPAL",
38
+ "VENMO",
39
+ "TANGO_CARD",
40
+ "TREMENDOUS",
41
+ "XTRM",
42
+ "METADATA",
43
+ ]
44
+ ] = FieldInfo(alias="amountSource", default=None)
45
+ """Where `amount` or `percent_off` comes from.
46
+
47
+ `METADATA` means the amount saved when the reward was earned.
48
+ """
26
49
 
27
50
  commission_structure: Optional[CommissionStructure] = FieldInfo(alias="commissionStructure", default=None)
28
51
 
@@ -36,6 +59,9 @@ class ParticipantReward(BaseModel):
36
59
 
37
60
  is_referrer: Optional[bool] = FieldInfo(alias="isReferrer", default=None)
38
61
 
62
+ percent_off: Optional[float] = FieldInfo(alias="percentOff", default=None)
63
+ """Discount of a percent-off coupon (`20` = 20% off); `None` for every other reward."""
64
+
39
65
  referred_id: Optional[str] = FieldInfo(alias="referredId", default=None)
40
66
 
41
67
  referrer_id: Optional[str] = FieldInfo(alias="referrerId", default=None)
@@ -32,7 +32,7 @@ class CampaignCreateMobileParticipantTokenParams(TypedDict, total=False):
32
32
  """The language of the participant's portal and program emails.
33
33
 
34
34
  Stored when it is one of the program's languages. A regional tag maps to its
35
- language (for example, `es-MX` is stored as `es`). Any other value is ignored and
35
+ language (for example, `fr-BE` is stored as `fr`). Any other value is ignored and
36
36
  the program's base language applies. Applied only when this request creates the
37
37
  participant.
38
38
  """
@@ -7,7 +7,6 @@ import pytest
7
7
  from respx import MockRouter
8
8
 
9
9
  from growsurf import Growsurf
10
- from growsurf.types import CreateAccountResponse
11
10
  from growsurf._compat import get_model_fields
12
11
 
13
12
  from ..conftest import base_url
@@ -45,7 +44,7 @@ def test_final_team_request_paths(client: Growsurf, respx_mock: MockRouter) -> N
45
44
  assert rotate.called
46
45
 
47
46
 
48
- def test_safe_team_and_onboarding_models() -> None:
47
+ def test_safe_team_model() -> None:
49
48
  team_type = import_module("growsurf.types.team").Team
50
49
 
51
50
  assert set(get_model_fields(team_type)) == {
@@ -53,8 +52,3 @@ def test_safe_team_and_onboarding_models() -> None:
53
52
  "verification_status",
54
53
  "verification_requested_at",
55
54
  }
56
- assert set(get_model_fields(CreateAccountResponse)) == {
57
- "email",
58
- "api_key",
59
- "verification_status",
60
- }
@@ -443,7 +443,7 @@ wheels = [
443
443
 
444
444
  [[package]]
445
445
  name = "growsurf-python"
446
- version = "1.17.0"
446
+ version = "1.19.0"
447
447
  source = { editable = "." }
448
448
  dependencies = [
449
449
  { name = "anyio" },
@@ -1,3 +0,0 @@
1
- {
2
- ".": "1.17.0"
3
- }
@@ -1,219 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from __future__ import annotations
4
-
5
- import httpx
6
-
7
- from ..types import account_create_params
8
- from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
9
- from .._utils import maybe_transform, async_maybe_transform
10
- from .._compat import cached_property
11
- from .._resource import SyncAPIResource, AsyncAPIResource
12
- from .._response import (
13
- to_raw_response_wrapper,
14
- to_streamed_response_wrapper,
15
- async_to_raw_response_wrapper,
16
- async_to_streamed_response_wrapper,
17
- )
18
- from .._base_client import make_request_options
19
- from ..types.create_account_response import CreateAccountResponse
20
-
21
- __all__ = ["AccountResource", "AsyncAccountResource"]
22
-
23
-
24
- class AccountResource(SyncAPIResource):
25
- """Create a GrowSurf account and its initial API key."""
26
-
27
- @cached_property
28
- def with_raw_response(self) -> AccountResourceWithRawResponse:
29
- """Return the raw response object instead of parsed content."""
30
- return AccountResourceWithRawResponse(self)
31
-
32
- @cached_property
33
- def with_streaming_response(self) -> AccountResourceWithStreamingResponse:
34
- """Stream the response instead of reading it eagerly."""
35
- return AccountResourceWithStreamingResponse(self)
36
-
37
- def create(
38
- self,
39
- *,
40
- email: str,
41
- company: str | Omit = omit,
42
- first_name: str | Omit = omit,
43
- last_name: str | Omit = omit,
44
- extra_headers: Headers | None = None,
45
- extra_query: Query | None = None,
46
- extra_body: Body | None = None,
47
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
48
- ) -> CreateAccountResponse:
49
- """
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.
71
-
72
- Args:
73
- email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
74
-
75
- company: Company name for the new account.
76
-
77
- first_name: First name for the new account owner.
78
-
79
- last_name: Last name for the new account owner.
80
-
81
- extra_headers: Send extra headers
82
-
83
- extra_query: Add additional query parameters to the request
84
-
85
- extra_body: Add additional JSON properties to the request
86
-
87
- timeout: Override the client-level default timeout for this request, in seconds
88
- """
89
- return self._post(
90
- "/accounts",
91
- body=maybe_transform(
92
- {
93
- "email": email,
94
- "company": company,
95
- "first_name": first_name,
96
- "last_name": last_name,
97
- },
98
- account_create_params.AccountCreateParams,
99
- ),
100
- options=make_request_options(
101
- extra_headers=extra_headers,
102
- extra_query=extra_query,
103
- extra_body=extra_body,
104
- timeout=timeout,
105
- security={"api_key_auth": False},
106
- ),
107
- cast_to=CreateAccountResponse,
108
- )
109
-
110
-
111
- class AsyncAccountResource(AsyncAPIResource):
112
- """Create a GrowSurf account and its initial API key."""
113
-
114
- @cached_property
115
- def with_raw_response(self) -> AsyncAccountResourceWithRawResponse:
116
- """Return the raw response object instead of parsed content."""
117
- return AsyncAccountResourceWithRawResponse(self)
118
-
119
- @cached_property
120
- def with_streaming_response(self) -> AsyncAccountResourceWithStreamingResponse:
121
- """Stream the response instead of reading it eagerly."""
122
- return AsyncAccountResourceWithStreamingResponse(self)
123
-
124
- async def create(
125
- self,
126
- *,
127
- email: str,
128
- company: str | Omit = omit,
129
- first_name: str | Omit = omit,
130
- last_name: str | Omit = omit,
131
- extra_headers: Headers | None = None,
132
- extra_query: Query | None = None,
133
- extra_body: Body | None = None,
134
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
135
- ) -> CreateAccountResponse:
136
- """
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.
158
-
159
- Args:
160
- email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
161
-
162
- company: Company name for the new account.
163
-
164
- first_name: First name for the new account owner.
165
-
166
- last_name: Last name for the new account owner.
167
-
168
- extra_headers: Send extra headers
169
-
170
- extra_query: Add additional query parameters to the request
171
-
172
- extra_body: Add additional JSON properties to the request
173
-
174
- timeout: Override the client-level default timeout for this request, in seconds
175
- """
176
- return await self._post(
177
- "/accounts",
178
- body=await async_maybe_transform(
179
- {
180
- "email": email,
181
- "company": company,
182
- "first_name": first_name,
183
- "last_name": last_name,
184
- },
185
- account_create_params.AccountCreateParams,
186
- ),
187
- options=make_request_options(
188
- extra_headers=extra_headers,
189
- extra_query=extra_query,
190
- extra_body=extra_body,
191
- timeout=timeout,
192
- security={"api_key_auth": False},
193
- ),
194
- cast_to=CreateAccountResponse,
195
- )
196
-
197
-
198
- class AccountResourceWithRawResponse:
199
- def __init__(self, account: AccountResource) -> None:
200
- self._account = account
201
- self.create = to_raw_response_wrapper(account.create)
202
-
203
-
204
- class AsyncAccountResourceWithRawResponse:
205
- def __init__(self, account: AsyncAccountResource) -> None:
206
- self._account = account
207
- self.create = async_to_raw_response_wrapper(account.create)
208
-
209
-
210
- class AccountResourceWithStreamingResponse:
211
- def __init__(self, account: AccountResource) -> None:
212
- self._account = account
213
- self.create = to_streamed_response_wrapper(account.create)
214
-
215
-
216
- class AsyncAccountResourceWithStreamingResponse:
217
- def __init__(self, account: AsyncAccountResource) -> None:
218
- self._account = account
219
- self.create = async_to_streamed_response_wrapper(account.create)
@@ -1,23 +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_extensions import Required, Annotated, TypedDict
6
-
7
- from .._utils import PropertyInfo
8
-
9
- __all__ = ["AccountCreateParams"]
10
-
11
-
12
- class AccountCreateParams(TypedDict, total=False):
13
- email: Required[str]
14
- """The email address for the new account.
15
-
16
- Personal emails and disposable email addresses are not accepted.
17
- """
18
-
19
- company: str
20
-
21
- first_name: Annotated[str, PropertyInfo(alias="firstName")]
22
-
23
- last_name: Annotated[str, PropertyInfo(alias="lastName")]
@@ -1,29 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from typing_extensions import Literal
4
-
5
- from pydantic import Field as FieldInfo
6
-
7
- from .._models import BaseModel
8
-
9
- __all__ = ["CreateAccountResponse"]
10
-
11
-
12
- class CreateAccountResponse(BaseModel):
13
- email: str
14
- """Email address for the new account."""
15
-
16
- api_key: str = FieldInfo(alias="apiKey")
17
- """An API key for the new account.
18
-
19
- Use it as the `Bearer` token on subsequent requests. It is shown once and locked
20
- (`403` `EMAIL_NOT_VERIFIED_ERROR`) until the account's email is verified;
21
- verification unlocks this same key, so keep it and retry. It is replaced only when
22
- the account owner first signs in to the GrowSurf dashboard.
23
- """
24
-
25
- verification_status: Literal["NOT_REQUESTED", "REQUESTED", "VERIFIED"] = FieldInfo(alias="verificationStatus")
26
- """GrowSurf team verification state.
27
-
28
- `VERIFIED` is required before a program can send participant emails.
29
- """