growsurf-python 1.1.2__tar.gz → 1.2.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 (175) hide show
  1. growsurf_python-1.2.1/.release-please-manifest.json +3 -0
  2. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/CHANGELOG.md +14 -0
  3. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/PKG-INFO +1 -1
  4. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/api.md +25 -8
  5. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/pyproject.toml +1 -1
  6. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_client.py +45 -8
  7. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_version.py +1 -1
  8. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/__init__.py +14 -0
  9. growsurf_python-1.2.1/src/growsurf/resources/account.py +205 -0
  10. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/campaign.py +22 -22
  11. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/commission.py +6 -4
  12. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/design.py +14 -12
  13. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/emails.py +16 -18
  14. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/installation.py +16 -16
  15. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/options.py +20 -22
  16. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/participant.py +94 -90
  17. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/reward.py +8 -6
  18. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/rewards.py +30 -16
  19. growsurf_python-1.2.1/src/growsurf/resources/team.py +343 -0
  20. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/__init__.py +2 -2
  21. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/create_account_response.py +8 -6
  22. growsurf_python-1.1.2/src/growsurf/types/account.py → growsurf_python-1.2.1/src/growsurf/types/team.py +6 -17
  23. growsurf_python-1.2.1/src/growsurf/types/team_update_params.py +10 -0
  24. growsurf_python-1.2.1/tests/api_resources/test_account.py +153 -0
  25. growsurf_python-1.2.1/tests/api_resources/test_team_contract.py +60 -0
  26. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_client.py +17 -13
  27. growsurf_python-1.1.2/.release-please-manifest.json +0 -3
  28. growsurf_python-1.1.2/src/growsurf/resources/account.py +0 -572
  29. growsurf_python-1.1.2/src/growsurf/types/account_update_params.py +0 -17
  30. growsurf_python-1.1.2/tests/api_resources/test_account.py +0 -419
  31. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/.gitignore +0 -0
  32. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/CONTRIBUTING.md +0 -0
  33. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/LICENSE +0 -0
  34. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/README.md +0 -0
  35. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/SECURITY.md +0 -0
  36. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/bin/check-release-environment +0 -0
  37. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/bin/publish-pypi +0 -0
  38. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/examples/.keep +0 -0
  39. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/release-please-config.json +0 -0
  40. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/requirements-dev.lock +0 -0
  41. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/__init__.py +0 -0
  42. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_base_client.py +0 -0
  43. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_compat.py +0 -0
  44. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_constants.py +0 -0
  45. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_exceptions.py +0 -0
  46. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_files.py +0 -0
  47. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_models.py +0 -0
  48. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_qs.py +0 -0
  49. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_resource.py +0 -0
  50. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_response.py +0 -0
  51. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_streaming.py +0 -0
  52. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_types.py +0 -0
  53. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/__init__.py +0 -0
  54. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_compat.py +0 -0
  55. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_datetime_parse.py +0 -0
  56. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_json.py +0 -0
  57. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_logs.py +0 -0
  58. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_path.py +0 -0
  59. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_proxy.py +0 -0
  60. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_reflection.py +0 -0
  61. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_resources_proxy.py +0 -0
  62. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_streams.py +0 -0
  63. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_sync.py +0 -0
  64. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_transform.py +0 -0
  65. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_typing.py +0 -0
  66. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_utils.py +0 -0
  67. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/lib/.keep +0 -0
  68. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/py.typed +0 -0
  69. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/__init__.py +0 -0
  70. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/webhooks.py +0 -0
  71. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/account_create_params.py +0 -0
  72. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/__init__.py +0 -0
  73. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign.py +0 -0
  74. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_design.py +0 -0
  75. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_emails.py +0 -0
  76. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_installation.py +0 -0
  77. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_options.py +0 -0
  78. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
  79. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
  80. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
  81. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
  82. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
  83. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/email_participant_response.py +0 -0
  84. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
  85. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant.py +0 -0
  86. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
  87. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_add_params.py +0 -0
  88. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_analytics_params.py +0 -0
  89. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_analytics_response.py +0 -0
  90. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
  91. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
  92. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
  93. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_email_params.py +0 -0
  94. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
  95. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
  96. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
  97. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
  98. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
  99. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_rewards_response.py +0 -0
  100. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_record_transaction_params.py +0 -0
  101. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
  102. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -0
  103. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
  104. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_reward.py +0 -0
  105. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
  106. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
  107. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
  108. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
  109. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_update_params.py +0 -0
  110. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/referral_source.py +0 -0
  111. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/referral_status.py +0 -0
  112. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward.py +0 -0
  113. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
  114. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
  115. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_create_params.py +0 -0
  116. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
  117. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
  118. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
  119. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_update_params.py +0 -0
  120. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook.py +0 -0
  121. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
  122. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_event.py +0 -0
  123. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
  124. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
  125. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
  126. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
  127. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +0 -0
  128. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
  129. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_create_params.py +0 -0
  130. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
  131. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
  132. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_participants_params.py +0 -0
  133. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
  134. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
  135. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_response.py +0 -0
  136. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_retrieve_analytics_params.py +0 -0
  137. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_retrieve_analytics_response.py +0 -0
  138. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_update_params.py +0 -0
  139. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/commission_structure.py +0 -0
  140. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/participant_commission_list.py +0 -0
  141. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/participant_list.py +0 -0
  142. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/participant_payout_list.py +0 -0
  143. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/referral_list.py +0 -0
  144. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/rotate_api_key_response.py +0 -0
  145. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/verification_email_response.py +0 -0
  146. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/__init__.py +0 -0
  147. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/__init__.py +0 -0
  148. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/__init__.py +0 -0
  149. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_commission.py +0 -0
  150. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_design.py +0 -0
  151. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_emails.py +0 -0
  152. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_installation.py +0 -0
  153. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_options.py +0 -0
  154. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_participant.py +0 -0
  155. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_reward.py +0 -0
  156. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_rewards.py +0 -0
  157. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_webhooks.py +0 -0
  158. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/test_campaign.py +0 -0
  159. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/conftest.py +0 -0
  160. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/sample_file.txt +0 -0
  161. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_extract_files.py +0 -0
  162. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_files.py +0 -0
  163. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_models.py +0 -0
  164. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_qs.py +0 -0
  165. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_required_args.py +0 -0
  166. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_response.py +0 -0
  167. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_streaming.py +0 -0
  168. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_transform.py +0 -0
  169. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_utils/test_datetime_parse.py +0 -0
  170. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_utils/test_json.py +0 -0
  171. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_utils/test_path.py +0 -0
  172. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_utils/test_proxy.py +0 -0
  173. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_utils/test_typing.py +0 -0
  174. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/utils.py +0 -0
  175. {growsurf_python-1.1.2 → growsurf_python-1.2.1}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.2.1"
3
+ }
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.2.1](https://github.com/growsurf/growsurf-python/compare/v1.2.0...v1.2.1) (2026-07-14)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * align method docs with the REST v2 contract ([57e44e9](https://github.com/growsurf/growsurf-python/commit/57e44e906100c23d85d5dfbfabcd3821ef14d629))
9
+
10
+ ## [1.2.0](https://github.com/growsurf/growsurf-python/compare/v1.1.2...v1.2.0) (2026-07-13)
11
+
12
+
13
+ ### Features
14
+
15
+ * **api:** add Team resource ([9efbfbd](https://github.com/growsurf/growsurf-python/commit/9efbfbdfec10336d473f9266a033d93c3e98bb9e))
16
+
3
17
  ## [1.1.2](https://github.com/growsurf/growsurf-python/compare/v1.1.1...v1.1.2) (2026-07-11)
4
18
 
5
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: growsurf-python
3
- Version: 1.1.2
3
+ Version: 1.2.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
@@ -4,8 +4,21 @@ Types:
4
4
 
5
5
  ```python
6
6
  from growsurf.types import (
7
- Account,
8
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
+ # Team
16
+
17
+ Types:
18
+
19
+ ```python
20
+ from growsurf.types import (
21
+ Team,
9
22
  RotateApiKeyResponse,
10
23
  VerificationEmailResponse,
11
24
  )
@@ -13,12 +26,11 @@ from growsurf.types import (
13
26
 
14
27
  Methods:
15
28
 
16
- - <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>
17
- - <code title="get /account">client.account.<a href="./src/growsurf/resources/account.py">retrieve</a>() -> <a href="./src/growsurf/types/account.py">Account</a></code>
18
- - <code title="patch /account">client.account.<a href="./src/growsurf/resources/account.py">update</a>(\*\*<a href="src/growsurf/types/account_update_params.py">params</a>) -> <a href="./src/growsurf/types/account.py">Account</a></code>
19
- - <code title="post /account/api-key">client.account.<a href="./src/growsurf/resources/account.py">rotate_api_key</a>() -> <a href="./src/growsurf/types/rotate_api_key_response.py">RotateApiKeyResponse</a></code>
20
- - <code title="post /account/verification-request">client.account.<a href="./src/growsurf/resources/account.py">request_verification</a>() -> <a href="./src/growsurf/types/account.py">Account</a></code>
21
- - <code title="post /account/verification-email">client.account.<a href="./src/growsurf/resources/account.py">resend_verification_email</a>() -> <a href="./src/growsurf/types/verification_email_response.py">VerificationEmailResponse</a></code>
29
+ - <code title="get /team">client.team.<a href="./src/growsurf/resources/team.py">retrieve</a>() -> <a href="./src/growsurf/types/team.py">Team</a></code>
30
+ - <code title="patch /team">client.team.<a href="./src/growsurf/resources/team.py">update</a>(\*\*<a href="src/growsurf/types/team_update_params.py">params</a>) -> <a href="./src/growsurf/types/team.py">Team</a></code>
31
+ - <code title="post /api-key/rotate">client.team.<a href="./src/growsurf/resources/team.py">rotate_api_key</a>() -> <a href="./src/growsurf/types/rotate_api_key_response.py">RotateApiKeyResponse</a></code>
32
+ - <code title="post /team/verification-request">client.team.<a href="./src/growsurf/resources/team.py">request_verification</a>() -> <a href="./src/growsurf/types/team.py">Team</a></code>
33
+ - <code title="post /team/owner/verification-email">client.team.<a href="./src/growsurf/resources/team.py">resend_owner_verification_email</a>() -> <a href="./src/growsurf/types/verification_email_response.py">VerificationEmailResponse</a></code>
22
34
 
23
35
  # Campaign
24
36
 
@@ -134,7 +146,12 @@ Methods:
134
146
  Types:
135
147
 
136
148
  ```python
137
- from growsurf.types.campaign import Reward, RewardTaxValuation, CampaignRewardListResponse, DeleteRewardResponse
149
+ from growsurf.types.campaign import (
150
+ Reward,
151
+ RewardTaxValuation,
152
+ CampaignRewardListResponse,
153
+ DeleteRewardResponse,
154
+ )
138
155
  ```
139
156
 
140
157
  Methods:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "growsurf-python"
3
- version = "1.1.2"
3
+ version = "1.2.1"
4
4
  description = "The official Python library for the growsurf API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -28,7 +28,7 @@ from ._compat import cached_property
28
28
  from ._models import SecurityOptions
29
29
  from ._version import __version__
30
30
  from ._streaming import Stream as Stream, AsyncStream as AsyncStream
31
- from ._exceptions import GrowsurfError, APIStatusError
31
+ from ._exceptions import APIStatusError
32
32
  from ._base_client import (
33
33
  DEFAULT_MAX_RETRIES,
34
34
  SyncAPIClient,
@@ -36,7 +36,8 @@ from ._base_client import (
36
36
  )
37
37
 
38
38
  if TYPE_CHECKING:
39
- from .resources import account, campaign
39
+ from .resources import team, account, campaign
40
+ from .resources.team import TeamResource, AsyncTeamResource
40
41
  from .resources.account import AccountResource, AsyncAccountResource
41
42
  from .resources.campaign.campaign import CampaignResource, AsyncCampaignResource
42
43
 
@@ -86,9 +87,7 @@ class Growsurf(SyncAPIClient):
86
87
  if api_key is None:
87
88
  api_key = os.environ.get("GROWSURF_API_KEY")
88
89
  if api_key is None:
89
- raise GrowsurfError(
90
- "The api_key client option must be set either by passing api_key to the client or by setting the GROWSURF_API_KEY environment variable"
91
- )
90
+ api_key = ""
92
91
  self.api_key = api_key
93
92
 
94
93
  if base_url is None:
@@ -123,6 +122,12 @@ class Growsurf(SyncAPIClient):
123
122
 
124
123
  return AccountResource(self)
125
124
 
125
+ @cached_property
126
+ def team(self) -> TeamResource:
127
+ from .resources.team import TeamResource
128
+
129
+ return TeamResource(self)
130
+
126
131
  @cached_property
127
132
  def campaign(self) -> CampaignResource:
128
133
  from .resources.campaign import CampaignResource
@@ -153,6 +158,8 @@ class Growsurf(SyncAPIClient):
153
158
  @property
154
159
  def _api_key_auth(self) -> dict[str, str]:
155
160
  api_key = self.api_key
161
+ if not api_key:
162
+ return {}
156
163
  return {"Authorization": f"Bearer {api_key}"}
157
164
 
158
165
  @property
@@ -283,9 +290,7 @@ class AsyncGrowsurf(AsyncAPIClient):
283
290
  if api_key is None:
284
291
  api_key = os.environ.get("GROWSURF_API_KEY")
285
292
  if api_key is None:
286
- raise GrowsurfError(
287
- "The api_key client option must be set either by passing api_key to the client or by setting the GROWSURF_API_KEY environment variable"
288
- )
293
+ api_key = ""
289
294
  self.api_key = api_key
290
295
 
291
296
  if base_url is None:
@@ -320,6 +325,12 @@ class AsyncGrowsurf(AsyncAPIClient):
320
325
 
321
326
  return AsyncAccountResource(self)
322
327
 
328
+ @cached_property
329
+ def team(self) -> AsyncTeamResource:
330
+ from .resources.team import AsyncTeamResource
331
+
332
+ return AsyncTeamResource(self)
333
+
323
334
  @cached_property
324
335
  def campaign(self) -> AsyncCampaignResource:
325
336
  from .resources.campaign import AsyncCampaignResource
@@ -350,6 +361,8 @@ class AsyncGrowsurf(AsyncAPIClient):
350
361
  @property
351
362
  def _api_key_auth(self) -> dict[str, str]:
352
363
  api_key = self.api_key
364
+ if not api_key:
365
+ return {}
353
366
  return {"Authorization": f"Bearer {api_key}"}
354
367
 
355
368
  @property
@@ -458,6 +471,12 @@ class GrowsurfWithRawResponse:
458
471
 
459
472
  return AccountResourceWithRawResponse(self._client.account)
460
473
 
474
+ @cached_property
475
+ def team(self) -> team.TeamResourceWithRawResponse:
476
+ from .resources.team import TeamResourceWithRawResponse
477
+
478
+ return TeamResourceWithRawResponse(self._client.team)
479
+
461
480
  @cached_property
462
481
  def campaign(self) -> campaign.CampaignResourceWithRawResponse:
463
482
  from .resources.campaign import CampaignResourceWithRawResponse
@@ -477,6 +496,12 @@ class AsyncGrowsurfWithRawResponse:
477
496
 
478
497
  return AsyncAccountResourceWithRawResponse(self._client.account)
479
498
 
499
+ @cached_property
500
+ def team(self) -> team.AsyncTeamResourceWithRawResponse:
501
+ from .resources.team import AsyncTeamResourceWithRawResponse
502
+
503
+ return AsyncTeamResourceWithRawResponse(self._client.team)
504
+
480
505
  @cached_property
481
506
  def campaign(self) -> campaign.AsyncCampaignResourceWithRawResponse:
482
507
  from .resources.campaign import AsyncCampaignResourceWithRawResponse
@@ -496,6 +521,12 @@ class GrowsurfWithStreamedResponse:
496
521
 
497
522
  return AccountResourceWithStreamingResponse(self._client.account)
498
523
 
524
+ @cached_property
525
+ def team(self) -> team.TeamResourceWithStreamingResponse:
526
+ from .resources.team import TeamResourceWithStreamingResponse
527
+
528
+ return TeamResourceWithStreamingResponse(self._client.team)
529
+
499
530
  @cached_property
500
531
  def campaign(self) -> campaign.CampaignResourceWithStreamingResponse:
501
532
  from .resources.campaign import CampaignResourceWithStreamingResponse
@@ -515,6 +546,12 @@ class AsyncGrowsurfWithStreamedResponse:
515
546
 
516
547
  return AsyncAccountResourceWithStreamingResponse(self._client.account)
517
548
 
549
+ @cached_property
550
+ def team(self) -> team.AsyncTeamResourceWithStreamingResponse:
551
+ from .resources.team import AsyncTeamResourceWithStreamingResponse
552
+
553
+ return AsyncTeamResourceWithStreamingResponse(self._client.team)
554
+
518
555
  @cached_property
519
556
  def campaign(self) -> campaign.AsyncCampaignResourceWithStreamingResponse:
520
557
  from .resources.campaign import AsyncCampaignResourceWithStreamingResponse
@@ -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.1.2" # x-release-please-version
4
+ __version__ = "1.2.1" # x-release-please-version
@@ -1,5 +1,13 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
+ from .team import (
4
+ TeamResource,
5
+ AsyncTeamResource,
6
+ TeamResourceWithRawResponse,
7
+ AsyncTeamResourceWithRawResponse,
8
+ TeamResourceWithStreamingResponse,
9
+ AsyncTeamResourceWithStreamingResponse,
10
+ )
3
11
  from .account import (
4
12
  AccountResource,
5
13
  AsyncAccountResource,
@@ -24,6 +32,12 @@ __all__ = [
24
32
  "AsyncAccountResourceWithRawResponse",
25
33
  "AccountResourceWithStreamingResponse",
26
34
  "AsyncAccountResourceWithStreamingResponse",
35
+ "TeamResource",
36
+ "AsyncTeamResource",
37
+ "TeamResourceWithRawResponse",
38
+ "AsyncTeamResourceWithRawResponse",
39
+ "TeamResourceWithStreamingResponse",
40
+ "AsyncTeamResourceWithStreamingResponse",
27
41
  "CampaignResource",
28
42
  "AsyncCampaignResource",
29
43
  "CampaignResourceWithRawResponse",
@@ -0,0 +1,205 @@
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
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).
64
+
65
+ Args:
66
+ email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
67
+
68
+ company: Company name for the new account.
69
+
70
+ first_name: First name for the new account owner.
71
+
72
+ last_name: Last name for the new account owner.
73
+
74
+ extra_headers: Send extra headers
75
+
76
+ extra_query: Add additional query parameters to the request
77
+
78
+ extra_body: Add additional JSON properties to the request
79
+
80
+ timeout: Override the client-level default timeout for this request, in seconds
81
+ """
82
+ return self._post(
83
+ "/accounts",
84
+ body=maybe_transform(
85
+ {
86
+ "email": email,
87
+ "company": company,
88
+ "first_name": first_name,
89
+ "last_name": last_name,
90
+ },
91
+ account_create_params.AccountCreateParams,
92
+ ),
93
+ options=make_request_options(
94
+ extra_headers=extra_headers,
95
+ extra_query=extra_query,
96
+ extra_body=extra_body,
97
+ timeout=timeout,
98
+ security={"api_key_auth": False},
99
+ ),
100
+ cast_to=CreateAccountResponse,
101
+ )
102
+
103
+
104
+ class AsyncAccountResource(AsyncAPIResource):
105
+ """Create a GrowSurf account and its initial API key."""
106
+
107
+ @cached_property
108
+ def with_raw_response(self) -> AsyncAccountResourceWithRawResponse:
109
+ """Return the raw response object instead of parsed content."""
110
+ return AsyncAccountResourceWithRawResponse(self)
111
+
112
+ @cached_property
113
+ def with_streaming_response(self) -> AsyncAccountResourceWithStreamingResponse:
114
+ """Stream the response instead of reading it eagerly."""
115
+ return AsyncAccountResourceWithStreamingResponse(self)
116
+
117
+ async def create(
118
+ self,
119
+ *,
120
+ email: str,
121
+ company: str | Omit = omit,
122
+ first_name: str | Omit = omit,
123
+ last_name: str | Omit = omit,
124
+ extra_headers: Headers | None = None,
125
+ extra_query: Query | None = None,
126
+ extra_body: Body | None = None,
127
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
128
+ ) -> CreateAccountResponse:
129
+ """
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).
144
+
145
+ Args:
146
+ email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
147
+
148
+ company: Company name for the new account.
149
+
150
+ first_name: First name for the new account owner.
151
+
152
+ last_name: Last name for the new account owner.
153
+
154
+ extra_headers: Send extra headers
155
+
156
+ extra_query: Add additional query parameters to the request
157
+
158
+ extra_body: Add additional JSON properties to the request
159
+
160
+ timeout: Override the client-level default timeout for this request, in seconds
161
+ """
162
+ return await self._post(
163
+ "/accounts",
164
+ body=await async_maybe_transform(
165
+ {
166
+ "email": email,
167
+ "company": company,
168
+ "first_name": first_name,
169
+ "last_name": last_name,
170
+ },
171
+ account_create_params.AccountCreateParams,
172
+ ),
173
+ options=make_request_options(
174
+ extra_headers=extra_headers,
175
+ extra_query=extra_query,
176
+ extra_body=extra_body,
177
+ timeout=timeout,
178
+ security={"api_key_auth": False},
179
+ ),
180
+ cast_to=CreateAccountResponse,
181
+ )
182
+
183
+
184
+ class AccountResourceWithRawResponse:
185
+ def __init__(self, account: AccountResource) -> None:
186
+ self._account = account
187
+ self.create = to_raw_response_wrapper(account.create)
188
+
189
+
190
+ class AsyncAccountResourceWithRawResponse:
191
+ def __init__(self, account: AsyncAccountResource) -> None:
192
+ self._account = account
193
+ self.create = async_to_raw_response_wrapper(account.create)
194
+
195
+
196
+ class AccountResourceWithStreamingResponse:
197
+ def __init__(self, account: AccountResource) -> None:
198
+ self._account = account
199
+ self.create = to_streamed_response_wrapper(account.create)
200
+
201
+
202
+ class AsyncAccountResourceWithStreamingResponse:
203
+ def __init__(self, account: AsyncAccountResource) -> None:
204
+ self._account = account
205
+ self.create = async_to_streamed_response_wrapper(account.create)
@@ -196,9 +196,8 @@ class CampaignResource(SyncAPIResource):
196
196
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
197
197
  ) -> Campaign:
198
198
  """
199
- Creates a new program pre-populated with type-appropriate defaults, plus any
200
- optional inline rewards. The new program is created in `DRAFT` status and owned
201
- by the API key's account. Requires a verified account email.
199
+ Creates a new program, plus any optional program rewards. The new program is
200
+ created in `DRAFT` status and owned by the API key's bound team.
202
201
 
203
202
  Args:
204
203
  type: The program type. Immutable after creation.
@@ -289,8 +288,8 @@ class CampaignResource(SyncAPIResource):
289
288
  Updates a program's identity and lifecycle. Only the fields you send are
290
289
  changed. `type`, `urlId`, and `currencyISO` are immutable. Editor-tab
291
290
  configuration (design, emails, options, installation) is edited via the
292
- dedicated config sub-resources, not here. The program cannot be deleted via
293
- this endpoint.
291
+ dedicated config sub-resources, not here. The program cannot be deleted via this
292
+ endpoint.
294
293
 
295
294
  Args:
296
295
  status: The requested program status. `IN_PROGRESS` publishes or resumes the program;
@@ -458,7 +457,8 @@ class CampaignResource(SyncAPIResource):
458
457
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
459
458
  ) -> ParticipantCommissionList:
460
459
  """
461
- Retrieves a paged list of all participant commissions in an affiliate program.
460
+ **Affiliate programs only.** Retrieves a paged list of all participant
461
+ commissions in an affiliate program.
462
462
 
463
463
  Args:
464
464
  limit: Number of results to return. Maximum 100.
@@ -628,7 +628,8 @@ class CampaignResource(SyncAPIResource):
628
628
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
629
629
  ) -> ParticipantPayoutList:
630
630
  """
631
- Retrieves a paged list of all participant payouts in an affiliate program.
631
+ **Affiliate programs only.** Retrieves a paged list of all participant payouts
632
+ in an affiliate program.
632
633
 
633
634
  Args:
634
635
  limit: Number of results to return. Maximum 100.
@@ -762,10 +763,9 @@ class CampaignResource(SyncAPIResource):
762
763
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
763
764
  ) -> CampaignRetrieveAnalyticsResponse:
764
765
  """
765
- Retrieves analytics for a program. Pass ``interval`` to also get a time-series
766
- (``series``) alongside the totals, and ``include`` to add previous-period
767
- totals, status breakdowns, or derived rates — useful for detecting trends over
768
- time.
766
+ Retrieves analytics for a program. Pass `interval` to also get a time-series
767
+ (`series`) alongside the totals, and `include` to add previous-period totals,
768
+ status breakdowns, or derived rates — useful for detecting trends over time.
769
769
 
770
770
  Args:
771
771
  days: Last number of days to retrieve analytics for. Defaults to 365. Maximum 1825.
@@ -898,9 +898,8 @@ class AsyncCampaignResource(AsyncAPIResource):
898
898
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
899
899
  ) -> Campaign:
900
900
  """
901
- Creates a new program pre-populated with type-appropriate defaults, plus any
902
- optional inline rewards. The new program is created in `DRAFT` status and owned
903
- by the API key's account. Requires a verified account email.
901
+ Creates a new program, plus any optional program rewards. The new program is
902
+ created in `DRAFT` status and owned by the API key's bound team.
904
903
 
905
904
  Args:
906
905
  type: The program type. Immutable after creation.
@@ -991,8 +990,8 @@ class AsyncCampaignResource(AsyncAPIResource):
991
990
  Updates a program's identity and lifecycle. Only the fields you send are
992
991
  changed. `type`, `urlId`, and `currencyISO` are immutable. Editor-tab
993
992
  configuration (design, emails, options, installation) is edited via the
994
- dedicated config sub-resources, not here. The program cannot be deleted via
995
- this endpoint.
993
+ dedicated config sub-resources, not here. The program cannot be deleted via this
994
+ endpoint.
996
995
 
997
996
  Args:
998
997
  status: The requested program status. `IN_PROGRESS` publishes or resumes the program;
@@ -1160,7 +1159,8 @@ class AsyncCampaignResource(AsyncAPIResource):
1160
1159
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
1161
1160
  ) -> ParticipantCommissionList:
1162
1161
  """
1163
- Retrieves a paged list of all participant commissions in an affiliate program.
1162
+ **Affiliate programs only.** Retrieves a paged list of all participant
1163
+ commissions in an affiliate program.
1164
1164
 
1165
1165
  Args:
1166
1166
  limit: Number of results to return. Maximum 100.
@@ -1330,7 +1330,8 @@ class AsyncCampaignResource(AsyncAPIResource):
1330
1330
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
1331
1331
  ) -> ParticipantPayoutList:
1332
1332
  """
1333
- Retrieves a paged list of all participant payouts in an affiliate program.
1333
+ **Affiliate programs only.** Retrieves a paged list of all participant payouts
1334
+ in an affiliate program.
1334
1335
 
1335
1336
  Args:
1336
1337
  limit: Number of results to return. Maximum 100.
@@ -1464,10 +1465,9 @@ class AsyncCampaignResource(AsyncAPIResource):
1464
1465
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
1465
1466
  ) -> CampaignRetrieveAnalyticsResponse:
1466
1467
  """
1467
- Retrieves analytics for a program. Pass ``interval`` to also get a time-series
1468
- (``series``) alongside the totals, and ``include`` to add previous-period
1469
- totals, status breakdowns, or derived rates — useful for detecting trends over
1470
- time.
1468
+ Retrieves analytics for a program. Pass `interval` to also get a time-series
1469
+ (`series`) alongside the totals, and `include` to add previous-period totals,
1470
+ status breakdowns, or derived rates — useful for detecting trends over time.
1471
1471
 
1472
1472
  Args:
1473
1473
  days: Last number of days to retrieve analytics for. Defaults to 365. Maximum 1825.
@@ -56,7 +56,7 @@ class CommissionResource(SyncAPIResource):
56
56
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
57
57
  ) -> CommissionDeleteResponse:
58
58
  """
59
- Removes a pending participant commission.
59
+ **Affiliate programs only.** Removes a pending participant commission.
60
60
 
61
61
  Args:
62
62
  extra_headers: Send extra headers
@@ -92,7 +92,8 @@ class CommissionResource(SyncAPIResource):
92
92
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
93
93
  ) -> CommissionApproveResponse:
94
94
  """
95
- Approves a pending participant commission so it can become eligible for payout.
95
+ **Affiliate programs only.** Approves a pending participant commission so it can
96
+ become eligible for payout.
96
97
 
97
98
  Args:
98
99
  extra_headers: Send extra headers
@@ -151,7 +152,7 @@ class AsyncCommissionResource(AsyncAPIResource):
151
152
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
152
153
  ) -> CommissionDeleteResponse:
153
154
  """
154
- Removes a pending participant commission.
155
+ **Affiliate programs only.** Removes a pending participant commission.
155
156
 
156
157
  Args:
157
158
  extra_headers: Send extra headers
@@ -187,7 +188,8 @@ class AsyncCommissionResource(AsyncAPIResource):
187
188
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
188
189
  ) -> CommissionApproveResponse:
189
190
  """
190
- Approves a pending participant commission so it can become eligible for payout.
191
+ **Affiliate programs only.** Approves a pending participant commission so it can
192
+ become eligible for payout.
191
193
 
192
194
  Args:
193
195
  extra_headers: Send extra headers