growsurf-python 1.17.0__tar.gz → 1.19.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.19.0/.release-please-manifest.json +3 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/CHANGELOG.md +16 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/PKG-INFO +1 -1
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/api.md +0 -14
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/pyproject.toml +1 -1
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_client.py +1 -38
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_version.py +1 -1
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/__init__.py +0 -14
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/campaign.py +4 -4
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/participant.py +4 -4
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/__init__.py +0 -2
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/language.py +2 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_add_params.py +1 -1
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_reward.py +26 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +1 -1
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/test_team_contract.py +1 -7
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/uv.lock +1 -1
- growsurf_python-1.17.0/.release-please-manifest.json +0 -3
- growsurf_python-1.17.0/src/growsurf/resources/account.py +0 -219
- growsurf_python-1.17.0/src/growsurf/types/account_create_params.py +0 -23
- growsurf_python-1.17.0/src/growsurf/types/create_account_response.py +0 -29
- growsurf_python-1.17.0/tests/api_resources/test_account.py +0 -153
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/.gitignore +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/CONTRIBUTING.md +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/LICENSE +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/README.md +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/SECURITY.md +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/bin/check-release-environment +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/bin/publish-pypi +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/examples/.keep +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/release-please-config.json +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/requirements-dev.lock +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/__init__.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_base_client.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_compat.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_constants.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_exceptions.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_files.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_models.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_qs.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_resource.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_streaming.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_types.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/__init__.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_compat.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_datetime_parse.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_json.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_logs.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_path.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_proxy.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_reflection.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_resources_proxy.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_streams.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_sync.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_transform.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_typing.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/_utils/_utils.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/lib/.keep +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/py.typed +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/__init__.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/commission.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/custom_domain.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/design.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/emails.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/installation.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/integrations.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/options.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/program_resources.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/reward.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/rewards.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/webhooks.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/team.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/affiliate_application.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/affiliate_application_answer.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/affiliate_application_list_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/affiliate_invite.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/affiliate_invite_list_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/analytics_availability.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/analytics_unavailable_reason.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/__init__.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_custom_domain.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_design.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_emails.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_installation.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_options.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/custom_domain_set_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/delete_campaign_custom_domain_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/delete_program_resource_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/email_participant_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/integration.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/integration_list_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_activation_analytics.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_analytics_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_analytics_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_email_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_get_payout_destination_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_list_rewards_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_record_transaction_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_update_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/pending_analytics_erasure.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/program_resource.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/program_resource_list_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/program_resource_upload_result.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/program_resource_upload_ticket.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/referral_source.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/referral_status.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_create_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/reward_update_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_event.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_activation_analytics_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_create_affiliate_invite_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_create_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_engagement_analytics.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_affiliate_applications_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_affiliate_invites_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_participants_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_list_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_retrieve_activation_analytics_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_retrieve_analytics_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_retrieve_analytics_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_review_affiliate_application_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign_update_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/commission_structure.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/email_analytics.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/participant_commission_list.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/participant_list.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/participant_payout_list.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/referral_flow_screenshot.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/referral_flow_screenshots_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/referral_list.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/rotate_api_key_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/team.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/team_update_params.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/verification_email_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/__init__.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/__init__.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/__init__.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_commission.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_custom_domain.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_design.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_emails.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_installation.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_integrations.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_options.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_participant.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_program_resources.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_reward.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_rewards.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/campaign/test_webhooks.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/api_resources/test_campaign.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/conftest.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/sample_file.txt +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_client.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_extract_files.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_files.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_models.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_qs.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_required_args.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_response.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_streaming.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_transform.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_utils/test_json.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_utils/test_path.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_utils/test_proxy.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/test_utils/test_typing.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_affiliate_application.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_analytics_reward_status.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_email_analytics.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_lead_reward_events.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_participant_activation_engagement_analytics.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_participant_contract.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_payout_provider_forward_compat.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/types/test_referral_source.py +0 -0
- {growsurf_python-1.17.0 → growsurf_python-1.19.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.19.0](https://github.com/growsurf/growsurf-python/compare/v1.18.0...v1.19.0) (2026-11-04)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add reward amountSource and percentOff, and zh-TW and es-419 languages ([b0011f8](https://github.com/growsurf/growsurf-python/commit/b0011f8dbbb97057fc98977412e0dbabc37f283a))
|
|
9
|
+
* add reward amountSource and percentOff, and zh-TW and es-419 languages ([a3a8427](https://github.com/growsurf/growsurf-python/commit/a3a8427f3722d23146f31ee994974d96bb028c0a))
|
|
10
|
+
|
|
11
|
+
## [1.18.0](https://github.com/growsurf/growsurf-python/compare/v1.17.0...v1.18.0) (2026-11-03)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* remove account create method (endpoint retired) ([0a464f2](https://github.com/growsurf/growsurf-python/commit/0a464f2e5d7bcb644d333545907b1847117936a2))
|
|
17
|
+
* remove account create method (endpoint retired) ([7a60066](https://github.com/growsurf/growsurf-python/commit/7a60066f82a98eb1715fd457c76a7e1dc63bd386))
|
|
18
|
+
|
|
3
19
|
## [1.17.0](https://github.com/growsurf/growsurf-python/compare/v1.16.0...v1.17.0) (2026-11-03)
|
|
4
20
|
|
|
5
21
|
|
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
# Account
|
|
2
|
-
|
|
3
|
-
Types:
|
|
4
|
-
|
|
5
|
-
```python
|
|
6
|
-
from growsurf.types import (
|
|
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
1
|
# Team
|
|
16
2
|
|
|
17
3
|
Types:
|
|
@@ -36,9 +36,8 @@ from ._base_client import (
|
|
|
36
36
|
)
|
|
37
37
|
|
|
38
38
|
if TYPE_CHECKING:
|
|
39
|
-
from .resources import team,
|
|
39
|
+
from .resources import team, campaign
|
|
40
40
|
from .resources.team import TeamResource, AsyncTeamResource
|
|
41
|
-
from .resources.account import AccountResource, AsyncAccountResource
|
|
42
41
|
from .resources.campaign.campaign import CampaignResource, AsyncCampaignResource
|
|
43
42
|
|
|
44
43
|
__all__ = [
|
|
@@ -116,12 +115,6 @@ class Growsurf(SyncAPIClient):
|
|
|
116
115
|
)
|
|
117
116
|
self._idempotency_header = "Idempotency-Key"
|
|
118
117
|
|
|
119
|
-
@cached_property
|
|
120
|
-
def account(self) -> AccountResource:
|
|
121
|
-
from .resources.account import AccountResource
|
|
122
|
-
|
|
123
|
-
return AccountResource(self)
|
|
124
|
-
|
|
125
118
|
@cached_property
|
|
126
119
|
def team(self) -> TeamResource:
|
|
127
120
|
from .resources.team import TeamResource
|
|
@@ -319,12 +312,6 @@ class AsyncGrowsurf(AsyncAPIClient):
|
|
|
319
312
|
)
|
|
320
313
|
self._idempotency_header = "Idempotency-Key"
|
|
321
314
|
|
|
322
|
-
@cached_property
|
|
323
|
-
def account(self) -> AsyncAccountResource:
|
|
324
|
-
from .resources.account import AsyncAccountResource
|
|
325
|
-
|
|
326
|
-
return AsyncAccountResource(self)
|
|
327
|
-
|
|
328
315
|
@cached_property
|
|
329
316
|
def team(self) -> AsyncTeamResource:
|
|
330
317
|
from .resources.team import AsyncTeamResource
|
|
@@ -465,12 +452,6 @@ class GrowsurfWithRawResponse:
|
|
|
465
452
|
def __init__(self, client: Growsurf) -> None:
|
|
466
453
|
self._client = client
|
|
467
454
|
|
|
468
|
-
@cached_property
|
|
469
|
-
def account(self) -> account.AccountResourceWithRawResponse:
|
|
470
|
-
from .resources.account import AccountResourceWithRawResponse
|
|
471
|
-
|
|
472
|
-
return AccountResourceWithRawResponse(self._client.account)
|
|
473
|
-
|
|
474
455
|
@cached_property
|
|
475
456
|
def team(self) -> team.TeamResourceWithRawResponse:
|
|
476
457
|
from .resources.team import TeamResourceWithRawResponse
|
|
@@ -490,12 +471,6 @@ class AsyncGrowsurfWithRawResponse:
|
|
|
490
471
|
def __init__(self, client: AsyncGrowsurf) -> None:
|
|
491
472
|
self._client = client
|
|
492
473
|
|
|
493
|
-
@cached_property
|
|
494
|
-
def account(self) -> account.AsyncAccountResourceWithRawResponse:
|
|
495
|
-
from .resources.account import AsyncAccountResourceWithRawResponse
|
|
496
|
-
|
|
497
|
-
return AsyncAccountResourceWithRawResponse(self._client.account)
|
|
498
|
-
|
|
499
474
|
@cached_property
|
|
500
475
|
def team(self) -> team.AsyncTeamResourceWithRawResponse:
|
|
501
476
|
from .resources.team import AsyncTeamResourceWithRawResponse
|
|
@@ -515,12 +490,6 @@ class GrowsurfWithStreamedResponse:
|
|
|
515
490
|
def __init__(self, client: Growsurf) -> None:
|
|
516
491
|
self._client = client
|
|
517
492
|
|
|
518
|
-
@cached_property
|
|
519
|
-
def account(self) -> account.AccountResourceWithStreamingResponse:
|
|
520
|
-
from .resources.account import AccountResourceWithStreamingResponse
|
|
521
|
-
|
|
522
|
-
return AccountResourceWithStreamingResponse(self._client.account)
|
|
523
|
-
|
|
524
493
|
@cached_property
|
|
525
494
|
def team(self) -> team.TeamResourceWithStreamingResponse:
|
|
526
495
|
from .resources.team import TeamResourceWithStreamingResponse
|
|
@@ -540,12 +509,6 @@ class AsyncGrowsurfWithStreamedResponse:
|
|
|
540
509
|
def __init__(self, client: AsyncGrowsurf) -> None:
|
|
541
510
|
self._client = client
|
|
542
511
|
|
|
543
|
-
@cached_property
|
|
544
|
-
def account(self) -> account.AsyncAccountResourceWithStreamingResponse:
|
|
545
|
-
from .resources.account import AsyncAccountResourceWithStreamingResponse
|
|
546
|
-
|
|
547
|
-
return AsyncAccountResourceWithStreamingResponse(self._client.account)
|
|
548
|
-
|
|
549
512
|
@cached_property
|
|
550
513
|
def team(self) -> team.AsyncTeamResourceWithStreamingResponse:
|
|
551
514
|
from .resources.team import AsyncTeamResourceWithStreamingResponse
|
|
@@ -8,14 +8,6 @@ from .team import (
|
|
|
8
8
|
TeamResourceWithStreamingResponse,
|
|
9
9
|
AsyncTeamResourceWithStreamingResponse,
|
|
10
10
|
)
|
|
11
|
-
from .account import (
|
|
12
|
-
AccountResource,
|
|
13
|
-
AsyncAccountResource,
|
|
14
|
-
AccountResourceWithRawResponse,
|
|
15
|
-
AsyncAccountResourceWithRawResponse,
|
|
16
|
-
AccountResourceWithStreamingResponse,
|
|
17
|
-
AsyncAccountResourceWithStreamingResponse,
|
|
18
|
-
)
|
|
19
11
|
from .campaign import (
|
|
20
12
|
CampaignResource,
|
|
21
13
|
AsyncCampaignResource,
|
|
@@ -26,12 +18,6 @@ from .campaign import (
|
|
|
26
18
|
)
|
|
27
19
|
|
|
28
20
|
__all__ = [
|
|
29
|
-
"AccountResource",
|
|
30
|
-
"AsyncAccountResource",
|
|
31
|
-
"AccountResourceWithRawResponse",
|
|
32
|
-
"AsyncAccountResourceWithRawResponse",
|
|
33
|
-
"AccountResourceWithStreamingResponse",
|
|
34
|
-
"AsyncAccountResourceWithStreamingResponse",
|
|
35
21
|
"TeamResource",
|
|
36
22
|
"AsyncTeamResource",
|
|
37
23
|
"TeamResourceWithRawResponse",
|
{growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/campaign.py
RENAMED
|
@@ -487,8 +487,8 @@ class CampaignResource(SyncAPIResource):
|
|
|
487
487
|
is_affiliate: Affiliate programs only. Controls affiliate enrollment for a new participant.
|
|
488
488
|
|
|
489
489
|
language: The language of the participant's portal and program emails. Stored when it is one of
|
|
490
|
-
the program's languages. A regional tag maps to its language (for example, `
|
|
491
|
-
stored as `
|
|
490
|
+
the program's languages. A regional tag maps to its language (for example, `fr-BE` is
|
|
491
|
+
stored as `fr`). Any other value is ignored and the program's base language applies.
|
|
492
492
|
Applied only when this request creates the participant.
|
|
493
493
|
|
|
494
494
|
referred_at: When the participant was referred, in Unix milliseconds. Used only with a valid
|
|
@@ -1732,8 +1732,8 @@ class AsyncCampaignResource(AsyncAPIResource):
|
|
|
1732
1732
|
is_affiliate: Affiliate programs only. Controls affiliate enrollment for a new participant.
|
|
1733
1733
|
|
|
1734
1734
|
language: The language of the participant's portal and program emails. Stored when it is one of
|
|
1735
|
-
the program's languages. A regional tag maps to its language (for example, `
|
|
1736
|
-
stored as `
|
|
1735
|
+
the program's languages. A regional tag maps to its language (for example, `fr-BE` is
|
|
1736
|
+
stored as `fr`). Any other value is ignored and the program's base language applies.
|
|
1737
1737
|
Applied only when this request creates the participant.
|
|
1738
1738
|
|
|
1739
1739
|
referred_at: When the participant was referred, in Unix milliseconds. Used only with a valid
|
{growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/resources/campaign/participant.py
RENAMED
|
@@ -337,8 +337,8 @@ class ParticipantResource(SyncAPIResource):
|
|
|
337
337
|
unchanged.
|
|
338
338
|
|
|
339
339
|
language: The language of the participant's portal and program emails. Stored when it is one of
|
|
340
|
-
the program's languages. A regional tag maps to its language (for example, `
|
|
341
|
-
stored as `
|
|
340
|
+
the program's languages. A regional tag maps to its language (for example, `fr-BE` is
|
|
341
|
+
stored as `fr`). Any other value is ignored and the program's base language applies.
|
|
342
342
|
Applied only when this request creates the participant.
|
|
343
343
|
|
|
344
344
|
metadata: Shallow custom metadata object.
|
|
@@ -1624,8 +1624,8 @@ class AsyncParticipantResource(AsyncAPIResource):
|
|
|
1624
1624
|
unchanged.
|
|
1625
1625
|
|
|
1626
1626
|
language: The language of the participant's portal and program emails. Stored when it is one of
|
|
1627
|
-
the program's languages. A regional tag maps to its language (for example, `
|
|
1628
|
-
stored as `
|
|
1627
|
+
the program's languages. A regional tag maps to its language (for example, `fr-BE` is
|
|
1628
|
+
stored as `fr`). Any other value is ignored and the program's base language applies.
|
|
1629
1629
|
Applied only when this request creates the participant.
|
|
1630
1630
|
|
|
1631
1631
|
metadata: Shallow custom metadata object.
|
|
@@ -14,13 +14,11 @@ from .affiliate_invite import AffiliateInvite as AffiliateInvite
|
|
|
14
14
|
from .participant_list import ParticipantList as ParticipantList
|
|
15
15
|
from .team_update_params import TeamUpdateParams as TeamUpdateParams
|
|
16
16
|
from .commission_structure import CommissionStructure as CommissionStructure
|
|
17
|
-
from .account_create_params import AccountCreateParams as AccountCreateParams
|
|
18
17
|
from .affiliate_application import AffiliateApplication as AffiliateApplication
|
|
19
18
|
from .analytics_availability import AnalyticsAvailability as AnalyticsAvailability
|
|
20
19
|
from .campaign_create_params import CampaignCreateParams as CampaignCreateParams
|
|
21
20
|
from .campaign_list_response import CampaignListResponse as CampaignListResponse
|
|
22
21
|
from .campaign_update_params import CampaignUpdateParams as CampaignUpdateParams
|
|
23
|
-
from .create_account_response import CreateAccountResponse as CreateAccountResponse
|
|
24
22
|
from .participant_payout_list import ParticipantPayoutList as ParticipantPayoutList
|
|
25
23
|
from .rotate_api_key_response import RotateApiKeyResponse as RotateApiKeyResponse
|
|
26
24
|
from .referral_flow_screenshot import ReferralFlowScreenshot as ReferralFlowScreenshot
|
|
@@ -32,7 +32,7 @@ class ParticipantAddParams(TypedDict, total=False):
|
|
|
32
32
|
"""The language of the participant's portal and program emails.
|
|
33
33
|
|
|
34
34
|
Stored when it is one of the program's languages. A regional tag maps to its
|
|
35
|
-
language (for example, `
|
|
35
|
+
language (for example, `fr-BE` is stored as `fr`). Any other value is ignored and
|
|
36
36
|
the program's base language applies. Applied only when this request creates the
|
|
37
37
|
participant.
|
|
38
38
|
"""
|
{growsurf_python-1.17.0 → growsurf_python-1.19.0}/src/growsurf/types/campaign/participant_reward.py
RENAMED
|
@@ -23,6 +23,29 @@ class ParticipantReward(BaseModel):
|
|
|
23
23
|
approved_at: Optional[int] = FieldInfo(alias="approvedAt", default=None)
|
|
24
24
|
|
|
25
25
|
amount: Optional[float] = None
|
|
26
|
+
"""What the reward is worth in major units of `currency_iso`.
|
|
27
|
+
|
|
28
|
+
`None` for a percent-off coupon or when no amount is available.
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
amount_source: Optional[
|
|
32
|
+
Literal[
|
|
33
|
+
"STRIPE",
|
|
34
|
+
"CHARGEBEE",
|
|
35
|
+
"RECURLY",
|
|
36
|
+
"CHARGIFY",
|
|
37
|
+
"PAYPAL",
|
|
38
|
+
"VENMO",
|
|
39
|
+
"TANGO_CARD",
|
|
40
|
+
"TREMENDOUS",
|
|
41
|
+
"XTRM",
|
|
42
|
+
"METADATA",
|
|
43
|
+
]
|
|
44
|
+
] = FieldInfo(alias="amountSource", default=None)
|
|
45
|
+
"""Where `amount` or `percent_off` comes from.
|
|
46
|
+
|
|
47
|
+
`METADATA` means the amount saved when the reward was earned.
|
|
48
|
+
"""
|
|
26
49
|
|
|
27
50
|
commission_structure: Optional[CommissionStructure] = FieldInfo(alias="commissionStructure", default=None)
|
|
28
51
|
|
|
@@ -36,6 +59,9 @@ class ParticipantReward(BaseModel):
|
|
|
36
59
|
|
|
37
60
|
is_referrer: Optional[bool] = FieldInfo(alias="isReferrer", default=None)
|
|
38
61
|
|
|
62
|
+
percent_off: Optional[float] = FieldInfo(alias="percentOff", default=None)
|
|
63
|
+
"""Discount of a percent-off coupon (`20` = 20% off); `None` for every other reward."""
|
|
64
|
+
|
|
39
65
|
referred_id: Optional[str] = FieldInfo(alias="referredId", default=None)
|
|
40
66
|
|
|
41
67
|
referrer_id: Optional[str] = FieldInfo(alias="referrerId", default=None)
|
|
@@ -32,7 +32,7 @@ class CampaignCreateMobileParticipantTokenParams(TypedDict, total=False):
|
|
|
32
32
|
"""The language of the participant's portal and program emails.
|
|
33
33
|
|
|
34
34
|
Stored when it is one of the program's languages. A regional tag maps to its
|
|
35
|
-
language (for example, `
|
|
35
|
+
language (for example, `fr-BE` is stored as `fr`). Any other value is ignored and
|
|
36
36
|
the program's base language applies. Applied only when this request creates the
|
|
37
37
|
participant.
|
|
38
38
|
"""
|
|
@@ -7,7 +7,6 @@ import pytest
|
|
|
7
7
|
from respx import MockRouter
|
|
8
8
|
|
|
9
9
|
from growsurf import Growsurf
|
|
10
|
-
from growsurf.types import CreateAccountResponse
|
|
11
10
|
from growsurf._compat import get_model_fields
|
|
12
11
|
|
|
13
12
|
from ..conftest import base_url
|
|
@@ -45,7 +44,7 @@ def test_final_team_request_paths(client: Growsurf, respx_mock: MockRouter) -> N
|
|
|
45
44
|
assert rotate.called
|
|
46
45
|
|
|
47
46
|
|
|
48
|
-
def
|
|
47
|
+
def test_safe_team_model() -> None:
|
|
49
48
|
team_type = import_module("growsurf.types.team").Team
|
|
50
49
|
|
|
51
50
|
assert set(get_model_fields(team_type)) == {
|
|
@@ -53,8 +52,3 @@ def test_safe_team_and_onboarding_models() -> None:
|
|
|
53
52
|
"verification_status",
|
|
54
53
|
"verification_requested_at",
|
|
55
54
|
}
|
|
56
|
-
assert set(get_model_fields(CreateAccountResponse)) == {
|
|
57
|
-
"email",
|
|
58
|
-
"api_key",
|
|
59
|
-
"verification_status",
|
|
60
|
-
}
|
|
@@ -1,219 +0,0 @@
|
|
|
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 an API key.
|
|
51
|
-
Before calling it, an authorized account owner must review and approve GrowSurf's [Terms of
|
|
52
|
-
Service](https://growsurf.com/terms) and [Privacy Policy](https://growsurf.com/privacy). The
|
|
53
|
-
account starts a 14-day Business trial without a credit card. The response includes an API
|
|
54
|
-
key for the new account, shown once in the response. The key is a secret: store it in a
|
|
55
|
-
secret manager and do not put it in logs, screenshots, URLs, model context, analytics, or
|
|
56
|
-
generated output. A lost key cannot be recovered through this API, so do not create an
|
|
57
|
-
account here unless you can store the key somewhere that outlives the current conversation.
|
|
58
|
-
If you cannot, ask the account owner to connect GrowSurf's hosted MCP server at
|
|
59
|
-
`https://mcp.growsurf.com` instead, which keeps the credential with your tool rather than in
|
|
60
|
-
chat. The key is locked until the team owner's email address is verified: authenticated
|
|
61
|
-
program and resource endpoints return a `403` with error code `EMAIL_NOT_VERIFIED_ERROR`
|
|
62
|
-
until then (resend the email via `POST /team/owner/verification-email`, then retry).
|
|
63
|
-
Verification unlocks this same key - keep it and retry rather than requesting a replacement.
|
|
64
|
-
A welcome email is sent to the address with the verification link and a set-password link
|
|
65
|
-
for dashboard access. Accounts whose email is never verified are deleted automatically after
|
|
66
|
-
7 days. Separately, for security, the API key is replaced the first time the account owner
|
|
67
|
-
signs in to the GrowSurf dashboard; email verification does not trigger that, and the
|
|
68
|
-
previous key then returns a `403` with error code `NOT_AUTHORIZED_ERROR`. Some actions (such
|
|
69
|
-
as emailing participants) additionally require GrowSurf to verify the team first. Calling
|
|
70
|
-
this endpoint accepts those policies on the account holder's behalf.
|
|
71
|
-
|
|
72
|
-
Args:
|
|
73
|
-
email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
|
|
74
|
-
|
|
75
|
-
company: Company name for the new account.
|
|
76
|
-
|
|
77
|
-
first_name: First name for the new account owner.
|
|
78
|
-
|
|
79
|
-
last_name: Last name for the new account owner.
|
|
80
|
-
|
|
81
|
-
extra_headers: Send extra headers
|
|
82
|
-
|
|
83
|
-
extra_query: Add additional query parameters to the request
|
|
84
|
-
|
|
85
|
-
extra_body: Add additional JSON properties to the request
|
|
86
|
-
|
|
87
|
-
timeout: Override the client-level default timeout for this request, in seconds
|
|
88
|
-
"""
|
|
89
|
-
return self._post(
|
|
90
|
-
"/accounts",
|
|
91
|
-
body=maybe_transform(
|
|
92
|
-
{
|
|
93
|
-
"email": email,
|
|
94
|
-
"company": company,
|
|
95
|
-
"first_name": first_name,
|
|
96
|
-
"last_name": last_name,
|
|
97
|
-
},
|
|
98
|
-
account_create_params.AccountCreateParams,
|
|
99
|
-
),
|
|
100
|
-
options=make_request_options(
|
|
101
|
-
extra_headers=extra_headers,
|
|
102
|
-
extra_query=extra_query,
|
|
103
|
-
extra_body=extra_body,
|
|
104
|
-
timeout=timeout,
|
|
105
|
-
security={"api_key_auth": False},
|
|
106
|
-
),
|
|
107
|
-
cast_to=CreateAccountResponse,
|
|
108
|
-
)
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
class AsyncAccountResource(AsyncAPIResource):
|
|
112
|
-
"""Create a GrowSurf account and its initial API key."""
|
|
113
|
-
|
|
114
|
-
@cached_property
|
|
115
|
-
def with_raw_response(self) -> AsyncAccountResourceWithRawResponse:
|
|
116
|
-
"""Return the raw response object instead of parsed content."""
|
|
117
|
-
return AsyncAccountResourceWithRawResponse(self)
|
|
118
|
-
|
|
119
|
-
@cached_property
|
|
120
|
-
def with_streaming_response(self) -> AsyncAccountResourceWithStreamingResponse:
|
|
121
|
-
"""Stream the response instead of reading it eagerly."""
|
|
122
|
-
return AsyncAccountResourceWithStreamingResponse(self)
|
|
123
|
-
|
|
124
|
-
async def create(
|
|
125
|
-
self,
|
|
126
|
-
*,
|
|
127
|
-
email: str,
|
|
128
|
-
company: str | Omit = omit,
|
|
129
|
-
first_name: str | Omit = omit,
|
|
130
|
-
last_name: str | Omit = omit,
|
|
131
|
-
extra_headers: Headers | None = None,
|
|
132
|
-
extra_query: Query | None = None,
|
|
133
|
-
extra_body: Body | None = None,
|
|
134
|
-
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
135
|
-
) -> CreateAccountResponse:
|
|
136
|
-
"""
|
|
137
|
-
Creates a new GrowSurf account. This is the only endpoint that does not require an API key.
|
|
138
|
-
Before calling it, an authorized account owner must review and approve GrowSurf's [Terms of
|
|
139
|
-
Service](https://growsurf.com/terms) and [Privacy Policy](https://growsurf.com/privacy). The
|
|
140
|
-
account starts a 14-day Business trial without a credit card. The response includes an API
|
|
141
|
-
key for the new account, shown once in the response. The key is a secret: store it in a
|
|
142
|
-
secret manager and do not put it in logs, screenshots, URLs, model context, analytics, or
|
|
143
|
-
generated output. A lost key cannot be recovered through this API, so do not create an
|
|
144
|
-
account here unless you can store the key somewhere that outlives the current conversation.
|
|
145
|
-
If you cannot, ask the account owner to connect GrowSurf's hosted MCP server at
|
|
146
|
-
`https://mcp.growsurf.com` instead, which keeps the credential with your tool rather than in
|
|
147
|
-
chat. The key is locked until the team owner's email address is verified: authenticated
|
|
148
|
-
program and resource endpoints return a `403` with error code `EMAIL_NOT_VERIFIED_ERROR`
|
|
149
|
-
until then (resend the email via `POST /team/owner/verification-email`, then retry).
|
|
150
|
-
Verification unlocks this same key - keep it and retry rather than requesting a replacement.
|
|
151
|
-
A welcome email is sent to the address with the verification link and a set-password link
|
|
152
|
-
for dashboard access. Accounts whose email is never verified are deleted automatically after
|
|
153
|
-
7 days. Separately, for security, the API key is replaced the first time the account owner
|
|
154
|
-
signs in to the GrowSurf dashboard; email verification does not trigger that, and the
|
|
155
|
-
previous key then returns a `403` with error code `NOT_AUTHORIZED_ERROR`. Some actions (such
|
|
156
|
-
as emailing participants) additionally require GrowSurf to verify the team first. Calling
|
|
157
|
-
this endpoint accepts those policies on the account holder's behalf.
|
|
158
|
-
|
|
159
|
-
Args:
|
|
160
|
-
email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
|
|
161
|
-
|
|
162
|
-
company: Company name for the new account.
|
|
163
|
-
|
|
164
|
-
first_name: First name for the new account owner.
|
|
165
|
-
|
|
166
|
-
last_name: Last name for the new account owner.
|
|
167
|
-
|
|
168
|
-
extra_headers: Send extra headers
|
|
169
|
-
|
|
170
|
-
extra_query: Add additional query parameters to the request
|
|
171
|
-
|
|
172
|
-
extra_body: Add additional JSON properties to the request
|
|
173
|
-
|
|
174
|
-
timeout: Override the client-level default timeout for this request, in seconds
|
|
175
|
-
"""
|
|
176
|
-
return await self._post(
|
|
177
|
-
"/accounts",
|
|
178
|
-
body=await async_maybe_transform(
|
|
179
|
-
{
|
|
180
|
-
"email": email,
|
|
181
|
-
"company": company,
|
|
182
|
-
"first_name": first_name,
|
|
183
|
-
"last_name": last_name,
|
|
184
|
-
},
|
|
185
|
-
account_create_params.AccountCreateParams,
|
|
186
|
-
),
|
|
187
|
-
options=make_request_options(
|
|
188
|
-
extra_headers=extra_headers,
|
|
189
|
-
extra_query=extra_query,
|
|
190
|
-
extra_body=extra_body,
|
|
191
|
-
timeout=timeout,
|
|
192
|
-
security={"api_key_auth": False},
|
|
193
|
-
),
|
|
194
|
-
cast_to=CreateAccountResponse,
|
|
195
|
-
)
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
class AccountResourceWithRawResponse:
|
|
199
|
-
def __init__(self, account: AccountResource) -> None:
|
|
200
|
-
self._account = account
|
|
201
|
-
self.create = to_raw_response_wrapper(account.create)
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
class AsyncAccountResourceWithRawResponse:
|
|
205
|
-
def __init__(self, account: AsyncAccountResource) -> None:
|
|
206
|
-
self._account = account
|
|
207
|
-
self.create = async_to_raw_response_wrapper(account.create)
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
class AccountResourceWithStreamingResponse:
|
|
211
|
-
def __init__(self, account: AccountResource) -> None:
|
|
212
|
-
self._account = account
|
|
213
|
-
self.create = to_streamed_response_wrapper(account.create)
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
class AsyncAccountResourceWithStreamingResponse:
|
|
217
|
-
def __init__(self, account: AsyncAccountResource) -> None:
|
|
218
|
-
self._account = account
|
|
219
|
-
self.create = async_to_streamed_response_wrapper(account.create)
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from typing_extensions import Required, Annotated, TypedDict
|
|
6
|
-
|
|
7
|
-
from .._utils import PropertyInfo
|
|
8
|
-
|
|
9
|
-
__all__ = ["AccountCreateParams"]
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class AccountCreateParams(TypedDict, total=False):
|
|
13
|
-
email: Required[str]
|
|
14
|
-
"""The email address for the new account.
|
|
15
|
-
|
|
16
|
-
Personal emails and disposable email addresses are not accepted.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
company: str
|
|
20
|
-
|
|
21
|
-
first_name: Annotated[str, PropertyInfo(alias="firstName")]
|
|
22
|
-
|
|
23
|
-
last_name: Annotated[str, PropertyInfo(alias="lastName")]
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
|
|
3
|
-
from typing_extensions import Literal
|
|
4
|
-
|
|
5
|
-
from pydantic import Field as FieldInfo
|
|
6
|
-
|
|
7
|
-
from .._models import BaseModel
|
|
8
|
-
|
|
9
|
-
__all__ = ["CreateAccountResponse"]
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class CreateAccountResponse(BaseModel):
|
|
13
|
-
email: str
|
|
14
|
-
"""Email address for the new account."""
|
|
15
|
-
|
|
16
|
-
api_key: str = FieldInfo(alias="apiKey")
|
|
17
|
-
"""An API key for the new account.
|
|
18
|
-
|
|
19
|
-
Use it as the `Bearer` token on subsequent requests. It is shown once and locked
|
|
20
|
-
(`403` `EMAIL_NOT_VERIFIED_ERROR`) until the account's email is verified;
|
|
21
|
-
verification unlocks this same key, so keep it and retry. It is replaced only when
|
|
22
|
-
the account owner first signs in to the GrowSurf dashboard.
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
verification_status: Literal["NOT_REQUESTED", "REQUESTED", "VERIFIED"] = FieldInfo(alias="verificationStatus")
|
|
26
|
-
"""GrowSurf team verification state.
|
|
27
|
-
|
|
28
|
-
`VERIFIED` is required before a program can send participant emails.
|
|
29
|
-
"""
|