growsurf-python 1.1.2__tar.gz → 1.2.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.
- growsurf_python-1.2.0/.release-please-manifest.json +3 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/CHANGELOG.md +7 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/PKG-INFO +1 -1
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/api.md +25 -8
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/pyproject.toml +1 -1
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_client.py +45 -8
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_version.py +1 -1
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/__init__.py +14 -0
- growsurf_python-1.2.0/src/growsurf/resources/account.py +185 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/campaign.py +2 -2
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/participant.py +4 -4
- growsurf_python-1.2.0/src/growsurf/resources/team.py +323 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/__init__.py +2 -2
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/create_account_response.py +8 -6
- growsurf_python-1.1.2/src/growsurf/types/account.py → growsurf_python-1.2.0/src/growsurf/types/team.py +6 -17
- growsurf_python-1.2.0/src/growsurf/types/team_update_params.py +10 -0
- growsurf_python-1.2.0/tests/api_resources/test_account.py +153 -0
- growsurf_python-1.2.0/tests/api_resources/test_team_contract.py +60 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_client.py +17 -13
- growsurf_python-1.1.2/.release-please-manifest.json +0 -3
- growsurf_python-1.1.2/src/growsurf/resources/account.py +0 -572
- growsurf_python-1.1.2/src/growsurf/types/account_update_params.py +0 -17
- growsurf_python-1.1.2/tests/api_resources/test_account.py +0 -419
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/.gitignore +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/CONTRIBUTING.md +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/LICENSE +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/README.md +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/SECURITY.md +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/bin/check-release-environment +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/bin/publish-pypi +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/examples/.keep +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/release-please-config.json +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/requirements-dev.lock +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_base_client.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_compat.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_constants.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_exceptions.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_files.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_models.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_qs.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_resource.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_streaming.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_types.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_compat.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_datetime_parse.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_json.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_logs.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_path.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_proxy.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_reflection.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_resources_proxy.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_streams.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_sync.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_transform.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_typing.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/_utils/_utils.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/lib/.keep +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/py.typed +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/commission.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/design.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/emails.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/installation.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/options.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/reward.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/rewards.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/webhooks.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/account_create_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/campaign.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/campaign_design.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/campaign_emails.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/campaign_installation.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/campaign_options.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/email_participant_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_add_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_analytics_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_analytics_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_email_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_list_rewards_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_record_transaction_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_reward.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/participant_update_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/referral_source.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/referral_status.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/reward.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/reward_create_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/reward_update_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/webhook.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/webhook_event.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_create_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_list_participants_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_list_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_retrieve_analytics_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_retrieve_analytics_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/campaign_update_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/commission_structure.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/participant_commission_list.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/participant_list.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/participant_payout_list.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/referral_list.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/rotate_api_key_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/types/verification_email_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/campaign/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/campaign/test_commission.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/campaign/test_design.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/campaign/test_emails.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/campaign/test_installation.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/campaign/test_options.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/campaign/test_participant.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/campaign/test_reward.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/campaign/test_rewards.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/campaign/test_webhooks.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/api_resources/test_campaign.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/conftest.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/sample_file.txt +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_extract_files.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_files.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_models.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_qs.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_required_args.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_streaming.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_transform.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_utils/test_json.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_utils/test_path.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_utils/test_proxy.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/test_utils/test_typing.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/tests/utils.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.0}/uv.lock +0 -0
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.2.0](https://github.com/growsurf/growsurf-python/compare/v1.1.2...v1.2.0) (2026-07-13)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **api:** add Team resource ([9efbfbd](https://github.com/growsurf/growsurf-python/commit/9efbfbdfec10336d473f9266a033d93c3e98bb9e))
|
|
9
|
+
|
|
3
10
|
## [1.1.2](https://github.com/growsurf/growsurf-python/compare/v1.1.1...v1.1.2) (2026-07-11)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: growsurf-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
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="
|
|
17
|
-
- <code title="
|
|
18
|
-
- <code title="
|
|
19
|
-
- <code title="post /
|
|
20
|
-
- <code title="post /
|
|
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
|
|
149
|
+
from growsurf.types.campaign import (
|
|
150
|
+
Reward,
|
|
151
|
+
RewardTaxValuation,
|
|
152
|
+
CampaignRewardListResponse,
|
|
153
|
+
DeleteRewardResponse,
|
|
154
|
+
)
|
|
138
155
|
```
|
|
139
156
|
|
|
140
157
|
Methods:
|
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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,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,185 @@
|
|
|
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
|
+
"""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.
|
|
54
|
+
|
|
55
|
+
Args:
|
|
56
|
+
email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
|
|
57
|
+
|
|
58
|
+
company: Company name for the new account.
|
|
59
|
+
|
|
60
|
+
first_name: First name for the new account owner.
|
|
61
|
+
|
|
62
|
+
last_name: Last name for the new account owner.
|
|
63
|
+
|
|
64
|
+
extra_headers: Send extra headers
|
|
65
|
+
|
|
66
|
+
extra_query: Add additional query parameters to the request
|
|
67
|
+
|
|
68
|
+
extra_body: Add additional JSON properties to the request
|
|
69
|
+
|
|
70
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
71
|
+
"""
|
|
72
|
+
return self._post(
|
|
73
|
+
"/accounts",
|
|
74
|
+
body=maybe_transform(
|
|
75
|
+
{
|
|
76
|
+
"email": email,
|
|
77
|
+
"company": company,
|
|
78
|
+
"first_name": first_name,
|
|
79
|
+
"last_name": last_name,
|
|
80
|
+
},
|
|
81
|
+
account_create_params.AccountCreateParams,
|
|
82
|
+
),
|
|
83
|
+
options=make_request_options(
|
|
84
|
+
extra_headers=extra_headers,
|
|
85
|
+
extra_query=extra_query,
|
|
86
|
+
extra_body=extra_body,
|
|
87
|
+
timeout=timeout,
|
|
88
|
+
security={"api_key_auth": False},
|
|
89
|
+
),
|
|
90
|
+
cast_to=CreateAccountResponse,
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class AsyncAccountResource(AsyncAPIResource):
|
|
95
|
+
"""Create a GrowSurf account and its initial API key."""
|
|
96
|
+
|
|
97
|
+
@cached_property
|
|
98
|
+
def with_raw_response(self) -> AsyncAccountResourceWithRawResponse:
|
|
99
|
+
"""Return the raw response object instead of parsed content."""
|
|
100
|
+
return AsyncAccountResourceWithRawResponse(self)
|
|
101
|
+
|
|
102
|
+
@cached_property
|
|
103
|
+
def with_streaming_response(self) -> AsyncAccountResourceWithStreamingResponse:
|
|
104
|
+
"""Stream the response instead of reading it eagerly."""
|
|
105
|
+
return AsyncAccountResourceWithStreamingResponse(self)
|
|
106
|
+
|
|
107
|
+
async def create(
|
|
108
|
+
self,
|
|
109
|
+
*,
|
|
110
|
+
email: str,
|
|
111
|
+
company: str | Omit = omit,
|
|
112
|
+
first_name: str | Omit = omit,
|
|
113
|
+
last_name: str | Omit = omit,
|
|
114
|
+
extra_headers: Headers | None = None,
|
|
115
|
+
extra_query: Query | None = None,
|
|
116
|
+
extra_body: Body | None = None,
|
|
117
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
118
|
+
) -> 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.
|
|
124
|
+
|
|
125
|
+
Args:
|
|
126
|
+
email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
|
|
127
|
+
|
|
128
|
+
company: Company name for the new account.
|
|
129
|
+
|
|
130
|
+
first_name: First name for the new account owner.
|
|
131
|
+
|
|
132
|
+
last_name: Last name for the new account owner.
|
|
133
|
+
|
|
134
|
+
extra_headers: Send extra headers
|
|
135
|
+
|
|
136
|
+
extra_query: Add additional query parameters to the request
|
|
137
|
+
|
|
138
|
+
extra_body: Add additional JSON properties to the request
|
|
139
|
+
|
|
140
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
141
|
+
"""
|
|
142
|
+
return await self._post(
|
|
143
|
+
"/accounts",
|
|
144
|
+
body=await async_maybe_transform(
|
|
145
|
+
{
|
|
146
|
+
"email": email,
|
|
147
|
+
"company": company,
|
|
148
|
+
"first_name": first_name,
|
|
149
|
+
"last_name": last_name,
|
|
150
|
+
},
|
|
151
|
+
account_create_params.AccountCreateParams,
|
|
152
|
+
),
|
|
153
|
+
options=make_request_options(
|
|
154
|
+
extra_headers=extra_headers,
|
|
155
|
+
extra_query=extra_query,
|
|
156
|
+
extra_body=extra_body,
|
|
157
|
+
timeout=timeout,
|
|
158
|
+
security={"api_key_auth": False},
|
|
159
|
+
),
|
|
160
|
+
cast_to=CreateAccountResponse,
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
class AccountResourceWithRawResponse:
|
|
165
|
+
def __init__(self, account: AccountResource) -> None:
|
|
166
|
+
self._account = account
|
|
167
|
+
self.create = to_raw_response_wrapper(account.create)
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
class AsyncAccountResourceWithRawResponse:
|
|
171
|
+
def __init__(self, account: AsyncAccountResource) -> None:
|
|
172
|
+
self._account = account
|
|
173
|
+
self.create = async_to_raw_response_wrapper(account.create)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class AccountResourceWithStreamingResponse:
|
|
177
|
+
def __init__(self, account: AccountResource) -> None:
|
|
178
|
+
self._account = account
|
|
179
|
+
self.create = to_streamed_response_wrapper(account.create)
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class AsyncAccountResourceWithStreamingResponse:
|
|
183
|
+
def __init__(self, account: AsyncAccountResource) -> None:
|
|
184
|
+
self._account = account
|
|
185
|
+
self.create = async_to_streamed_response_wrapper(account.create)
|
|
@@ -198,7 +198,7 @@ class CampaignResource(SyncAPIResource):
|
|
|
198
198
|
"""
|
|
199
199
|
Creates a new program pre-populated with type-appropriate defaults, plus any
|
|
200
200
|
optional inline rewards. The new program is created in `DRAFT` status and owned
|
|
201
|
-
by the API key's
|
|
201
|
+
by the API key's bound team. Requires the team owner's verified email.
|
|
202
202
|
|
|
203
203
|
Args:
|
|
204
204
|
type: The program type. Immutable after creation.
|
|
@@ -900,7 +900,7 @@ class AsyncCampaignResource(AsyncAPIResource):
|
|
|
900
900
|
"""
|
|
901
901
|
Creates a new program pre-populated with type-appropriate defaults, plus any
|
|
902
902
|
optional inline rewards. The new program is created in `DRAFT` status and owned
|
|
903
|
-
by the API key's
|
|
903
|
+
by the API key's bound team. Requires the team owner's verified email.
|
|
904
904
|
|
|
905
905
|
Args:
|
|
906
906
|
type: The program type. Immutable after creation.
|
{growsurf_python-1.1.2 → growsurf_python-1.2.0}/src/growsurf/resources/campaign/participant.py
RENAMED
|
@@ -980,8 +980,8 @@ class ParticipantResource(SyncAPIResource):
|
|
|
980
980
|
the program's configured email templates, OR ``subject`` + ``body`` for a
|
|
981
981
|
free-form email. Free-form emails are sent with the same compliance handling
|
|
982
982
|
(company name, postal address, and an unsubscribe link are added automatically,
|
|
983
|
-
and unsubscribed participants are suppressed). Sending requires the
|
|
984
|
-
verified by
|
|
983
|
+
and unsubscribed participants are suppressed). Sending requires the team to be
|
|
984
|
+
verified by GrowSurf. Requires a verified custom email domain on the
|
|
985
985
|
program (set up in Campaign Editor > 3. Emails > Email Settings). Returns `400`
|
|
986
986
|
until one is verified. The email is accepted for delivery.
|
|
987
987
|
|
|
@@ -2099,8 +2099,8 @@ class AsyncParticipantResource(AsyncAPIResource):
|
|
|
2099
2099
|
the program's configured email templates, OR ``subject`` + ``body`` for a
|
|
2100
2100
|
free-form email. Free-form emails are sent with the same compliance handling
|
|
2101
2101
|
(company name, postal address, and an unsubscribe link are added automatically,
|
|
2102
|
-
and unsubscribed participants are suppressed). Sending requires the
|
|
2103
|
-
verified by
|
|
2102
|
+
and unsubscribed participants are suppressed). Sending requires the team to be
|
|
2103
|
+
verified by GrowSurf. Requires a verified custom email domain on the
|
|
2104
2104
|
program (set up in Campaign Editor > 3. Emails > Email Settings). Returns `400`
|
|
2105
2105
|
until one is verified. The email is accepted for delivery.
|
|
2106
2106
|
|