growsurf-python 1.12.0__tar.gz → 1.13.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 (215) hide show
  1. growsurf_python-1.13.0/.release-please-manifest.json +3 -0
  2. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/CHANGELOG.md +8 -0
  3. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/PKG-INFO +1 -1
  4. growsurf_python-1.13.0/SECURITY.md +13 -0
  5. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/api.md +1 -0
  6. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/pyproject.toml +1 -1
  7. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_version.py +1 -1
  8. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/campaign.py +11 -0
  9. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/participant.py +26 -3
  10. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/reward.py +6 -6
  11. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/__init__.py +1 -0
  12. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/campaign_options.py +3 -2
  13. growsurf_python-1.13.0/src/growsurf/types/campaign/language.py +9 -0
  14. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant.py +8 -0
  15. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_add_params.py +8 -0
  16. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_update_params.py +9 -1
  17. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +8 -0
  18. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/test_participant.py +4 -0
  19. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/test_campaign.py +2 -0
  20. growsurf_python-1.12.0/.release-please-manifest.json +0 -3
  21. growsurf_python-1.12.0/SECURITY.md +0 -23
  22. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/.gitignore +0 -0
  23. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/CONTRIBUTING.md +0 -0
  24. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/LICENSE +0 -0
  25. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/README.md +0 -0
  26. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/bin/check-release-environment +0 -0
  27. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/bin/publish-pypi +0 -0
  28. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/examples/.keep +0 -0
  29. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/release-please-config.json +0 -0
  30. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/requirements-dev.lock +0 -0
  31. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/__init__.py +0 -0
  32. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_base_client.py +0 -0
  33. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_client.py +0 -0
  34. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_compat.py +0 -0
  35. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_constants.py +0 -0
  36. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_exceptions.py +0 -0
  37. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_files.py +0 -0
  38. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_models.py +0 -0
  39. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_qs.py +0 -0
  40. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_resource.py +0 -0
  41. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_response.py +0 -0
  42. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_streaming.py +0 -0
  43. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_types.py +0 -0
  44. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/__init__.py +0 -0
  45. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_compat.py +0 -0
  46. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_datetime_parse.py +0 -0
  47. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_json.py +0 -0
  48. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_logs.py +0 -0
  49. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_path.py +0 -0
  50. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_proxy.py +0 -0
  51. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_reflection.py +0 -0
  52. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_resources_proxy.py +0 -0
  53. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_streams.py +0 -0
  54. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_sync.py +0 -0
  55. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_transform.py +0 -0
  56. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_typing.py +0 -0
  57. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/_utils/_utils.py +0 -0
  58. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/lib/.keep +0 -0
  59. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/py.typed +0 -0
  60. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/__init__.py +0 -0
  61. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/account.py +0 -0
  62. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/__init__.py +0 -0
  63. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/commission.py +0 -0
  64. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/design.py +0 -0
  65. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/emails.py +0 -0
  66. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/installation.py +0 -0
  67. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/integrations.py +0 -0
  68. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/options.py +0 -0
  69. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/program_resources.py +0 -0
  70. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/rewards.py +0 -0
  71. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/campaign/webhooks.py +0 -0
  72. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/resources/team.py +0 -0
  73. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/__init__.py +0 -0
  74. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/account_create_params.py +0 -0
  75. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/affiliate_application.py +0 -0
  76. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/affiliate_application_answer.py +0 -0
  77. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/affiliate_application_list_response.py +0 -0
  78. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/affiliate_invite.py +0 -0
  79. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/affiliate_invite_list_response.py +0 -0
  80. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/analytics_availability.py +0 -0
  81. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/analytics_unavailable_reason.py +0 -0
  82. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/campaign.py +0 -0
  83. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/campaign_design.py +0 -0
  84. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/campaign_emails.py +0 -0
  85. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/campaign_installation.py +0 -0
  86. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
  87. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
  88. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
  89. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/delete_program_resource_response.py +0 -0
  90. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
  91. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
  92. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/email_participant_response.py +0 -0
  93. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
  94. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/integration.py +0 -0
  95. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/integration_list_response.py +0 -0
  96. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_activation_analytics.py +0 -0
  97. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
  98. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_analytics_params.py +0 -0
  99. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_analytics_response.py +0 -0
  100. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
  101. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
  102. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
  103. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_email_params.py +0 -0
  104. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_get_payout_destination_response.py +0 -0
  105. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
  106. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
  107. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
  108. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
  109. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
  110. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_list_rewards_response.py +0 -0
  111. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_record_transaction_params.py +0 -0
  112. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
  113. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -0
  114. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
  115. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_params.py +0 -0
  116. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_response.py +0 -0
  117. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_reward.py +0 -0
  118. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
  119. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
  120. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
  121. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
  122. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/pending_analytics_erasure.py +0 -0
  123. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/program_resource.py +0 -0
  124. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/program_resource_list_response.py +0 -0
  125. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/program_resource_upload_result.py +0 -0
  126. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/program_resource_upload_ticket.py +0 -0
  127. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/referral_source.py +0 -0
  128. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/referral_status.py +0 -0
  129. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/reward.py +0 -0
  130. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
  131. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
  132. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/reward_create_params.py +0 -0
  133. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
  134. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
  135. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
  136. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/reward_update_params.py +0 -0
  137. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/webhook.py +0 -0
  138. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
  139. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/webhook_event.py +0 -0
  140. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
  141. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
  142. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
  143. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
  144. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_activation_analytics_response.py +0 -0
  145. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_create_affiliate_invite_params.py +0 -0
  146. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
  147. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_create_params.py +0 -0
  148. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_engagement_analytics.py +0 -0
  149. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_list_affiliate_applications_params.py +0 -0
  150. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_list_affiliate_invites_params.py +0 -0
  151. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
  152. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
  153. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_list_participants_params.py +0 -0
  154. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
  155. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
  156. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_list_response.py +0 -0
  157. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_retrieve_activation_analytics_params.py +0 -0
  158. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_retrieve_analytics_params.py +0 -0
  159. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_retrieve_analytics_response.py +0 -0
  160. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_review_affiliate_application_params.py +0 -0
  161. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/campaign_update_params.py +0 -0
  162. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/commission_structure.py +0 -0
  163. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/create_account_response.py +0 -0
  164. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/email_analytics.py +0 -0
  165. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/participant_commission_list.py +0 -0
  166. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/participant_list.py +0 -0
  167. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/participant_payout_list.py +0 -0
  168. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/referral_flow_screenshot.py +0 -0
  169. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/referral_flow_screenshots_response.py +0 -0
  170. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/referral_list.py +0 -0
  171. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/rotate_api_key_response.py +0 -0
  172. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/team.py +0 -0
  173. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/team_update_params.py +0 -0
  174. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/src/growsurf/types/verification_email_response.py +0 -0
  175. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/__init__.py +0 -0
  176. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/__init__.py +0 -0
  177. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/__init__.py +0 -0
  178. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/test_commission.py +0 -0
  179. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/test_design.py +0 -0
  180. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/test_emails.py +0 -0
  181. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/test_installation.py +0 -0
  182. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/test_integrations.py +0 -0
  183. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/test_options.py +0 -0
  184. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/test_program_resources.py +0 -0
  185. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/test_reward.py +0 -0
  186. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/test_rewards.py +0 -0
  187. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/campaign/test_webhooks.py +0 -0
  188. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/test_account.py +0 -0
  189. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/api_resources/test_team_contract.py +0 -0
  190. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/conftest.py +0 -0
  191. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/sample_file.txt +0 -0
  192. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_client.py +0 -0
  193. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_extract_files.py +0 -0
  194. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_files.py +0 -0
  195. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_models.py +0 -0
  196. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_qs.py +0 -0
  197. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_required_args.py +0 -0
  198. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_response.py +0 -0
  199. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_streaming.py +0 -0
  200. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_transform.py +0 -0
  201. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_utils/test_datetime_parse.py +0 -0
  202. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_utils/test_json.py +0 -0
  203. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_utils/test_path.py +0 -0
  204. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_utils/test_proxy.py +0 -0
  205. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/test_utils/test_typing.py +0 -0
  206. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/types/test_affiliate_application.py +0 -0
  207. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/types/test_analytics_reward_status.py +0 -0
  208. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/types/test_email_analytics.py +0 -0
  209. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/types/test_lead_reward_events.py +0 -0
  210. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/types/test_participant_activation_engagement_analytics.py +0 -0
  211. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/types/test_participant_contract.py +0 -0
  212. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/types/test_payout_provider_forward_compat.py +0 -0
  213. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/types/test_referral_source.py +0 -0
  214. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/tests/utils.py +0 -0
  215. {growsurf_python-1.12.0 → growsurf_python-1.13.0}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "1.13.0"
3
+ }
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.13.0](https://github.com/growsurf/growsurf-python/compare/v1.12.0...v1.13.0) (2026-10-09)
4
+
5
+
6
+ ### Features
7
+
8
+ * add program and participant language support ([57890e4](https://github.com/growsurf/growsurf-python/commit/57890e4ddfd3b2af6ac43d8caafdcf8ab013f3a6))
9
+ * add program languages and update SDK guidance ([1925adb](https://github.com/growsurf/growsurf-python/commit/1925adb305c1ba3743dcbac397c06dfcb2444743))
10
+
3
11
  ## [1.12.0](https://github.com/growsurf/growsurf-python/compare/v1.11.0...v1.12.0) (2026-10-07)
4
12
 
5
13
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: growsurf-python
3
- Version: 1.12.0
3
+ Version: 1.13.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
@@ -0,0 +1,13 @@
1
+ # Security Policy
2
+
3
+ ## Reporting Security Issues
4
+
5
+ GrowSurf maintains this SDK. If you believe you have found a security vulnerability in it, please report it to support@growsurf.com rather than opening a public issue.
6
+
7
+ ## Responsible Disclosure
8
+
9
+ Please give us a reasonable amount of time to investigate and address the issue before making any information public. We appreciate the efforts of security researchers who help keep this SDK and the systems it talks to secure.
10
+
11
+ ## Other GrowSurf Security Issues
12
+
13
+ For security issues in GrowSurf products or services that are not related to this SDK, contact support@growsurf.com as well.
@@ -105,6 +105,7 @@ Types:
105
105
  ```python
106
106
  from growsurf.types.campaign import (
107
107
  FraudRiskLevel,
108
+ Language,
108
109
  Participant,
109
110
  ParticipantReward,
110
111
  ReferralSource,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "growsurf-python"
3
- version = "1.12.0"
3
+ version = "1.13.0"
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.12.0" # x-release-please-version
4
+ __version__ = "1.13.0" # x-release-please-version
@@ -127,6 +127,7 @@ from ...types.referral_list import ReferralList
127
127
  from ...types.affiliate_invite import AffiliateInvite
128
128
  from ...types.participant_list import ParticipantList
129
129
  from ...types.campaign.campaign import Campaign
130
+ from ...types.campaign.language import Language
130
131
  from ...types.affiliate_application import AffiliateApplication
131
132
  from ...types.campaign_list_response import CampaignListResponse
132
133
  from ...types.participant_payout_list import ParticipantPayoutList
@@ -439,6 +440,7 @@ class CampaignResource(SyncAPIResource):
439
440
  first_name: str | Omit = omit,
440
441
  ip_address: str | Omit = omit,
441
442
  is_affiliate: bool | Omit = omit,
443
+ language: Language | Omit = omit,
442
444
  last_name: str | Omit = omit,
443
445
  metadata: Dict[str, object] | Omit = omit,
444
446
  mobile_instance_id: str | Omit = omit,
@@ -466,6 +468,9 @@ class CampaignResource(SyncAPIResource):
466
468
 
467
469
  is_affiliate: Affiliate programs only. Controls affiliate enrollment for a new participant.
468
470
 
471
+ language: The language of the participant's portal and program emails. Must be one of the
472
+ program's languages. Applied only when this request creates the participant.
473
+
469
474
  referred_by: Referrer participant ID or email address.
470
475
 
471
476
  extra_headers: Send extra headers
@@ -487,6 +492,7 @@ class CampaignResource(SyncAPIResource):
487
492
  "first_name": first_name,
488
493
  "ip_address": ip_address,
489
494
  "is_affiliate": is_affiliate,
495
+ "language": language,
490
496
  "last_name": last_name,
491
497
  "metadata": metadata,
492
498
  "mobile_instance_id": mobile_instance_id,
@@ -1665,6 +1671,7 @@ class AsyncCampaignResource(AsyncAPIResource):
1665
1671
  first_name: str | Omit = omit,
1666
1672
  ip_address: str | Omit = omit,
1667
1673
  is_affiliate: bool | Omit = omit,
1674
+ language: Language | Omit = omit,
1668
1675
  last_name: str | Omit = omit,
1669
1676
  metadata: Dict[str, object] | Omit = omit,
1670
1677
  mobile_instance_id: str | Omit = omit,
@@ -1692,6 +1699,9 @@ class AsyncCampaignResource(AsyncAPIResource):
1692
1699
 
1693
1700
  is_affiliate: Affiliate programs only. Controls affiliate enrollment for a new participant.
1694
1701
 
1702
+ language: The language of the participant's portal and program emails. Must be one of the
1703
+ program's languages. Applied only when this request creates the participant.
1704
+
1695
1705
  referred_by: Referrer participant ID or email address.
1696
1706
 
1697
1707
  extra_headers: Send extra headers
@@ -1713,6 +1723,7 @@ class AsyncCampaignResource(AsyncAPIResource):
1713
1723
  "first_name": first_name,
1714
1724
  "ip_address": ip_address,
1715
1725
  "is_affiliate": is_affiliate,
1726
+ "language": language,
1716
1727
  "last_name": last_name,
1717
1728
  "metadata": metadata,
1718
1729
  "mobile_instance_id": mobile_instance_id,
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Any, Dict, Iterable, cast
5
+ from typing import Any, Dict, Iterable, Optional, cast
6
6
  from typing_extensions import Literal
7
7
 
8
8
  import httpx
@@ -37,6 +37,7 @@ from ...types.campaign import (
37
37
  participant_request_payout_destination_confirmation_params,
38
38
  )
39
39
  from ...types.referral_list import ReferralList
40
+ from ...types.campaign.language import Language
40
41
  from ...types.campaign.participant import Participant
41
42
  from ...types.participant_payout_list import ParticipantPayoutList
42
43
  from ...types.campaign.referral_status import ReferralStatus
@@ -129,6 +130,7 @@ class ParticipantResource(SyncAPIResource):
129
130
  affiliate_status: Literal["APPROVED", "SUSPENDED", "BANNED"] | Omit = omit,
130
131
  email: str | Omit = omit,
131
132
  first_name: str | Omit = omit,
133
+ language: Optional[Language] | Omit = omit,
132
134
  last_name: str | Omit = omit,
133
135
  metadata: Dict[str, object] | Omit = omit,
134
136
  notes: str | Omit = omit,
@@ -155,6 +157,10 @@ class ParticipantResource(SyncAPIResource):
155
157
  participant who is not yet an affiliate. `SUSPENDED` and `BANNED` are rejected for
156
158
  non-affiliates.
157
159
 
160
+ language: The language of the participant's portal and program emails. Must be one of the
161
+ program's languages (see `languages` in the program options). Send the base
162
+ language or `null` to use the program's base language.
163
+
158
164
  metadata: Shallow custom metadata object.
159
165
 
160
166
  notes: Freeform internal notes about the participant (internal only, never exposed to
@@ -185,6 +191,7 @@ class ParticipantResource(SyncAPIResource):
185
191
  "affiliate_status": affiliate_status,
186
192
  "email": email,
187
193
  "first_name": first_name,
194
+ "language": language,
188
195
  "last_name": last_name,
189
196
  "metadata": metadata,
190
197
  "notes": notes,
@@ -298,6 +305,7 @@ class ParticipantResource(SyncAPIResource):
298
305
  first_name: str | Omit = omit,
299
306
  ip_address: str | Omit = omit,
300
307
  is_affiliate: bool | Omit = omit,
308
+ language: Language | Omit = omit,
301
309
  last_name: str | Omit = omit,
302
310
  metadata: Dict[str, object] | Omit = omit,
303
311
  mobile_instance_id: str | Omit = omit,
@@ -326,6 +334,9 @@ class ParticipantResource(SyncAPIResource):
326
334
  non-affiliate without `affiliateStatus`. Existing participants are returned
327
335
  unchanged.
328
336
 
337
+ language: The language of the participant's portal and program emails. Must be one of the
338
+ program's languages. Applied only when this request creates the participant.
339
+
329
340
  metadata: Shallow custom metadata object.
330
341
 
331
342
  mobile_instance_id: Optional app-install scoped identifier for native mobile anti-fraud. Recommended
@@ -358,6 +369,7 @@ class ParticipantResource(SyncAPIResource):
358
369
  "first_name": first_name,
359
370
  "ip_address": ip_address,
360
371
  "is_affiliate": is_affiliate,
372
+ "language": language,
361
373
  "last_name": last_name,
362
374
  "metadata": metadata,
363
375
  "mobile_instance_id": mobile_instance_id,
@@ -1019,7 +1031,7 @@ class ParticipantResource(SyncAPIResource):
1019
1031
  name, postal address, and an unsubscribe link are added automatically, and
1020
1032
  unsubscribed participants are suppressed). Sending requires the team to be
1021
1033
  verified by GrowSurf. Requires a **verified custom email domain** on the program
1022
- (which can be completed in *Campaign Editor > 3. Emails > Email Settings*).
1034
+ (which can be completed in *Program Editor > 3. Emails > Email Settings*).
1023
1035
  Returns `400` until one is verified. The email is accepted for delivery.
1024
1036
 
1025
1037
  Args:
@@ -1397,6 +1409,7 @@ class AsyncParticipantResource(AsyncAPIResource):
1397
1409
  affiliate_status: Literal["APPROVED", "SUSPENDED", "BANNED"] | Omit = omit,
1398
1410
  email: str | Omit = omit,
1399
1411
  first_name: str | Omit = omit,
1412
+ language: Optional[Language] | Omit = omit,
1400
1413
  last_name: str | Omit = omit,
1401
1414
  metadata: Dict[str, object] | Omit = omit,
1402
1415
  notes: str | Omit = omit,
@@ -1423,6 +1436,10 @@ class AsyncParticipantResource(AsyncAPIResource):
1423
1436
  participant who is not yet an affiliate. `SUSPENDED` and `BANNED` are rejected for
1424
1437
  non-affiliates.
1425
1438
 
1439
+ language: The language of the participant's portal and program emails. Must be one of the
1440
+ program's languages (see `languages` in the program options). Send the base
1441
+ language or `null` to use the program's base language.
1442
+
1426
1443
  metadata: Shallow custom metadata object.
1427
1444
 
1428
1445
  notes: Freeform internal notes about the participant (internal only, never exposed to
@@ -1453,6 +1470,7 @@ class AsyncParticipantResource(AsyncAPIResource):
1453
1470
  "affiliate_status": affiliate_status,
1454
1471
  "email": email,
1455
1472
  "first_name": first_name,
1473
+ "language": language,
1456
1474
  "last_name": last_name,
1457
1475
  "metadata": metadata,
1458
1476
  "notes": notes,
@@ -1566,6 +1584,7 @@ class AsyncParticipantResource(AsyncAPIResource):
1566
1584
  first_name: str | Omit = omit,
1567
1585
  ip_address: str | Omit = omit,
1568
1586
  is_affiliate: bool | Omit = omit,
1587
+ language: Language | Omit = omit,
1569
1588
  last_name: str | Omit = omit,
1570
1589
  metadata: Dict[str, object] | Omit = omit,
1571
1590
  mobile_instance_id: str | Omit = omit,
@@ -1594,6 +1613,9 @@ class AsyncParticipantResource(AsyncAPIResource):
1594
1613
  non-affiliate without `affiliateStatus`. Existing participants are returned
1595
1614
  unchanged.
1596
1615
 
1616
+ language: The language of the participant's portal and program emails. Must be one of the
1617
+ program's languages. Applied only when this request creates the participant.
1618
+
1597
1619
  metadata: Shallow custom metadata object.
1598
1620
 
1599
1621
  mobile_instance_id: Optional app-install scoped identifier for native mobile anti-fraud. Recommended
@@ -1626,6 +1648,7 @@ class AsyncParticipantResource(AsyncAPIResource):
1626
1648
  "first_name": first_name,
1627
1649
  "ip_address": ip_address,
1628
1650
  "is_affiliate": is_affiliate,
1651
+ "language": language,
1629
1652
  "last_name": last_name,
1630
1653
  "metadata": metadata,
1631
1654
  "mobile_instance_id": mobile_instance_id,
@@ -2287,7 +2310,7 @@ class AsyncParticipantResource(AsyncAPIResource):
2287
2310
  name, postal address, and an unsubscribe link are added automatically, and
2288
2311
  unsubscribed participants are suppressed). Sending requires the team to be
2289
2312
  verified by GrowSurf. Requires a **verified custom email domain** on the program
2290
- (which can be completed in *Campaign Editor > 3. Emails > Email Settings*).
2313
+ (which can be completed in *Program Editor > 3. Emails > Email Settings*).
2291
2314
  Returns `400` until one is verified. The email is accepted for delivery.
2292
2315
 
2293
2316
  Args:
@@ -58,8 +58,8 @@ class RewardResource(SyncAPIResource):
58
58
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
59
59
  ) -> RewardDeleteResponse:
60
60
  """
61
- Removes a manually approved participant reward that has not already been
62
- approved.
61
+ Removes a participant reward that requires manual approval and has not yet
62
+ been approved.
63
63
 
64
64
  Args:
65
65
  extra_headers: Send extra headers
@@ -96,7 +96,7 @@ class RewardResource(SyncAPIResource):
96
96
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
97
97
  ) -> RewardApproveResponse:
98
98
  """
99
- Approves a manually approved reward earned by a participant. This requires
99
+ Approves a participant reward that requires manual approval. This requires
100
100
  `reward:write`. When the request also sets `fulfill` to `true`, it additionally
101
101
  requires `reward:fulfill`.
102
102
 
@@ -196,8 +196,8 @@ class AsyncRewardResource(AsyncAPIResource):
196
196
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
197
197
  ) -> RewardDeleteResponse:
198
198
  """
199
- Removes a manually approved participant reward that has not already been
200
- approved.
199
+ Removes a participant reward that requires manual approval and has not yet
200
+ been approved.
201
201
 
202
202
  Args:
203
203
  extra_headers: Send extra headers
@@ -234,7 +234,7 @@ class AsyncRewardResource(AsyncAPIResource):
234
234
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
235
235
  ) -> RewardApproveResponse:
236
236
  """
237
- Approves a manually approved reward earned by a participant. This requires
237
+ Approves a participant reward that requires manual approval. This requires
238
238
  `reward:write`. When the request also sets `fulfill` to `true`, it additionally
239
239
  requires `reward:fulfill`.
240
240
 
@@ -5,6 +5,7 @@ from __future__ import annotations
5
5
  from .reward import Reward as Reward
6
6
  from .webhook import Webhook as Webhook
7
7
  from .campaign import Campaign as Campaign
8
+ from .language import Language as Language
8
9
  from .integration import Integration as Integration
9
10
  from .participant import Participant as Participant
10
11
  from .webhook_event import WebhookEvent as WebhookEvent
@@ -8,8 +8,9 @@ __all__ = ["CampaignOptions"]
8
8
  # A program's options (the dashboard Program Editor's Options tab): reward/fraud
9
9
  # approval, anti-fraud lists + toggles, the `LAST_CLICK` or `FIRST_CLICK`
10
10
  # attribution model, referral windows, reCAPTCHA, affiliate enrollment +
11
- # application review, payout + tax settings (affiliate only), and notification-
12
- # email settings. It is intentionally modeled as a loose object. To see the full
11
+ # application review, payout + tax settings (affiliate only), notification-email
12
+ # settings, and the program's `languages` (`baseLanguage` and
13
+ # `additionalLanguages`). It is intentionally modeled as a loose object. To see the full
13
14
  # object with every field and its current value, `GET` the resource, then `PATCH`
14
15
  # back only the fields you want to change.
15
16
  CampaignOptions: TypeAlias = Dict[str, object]
@@ -0,0 +1,9 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing_extensions import Literal, TypeAlias
4
+
5
+ __all__ = ["Language"]
6
+
7
+ # A language a program can run in. Participants see the portal and receive program
8
+ # emails in their language.
9
+ Language: TypeAlias = Literal["en", "es", "fr", "de", "it", "pt-BR", "nl", "pl", "sv", "tr", "ja", "ko", "zh-CN", "id"]
@@ -5,6 +5,7 @@ from typing_extensions import Literal
5
5
 
6
6
  from pydantic import Field as FieldInfo
7
7
 
8
+ from .language import Language
8
9
  from ..._models import BaseModel
9
10
  from .referral_source import ReferralSource
10
11
  from .referral_status import ReferralStatus
@@ -149,6 +150,13 @@ class Participant(BaseModel):
149
150
 
150
151
  is_winner: Optional[bool] = FieldInfo(alias="isWinner", default=None)
151
152
 
153
+ language: Optional[Language] = None
154
+ """The language of the participant's portal and program emails.
155
+
156
+ The program's base language unless the participant (or you) picked another of the
157
+ program's languages.
158
+ """
159
+
152
160
  last_name: Optional[str] = FieldInfo(alias="lastName", default=None)
153
161
 
154
162
  lead_count: Optional[int] = FieldInfo(alias="leadCount", default=None)
@@ -6,6 +6,7 @@ from typing import Dict
6
6
  from typing_extensions import Literal, Required, Annotated, TypedDict
7
7
 
8
8
  from ..._utils import PropertyInfo
9
+ from .language import Language
9
10
 
10
11
  __all__ = ["ParticipantAddParams"]
11
12
 
@@ -27,6 +28,13 @@ class ParticipantAddParams(TypedDict, total=False):
27
28
  unchanged.
28
29
  """
29
30
 
31
+ language: Language
32
+ """The language of the participant's portal and program emails.
33
+
34
+ Must be one of the program's languages. Applied only when this request creates
35
+ the participant.
36
+ """
37
+
30
38
  last_name: Annotated[str, PropertyInfo(alias="lastName")]
31
39
 
32
40
  metadata: Dict[str, object]
@@ -2,11 +2,12 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Dict
5
+ from typing import Dict, Optional
6
6
  from typing_extensions import Literal, Required, Annotated, TypedDict
7
7
 
8
8
  from ..._types import SequenceNotStr
9
9
  from ..._utils import PropertyInfo
10
+ from .language import Language
10
11
 
11
12
  __all__ = ["ParticipantUpdateParams"]
12
13
 
@@ -25,6 +26,13 @@ class ParticipantUpdateParams(TypedDict, total=False):
25
26
 
26
27
  first_name: Annotated[str, PropertyInfo(alias="firstName")]
27
28
 
29
+ language: Optional[Language]
30
+ """The language of the participant's portal and program emails.
31
+
32
+ Must be one of the program's languages (see `languages` in the program options).
33
+ Send the base language or `null` to use the program's base language.
34
+ """
35
+
28
36
  last_name: Annotated[str, PropertyInfo(alias="lastName")]
29
37
 
30
38
  metadata: Dict[str, object]
@@ -6,6 +6,7 @@ from typing import Dict
6
6
  from typing_extensions import Literal, Required, Annotated, TypedDict
7
7
 
8
8
  from .._utils import PropertyInfo
9
+ from .campaign.language import Language
9
10
 
10
11
  __all__ = ["CampaignCreateMobileParticipantTokenParams"]
11
12
 
@@ -27,6 +28,13 @@ class CampaignCreateMobileParticipantTokenParams(TypedDict, total=False):
27
28
  unchanged.
28
29
  """
29
30
 
31
+ language: Language
32
+ """The language of the participant's portal and program emails.
33
+
34
+ Must be one of the program's languages. Applied only when this request creates
35
+ the participant.
36
+ """
37
+
30
38
  last_name: Annotated[str, PropertyInfo(alias="lastName")]
31
39
 
32
40
  metadata: Dict[str, object]
@@ -104,6 +104,7 @@ class TestParticipant:
104
104
  id="id",
105
105
  email="dev@stainless.com",
106
106
  first_name="Gavin",
107
+ language="es",
107
108
  last_name="Belson",
108
109
  metadata={"company": "bar"},
109
110
  notes="notes",
@@ -278,6 +279,7 @@ class TestParticipant:
278
279
  first_name="firstName",
279
280
  ip_address="ipAddress",
280
281
  is_affiliate=True,
282
+ language="es",
281
283
  last_name="lastName",
282
284
  metadata={"foo": "bar"},
283
285
  mobile_instance_id="mobileInstanceId",
@@ -1344,6 +1346,7 @@ class TestAsyncParticipant:
1344
1346
  id="id",
1345
1347
  email="dev@stainless.com",
1346
1348
  first_name="Gavin",
1349
+ language="es",
1347
1350
  last_name="Belson",
1348
1351
  metadata={"company": "bar"},
1349
1352
  notes="notes",
@@ -1518,6 +1521,7 @@ class TestAsyncParticipant:
1518
1521
  first_name="firstName",
1519
1522
  ip_address="ipAddress",
1520
1523
  is_affiliate=True,
1524
+ language="es",
1521
1525
  last_name="lastName",
1522
1526
  metadata={"foo": "bar"},
1523
1527
  mobile_instance_id="mobileInstanceId",
@@ -318,6 +318,7 @@ class TestCampaign:
318
318
  fingerprint="fingerprint",
319
319
  first_name="firstName",
320
320
  ip_address="ipAddress",
321
+ language="es",
321
322
  last_name="lastName",
322
323
  metadata={"foo": "bar"},
323
324
  mobile_instance_id="mobileInstanceId",
@@ -1382,6 +1383,7 @@ class TestAsyncCampaign:
1382
1383
  fingerprint="fingerprint",
1383
1384
  first_name="firstName",
1384
1385
  ip_address="ipAddress",
1386
+ language="es",
1385
1387
  last_name="lastName",
1386
1388
  metadata={"foo": "bar"},
1387
1389
  mobile_instance_id="mobileInstanceId",
@@ -1,3 +0,0 @@
1
- {
2
- ".": "1.12.0"
3
- }
@@ -1,23 +0,0 @@
1
- # Security Policy
2
-
3
- ## Reporting Security Issues
4
-
5
- This SDK is generated by [Stainless Software Inc](http://stainless.com). Stainless takes security seriously, and encourages you to report any security vulnerability promptly so that appropriate action can be taken.
6
-
7
- To report a security issue, please contact the Stainless team at security@stainless.com.
8
-
9
- ## Responsible Disclosure
10
-
11
- We appreciate the efforts of security researchers and individuals who help us maintain the security of
12
- SDKs we generate. If you believe you have found a security vulnerability, please adhere to responsible
13
- disclosure practices by allowing us a reasonable amount of time to investigate and address the issue
14
- before making any information public.
15
-
16
- ## Reporting Non-SDK Related Security Issues
17
-
18
- If you encounter security issues that are not directly related to SDKs but pertain to the services
19
- or products provided by Growsurf, please follow the respective company's security reporting guidelines.
20
-
21
- ---
22
-
23
- Thank you for helping us keep the SDKs and systems they interact with secure.