growsurf-python 1.1.2__tar.gz → 1.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- growsurf_python-1.2.1/.release-please-manifest.json +3 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/CHANGELOG.md +14 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/PKG-INFO +1 -1
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/api.md +25 -8
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/pyproject.toml +1 -1
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_client.py +45 -8
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_version.py +1 -1
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/__init__.py +14 -0
- growsurf_python-1.2.1/src/growsurf/resources/account.py +205 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/campaign.py +22 -22
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/commission.py +6 -4
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/design.py +14 -12
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/emails.py +16 -18
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/installation.py +16 -16
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/options.py +20 -22
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/participant.py +94 -90
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/reward.py +8 -6
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/rewards.py +30 -16
- growsurf_python-1.2.1/src/growsurf/resources/team.py +343 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/__init__.py +2 -2
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/create_account_response.py +8 -6
- growsurf_python-1.1.2/src/growsurf/types/account.py → growsurf_python-1.2.1/src/growsurf/types/team.py +6 -17
- growsurf_python-1.2.1/src/growsurf/types/team_update_params.py +10 -0
- growsurf_python-1.2.1/tests/api_resources/test_account.py +153 -0
- growsurf_python-1.2.1/tests/api_resources/test_team_contract.py +60 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/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.1}/.gitignore +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/CONTRIBUTING.md +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/LICENSE +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/README.md +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/SECURITY.md +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/bin/check-release-environment +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/bin/publish-pypi +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/examples/.keep +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/release-please-config.json +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/requirements-dev.lock +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_base_client.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_compat.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_constants.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_exceptions.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_files.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_models.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_qs.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_resource.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_streaming.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_types.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_compat.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_datetime_parse.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_json.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_logs.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_path.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_proxy.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_reflection.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_resources_proxy.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_streams.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_sync.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_transform.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_typing.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/_utils/_utils.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/lib/.keep +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/py.typed +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/webhooks.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/account_create_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_design.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_emails.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_installation.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_options.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/email_participant_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_add_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_analytics_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_analytics_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_email_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_list_rewards_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_record_transaction_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_reward.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/participant_update_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/referral_source.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/referral_status.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_create_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/reward_update_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_event.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_create_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_participants_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_list_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_retrieve_analytics_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_retrieve_analytics_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/campaign_update_params.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/commission_structure.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/participant_commission_list.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/participant_list.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/participant_payout_list.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/referral_list.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/rotate_api_key_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/types/verification_email_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/__init__.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_commission.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_design.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_emails.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_installation.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_options.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_participant.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_reward.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_rewards.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/campaign/test_webhooks.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/api_resources/test_campaign.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/conftest.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/sample_file.txt +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_extract_files.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_files.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_models.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_qs.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_required_args.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_response.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_streaming.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_transform.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_utils/test_datetime_parse.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_utils/test_json.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_utils/test_path.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_utils/test_proxy.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/test_utils/test_typing.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/tests/utils.py +0 -0
- {growsurf_python-1.1.2 → growsurf_python-1.2.1}/uv.lock +0 -0
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.2.1](https://github.com/growsurf/growsurf-python/compare/v1.2.0...v1.2.1) (2026-07-14)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* align method docs with the REST v2 contract ([57e44e9](https://github.com/growsurf/growsurf-python/commit/57e44e906100c23d85d5dfbfabcd3821ef14d629))
|
|
9
|
+
|
|
10
|
+
## [1.2.0](https://github.com/growsurf/growsurf-python/compare/v1.1.2...v1.2.0) (2026-07-13)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* **api:** add Team resource ([9efbfbd](https://github.com/growsurf/growsurf-python/commit/9efbfbdfec10336d473f9266a033d93c3e98bb9e))
|
|
16
|
+
|
|
3
17
|
## [1.1.2](https://github.com/growsurf/growsurf-python/compare/v1.1.1...v1.1.2) (2026-07-11)
|
|
4
18
|
|
|
5
19
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: growsurf-python
|
|
3
|
-
Version: 1.1
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Summary: The official Python library for the growsurf API
|
|
5
5
|
Project-URL: Homepage, https://github.com/growsurf/growsurf-python
|
|
6
6
|
Project-URL: Repository, https://github.com/growsurf/growsurf-python
|
|
@@ -4,8 +4,21 @@ Types:
|
|
|
4
4
|
|
|
5
5
|
```python
|
|
6
6
|
from growsurf.types import (
|
|
7
|
-
Account,
|
|
8
7
|
CreateAccountResponse,
|
|
8
|
+
)
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Methods:
|
|
12
|
+
|
|
13
|
+
- <code title="post /accounts">client.account.<a href="./src/growsurf/resources/account.py">create</a>(\*\*<a href="src/growsurf/types/account_create_params.py">params</a>) -> <a href="./src/growsurf/types/create_account_response.py">CreateAccountResponse</a></code>
|
|
14
|
+
|
|
15
|
+
# Team
|
|
16
|
+
|
|
17
|
+
Types:
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
from growsurf.types import (
|
|
21
|
+
Team,
|
|
9
22
|
RotateApiKeyResponse,
|
|
10
23
|
VerificationEmailResponse,
|
|
11
24
|
)
|
|
@@ -13,12 +26,11 @@ from growsurf.types import (
|
|
|
13
26
|
|
|
14
27
|
Methods:
|
|
15
28
|
|
|
16
|
-
- <code title="
|
|
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,205 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import httpx
|
|
6
|
+
|
|
7
|
+
from ..types import account_create_params
|
|
8
|
+
from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
|
|
9
|
+
from .._utils import maybe_transform, async_maybe_transform
|
|
10
|
+
from .._compat import cached_property
|
|
11
|
+
from .._resource import SyncAPIResource, AsyncAPIResource
|
|
12
|
+
from .._response import (
|
|
13
|
+
to_raw_response_wrapper,
|
|
14
|
+
to_streamed_response_wrapper,
|
|
15
|
+
async_to_raw_response_wrapper,
|
|
16
|
+
async_to_streamed_response_wrapper,
|
|
17
|
+
)
|
|
18
|
+
from .._base_client import make_request_options
|
|
19
|
+
from ..types.create_account_response import CreateAccountResponse
|
|
20
|
+
|
|
21
|
+
__all__ = ["AccountResource", "AsyncAccountResource"]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class AccountResource(SyncAPIResource):
|
|
25
|
+
"""Create a GrowSurf account and its initial API key."""
|
|
26
|
+
|
|
27
|
+
@cached_property
|
|
28
|
+
def with_raw_response(self) -> AccountResourceWithRawResponse:
|
|
29
|
+
"""Return the raw response object instead of parsed content."""
|
|
30
|
+
return AccountResourceWithRawResponse(self)
|
|
31
|
+
|
|
32
|
+
@cached_property
|
|
33
|
+
def with_streaming_response(self) -> AccountResourceWithStreamingResponse:
|
|
34
|
+
"""Stream the response instead of reading it eagerly."""
|
|
35
|
+
return AccountResourceWithStreamingResponse(self)
|
|
36
|
+
|
|
37
|
+
def create(
|
|
38
|
+
self,
|
|
39
|
+
*,
|
|
40
|
+
email: str,
|
|
41
|
+
company: str | Omit = omit,
|
|
42
|
+
first_name: str | Omit = omit,
|
|
43
|
+
last_name: str | Omit = omit,
|
|
44
|
+
extra_headers: Headers | None = None,
|
|
45
|
+
extra_query: Query | None = None,
|
|
46
|
+
extra_body: Body | None = None,
|
|
47
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
48
|
+
) -> CreateAccountResponse:
|
|
49
|
+
"""
|
|
50
|
+
Creates a new GrowSurf account. This is the only endpoint that does not require
|
|
51
|
+
an API key. The response includes an API key for the new account, shown once in
|
|
52
|
+
the response. The key is locked until the team owner's email address is
|
|
53
|
+
verified: authenticated program and resource endpoints return a `403` with error
|
|
54
|
+
code `EMAIL_NOT_VERIFIED_ERROR` until then (resend the email via `POST
|
|
55
|
+
/team/owner/verification-email`, then retry). A welcome email is sent to the
|
|
56
|
+
address with the verification link and a set-password link for dashboard access.
|
|
57
|
+
Accounts whose email is never verified are deleted automatically after 7 days.
|
|
58
|
+
For security, the API key is rotated the first time the account owner signs in
|
|
59
|
+
to the GrowSurf dashboard. Some actions (such as emailing participants)
|
|
60
|
+
additionally require GrowSurf to verify the team first. By creating an account
|
|
61
|
+
you agree, on behalf of the account holder, to GrowSurf's [Terms of
|
|
62
|
+
Service](https://growsurf.com/terms) and [Privacy
|
|
63
|
+
Policy](https://growsurf.com/privacy).
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
|
|
67
|
+
|
|
68
|
+
company: Company name for the new account.
|
|
69
|
+
|
|
70
|
+
first_name: First name for the new account owner.
|
|
71
|
+
|
|
72
|
+
last_name: Last name for the new account owner.
|
|
73
|
+
|
|
74
|
+
extra_headers: Send extra headers
|
|
75
|
+
|
|
76
|
+
extra_query: Add additional query parameters to the request
|
|
77
|
+
|
|
78
|
+
extra_body: Add additional JSON properties to the request
|
|
79
|
+
|
|
80
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
81
|
+
"""
|
|
82
|
+
return self._post(
|
|
83
|
+
"/accounts",
|
|
84
|
+
body=maybe_transform(
|
|
85
|
+
{
|
|
86
|
+
"email": email,
|
|
87
|
+
"company": company,
|
|
88
|
+
"first_name": first_name,
|
|
89
|
+
"last_name": last_name,
|
|
90
|
+
},
|
|
91
|
+
account_create_params.AccountCreateParams,
|
|
92
|
+
),
|
|
93
|
+
options=make_request_options(
|
|
94
|
+
extra_headers=extra_headers,
|
|
95
|
+
extra_query=extra_query,
|
|
96
|
+
extra_body=extra_body,
|
|
97
|
+
timeout=timeout,
|
|
98
|
+
security={"api_key_auth": False},
|
|
99
|
+
),
|
|
100
|
+
cast_to=CreateAccountResponse,
|
|
101
|
+
)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
class AsyncAccountResource(AsyncAPIResource):
|
|
105
|
+
"""Create a GrowSurf account and its initial API key."""
|
|
106
|
+
|
|
107
|
+
@cached_property
|
|
108
|
+
def with_raw_response(self) -> AsyncAccountResourceWithRawResponse:
|
|
109
|
+
"""Return the raw response object instead of parsed content."""
|
|
110
|
+
return AsyncAccountResourceWithRawResponse(self)
|
|
111
|
+
|
|
112
|
+
@cached_property
|
|
113
|
+
def with_streaming_response(self) -> AsyncAccountResourceWithStreamingResponse:
|
|
114
|
+
"""Stream the response instead of reading it eagerly."""
|
|
115
|
+
return AsyncAccountResourceWithStreamingResponse(self)
|
|
116
|
+
|
|
117
|
+
async def create(
|
|
118
|
+
self,
|
|
119
|
+
*,
|
|
120
|
+
email: str,
|
|
121
|
+
company: str | Omit = omit,
|
|
122
|
+
first_name: str | Omit = omit,
|
|
123
|
+
last_name: str | Omit = omit,
|
|
124
|
+
extra_headers: Headers | None = None,
|
|
125
|
+
extra_query: Query | None = None,
|
|
126
|
+
extra_body: Body | None = None,
|
|
127
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
128
|
+
) -> CreateAccountResponse:
|
|
129
|
+
"""
|
|
130
|
+
Creates a new GrowSurf account. This is the only endpoint that does not require
|
|
131
|
+
an API key. The response includes an API key for the new account, shown once in
|
|
132
|
+
the response. The key is locked until the team owner's email address is
|
|
133
|
+
verified: authenticated program and resource endpoints return a `403` with error
|
|
134
|
+
code `EMAIL_NOT_VERIFIED_ERROR` until then (resend the email via `POST
|
|
135
|
+
/team/owner/verification-email`, then retry). A welcome email is sent to the
|
|
136
|
+
address with the verification link and a set-password link for dashboard access.
|
|
137
|
+
Accounts whose email is never verified are deleted automatically after 7 days.
|
|
138
|
+
For security, the API key is rotated the first time the account owner signs in
|
|
139
|
+
to the GrowSurf dashboard. Some actions (such as emailing participants)
|
|
140
|
+
additionally require GrowSurf to verify the team first. By creating an account
|
|
141
|
+
you agree, on behalf of the account holder, to GrowSurf's [Terms of
|
|
142
|
+
Service](https://growsurf.com/terms) and [Privacy
|
|
143
|
+
Policy](https://growsurf.com/privacy).
|
|
144
|
+
|
|
145
|
+
Args:
|
|
146
|
+
email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
|
|
147
|
+
|
|
148
|
+
company: Company name for the new account.
|
|
149
|
+
|
|
150
|
+
first_name: First name for the new account owner.
|
|
151
|
+
|
|
152
|
+
last_name: Last name for the new account owner.
|
|
153
|
+
|
|
154
|
+
extra_headers: Send extra headers
|
|
155
|
+
|
|
156
|
+
extra_query: Add additional query parameters to the request
|
|
157
|
+
|
|
158
|
+
extra_body: Add additional JSON properties to the request
|
|
159
|
+
|
|
160
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
161
|
+
"""
|
|
162
|
+
return await self._post(
|
|
163
|
+
"/accounts",
|
|
164
|
+
body=await async_maybe_transform(
|
|
165
|
+
{
|
|
166
|
+
"email": email,
|
|
167
|
+
"company": company,
|
|
168
|
+
"first_name": first_name,
|
|
169
|
+
"last_name": last_name,
|
|
170
|
+
},
|
|
171
|
+
account_create_params.AccountCreateParams,
|
|
172
|
+
),
|
|
173
|
+
options=make_request_options(
|
|
174
|
+
extra_headers=extra_headers,
|
|
175
|
+
extra_query=extra_query,
|
|
176
|
+
extra_body=extra_body,
|
|
177
|
+
timeout=timeout,
|
|
178
|
+
security={"api_key_auth": False},
|
|
179
|
+
),
|
|
180
|
+
cast_to=CreateAccountResponse,
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
class AccountResourceWithRawResponse:
|
|
185
|
+
def __init__(self, account: AccountResource) -> None:
|
|
186
|
+
self._account = account
|
|
187
|
+
self.create = to_raw_response_wrapper(account.create)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
class AsyncAccountResourceWithRawResponse:
|
|
191
|
+
def __init__(self, account: AsyncAccountResource) -> None:
|
|
192
|
+
self._account = account
|
|
193
|
+
self.create = async_to_raw_response_wrapper(account.create)
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
class AccountResourceWithStreamingResponse:
|
|
197
|
+
def __init__(self, account: AccountResource) -> None:
|
|
198
|
+
self._account = account
|
|
199
|
+
self.create = to_streamed_response_wrapper(account.create)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
class AsyncAccountResourceWithStreamingResponse:
|
|
203
|
+
def __init__(self, account: AsyncAccountResource) -> None:
|
|
204
|
+
self._account = account
|
|
205
|
+
self.create = async_to_streamed_response_wrapper(account.create)
|
|
@@ -196,9 +196,8 @@ class CampaignResource(SyncAPIResource):
|
|
|
196
196
|
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
197
197
|
) -> Campaign:
|
|
198
198
|
"""
|
|
199
|
-
Creates a new program
|
|
200
|
-
|
|
201
|
-
by the API key's account. Requires a verified account email.
|
|
199
|
+
Creates a new program, plus any optional program rewards. The new program is
|
|
200
|
+
created in `DRAFT` status and owned by the API key's bound team.
|
|
202
201
|
|
|
203
202
|
Args:
|
|
204
203
|
type: The program type. Immutable after creation.
|
|
@@ -289,8 +288,8 @@ class CampaignResource(SyncAPIResource):
|
|
|
289
288
|
Updates a program's identity and lifecycle. Only the fields you send are
|
|
290
289
|
changed. `type`, `urlId`, and `currencyISO` are immutable. Editor-tab
|
|
291
290
|
configuration (design, emails, options, installation) is edited via the
|
|
292
|
-
dedicated config sub-resources, not here. The program cannot be deleted via
|
|
293
|
-
|
|
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
|
|
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
|
|
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
|
|
766
|
-
(
|
|
767
|
-
|
|
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
|
|
902
|
-
|
|
903
|
-
by the API key's account. Requires a verified account email.
|
|
901
|
+
Creates a new program, plus any optional program rewards. The new program is
|
|
902
|
+
created in `DRAFT` status and owned by the API key's bound team.
|
|
904
903
|
|
|
905
904
|
Args:
|
|
906
905
|
type: The program type. Immutable after creation.
|
|
@@ -991,8 +990,8 @@ class AsyncCampaignResource(AsyncAPIResource):
|
|
|
991
990
|
Updates a program's identity and lifecycle. Only the fields you send are
|
|
992
991
|
changed. `type`, `urlId`, and `currencyISO` are immutable. Editor-tab
|
|
993
992
|
configuration (design, emails, options, installation) is edited via the
|
|
994
|
-
dedicated config sub-resources, not here. The program cannot be deleted via
|
|
995
|
-
|
|
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
|
|
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
|
|
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
|
|
1468
|
-
(
|
|
1469
|
-
|
|
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.
|
{growsurf_python-1.1.2 → growsurf_python-1.2.1}/src/growsurf/resources/campaign/commission.py
RENAMED
|
@@ -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
|
|
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
|
|
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
|