growsurf-python 1.2.0__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 (172) hide show
  1. growsurf_python-1.2.1/.release-please-manifest.json +3 -0
  2. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/CHANGELOG.md +7 -0
  3. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/PKG-INFO +1 -1
  4. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/pyproject.toml +1 -1
  5. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_version.py +1 -1
  6. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/account.py +30 -10
  7. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/campaign.py +22 -22
  8. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/commission.py +6 -4
  9. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/design.py +14 -12
  10. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/emails.py +16 -18
  11. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/installation.py +16 -16
  12. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/options.py +20 -22
  13. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/participant.py +94 -90
  14. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/reward.py +8 -6
  15. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/rewards.py +30 -16
  16. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/team.py +56 -36
  17. growsurf_python-1.2.0/.release-please-manifest.json +0 -3
  18. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/.gitignore +0 -0
  19. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/CONTRIBUTING.md +0 -0
  20. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/LICENSE +0 -0
  21. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/README.md +0 -0
  22. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/SECURITY.md +0 -0
  23. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/api.md +0 -0
  24. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/bin/check-release-environment +0 -0
  25. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/bin/publish-pypi +0 -0
  26. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/examples/.keep +0 -0
  27. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/release-please-config.json +0 -0
  28. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/requirements-dev.lock +0 -0
  29. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/__init__.py +0 -0
  30. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_base_client.py +0 -0
  31. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_client.py +0 -0
  32. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_compat.py +0 -0
  33. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_constants.py +0 -0
  34. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_exceptions.py +0 -0
  35. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_files.py +0 -0
  36. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_models.py +0 -0
  37. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_qs.py +0 -0
  38. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_resource.py +0 -0
  39. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_response.py +0 -0
  40. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_streaming.py +0 -0
  41. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_types.py +0 -0
  42. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/__init__.py +0 -0
  43. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_compat.py +0 -0
  44. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_datetime_parse.py +0 -0
  45. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_json.py +0 -0
  46. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_logs.py +0 -0
  47. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_path.py +0 -0
  48. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_proxy.py +0 -0
  49. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_reflection.py +0 -0
  50. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_resources_proxy.py +0 -0
  51. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_streams.py +0 -0
  52. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_sync.py +0 -0
  53. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_transform.py +0 -0
  54. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_typing.py +0 -0
  55. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/_utils/_utils.py +0 -0
  56. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/lib/.keep +0 -0
  57. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/py.typed +0 -0
  58. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/__init__.py +0 -0
  59. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/__init__.py +0 -0
  60. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/webhooks.py +0 -0
  61. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/__init__.py +0 -0
  62. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/account_create_params.py +0 -0
  63. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/__init__.py +0 -0
  64. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign.py +0 -0
  65. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_design.py +0 -0
  66. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_emails.py +0 -0
  67. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_installation.py +0 -0
  68. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_options.py +0 -0
  69. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
  70. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
  71. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
  72. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
  73. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
  74. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/email_participant_response.py +0 -0
  75. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
  76. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant.py +0 -0
  77. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
  78. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_add_params.py +0 -0
  79. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_analytics_params.py +0 -0
  80. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_analytics_response.py +0 -0
  81. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
  82. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
  83. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
  84. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_email_params.py +0 -0
  85. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
  86. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
  87. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
  88. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
  89. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
  90. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_rewards_response.py +0 -0
  91. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_record_transaction_params.py +0 -0
  92. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
  93. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -0
  94. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
  95. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_reward.py +0 -0
  96. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
  97. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
  98. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
  99. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
  100. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_update_params.py +0 -0
  101. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/referral_source.py +0 -0
  102. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/referral_status.py +0 -0
  103. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward.py +0 -0
  104. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
  105. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
  106. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_create_params.py +0 -0
  107. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
  108. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
  109. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
  110. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_update_params.py +0 -0
  111. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook.py +0 -0
  112. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
  113. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_event.py +0 -0
  114. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
  115. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
  116. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
  117. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
  118. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +0 -0
  119. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
  120. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_create_params.py +0 -0
  121. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
  122. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
  123. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_participants_params.py +0 -0
  124. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
  125. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
  126. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_response.py +0 -0
  127. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_retrieve_analytics_params.py +0 -0
  128. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_retrieve_analytics_response.py +0 -0
  129. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/campaign_update_params.py +0 -0
  130. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/commission_structure.py +0 -0
  131. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/create_account_response.py +0 -0
  132. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/participant_commission_list.py +0 -0
  133. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/participant_list.py +0 -0
  134. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/participant_payout_list.py +0 -0
  135. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/referral_list.py +0 -0
  136. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/rotate_api_key_response.py +0 -0
  137. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/team.py +0 -0
  138. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/team_update_params.py +0 -0
  139. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/src/growsurf/types/verification_email_response.py +0 -0
  140. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/__init__.py +0 -0
  141. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/__init__.py +0 -0
  142. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/campaign/__init__.py +0 -0
  143. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_commission.py +0 -0
  144. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_design.py +0 -0
  145. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_emails.py +0 -0
  146. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_installation.py +0 -0
  147. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_options.py +0 -0
  148. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_participant.py +0 -0
  149. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_reward.py +0 -0
  150. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_rewards.py +0 -0
  151. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_webhooks.py +0 -0
  152. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/test_account.py +0 -0
  153. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/test_campaign.py +0 -0
  154. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/api_resources/test_team_contract.py +0 -0
  155. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/conftest.py +0 -0
  156. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/sample_file.txt +0 -0
  157. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_client.py +0 -0
  158. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_extract_files.py +0 -0
  159. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_files.py +0 -0
  160. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_models.py +0 -0
  161. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_qs.py +0 -0
  162. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_required_args.py +0 -0
  163. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_response.py +0 -0
  164. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_streaming.py +0 -0
  165. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_transform.py +0 -0
  166. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_utils/test_datetime_parse.py +0 -0
  167. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_utils/test_json.py +0 -0
  168. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_utils/test_path.py +0 -0
  169. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_utils/test_proxy.py +0 -0
  170. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/test_utils/test_typing.py +0 -0
  171. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/tests/utils.py +0 -0
  172. {growsurf_python-1.2.0 → growsurf_python-1.2.1}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.2.1"
3
+ }
@@ -1,5 +1,12 @@
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
+
3
10
  ## [1.2.0](https://github.com/growsurf/growsurf-python/compare/v1.1.2...v1.2.0) (2026-07-13)
4
11
 
5
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: growsurf-python
3
- Version: 1.2.0
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "growsurf-python"
3
- version = "1.2.0"
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"
@@ -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.2.0" # x-release-please-version
4
+ __version__ = "1.2.1" # x-release-please-version
@@ -46,11 +46,21 @@ class AccountResource(SyncAPIResource):
46
46
  extra_body: Body | None = None,
47
47
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
48
48
  ) -> CreateAccountResponse:
49
- """Create a GrowSurf account and return its one-time API key.
50
-
51
- The key is locked until the team owner's email address is verified and rotates the
52
- first time the account owner signs in to the GrowSurf dashboard. Accounts whose
53
- email is never verified are deleted automatically after 7 days.
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).
54
64
 
55
65
  Args:
56
66
  email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
@@ -116,11 +126,21 @@ class AsyncAccountResource(AsyncAPIResource):
116
126
  extra_body: Body | None = None,
117
127
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
118
128
  ) -> CreateAccountResponse:
119
- """Create a GrowSurf account and return its one-time API key.
120
-
121
- The key is locked until the team owner's email address is verified and rotates the
122
- first time the account owner signs in to the GrowSurf dashboard. Accounts whose
123
- email is never verified are deleted automatically after 7 days.
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).
124
144
 
125
145
  Args:
126
146
  email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
@@ -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 bound team. Requires the team owner's verified 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 bound team. Requires the team owner's verified 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
@@ -57,9 +57,11 @@ class DesignResource(SyncAPIResource):
57
57
  ) -> CampaignDesign:
58
58
  """
59
59
  Retrieves a program's design configuration — the same surface as the dashboard
60
- Program Editor's **Design** tab. This is a large object whose available fields
61
- depend on the program type; the response includes every field and its current
62
- value, which is the same shape you send back on `PATCH`.
60
+ Program Editor's **Design** tab: the GrowSurf window layout, header, share
61
+ channels + invite, signup form, portal/landing pages, theme styling, and the
62
+ referral/affiliate summary + status sections. This is a large object whose
63
+ available fields depend on the program type; the response includes every field
64
+ and its current value, which is the same shape you send back on `PATCH`.
63
65
 
64
66
  Args:
65
67
  extra_headers: Send extra headers
@@ -96,9 +98,8 @@ class DesignResource(SyncAPIResource):
96
98
  Updates a program's design configuration. Only the fields you send are changed;
97
99
  anything you leave out is untouched (arrays such as `signup.fields` replace
98
100
  wholesale). Unknown fields, fields not available for the program type, and
99
- invalid values return a `400`. To see the full `CampaignDesign` object with every
100
- field and its current value, `GET` this resource first, then `PATCH` back only the
101
- fields you want to change.
101
+ invalid values return a `400`. Landing-page custom code and JavaScript are not
102
+ editable via the API.
102
103
 
103
104
  Args:
104
105
  body: A partial `CampaignDesign` object — only the fields you send are changed.
@@ -158,9 +159,11 @@ class AsyncDesignResource(AsyncAPIResource):
158
159
  ) -> CampaignDesign:
159
160
  """
160
161
  Retrieves a program's design configuration — the same surface as the dashboard
161
- Program Editor's **Design** tab. This is a large object whose available fields
162
- depend on the program type; the response includes every field and its current
163
- value, which is the same shape you send back on `PATCH`.
162
+ Program Editor's **Design** tab: the GrowSurf window layout, header, share
163
+ channels + invite, signup form, portal/landing pages, theme styling, and the
164
+ referral/affiliate summary + status sections. This is a large object whose
165
+ available fields depend on the program type; the response includes every field
166
+ and its current value, which is the same shape you send back on `PATCH`.
164
167
 
165
168
  Args:
166
169
  extra_headers: Send extra headers
@@ -197,9 +200,8 @@ class AsyncDesignResource(AsyncAPIResource):
197
200
  Updates a program's design configuration. Only the fields you send are changed;
198
201
  anything you leave out is untouched (arrays such as `signup.fields` replace
199
202
  wholesale). Unknown fields, fields not available for the program type, and
200
- invalid values return a `400`. To see the full `CampaignDesign` object with every
201
- field and its current value, `GET` this resource first, then `PATCH` back only the
202
- fields you want to change.
203
+ invalid values return a `400`. Landing-page custom code and JavaScript are not
204
+ editable via the API.
203
205
 
204
206
  Args:
205
207
  body: A partial `CampaignDesign` object — only the fields you send are changed.
@@ -56,10 +56,11 @@ class EmailsResource(SyncAPIResource):
56
56
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
57
57
  ) -> CampaignEmails:
58
58
  """
59
- Retrieves a program's emails configuration — the same surface as the dashboard
60
- Program Editor's **Emails** tab. This is a large object whose available fields
61
- depend on the program type; the response includes every field and its current
62
- value, which is the same shape you send back on `PATCH`.
59
+ Retrieves a program's email configuration — the same surface as the dashboard
60
+ Program Editor's **Emails** tab. Returns each editable email template
61
+ (`subject`, `preheader`, `body`, `isEnabled`) plus the `settings` block (sender,
62
+ contact, and design). The set of email templates returned depends on the program
63
+ type (referral vs affiliate).
63
64
 
64
65
  Args:
65
66
  extra_headers: Send extra headers
@@ -95,12 +96,10 @@ class EmailsResource(SyncAPIResource):
95
96
  """
96
97
  Updates a program's email configuration. Only the fields you send are changed;
97
98
  omitted fields are left untouched. You may only write the email templates the
98
- dashboard exposes for the program type — writing a template that is not available
99
- for the program type returns a `400`. Some fields are read-only
99
+ dashboard exposes for the program type — writing a template that is not
100
+ available for the program type returns a `400`. Some fields are read-only
100
101
  (`settings.sender.fromEmail`, whose custom value requires dashboard domain
101
- verification). To see the full `CampaignEmails` object with every field and its
102
- current value, `GET` this resource first, then `PATCH` back only the fields you
103
- want to change.
102
+ verification).
104
103
 
105
104
  Args:
106
105
  body: A partial `CampaignEmails` object — only the fields you send are changed.
@@ -159,10 +158,11 @@ class AsyncEmailsResource(AsyncAPIResource):
159
158
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
160
159
  ) -> CampaignEmails:
161
160
  """
162
- Retrieves a program's emails configuration — the same surface as the dashboard
163
- Program Editor's **Emails** tab. This is a large object whose available fields
164
- depend on the program type; the response includes every field and its current
165
- value, which is the same shape you send back on `PATCH`.
161
+ Retrieves a program's email configuration — the same surface as the dashboard
162
+ Program Editor's **Emails** tab. Returns each editable email template
163
+ (`subject`, `preheader`, `body`, `isEnabled`) plus the `settings` block (sender,
164
+ contact, and design). The set of email templates returned depends on the program
165
+ type (referral vs affiliate).
166
166
 
167
167
  Args:
168
168
  extra_headers: Send extra headers
@@ -198,12 +198,10 @@ class AsyncEmailsResource(AsyncAPIResource):
198
198
  """
199
199
  Updates a program's email configuration. Only the fields you send are changed;
200
200
  omitted fields are left untouched. You may only write the email templates the
201
- dashboard exposes for the program type — writing a template that is not available
202
- for the program type returns a `400`. Some fields are read-only
201
+ dashboard exposes for the program type — writing a template that is not
202
+ available for the program type returns a `400`. Some fields are read-only
203
203
  (`settings.sender.fromEmail`, whose custom value requires dashboard domain
204
- verification). To see the full `CampaignEmails` object with every field and its
205
- current value, `GET` this resource first, then `PATCH` back only the fields you
206
- want to change.
204
+ verification).
207
205
 
208
206
  Args:
209
207
  body: A partial `CampaignEmails` object — only the fields you send are changed.
@@ -56,10 +56,10 @@ class InstallationResource(SyncAPIResource):
56
56
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
57
57
  ) -> CampaignInstallation:
58
58
  """
59
- Retrieves a program's installation configuration — the same surface as the dashboard
60
- Program Editor's **Installation** tab. This is a large object whose available fields
61
- depend on the program type; the response includes every field and its current
62
- value, which is the same shape you send back on `PATCH`.
59
+ Retrieves a program's installation configuration — the same surface as the
60
+ dashboard Program Editor's **Installation** tab (plus the Mobile SDK settings).
61
+ Includes the referral trigger (referral programs only), signup tracking method,
62
+ share URL and whitelist, custom-form signup settings, and mobile SDK settings.
63
63
 
64
64
  Args:
65
65
  extra_headers: Send extra headers
@@ -95,10 +95,10 @@ class InstallationResource(SyncAPIResource):
95
95
  """
96
96
  Updates a program's installation configuration. Only the fields you send are
97
97
  changed; omitted fields are left untouched. `referralTrigger` is only available
98
- for referral programs. `mobile.publicKey` is read-only (server-generated). URLs
99
- must include an explicit `http://` or `https://` scheme. To see the full
100
- `CampaignInstallation` object with every field and its current value, `GET` this
101
- resource first, then `PATCH` back only the fields you want to change.
98
+ for referral programs. `mobile.publicKey` is read-only; if no key exists yet,
99
+ enabling `mobile.isEnabled` creates one. Changing `shareUrl` re-resolves its
100
+ redirect destinations, which may take a moment to complete. URLs must include an
101
+ explicit `http://` or `https://` scheme.
102
102
 
103
103
  Args:
104
104
  body: A partial `CampaignInstallation` object — only the fields you send are changed.
@@ -157,10 +157,10 @@ class AsyncInstallationResource(AsyncAPIResource):
157
157
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
158
158
  ) -> CampaignInstallation:
159
159
  """
160
- Retrieves a program's installation configuration — the same surface as the dashboard
161
- Program Editor's **Installation** tab. This is a large object whose available fields
162
- depend on the program type; the response includes every field and its current
163
- value, which is the same shape you send back on `PATCH`.
160
+ Retrieves a program's installation configuration — the same surface as the
161
+ dashboard Program Editor's **Installation** tab (plus the Mobile SDK settings).
162
+ Includes the referral trigger (referral programs only), signup tracking method,
163
+ share URL and whitelist, custom-form signup settings, and mobile SDK settings.
164
164
 
165
165
  Args:
166
166
  extra_headers: Send extra headers
@@ -196,10 +196,10 @@ class AsyncInstallationResource(AsyncAPIResource):
196
196
  """
197
197
  Updates a program's installation configuration. Only the fields you send are
198
198
  changed; omitted fields are left untouched. `referralTrigger` is only available
199
- for referral programs. `mobile.publicKey` is read-only (server-generated). URLs
200
- must include an explicit `http://` or `https://` scheme. To see the full
201
- `CampaignInstallation` object with every field and its current value, `GET` this
202
- resource first, then `PATCH` back only the fields you want to change.
199
+ for referral programs. `mobile.publicKey` is read-only; if no key exists yet,
200
+ enabling `mobile.isEnabled` creates one. Changing `shareUrl` re-resolves its
201
+ redirect destinations, which may take a moment to complete. URLs must include an
202
+ explicit `http://` or `https://` scheme.
203
203
 
204
204
  Args:
205
205
  body: A partial `CampaignInstallation` object — only the fields you send are changed.
@@ -56,10 +56,11 @@ class OptionsResource(SyncAPIResource):
56
56
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
57
57
  ) -> CampaignOptions:
58
58
  """
59
- Retrieves a program's options configuration — the same surface as the dashboard
60
- Program Editor's **Options** tab. This is a large object whose available fields
61
- depend on the program type; the response includes every field and its current
62
- value, which is the same shape you send back on `PATCH`.
59
+ Retrieves a program's options — the same surface as the dashboard Program
60
+ Editor's **Options** tab. Includes reward/fraud approval, anti-fraud lists +
61
+ toggles, referral cookie/credit windows, reCAPTCHA, payout threshold + tax
62
+ settings (affiliate only), and notification-email settings.
63
+ `fraud.recaptcha.secretKey` is never returned.
63
64
 
64
65
  Args:
65
66
  extra_headers: Send extra headers
@@ -93,14 +94,12 @@ class OptionsResource(SyncAPIResource):
93
94
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
94
95
  ) -> CampaignOptions:
95
96
  """
96
- Updates a program's options. Only the fields you send are changed. Some fields are
97
- program-type specific (`requireManualRewardApproval`/`autoFulfillRewards` are
98
- referral-only; `payoutThreshold`/`taxDocumentation` are affiliate-only, and
97
+ Updates a program's options. Only the fields you send are changed. Some fields
98
+ are program-type specific (`requireManualRewardApproval`/`autoFulfillRewards`
99
+ are referral-only; `payoutThreshold`/`taxDocumentation` are affiliate-only, and
99
100
  affiliate programs require `requireParticipantAuth: true`).
100
- `fraud.recaptcha.secretKey` is write-only. `referralCreditWindowDays: null` means
101
- "never expires". To see the full `CampaignOptions` object with every field and its
102
- current value, `GET` this resource first, then `PATCH` back only the fields you
103
- want to change.
101
+ `fraud.recaptcha.secretKey` is write-only. `referralCreditWindowDays: null`
102
+ means "never expires".
104
103
 
105
104
  Args:
106
105
  body: A partial `CampaignOptions` object — only the fields you send are changed.
@@ -159,10 +158,11 @@ class AsyncOptionsResource(AsyncAPIResource):
159
158
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
160
159
  ) -> CampaignOptions:
161
160
  """
162
- Retrieves a program's options configuration — the same surface as the dashboard
163
- Program Editor's **Options** tab. This is a large object whose available fields
164
- depend on the program type; the response includes every field and its current
165
- value, which is the same shape you send back on `PATCH`.
161
+ Retrieves a program's options — the same surface as the dashboard Program
162
+ Editor's **Options** tab. Includes reward/fraud approval, anti-fraud lists +
163
+ toggles, referral cookie/credit windows, reCAPTCHA, payout threshold + tax
164
+ settings (affiliate only), and notification-email settings.
165
+ `fraud.recaptcha.secretKey` is never returned.
166
166
 
167
167
  Args:
168
168
  extra_headers: Send extra headers
@@ -196,14 +196,12 @@ class AsyncOptionsResource(AsyncAPIResource):
196
196
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
197
197
  ) -> CampaignOptions:
198
198
  """
199
- Updates a program's options. Only the fields you send are changed. Some fields are
200
- program-type specific (`requireManualRewardApproval`/`autoFulfillRewards` are
201
- referral-only; `payoutThreshold`/`taxDocumentation` are affiliate-only, and
199
+ Updates a program's options. Only the fields you send are changed. Some fields
200
+ are program-type specific (`requireManualRewardApproval`/`autoFulfillRewards`
201
+ are referral-only; `payoutThreshold`/`taxDocumentation` are affiliate-only, and
202
202
  affiliate programs require `requireParticipantAuth: true`).
203
- `fraud.recaptcha.secretKey` is write-only. `referralCreditWindowDays: null` means
204
- "never expires". To see the full `CampaignOptions` object with every field and its
205
- current value, `GET` this resource first, then `PATCH` back only the fields you
206
- want to change.
203
+ `fraud.recaptcha.secretKey` is write-only. `referralCreditWindowDays: null`
204
+ means "never expires".
207
205
 
208
206
  Args:
209
207
  body: A partial `CampaignOptions` object — only the fields you send are changed.