growsurf-python 1.4.0__tar.gz → 1.5.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.5.1/.release-please-manifest.json +3 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/CHANGELOG.md +29 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/CONTRIBUTING.md +3 -4
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/PKG-INFO +10 -5
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/README.md +9 -4
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/api.md +17 -1
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/pyproject.toml +1 -1
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_base_client.py +1 -3
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_version.py +1 -1
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/account.py +42 -28
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/__init__.py +28 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/campaign.py +296 -14
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/design.py +8 -4
- growsurf_python-1.5.1/src/growsurf/resources/campaign/integrations.py +181 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/options.py +4 -2
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/participant.py +44 -16
- growsurf_python-1.5.1/src/growsurf/resources/campaign/program_resources.py +427 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/rewards.py +8 -8
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/team.py +14 -10
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/__init__.py +9 -0
- growsurf_python-1.5.1/src/growsurf/types/analytics_availability.py +7 -0
- growsurf_python-1.5.1/src/growsurf/types/analytics_unavailable_reason.py +15 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/__init__.py +17 -1
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/campaign.py +1 -1
- growsurf_python-1.5.1/src/growsurf/types/campaign/campaign_design.py +66 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/campaign_emails.py +4 -2
- growsurf_python-1.5.1/src/growsurf/types/campaign/campaign_options.py +15 -0
- growsurf_python-1.5.1/src/growsurf/types/campaign/delete_program_resource_response.py +12 -0
- growsurf_python-1.5.1/src/growsurf/types/campaign/integration.py +38 -0
- growsurf_python-1.5.1/src/growsurf/types/campaign/integration_list_response.py +16 -0
- growsurf_python-1.5.1/src/growsurf/types/campaign/participant_activation_analytics.py +84 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_analytics_params.py +4 -3
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_analytics_response.py +16 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_get_payout_destination_response.py +10 -10
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_rewards_response.py +1 -1
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_record_transaction_params.py +7 -1
- growsurf_python-1.5.1/src/growsurf/types/campaign/participant_refund_transaction_params.py +58 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_response.py +4 -4
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_reward.py +4 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_update_params.py +1 -3
- growsurf_python-1.5.1/src/growsurf/types/campaign/program_resource.py +36 -0
- growsurf_python-1.5.1/src/growsurf/types/campaign/program_resource_list_response.py +12 -0
- growsurf_python-1.5.1/src/growsurf/types/campaign/program_resource_upload_result.py +24 -0
- growsurf_python-1.5.1/src/growsurf/types/campaign/program_resource_upload_ticket.py +19 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_create_params.py +2 -2
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_update_params.py +2 -2
- growsurf_python-1.5.1/src/growsurf/types/campaign_activation_analytics_response.py +174 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_create_params.py +23 -0
- growsurf_python-1.5.1/src/growsurf/types/campaign_engagement_analytics.py +201 -0
- growsurf_python-1.5.1/src/growsurf/types/campaign_retrieve_activation_analytics_params.py +26 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_retrieve_analytics_params.py +11 -2
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_retrieve_analytics_response.py +7 -3
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/commission_structure.py +6 -1
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/create_account_response.py +4 -3
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/participant_commission_list.py +3 -3
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/participant_list.py +1 -1
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/participant_payout_list.py +1 -1
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_design.py +45 -3
- growsurf_python-1.5.1/tests/api_resources/campaign/test_integrations.py +108 -0
- growsurf_python-1.5.1/tests/api_resources/campaign/test_program_resources.py +180 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_rewards.py +25 -1
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/test_campaign.py +84 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_client.py +2 -6
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_analytics_reward_status.py +10 -0
- growsurf_python-1.5.1/tests/types/test_participant_activation_engagement_analytics.py +247 -0
- growsurf_python-1.5.1/tests/types/test_participant_contract.py +115 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_payout_provider_forward_compat.py +18 -3
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/uv.lock +1 -1
- growsurf_python-1.4.0/.release-please-manifest.json +0 -3
- growsurf_python-1.4.0/src/growsurf/types/campaign/campaign_design.py +0 -20
- growsurf_python-1.4.0/src/growsurf/types/campaign/campaign_options.py +0 -14
- growsurf_python-1.4.0/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -43
- growsurf_python-1.4.0/tests/types/test_participant_contract.py +0 -22
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/.gitignore +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/LICENSE +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/SECURITY.md +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/bin/check-release-environment +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/bin/publish-pypi +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/examples/.keep +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/release-please-config.json +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/requirements-dev.lock +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/__init__.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_client.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_compat.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_constants.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_exceptions.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_files.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_models.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_qs.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_resource.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_streaming.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_types.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/__init__.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_compat.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_datetime_parse.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_json.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_logs.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_path.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_proxy.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_reflection.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_resources_proxy.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_streams.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_sync.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_transform.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_typing.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/_utils/_utils.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/lib/.keep +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/py.typed +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/__init__.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/commission.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/emails.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/installation.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/reward.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/resources/campaign/webhooks.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/account_create_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/affiliate_application.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/affiliate_application_answer.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/affiliate_application_list_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/affiliate_invite.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/affiliate_invite_list_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/campaign_installation.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/email_participant_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_add_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_email_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/referral_source.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/referral_status.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_event.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_create_affiliate_invite_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_affiliate_applications_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_affiliate_invites_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_participants_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_list_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_review_affiliate_application_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/campaign_update_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/email_analytics.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/referral_list.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/rotate_api_key_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/team.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/team_update_params.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/src/growsurf/types/verification_email_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/__init__.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/__init__.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/__init__.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_commission.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_emails.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_installation.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_options.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_participant.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_reward.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/campaign/test_webhooks.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/test_account.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/api_resources/test_team_contract.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/conftest.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/sample_file.txt +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_extract_files.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_files.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_models.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_qs.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_required_args.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_response.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_streaming.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_transform.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_utils/test_datetime_parse.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_utils/test_json.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_utils/test_path.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_utils/test_proxy.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/test_utils/test_typing.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_affiliate_application.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_email_analytics.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_lead_reward_events.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/types/test_referral_source.py +0 -0
- {growsurf_python-1.4.0 → growsurf_python-1.5.1}/tests/utils.py +0 -0
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.5.1](https://github.com/growsurf/growsurf-python/compare/v1.5.0...v1.5.1) (2026-09-10)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Chores
|
|
7
|
+
|
|
8
|
+
* merge main (release 1.5.0) into dev ([1bc5ac8](https://github.com/growsurf/growsurf-python/commit/1bc5ac8dd57d1f6ab8ab168eb313365ab7e9d785))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Documentation
|
|
12
|
+
|
|
13
|
+
* **api:** warn that a new account API key cannot be recovered ([f068cb8](https://github.com/growsurf/growsurf-python/commit/f068cb81afffb6b99451a9f416eb743c2eba3a8f))
|
|
14
|
+
|
|
15
|
+
## [1.5.0](https://github.com/growsurf/growsurf-python/compare/v1.4.0...v1.5.0) (2026-09-10)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
* **api:** add campaign integrations list endpoint ([8c03034](https://github.com/growsurf/growsurf-python/commit/8c030344295d243028f6949d033e658dce29d1c9))
|
|
21
|
+
* **api:** add EMBEDDABLE_ELEMENT portal view source ([beb0a4b](https://github.com/growsurf/growsurf-python/commit/beb0a4b371924bb08800796190d963b34baf52d7))
|
|
22
|
+
* **api:** add paymentProvider and testMode to transaction params ([42c3297](https://github.com/growsurf/growsurf-python/commit/42c32971fa5ba3de8e8eb510cf9e1de1799574fc))
|
|
23
|
+
* **api:** add refundHistoryComplete to refund transaction params ([08e67d7](https://github.com/growsurf/growsurf-python/commit/08e67d797bcdf41949f752ef44bc7f3194f5e82f))
|
|
24
|
+
* **api:** sync analytics and program resources ([3fc6106](https://github.com/growsurf/growsurf-python/commit/3fc610630ccc6e1a138ab998f8a0bafcf5e2f7d2))
|
|
25
|
+
* **api:** sync reward, program resource, and analytics types with the REST contract ([45d95ea](https://github.com/growsurf/growsurf-python/commit/45d95ea7504e5e5f74a2a16cd521a8d03800d0e1))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Chores
|
|
29
|
+
|
|
30
|
+
* apply ruff formatting ([fb8d066](https://github.com/growsurf/growsurf-python/commit/fb8d066a4df35e73eb7b9ea79c31f21bd2bab02b))
|
|
31
|
+
|
|
3
32
|
## [1.4.0](https://github.com/growsurf/growsurf-python/compare/v1.3.0...v1.4.0) (2026-08-25)
|
|
4
33
|
|
|
5
34
|
|
|
@@ -34,13 +34,12 @@ $ pip install -r requirements-dev.lock
|
|
|
34
34
|
|
|
35
35
|
## Modifying/Adding code
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
modify the contents of the `src/growsurf/lib/` and `examples/` directories.
|
|
37
|
+
GrowSurf maintains this SDK by hand. Keep resources, request and response types, exports, documentation,
|
|
38
|
+
and tests aligned with the public GrowSurf OpenAPI contract.
|
|
40
39
|
|
|
41
40
|
## Adding and running examples
|
|
42
41
|
|
|
43
|
-
|
|
42
|
+
Examples are maintained by hand and can be freely edited or added to.
|
|
44
43
|
|
|
45
44
|
```py
|
|
46
45
|
# add an example to examples/<your-example>.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: growsurf-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.5.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
|
|
@@ -41,7 +41,7 @@ The Growsurf Python library provides convenient access to the Growsurf REST API
|
|
|
41
41
|
application. The library includes type definitions for all request params and response fields,
|
|
42
42
|
and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
The library was originally generated with [Stainless](https://www.stainless.com/) and is now maintained by hand.
|
|
45
45
|
|
|
46
46
|
## Documentation
|
|
47
47
|
|
|
@@ -174,18 +174,23 @@ Error codes are as follows:
|
|
|
174
174
|
| ----------- | -------------------------- |
|
|
175
175
|
| 400 | `BadRequestError` |
|
|
176
176
|
| 401 | `AuthenticationError` |
|
|
177
|
+
| 402 | `APIStatusError` |
|
|
177
178
|
| 403 | `PermissionDeniedError` |
|
|
178
179
|
| 404 | `NotFoundError` |
|
|
180
|
+
| 406 | `APIStatusError` |
|
|
181
|
+
| 409 | `ConflictError` |
|
|
179
182
|
| 422 | `UnprocessableEntityError` |
|
|
183
|
+
| 423 | `APIStatusError` |
|
|
180
184
|
| 429 | `RateLimitError` |
|
|
181
185
|
| >=500 | `InternalServerError` |
|
|
182
186
|
| N/A | `APIConnectionError` |
|
|
183
187
|
|
|
184
188
|
### Retries
|
|
185
189
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
190
|
+
`GET` and `HEAD` requests are retried up to 2 times by default, with a short exponential backoff. API-key rotation is also retried because the SDK generates and reuses an `Idempotency-Key` for that request. Other `POST`, `PATCH`, and `DELETE` requests are not retried automatically.
|
|
191
|
+
|
|
192
|
+
For requests that are safe to retry, the SDK retries connection errors, 408 Request Timeout, 409 Conflict,
|
|
193
|
+
429 Rate Limit, and >=500 Internal errors.
|
|
189
194
|
|
|
190
195
|
You can use the `max_retries` option to configure or disable retry settings:
|
|
191
196
|
|
|
@@ -7,7 +7,7 @@ The Growsurf Python library provides convenient access to the Growsurf REST API
|
|
|
7
7
|
application. The library includes type definitions for all request params and response fields,
|
|
8
8
|
and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
The library was originally generated with [Stainless](https://www.stainless.com/) and is now maintained by hand.
|
|
11
11
|
|
|
12
12
|
## Documentation
|
|
13
13
|
|
|
@@ -140,18 +140,23 @@ Error codes are as follows:
|
|
|
140
140
|
| ----------- | -------------------------- |
|
|
141
141
|
| 400 | `BadRequestError` |
|
|
142
142
|
| 401 | `AuthenticationError` |
|
|
143
|
+
| 402 | `APIStatusError` |
|
|
143
144
|
| 403 | `PermissionDeniedError` |
|
|
144
145
|
| 404 | `NotFoundError` |
|
|
146
|
+
| 406 | `APIStatusError` |
|
|
147
|
+
| 409 | `ConflictError` |
|
|
145
148
|
| 422 | `UnprocessableEntityError` |
|
|
149
|
+
| 423 | `APIStatusError` |
|
|
146
150
|
| 429 | `RateLimitError` |
|
|
147
151
|
| >=500 | `InternalServerError` |
|
|
148
152
|
| N/A | `APIConnectionError` |
|
|
149
153
|
|
|
150
154
|
### Retries
|
|
151
155
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
156
|
+
`GET` and `HEAD` requests are retried up to 2 times by default, with a short exponential backoff. API-key rotation is also retried because the SDK generates and reuses an `Idempotency-Key` for that request. Other `POST`, `PATCH`, and `DELETE` requests are not retried automatically.
|
|
157
|
+
|
|
158
|
+
For requests that are safe to retry, the SDK retries connection errors, 408 Request Timeout, 409 Conflict,
|
|
159
|
+
429 Rate Limit, and >=500 Internal errors.
|
|
155
160
|
|
|
156
161
|
You can use the `max_retries` option to configure or disable retry settings:
|
|
157
162
|
|
|
@@ -176,6 +176,18 @@ Methods:
|
|
|
176
176
|
- <code title="get /campaign/{id}/reward-configs">client.campaign.rewards.<a href="./src/growsurf/resources/campaign/rewards.py">list</a>(id) -> <a href="./src/growsurf/types/campaign/campaign_reward_list_response.py">CampaignRewardListResponse</a></code>
|
|
177
177
|
- <code title="delete /campaign/{id}/reward-configs/{campaignRewardId}">client.campaign.rewards.<a href="./src/growsurf/resources/campaign/rewards.py">delete</a>(campaign_reward_id, \*, id) -> <a href="./src/growsurf/types/campaign/delete_reward_response.py">DeleteRewardResponse</a></code>
|
|
178
178
|
|
|
179
|
+
## Integrations
|
|
180
|
+
|
|
181
|
+
Types:
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
from growsurf.types.campaign import Integration, IntegrationListResponse
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Methods:
|
|
188
|
+
|
|
189
|
+
- <code title="get /campaign/{id}/integrations">client.campaign.integrations.<a href="./src/growsurf/resources/campaign/integrations.py">list</a>(id) -> <a href="./src/growsurf/types/campaign/integration_list_response.py">IntegrationListResponse</a></code>
|
|
190
|
+
|
|
179
191
|
## Webhooks
|
|
180
192
|
|
|
181
193
|
Types:
|
|
@@ -203,7 +215,11 @@ Methods:
|
|
|
203
215
|
Types:
|
|
204
216
|
|
|
205
217
|
```python
|
|
206
|
-
from growsurf.types.campaign import
|
|
218
|
+
from growsurf.types.campaign import (
|
|
219
|
+
CampaignDesign,
|
|
220
|
+
CampaignDesignResources,
|
|
221
|
+
CampaignDesignResourcesIcon,
|
|
222
|
+
)
|
|
207
223
|
```
|
|
208
224
|
|
|
209
225
|
Methods:
|
|
@@ -794,9 +794,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
|
794
794
|
method = options.method.lower()
|
|
795
795
|
url = URL(str(options.url))
|
|
796
796
|
path = url.path.rstrip("/")
|
|
797
|
-
return method in {"get", "head"} or (
|
|
798
|
-
method == "post" and url.is_relative_url and path == "/api-key/rotate"
|
|
799
|
-
)
|
|
797
|
+
return method in {"get", "head"} or (method == "post" and url.is_relative_url and path == "/api-key/rotate")
|
|
800
798
|
|
|
801
799
|
def _should_retry(self, response: httpx.Response) -> bool:
|
|
802
800
|
# Note: this is not a standard header
|
|
@@ -47,20 +47,27 @@ class AccountResource(SyncAPIResource):
|
|
|
47
47
|
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
48
48
|
) -> CreateAccountResponse:
|
|
49
49
|
"""
|
|
50
|
-
Creates a new GrowSurf account. This is the only endpoint that does not require
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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.
|
|
64
71
|
|
|
65
72
|
Args:
|
|
66
73
|
email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
|
|
@@ -127,20 +134,27 @@ class AsyncAccountResource(AsyncAPIResource):
|
|
|
127
134
|
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
128
135
|
) -> CreateAccountResponse:
|
|
129
136
|
"""
|
|
130
|
-
Creates a new GrowSurf account. This is the only endpoint that does not require
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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.
|
|
144
158
|
|
|
145
159
|
Args:
|
|
146
160
|
email: The email address for the new GrowSurf account. Personal emails and disposable email addresses are not accepted.
|
|
@@ -80,6 +80,22 @@ from .installation import (
|
|
|
80
80
|
InstallationResourceWithStreamingResponse,
|
|
81
81
|
AsyncInstallationResourceWithStreamingResponse,
|
|
82
82
|
)
|
|
83
|
+
from .integrations import (
|
|
84
|
+
IntegrationsResource,
|
|
85
|
+
AsyncIntegrationsResource,
|
|
86
|
+
IntegrationsResourceWithRawResponse,
|
|
87
|
+
AsyncIntegrationsResourceWithRawResponse,
|
|
88
|
+
IntegrationsResourceWithStreamingResponse,
|
|
89
|
+
AsyncIntegrationsResourceWithStreamingResponse,
|
|
90
|
+
)
|
|
91
|
+
from .program_resources import (
|
|
92
|
+
ProgramResourcesResource,
|
|
93
|
+
AsyncProgramResourcesResource,
|
|
94
|
+
ProgramResourcesResourceWithRawResponse,
|
|
95
|
+
AsyncProgramResourcesResourceWithRawResponse,
|
|
96
|
+
ProgramResourcesResourceWithStreamingResponse,
|
|
97
|
+
AsyncProgramResourcesResourceWithStreamingResponse,
|
|
98
|
+
)
|
|
83
99
|
|
|
84
100
|
__all__ = [
|
|
85
101
|
"ParticipantResource",
|
|
@@ -100,6 +116,18 @@ __all__ = [
|
|
|
100
116
|
"AsyncRewardsResourceWithRawResponse",
|
|
101
117
|
"RewardsResourceWithStreamingResponse",
|
|
102
118
|
"AsyncRewardsResourceWithStreamingResponse",
|
|
119
|
+
"ProgramResourcesResource",
|
|
120
|
+
"AsyncProgramResourcesResource",
|
|
121
|
+
"ProgramResourcesResourceWithRawResponse",
|
|
122
|
+
"AsyncProgramResourcesResourceWithRawResponse",
|
|
123
|
+
"ProgramResourcesResourceWithStreamingResponse",
|
|
124
|
+
"AsyncProgramResourcesResourceWithStreamingResponse",
|
|
125
|
+
"IntegrationsResource",
|
|
126
|
+
"AsyncIntegrationsResource",
|
|
127
|
+
"IntegrationsResourceWithRawResponse",
|
|
128
|
+
"AsyncIntegrationsResourceWithRawResponse",
|
|
129
|
+
"IntegrationsResourceWithStreamingResponse",
|
|
130
|
+
"AsyncIntegrationsResourceWithStreamingResponse",
|
|
103
131
|
"WebhooksResource",
|
|
104
132
|
"AsyncWebhooksResource",
|
|
105
133
|
"WebhooksResourceWithRawResponse",
|