growsurf-python 1.14.0__tar.gz → 1.15.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.15.0/.release-please-manifest.json +3 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/CHANGELOG.md +16 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/PKG-INFO +1 -1
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/pyproject.toml +1 -1
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_version.py +1 -1
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/participant.py +4 -8
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/rewards.py +132 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/campaign.py +28 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/reward.py +28 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/reward_create_params.py +36 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/reward_update_params.py +36 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_rewards.py +4 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/uv.lock +1 -1
- growsurf_python-1.14.0/.release-please-manifest.json +0 -3
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/.gitignore +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/CONTRIBUTING.md +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/LICENSE +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/README.md +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/SECURITY.md +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/api.md +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/bin/check-release-environment +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/bin/publish-pypi +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/examples/.keep +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/release-please-config.json +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/requirements-dev.lock +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/__init__.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_base_client.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_client.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_compat.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_constants.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_exceptions.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_files.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_models.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_qs.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_resource.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_streaming.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_types.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/__init__.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_compat.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_datetime_parse.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_json.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_logs.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_path.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_proxy.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_reflection.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_resources_proxy.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_streams.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_sync.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_transform.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_typing.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/_utils/_utils.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/lib/.keep +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/py.typed +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/__init__.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/account.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/__init__.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/campaign.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/commission.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/design.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/emails.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/installation.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/integrations.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/options.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/program_resources.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/reward.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/webhooks.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/team.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/__init__.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/account_create_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/affiliate_application.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/affiliate_application_answer.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/affiliate_application_list_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/affiliate_invite.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/affiliate_invite_list_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/analytics_availability.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/analytics_unavailable_reason.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/__init__.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/campaign_design.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/campaign_emails.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/campaign_installation.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/campaign_options.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/campaign_reward_list_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/commission_approve_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/commission_delete_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/delete_program_resource_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/delete_reward_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/delete_webhook_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/email_participant_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/fraud_risk_level.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/integration.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/integration_list_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/language.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_activation_analytics.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_activity_logs_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_add_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_analytics_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_analytics_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_bulk_delete_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_bulk_delete_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_delete_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_email_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_get_payout_destination_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_list_activity_logs_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_list_commissions_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_list_payouts_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_list_referrals_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_list_rewards_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_list_rewards_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_record_transaction_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_record_transaction_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_refund_transaction_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_refund_transaction_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_request_payout_destination_confirmation_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_reward.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_send_invites_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_send_invites_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_trigger_referral_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_trigger_referral_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/participant_update_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/pending_analytics_erasure.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/program_resource.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/program_resource_list_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/program_resource_upload_result.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/program_resource_upload_ticket.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/referral_source.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/referral_status.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/reward_approve_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/reward_approve_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/reward_delete_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/reward_fulfill_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/reward_tax_valuation.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/webhook.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/webhook_create_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/webhook_event.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/webhook_list_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/webhook_test_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/webhook_test_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign/webhook_update_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_activation_analytics_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_create_affiliate_invite_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_create_mobile_participant_token_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_create_mobile_participant_token_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_create_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_engagement_analytics.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_list_affiliate_applications_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_list_affiliate_invites_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_list_commissions_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_list_leaderboard_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_list_participants_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_list_payouts_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_list_referrals_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_list_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_retrieve_activation_analytics_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_retrieve_analytics_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_retrieve_analytics_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_review_affiliate_application_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/campaign_update_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/commission_structure.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/create_account_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/email_analytics.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/participant_commission_list.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/participant_list.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/participant_payout_list.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/referral_flow_screenshot.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/referral_flow_screenshots_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/referral_list.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/rotate_api_key_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/team.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/team_update_params.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/types/verification_email_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/__init__.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/__init__.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/__init__.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_commission.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_design.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_emails.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_installation.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_integrations.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_options.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_participant.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_program_resources.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_reward.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_webhooks.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/test_account.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/test_campaign.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/test_team_contract.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/conftest.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/sample_file.txt +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_client.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_extract_files.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_files.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_models.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_qs.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_required_args.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_response.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_streaming.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_transform.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_utils/test_json.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_utils/test_path.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_utils/test_proxy.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/test_utils/test_typing.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/types/test_affiliate_application.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/types/test_analytics_reward_status.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/types/test_email_analytics.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/types/test_lead_reward_events.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/types/test_participant_activation_engagement_analytics.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/types/test_participant_contract.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/types/test_payout_provider_forward_compat.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/types/test_referral_source.py +0 -0
- {growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.15.0](https://github.com/growsurf/growsurf-python/compare/v1.14.1...v1.15.0) (2026-10-19)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* support reward image icon keys ([2fa2b67](https://github.com/growsurf/growsurf-python/commit/2fa2b6723ddb7e2e225a85f4d8471e2e5b8fc2b3))
|
|
9
|
+
* support reward image icon keys ([252a3db](https://github.com/growsurf/growsurf-python/commit/252a3dbe115bcfdc44000a7c3b8996309b965116))
|
|
10
|
+
|
|
11
|
+
## [1.14.1](https://github.com/growsurf/growsurf-python/compare/v1.14.0...v1.14.1) (2026-10-18)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* clarify participant deletion access and cleanup docs ([1abfb93](https://github.com/growsurf/growsurf-python/commit/1abfb937f5ca7c782d5238f47a1e37e543d0d473))
|
|
17
|
+
* clarify participant deletion access and cleanup docs ([d6820d4](https://github.com/growsurf/growsurf-python/commit/d6820d4998dd88544ef571b09d883578cd19fcbf))
|
|
18
|
+
|
|
3
19
|
## [1.14.0](https://github.com/growsurf/growsurf-python/compare/v1.13.1...v1.14.0) (2026-10-15)
|
|
4
20
|
|
|
5
21
|
|
{growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/participant.py
RENAMED
|
@@ -221,7 +221,7 @@ class ParticipantResource(SyncAPIResource):
|
|
|
221
221
|
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
222
222
|
) -> ParticipantDeleteResponse:
|
|
223
223
|
"""
|
|
224
|
-
Removes
|
|
224
|
+
Removes participant access immediately by GrowSurf participant ID or email address. Related record cleanup completes automatically. Do not repeat a successful deletion to finish cleanup.
|
|
225
225
|
|
|
226
226
|
Args:
|
|
227
227
|
extra_headers: Send extra headers
|
|
@@ -267,9 +267,7 @@ class ParticipantResource(SyncAPIResource):
|
|
|
267
267
|
`participants` is a GrowSurf participant ID or an email address (mixed lists are
|
|
268
268
|
allowed). Up to `200` entries per request — chunk larger lists across multiple
|
|
269
269
|
calls. The response reports a per-row `status` for every submitted entry, so a
|
|
270
|
-
`200` can include rows that were `NOT_FOUND` or failed. Deletion is permanent
|
|
271
|
-
and removes the participants' referrals, rewards, commissions, and payout
|
|
272
|
-
records.
|
|
270
|
+
`200` can include rows that were `NOT_FOUND` or failed. Deletion is permanent. Successful rows lose participant access immediately; related record cleanup completes automatically, subject to required financial record retention.
|
|
273
271
|
|
|
274
272
|
Args:
|
|
275
273
|
participants: GrowSurf participant IDs and/or email addresses to delete. Mixed entries are
|
|
@@ -1500,7 +1498,7 @@ class AsyncParticipantResource(AsyncAPIResource):
|
|
|
1500
1498
|
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
1501
1499
|
) -> ParticipantDeleteResponse:
|
|
1502
1500
|
"""
|
|
1503
|
-
Removes
|
|
1501
|
+
Removes participant access immediately by GrowSurf participant ID or email address. Related record cleanup completes automatically. Do not repeat a successful deletion to finish cleanup.
|
|
1504
1502
|
|
|
1505
1503
|
Args:
|
|
1506
1504
|
extra_headers: Send extra headers
|
|
@@ -1546,9 +1544,7 @@ class AsyncParticipantResource(AsyncAPIResource):
|
|
|
1546
1544
|
`participants` is a GrowSurf participant ID or an email address (mixed lists are
|
|
1547
1545
|
allowed). Up to `200` entries per request — chunk larger lists across multiple
|
|
1548
1546
|
calls. The response reports a per-row `status` for every submitted entry, so a
|
|
1549
|
-
`200` can include rows that were `NOT_FOUND` or failed. Deletion is permanent
|
|
1550
|
-
and removes the participants' referrals, rewards, commissions, and payout
|
|
1551
|
-
records.
|
|
1547
|
+
`200` can include rows that were `NOT_FOUND` or failed. Deletion is permanent. Successful rows lose participant access immediately; related record cleanup completes automatically, subject to required financial record retention.
|
|
1552
1548
|
|
|
1553
1549
|
Args:
|
|
1554
1550
|
participants: GrowSurf participant IDs and/or email addresses to delete. Mixed entries are
|
{growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/rewards.py
RENAMED
|
@@ -61,6 +61,33 @@ class RewardsResource(SyncAPIResource):
|
|
|
61
61
|
description: str | Omit = omit,
|
|
62
62
|
event: Literal["LEAD", "CONVERSION"] | Omit = omit,
|
|
63
63
|
image_url: Optional[str] | Omit = omit,
|
|
64
|
+
image_icon_key: Optional[
|
|
65
|
+
Literal[
|
|
66
|
+
"GIFT_1",
|
|
67
|
+
"GIFT_2",
|
|
68
|
+
"GIFT_3",
|
|
69
|
+
"GIFT_4",
|
|
70
|
+
"GIFT_5",
|
|
71
|
+
"GIFT_6",
|
|
72
|
+
"GIFT_CARD",
|
|
73
|
+
"CASH",
|
|
74
|
+
"COIN",
|
|
75
|
+
"CARD",
|
|
76
|
+
"STAR_1",
|
|
77
|
+
"STAR_2",
|
|
78
|
+
"STAR_3",
|
|
79
|
+
"TROPHY",
|
|
80
|
+
"CROWN",
|
|
81
|
+
"SEAL",
|
|
82
|
+
"HEART_1",
|
|
83
|
+
"HEART_2",
|
|
84
|
+
"TAG",
|
|
85
|
+
"DIAMOND",
|
|
86
|
+
"CONFETTI",
|
|
87
|
+
"ROCKET",
|
|
88
|
+
]
|
|
89
|
+
]
|
|
90
|
+
| Omit = omit,
|
|
64
91
|
is_unlimited: bool | Omit = omit,
|
|
65
92
|
is_visible: bool | Omit = omit,
|
|
66
93
|
limit: int | Omit = omit,
|
|
@@ -107,6 +134,11 @@ class RewardsResource(SyncAPIResource):
|
|
|
107
134
|
|
|
108
135
|
image_url: An image URL for the reward.
|
|
109
136
|
|
|
137
|
+
image_icon_key: The starter icon shown for the reward, or `null` when `imageUrl` is your own
|
|
138
|
+
image. Participant pages draw this icon in your program's accent color. Also set
|
|
139
|
+
`imageUrl` to the icon's image so the iOS and Android SDKs can show it. Sending
|
|
140
|
+
`imageUrl` without `imageIconKey` clears it.
|
|
141
|
+
|
|
110
142
|
is_unlimited: Whether the reward can be earned an unlimited number of times. Defaults to
|
|
111
143
|
`true`, except `MILESTONE` rewards, which can only be earned once.
|
|
112
144
|
|
|
@@ -159,6 +191,7 @@ class RewardsResource(SyncAPIResource):
|
|
|
159
191
|
"description": description,
|
|
160
192
|
"event": event,
|
|
161
193
|
"image_url": image_url,
|
|
194
|
+
"image_icon_key": image_icon_key,
|
|
162
195
|
"is_unlimited": is_unlimited,
|
|
163
196
|
"is_visible": is_visible,
|
|
164
197
|
"limit": limit,
|
|
@@ -194,6 +227,33 @@ class RewardsResource(SyncAPIResource):
|
|
|
194
227
|
description: str | Omit = omit,
|
|
195
228
|
event: Literal["LEAD", "CONVERSION"] | Omit = omit,
|
|
196
229
|
image_url: Optional[str] | Omit = omit,
|
|
230
|
+
image_icon_key: Optional[
|
|
231
|
+
Literal[
|
|
232
|
+
"GIFT_1",
|
|
233
|
+
"GIFT_2",
|
|
234
|
+
"GIFT_3",
|
|
235
|
+
"GIFT_4",
|
|
236
|
+
"GIFT_5",
|
|
237
|
+
"GIFT_6",
|
|
238
|
+
"GIFT_CARD",
|
|
239
|
+
"CASH",
|
|
240
|
+
"COIN",
|
|
241
|
+
"CARD",
|
|
242
|
+
"STAR_1",
|
|
243
|
+
"STAR_2",
|
|
244
|
+
"STAR_3",
|
|
245
|
+
"TROPHY",
|
|
246
|
+
"CROWN",
|
|
247
|
+
"SEAL",
|
|
248
|
+
"HEART_1",
|
|
249
|
+
"HEART_2",
|
|
250
|
+
"TAG",
|
|
251
|
+
"DIAMOND",
|
|
252
|
+
"CONFETTI",
|
|
253
|
+
"ROCKET",
|
|
254
|
+
]
|
|
255
|
+
]
|
|
256
|
+
| Omit = omit,
|
|
197
257
|
is_unlimited: bool | Omit = omit,
|
|
198
258
|
is_visible: bool | Omit = omit,
|
|
199
259
|
limit: int | Omit = omit,
|
|
@@ -240,6 +300,11 @@ class RewardsResource(SyncAPIResource):
|
|
|
240
300
|
|
|
241
301
|
image_url: An image URL for the reward.
|
|
242
302
|
|
|
303
|
+
image_icon_key: The starter icon shown for the reward, or `null` when `imageUrl` is your own
|
|
304
|
+
image. Participant pages draw this icon in your program's accent color. Also set
|
|
305
|
+
`imageUrl` to the icon's image so the iOS and Android SDKs can show it. Sending
|
|
306
|
+
`imageUrl` without `imageIconKey` clears it.
|
|
307
|
+
|
|
243
308
|
is_unlimited: Whether the reward can be earned an unlimited number of times. Defaults to
|
|
244
309
|
`true`, except `MILESTONE` rewards, which can only be earned once.
|
|
245
310
|
|
|
@@ -295,6 +360,7 @@ class RewardsResource(SyncAPIResource):
|
|
|
295
360
|
"description": description,
|
|
296
361
|
"event": event,
|
|
297
362
|
"image_url": image_url,
|
|
363
|
+
"image_icon_key": image_icon_key,
|
|
298
364
|
"is_unlimited": is_unlimited,
|
|
299
365
|
"is_visible": is_visible,
|
|
300
366
|
"limit": limit,
|
|
@@ -431,6 +497,33 @@ class AsyncRewardsResource(AsyncAPIResource):
|
|
|
431
497
|
description: str | Omit = omit,
|
|
432
498
|
event: Literal["LEAD", "CONVERSION"] | Omit = omit,
|
|
433
499
|
image_url: Optional[str] | Omit = omit,
|
|
500
|
+
image_icon_key: Optional[
|
|
501
|
+
Literal[
|
|
502
|
+
"GIFT_1",
|
|
503
|
+
"GIFT_2",
|
|
504
|
+
"GIFT_3",
|
|
505
|
+
"GIFT_4",
|
|
506
|
+
"GIFT_5",
|
|
507
|
+
"GIFT_6",
|
|
508
|
+
"GIFT_CARD",
|
|
509
|
+
"CASH",
|
|
510
|
+
"COIN",
|
|
511
|
+
"CARD",
|
|
512
|
+
"STAR_1",
|
|
513
|
+
"STAR_2",
|
|
514
|
+
"STAR_3",
|
|
515
|
+
"TROPHY",
|
|
516
|
+
"CROWN",
|
|
517
|
+
"SEAL",
|
|
518
|
+
"HEART_1",
|
|
519
|
+
"HEART_2",
|
|
520
|
+
"TAG",
|
|
521
|
+
"DIAMOND",
|
|
522
|
+
"CONFETTI",
|
|
523
|
+
"ROCKET",
|
|
524
|
+
]
|
|
525
|
+
]
|
|
526
|
+
| Omit = omit,
|
|
434
527
|
is_unlimited: bool | Omit = omit,
|
|
435
528
|
is_visible: bool | Omit = omit,
|
|
436
529
|
limit: int | Omit = omit,
|
|
@@ -477,6 +570,11 @@ class AsyncRewardsResource(AsyncAPIResource):
|
|
|
477
570
|
|
|
478
571
|
image_url: An image URL for the reward.
|
|
479
572
|
|
|
573
|
+
image_icon_key: The starter icon shown for the reward, or `null` when `imageUrl` is your own
|
|
574
|
+
image. Participant pages draw this icon in your program's accent color. Also set
|
|
575
|
+
`imageUrl` to the icon's image so the iOS and Android SDKs can show it. Sending
|
|
576
|
+
`imageUrl` without `imageIconKey` clears it.
|
|
577
|
+
|
|
480
578
|
is_unlimited: Whether the reward can be earned an unlimited number of times. Defaults to
|
|
481
579
|
`true`, except `MILESTONE` rewards, which can only be earned once.
|
|
482
580
|
|
|
@@ -529,6 +627,7 @@ class AsyncRewardsResource(AsyncAPIResource):
|
|
|
529
627
|
"description": description,
|
|
530
628
|
"event": event,
|
|
531
629
|
"image_url": image_url,
|
|
630
|
+
"image_icon_key": image_icon_key,
|
|
532
631
|
"is_unlimited": is_unlimited,
|
|
533
632
|
"is_visible": is_visible,
|
|
534
633
|
"limit": limit,
|
|
@@ -564,6 +663,33 @@ class AsyncRewardsResource(AsyncAPIResource):
|
|
|
564
663
|
description: str | Omit = omit,
|
|
565
664
|
event: Literal["LEAD", "CONVERSION"] | Omit = omit,
|
|
566
665
|
image_url: Optional[str] | Omit = omit,
|
|
666
|
+
image_icon_key: Optional[
|
|
667
|
+
Literal[
|
|
668
|
+
"GIFT_1",
|
|
669
|
+
"GIFT_2",
|
|
670
|
+
"GIFT_3",
|
|
671
|
+
"GIFT_4",
|
|
672
|
+
"GIFT_5",
|
|
673
|
+
"GIFT_6",
|
|
674
|
+
"GIFT_CARD",
|
|
675
|
+
"CASH",
|
|
676
|
+
"COIN",
|
|
677
|
+
"CARD",
|
|
678
|
+
"STAR_1",
|
|
679
|
+
"STAR_2",
|
|
680
|
+
"STAR_3",
|
|
681
|
+
"TROPHY",
|
|
682
|
+
"CROWN",
|
|
683
|
+
"SEAL",
|
|
684
|
+
"HEART_1",
|
|
685
|
+
"HEART_2",
|
|
686
|
+
"TAG",
|
|
687
|
+
"DIAMOND",
|
|
688
|
+
"CONFETTI",
|
|
689
|
+
"ROCKET",
|
|
690
|
+
]
|
|
691
|
+
]
|
|
692
|
+
| Omit = omit,
|
|
567
693
|
is_unlimited: bool | Omit = omit,
|
|
568
694
|
is_visible: bool | Omit = omit,
|
|
569
695
|
limit: int | Omit = omit,
|
|
@@ -610,6 +736,11 @@ class AsyncRewardsResource(AsyncAPIResource):
|
|
|
610
736
|
|
|
611
737
|
image_url: An image URL for the reward.
|
|
612
738
|
|
|
739
|
+
image_icon_key: The starter icon shown for the reward, or `null` when `imageUrl` is your own
|
|
740
|
+
image. Participant pages draw this icon in your program's accent color. Also set
|
|
741
|
+
`imageUrl` to the icon's image so the iOS and Android SDKs can show it. Sending
|
|
742
|
+
`imageUrl` without `imageIconKey` clears it.
|
|
743
|
+
|
|
613
744
|
is_unlimited: Whether the reward can be earned an unlimited number of times. Defaults to
|
|
614
745
|
`true`, except `MILESTONE` rewards, which can only be earned once.
|
|
615
746
|
|
|
@@ -665,6 +796,7 @@ class AsyncRewardsResource(AsyncAPIResource):
|
|
|
665
796
|
"description": description,
|
|
666
797
|
"event": event,
|
|
667
798
|
"image_url": image_url,
|
|
799
|
+
"image_icon_key": image_icon_key,
|
|
668
800
|
"is_unlimited": is_unlimited,
|
|
669
801
|
"is_visible": is_visible,
|
|
670
802
|
"limit": limit,
|
|
@@ -39,6 +39,34 @@ class Reward(BaseModel):
|
|
|
39
39
|
|
|
40
40
|
image_url: Optional[str] = FieldInfo(alias="imageUrl", default=None)
|
|
41
41
|
|
|
42
|
+
image_icon_key: Optional[
|
|
43
|
+
Literal[
|
|
44
|
+
"GIFT_1",
|
|
45
|
+
"GIFT_2",
|
|
46
|
+
"GIFT_3",
|
|
47
|
+
"GIFT_4",
|
|
48
|
+
"GIFT_5",
|
|
49
|
+
"GIFT_6",
|
|
50
|
+
"GIFT_CARD",
|
|
51
|
+
"CASH",
|
|
52
|
+
"COIN",
|
|
53
|
+
"CARD",
|
|
54
|
+
"STAR_1",
|
|
55
|
+
"STAR_2",
|
|
56
|
+
"STAR_3",
|
|
57
|
+
"TROPHY",
|
|
58
|
+
"CROWN",
|
|
59
|
+
"SEAL",
|
|
60
|
+
"HEART_1",
|
|
61
|
+
"HEART_2",
|
|
62
|
+
"TAG",
|
|
63
|
+
"DIAMOND",
|
|
64
|
+
"CONFETTI",
|
|
65
|
+
"ROCKET",
|
|
66
|
+
]
|
|
67
|
+
] = FieldInfo(alias="imageIconKey", default=None)
|
|
68
|
+
"""The starter icon shown for the reward, or `null` when `imageUrl` is your own image."""
|
|
69
|
+
|
|
42
70
|
is_visible: Optional[bool] = FieldInfo(alias="isVisible", default=None)
|
|
43
71
|
"""Whether the reward is enabled.
|
|
44
72
|
|
|
@@ -51,6 +51,34 @@ class Reward(BaseModel):
|
|
|
51
51
|
image_url: Optional[str] = FieldInfo(alias="imageUrl", default=None)
|
|
52
52
|
"""The reward image URL."""
|
|
53
53
|
|
|
54
|
+
image_icon_key: Optional[
|
|
55
|
+
Literal[
|
|
56
|
+
"GIFT_1",
|
|
57
|
+
"GIFT_2",
|
|
58
|
+
"GIFT_3",
|
|
59
|
+
"GIFT_4",
|
|
60
|
+
"GIFT_5",
|
|
61
|
+
"GIFT_6",
|
|
62
|
+
"GIFT_CARD",
|
|
63
|
+
"CASH",
|
|
64
|
+
"COIN",
|
|
65
|
+
"CARD",
|
|
66
|
+
"STAR_1",
|
|
67
|
+
"STAR_2",
|
|
68
|
+
"STAR_3",
|
|
69
|
+
"TROPHY",
|
|
70
|
+
"CROWN",
|
|
71
|
+
"SEAL",
|
|
72
|
+
"HEART_1",
|
|
73
|
+
"HEART_2",
|
|
74
|
+
"TAG",
|
|
75
|
+
"DIAMOND",
|
|
76
|
+
"CONFETTI",
|
|
77
|
+
"ROCKET",
|
|
78
|
+
]
|
|
79
|
+
] = FieldInfo(alias="imageIconKey", default=None)
|
|
80
|
+
"""The starter icon shown for the reward, or `null` when `imageUrl` is your own image."""
|
|
81
|
+
|
|
54
82
|
is_visible: Optional[bool] = FieldInfo(alias="isVisible", default=None)
|
|
55
83
|
"""Whether the reward is enabled.
|
|
56
84
|
|
|
@@ -43,6 +43,42 @@ class RewardCreateParams(TypedDict, total=False):
|
|
|
43
43
|
image_url: Annotated[Optional[str], PropertyInfo(alias="imageUrl")]
|
|
44
44
|
"""An image URL for the reward."""
|
|
45
45
|
|
|
46
|
+
image_icon_key: Annotated[
|
|
47
|
+
Optional[
|
|
48
|
+
Literal[
|
|
49
|
+
"GIFT_1",
|
|
50
|
+
"GIFT_2",
|
|
51
|
+
"GIFT_3",
|
|
52
|
+
"GIFT_4",
|
|
53
|
+
"GIFT_5",
|
|
54
|
+
"GIFT_6",
|
|
55
|
+
"GIFT_CARD",
|
|
56
|
+
"CASH",
|
|
57
|
+
"COIN",
|
|
58
|
+
"CARD",
|
|
59
|
+
"STAR_1",
|
|
60
|
+
"STAR_2",
|
|
61
|
+
"STAR_3",
|
|
62
|
+
"TROPHY",
|
|
63
|
+
"CROWN",
|
|
64
|
+
"SEAL",
|
|
65
|
+
"HEART_1",
|
|
66
|
+
"HEART_2",
|
|
67
|
+
"TAG",
|
|
68
|
+
"DIAMOND",
|
|
69
|
+
"CONFETTI",
|
|
70
|
+
"ROCKET",
|
|
71
|
+
]
|
|
72
|
+
],
|
|
73
|
+
PropertyInfo(alias="imageIconKey"),
|
|
74
|
+
]
|
|
75
|
+
"""The starter icon shown for the reward, or `null` when `imageUrl` is your own image.
|
|
76
|
+
|
|
77
|
+
Participant pages draw this icon in your program's accent color. Also set
|
|
78
|
+
`imageUrl` to the icon's image so the iOS and Android SDKs can show it. Sending
|
|
79
|
+
`imageUrl` without `imageIconKey` clears it.
|
|
80
|
+
"""
|
|
81
|
+
|
|
46
82
|
is_unlimited: Annotated[bool, PropertyInfo(alias="isUnlimited")]
|
|
47
83
|
"""Whether the reward can be earned an unlimited number of times.
|
|
48
84
|
|
|
@@ -42,6 +42,42 @@ class RewardUpdateParams(TypedDict, total=False):
|
|
|
42
42
|
image_url: Annotated[Optional[str], PropertyInfo(alias="imageUrl")]
|
|
43
43
|
"""An image URL for the reward."""
|
|
44
44
|
|
|
45
|
+
image_icon_key: Annotated[
|
|
46
|
+
Optional[
|
|
47
|
+
Literal[
|
|
48
|
+
"GIFT_1",
|
|
49
|
+
"GIFT_2",
|
|
50
|
+
"GIFT_3",
|
|
51
|
+
"GIFT_4",
|
|
52
|
+
"GIFT_5",
|
|
53
|
+
"GIFT_6",
|
|
54
|
+
"GIFT_CARD",
|
|
55
|
+
"CASH",
|
|
56
|
+
"COIN",
|
|
57
|
+
"CARD",
|
|
58
|
+
"STAR_1",
|
|
59
|
+
"STAR_2",
|
|
60
|
+
"STAR_3",
|
|
61
|
+
"TROPHY",
|
|
62
|
+
"CROWN",
|
|
63
|
+
"SEAL",
|
|
64
|
+
"HEART_1",
|
|
65
|
+
"HEART_2",
|
|
66
|
+
"TAG",
|
|
67
|
+
"DIAMOND",
|
|
68
|
+
"CONFETTI",
|
|
69
|
+
"ROCKET",
|
|
70
|
+
]
|
|
71
|
+
],
|
|
72
|
+
PropertyInfo(alias="imageIconKey"),
|
|
73
|
+
]
|
|
74
|
+
"""The starter icon shown for the reward, or `null` when `imageUrl` is your own image.
|
|
75
|
+
|
|
76
|
+
Participant pages draw this icon in your program's accent color. Also set
|
|
77
|
+
`imageUrl` to the icon's image so the iOS and Android SDKs can show it. Sending
|
|
78
|
+
`imageUrl` without `imageIconKey` clears it.
|
|
79
|
+
"""
|
|
80
|
+
|
|
45
81
|
is_unlimited: Annotated[bool, PropertyInfo(alias="isUnlimited")]
|
|
46
82
|
"""Whether the reward can be earned an unlimited number of times.
|
|
47
83
|
|
{growsurf_python-1.14.0 → growsurf_python-1.15.0}/tests/api_resources/campaign/test_rewards.py
RENAMED
|
@@ -64,6 +64,7 @@ class TestRewards:
|
|
|
64
64
|
coupon_code="couponCode",
|
|
65
65
|
description="description",
|
|
66
66
|
image_url="imageUrl",
|
|
67
|
+
image_icon_key="GIFT_1",
|
|
67
68
|
is_unlimited=True,
|
|
68
69
|
is_visible=True,
|
|
69
70
|
limit=0,
|
|
@@ -136,6 +137,7 @@ class TestRewards:
|
|
|
136
137
|
coupon_code="couponCode",
|
|
137
138
|
description="description",
|
|
138
139
|
image_url="imageUrl",
|
|
140
|
+
image_icon_key="GIFT_1",
|
|
139
141
|
is_unlimited=True,
|
|
140
142
|
is_visible=True,
|
|
141
143
|
limit=0,
|
|
@@ -314,6 +316,7 @@ class TestAsyncRewards:
|
|
|
314
316
|
coupon_code="couponCode",
|
|
315
317
|
description="description",
|
|
316
318
|
image_url="imageUrl",
|
|
319
|
+
image_icon_key="GIFT_1",
|
|
317
320
|
is_unlimited=True,
|
|
318
321
|
is_visible=True,
|
|
319
322
|
limit=0,
|
|
@@ -386,6 +389,7 @@ class TestAsyncRewards:
|
|
|
386
389
|
coupon_code="couponCode",
|
|
387
390
|
description="description",
|
|
388
391
|
image_url="imageUrl",
|
|
392
|
+
image_icon_key="GIFT_1",
|
|
389
393
|
is_unlimited=True,
|
|
390
394
|
is_visible=True,
|
|
391
395
|
limit=0,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/__init__.py
RENAMED
|
File without changes
|
{growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/campaign.py
RENAMED
|
File without changes
|
{growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/commission.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/installation.py
RENAMED
|
File without changes
|
{growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/integrations.py
RENAMED
|
File without changes
|
{growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/options.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{growsurf_python-1.14.0 → growsurf_python-1.15.0}/src/growsurf/resources/campaign/webhooks.py
RENAMED
|
File without changes
|
|
File without changes
|