linq-python 0.36.1__tar.gz → 0.37.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.
- linq_python-0.37.0/.release-please-manifest.json +3 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/CHANGELOG.md +7 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/PKG-INFO +1 -1
- {linq_python-0.36.1 → linq_python-0.37.0}/pyproject.toml +1 -1
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_client.py +234 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_version.py +1 -1
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/payment_requests.py +88 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment_request.py +21 -4
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment_request_create_params.py +26 -1
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_payment_requests.py +10 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/uv.lock +1 -1
- linq_python-0.36.1/.release-please-manifest.json +0 -3
- {linq_python-0.36.1 → linq_python-0.37.0}/.gitignore +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/CONTRIBUTING.md +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/LICENSE +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/README.md +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/SECURITY.md +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/api.md +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/bin/check-release-environment +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/bin/publish-pypi +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/examples/.keep +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/release-please-config.json +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/requirements-dev.lock +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_base_client.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_compat.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_constants.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_exceptions.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_files.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_models.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_qs.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_resource.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_streaming.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_types.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_compat.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_datetime_parse.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_json.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_logs.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_path.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_proxy.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_reflection.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_resources_proxy.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_streams.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_sync.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_transform.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_typing.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/_utils/_utils.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/lib/.keep +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/pagination.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/py.typed +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/attachments.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/available_number.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/blocked_handles.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/capability.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/chats/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/chats/background.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/chats/chats.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/chats/location.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/chats/messages.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/chats/participants.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/chats/polls.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/chats/typing.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/contact_card.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/experiences.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/messages/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/messages/messages.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/messages/poll.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/payment_handles.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/payment_providers.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/payments.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/phone_numbers.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/phonenumbers.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/webhook_events.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/webhook_subscriptions.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/resources/webhooks.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/attachment_create_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/attachment_create_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/attachment_retrieve_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/available_number_retrieve_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/available_number_retrieve_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/blocked_handle_block_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/blocked_handle_block_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/blocked_handle_entry.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/blocked_handle_list_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/blocked_handle_unblock_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/capability_check_RCS_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/capability_check_i_message_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_background_update_failed_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_background_updated_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_create_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_create_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_created_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_group_name_update_failed_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_leave_chat_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_list_chats_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_send_voicememo_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_send_voicememo_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_update_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chat_update_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/background_set_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/get_chat_location_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/location_request_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/message_list_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/message_send_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/message_send_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/participant_add_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/participant_add_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/participant_remove_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/participant_remove_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/poll.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/poll_create_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/poll_envelope.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/chats/sent_message.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/contact_card_create_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/contact_card_retrieve_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/contact_card_retrieve_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/contact_card_update_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/experience_list_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/experience_retrieve_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/handle_check_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/link_part_param.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/media_part_param.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_add_reaction_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_add_reaction_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_content_param.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_create_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_create_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_delivered_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_edited_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_effect.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_effect_param.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_event_v2.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_failed_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_list_messages_thread_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_read_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_received_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_sent_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_update_app_card_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_update_app_card_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/message_update_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/messages/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/messages/poll_add_options_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/messages/poll_vote_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/participant_added_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/participant_removed_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment_create_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment_credentials_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment_handle_connection.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment_handle_verify_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment_provider.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment_provider_connect_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment_provider_connect_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment_request_list_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/payment_request_list_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/phone_number_list_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/phone_number_status_updated_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/phone_number_update_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/phone_number_update_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/phonenumber_list_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/poll_delivered_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/poll_failed_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/poll_reaction_added_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/poll_read_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/poll_received_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/poll_sent_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/poll_updated_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/poll_vote_added_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/poll_vote_removed_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reaction_added_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reaction_event_base.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reaction_removed_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reply_to.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reply_to_param.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reputation_action_item.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reputation_audit.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reputation_audit_started.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reputation_driver.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reputation_driver_key.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reputation_evidence.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reputation_opt_out_chat.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reputation_report.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/reputation_unhealthy_chat.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/schemas_media_part_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/schemas_message_effect.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/schemas_text_part_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/set_contact_card.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared/chat_handle.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared/link_part_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared/media_part_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared/reaction.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared/reaction_type.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared/service_type.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared/text_decoration.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared/text_part_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared_params/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared_params/reaction_type.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared_params/service_type.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/shared_params/text_decoration.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/supported_content_type.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/text_part_param.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/unwrap_webhook_event.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/webhook_event_list_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/webhook_event_type.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/webhook_subscription.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/webhook_subscription_create_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/webhook_subscription_create_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/webhook_subscription_list_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/src/linq/types/webhook_subscription_update_params.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/chats/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/chats/test_background.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/chats/test_location.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/chats/test_messages.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/chats/test_participants.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/chats/test_polls.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/chats/test_typing.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/messages/__init__.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/messages/test_poll.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_attachments.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_available_number.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_blocked_handles.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_capability.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_chats.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_contact_card.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_experiences.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_messages.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_payment_handles.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_payment_providers.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_payments.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_phone_numbers.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_phonenumbers.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_webhook_events.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_webhook_subscriptions.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/api_resources/test_webhooks.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/conftest.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/sample_file.txt +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_client.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_extract_files.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_files.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_models.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_qs.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_required_args.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_response.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_streaming.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_transform.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_utils/test_json.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_utils/test_path.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_utils/test_proxy.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/test_utils/test_typing.py +0 -0
- {linq_python-0.36.1 → linq_python-0.37.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.37.0](https://github.com/linq-team/linq-python/compare/v0.36.1...v0.37.0) (2026-08-28)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add discount support with coupons and promotion codes ([5427381](https://github.com/linq-team/linq-python/commit/5427381d5591b92d80cf169774f4bde887fcd28b))
|
|
9
|
+
|
|
3
10
|
## [0.36.1](https://github.com/linq-team/linq-python/compare/v0.36.0...v0.36.1) (2026-08-28)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: linq-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.37.0
|
|
4
4
|
Summary: The official Python library for the linq-api-v3 API
|
|
5
5
|
Project-URL: Homepage, https://github.com/linq-team/linq-python
|
|
6
6
|
Project-URL: Repository, https://github.com/linq-team/linq-python
|
|
@@ -548,6 +548,45 @@ class LinqAPIV3(SyncAPIClient):
|
|
|
548
548
|
the Customer and Subscription, so correlating in either direction is
|
|
549
549
|
trivial. There are no renewal webhooks from Linq by design.
|
|
550
550
|
|
|
551
|
+
### Discounts
|
|
552
|
+
|
|
553
|
+
Pass a `discount` with a **coupon** or **promotion code** from your
|
|
554
|
+
connected Stripe account to apply it to the subscription. Create either in
|
|
555
|
+
your Stripe Dashboard under Product catalog → Coupons; Linq only forwards
|
|
556
|
+
the id.
|
|
557
|
+
|
|
558
|
+
```json
|
|
559
|
+
{
|
|
560
|
+
"mode": "subscription",
|
|
561
|
+
"price_id": "price_1QAbCdEfGhIjKlMn",
|
|
562
|
+
"discount": {
|
|
563
|
+
"coupon": "7fKCMvBh",
|
|
564
|
+
"label": "50% OFF FIRST MONTH"
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
```
|
|
568
|
+
|
|
569
|
+
Stripe applies the coupon and prices the first invoice; the `amount` we
|
|
570
|
+
return is that invoice's amount due, so a `$50.00/month` price with a
|
|
571
|
+
50%-off-first-month coupon comes back as `2500` and the recipient is
|
|
572
|
+
charged **$25.00** at checkout. A coupon that covers the whole first
|
|
573
|
+
invoice returns `amount: 0`; checkout shows $0.00 and collects the card for
|
|
574
|
+
the renewal rather than charging now. Renewals bill at the full price
|
|
575
|
+
automatically — how long a discount lasts is the coupon's `duration`,
|
|
576
|
+
enforced by Stripe on your account, and Linq never re-prices anything.
|
|
577
|
+
|
|
578
|
+
Use `promotion_code` instead of `coupon` to apply a promotion code by id
|
|
579
|
+
(`promo_...`, not the customer-facing code string); pass one or the other,
|
|
580
|
+
never both.
|
|
581
|
+
|
|
582
|
+
`label` is the customer-facing promotion name displayed at checkout instead
|
|
583
|
+
of the coupon or promotion code ID. The label is displayed exactly as
|
|
584
|
+
provided, so include important terms such as "FIRST MONTH" or
|
|
585
|
+
"FIRST 3 MONTHS" when applicable. These terms are not displayed elsewhere
|
|
586
|
+
on the checkout screen.
|
|
587
|
+
|
|
588
|
+
If omitted, Stripe uses the coupon's name as the promotion label.
|
|
589
|
+
|
|
551
590
|
### Free trials
|
|
552
591
|
|
|
553
592
|
Add `trial_period_days` (or a fixed `trial_end` timestamp) to start the
|
|
@@ -1624,6 +1663,45 @@ class AsyncLinqAPIV3(AsyncAPIClient):
|
|
|
1624
1663
|
the Customer and Subscription, so correlating in either direction is
|
|
1625
1664
|
trivial. There are no renewal webhooks from Linq by design.
|
|
1626
1665
|
|
|
1666
|
+
### Discounts
|
|
1667
|
+
|
|
1668
|
+
Pass a `discount` with a **coupon** or **promotion code** from your
|
|
1669
|
+
connected Stripe account to apply it to the subscription. Create either in
|
|
1670
|
+
your Stripe Dashboard under Product catalog → Coupons; Linq only forwards
|
|
1671
|
+
the id.
|
|
1672
|
+
|
|
1673
|
+
```json
|
|
1674
|
+
{
|
|
1675
|
+
"mode": "subscription",
|
|
1676
|
+
"price_id": "price_1QAbCdEfGhIjKlMn",
|
|
1677
|
+
"discount": {
|
|
1678
|
+
"coupon": "7fKCMvBh",
|
|
1679
|
+
"label": "50% OFF FIRST MONTH"
|
|
1680
|
+
}
|
|
1681
|
+
}
|
|
1682
|
+
```
|
|
1683
|
+
|
|
1684
|
+
Stripe applies the coupon and prices the first invoice; the `amount` we
|
|
1685
|
+
return is that invoice's amount due, so a `$50.00/month` price with a
|
|
1686
|
+
50%-off-first-month coupon comes back as `2500` and the recipient is
|
|
1687
|
+
charged **$25.00** at checkout. A coupon that covers the whole first
|
|
1688
|
+
invoice returns `amount: 0`; checkout shows $0.00 and collects the card for
|
|
1689
|
+
the renewal rather than charging now. Renewals bill at the full price
|
|
1690
|
+
automatically — how long a discount lasts is the coupon's `duration`,
|
|
1691
|
+
enforced by Stripe on your account, and Linq never re-prices anything.
|
|
1692
|
+
|
|
1693
|
+
Use `promotion_code` instead of `coupon` to apply a promotion code by id
|
|
1694
|
+
(`promo_...`, not the customer-facing code string); pass one or the other,
|
|
1695
|
+
never both.
|
|
1696
|
+
|
|
1697
|
+
`label` is the customer-facing promotion name displayed at checkout instead
|
|
1698
|
+
of the coupon or promotion code ID. The label is displayed exactly as
|
|
1699
|
+
provided, so include important terms such as "FIRST MONTH" or
|
|
1700
|
+
"FIRST 3 MONTHS" when applicable. These terms are not displayed elsewhere
|
|
1701
|
+
on the checkout screen.
|
|
1702
|
+
|
|
1703
|
+
If omitted, Stripe uses the coupon's name as the promotion label.
|
|
1704
|
+
|
|
1627
1705
|
### Free trials
|
|
1628
1706
|
|
|
1629
1707
|
Add `trial_period_days` (or a fixed `trial_end` timestamp) to start the
|
|
@@ -2634,6 +2712,45 @@ class LinqAPIV3WithRawResponse:
|
|
|
2634
2712
|
the Customer and Subscription, so correlating in either direction is
|
|
2635
2713
|
trivial. There are no renewal webhooks from Linq by design.
|
|
2636
2714
|
|
|
2715
|
+
### Discounts
|
|
2716
|
+
|
|
2717
|
+
Pass a `discount` with a **coupon** or **promotion code** from your
|
|
2718
|
+
connected Stripe account to apply it to the subscription. Create either in
|
|
2719
|
+
your Stripe Dashboard under Product catalog → Coupons; Linq only forwards
|
|
2720
|
+
the id.
|
|
2721
|
+
|
|
2722
|
+
```json
|
|
2723
|
+
{
|
|
2724
|
+
"mode": "subscription",
|
|
2725
|
+
"price_id": "price_1QAbCdEfGhIjKlMn",
|
|
2726
|
+
"discount": {
|
|
2727
|
+
"coupon": "7fKCMvBh",
|
|
2728
|
+
"label": "50% OFF FIRST MONTH"
|
|
2729
|
+
}
|
|
2730
|
+
}
|
|
2731
|
+
```
|
|
2732
|
+
|
|
2733
|
+
Stripe applies the coupon and prices the first invoice; the `amount` we
|
|
2734
|
+
return is that invoice's amount due, so a `$50.00/month` price with a
|
|
2735
|
+
50%-off-first-month coupon comes back as `2500` and the recipient is
|
|
2736
|
+
charged **$25.00** at checkout. A coupon that covers the whole first
|
|
2737
|
+
invoice returns `amount: 0`; checkout shows $0.00 and collects the card for
|
|
2738
|
+
the renewal rather than charging now. Renewals bill at the full price
|
|
2739
|
+
automatically — how long a discount lasts is the coupon's `duration`,
|
|
2740
|
+
enforced by Stripe on your account, and Linq never re-prices anything.
|
|
2741
|
+
|
|
2742
|
+
Use `promotion_code` instead of `coupon` to apply a promotion code by id
|
|
2743
|
+
(`promo_...`, not the customer-facing code string); pass one or the other,
|
|
2744
|
+
never both.
|
|
2745
|
+
|
|
2746
|
+
`label` is the customer-facing promotion name displayed at checkout instead
|
|
2747
|
+
of the coupon or promotion code ID. The label is displayed exactly as
|
|
2748
|
+
provided, so include important terms such as "FIRST MONTH" or
|
|
2749
|
+
"FIRST 3 MONTHS" when applicable. These terms are not displayed elsewhere
|
|
2750
|
+
on the checkout screen.
|
|
2751
|
+
|
|
2752
|
+
If omitted, Stripe uses the coupon's name as the promotion label.
|
|
2753
|
+
|
|
2637
2754
|
### Free trials
|
|
2638
2755
|
|
|
2639
2756
|
Add `trial_period_days` (or a fixed `trial_end` timestamp) to start the
|
|
@@ -3516,6 +3633,45 @@ class AsyncLinqAPIV3WithRawResponse:
|
|
|
3516
3633
|
the Customer and Subscription, so correlating in either direction is
|
|
3517
3634
|
trivial. There are no renewal webhooks from Linq by design.
|
|
3518
3635
|
|
|
3636
|
+
### Discounts
|
|
3637
|
+
|
|
3638
|
+
Pass a `discount` with a **coupon** or **promotion code** from your
|
|
3639
|
+
connected Stripe account to apply it to the subscription. Create either in
|
|
3640
|
+
your Stripe Dashboard under Product catalog → Coupons; Linq only forwards
|
|
3641
|
+
the id.
|
|
3642
|
+
|
|
3643
|
+
```json
|
|
3644
|
+
{
|
|
3645
|
+
"mode": "subscription",
|
|
3646
|
+
"price_id": "price_1QAbCdEfGhIjKlMn",
|
|
3647
|
+
"discount": {
|
|
3648
|
+
"coupon": "7fKCMvBh",
|
|
3649
|
+
"label": "50% OFF FIRST MONTH"
|
|
3650
|
+
}
|
|
3651
|
+
}
|
|
3652
|
+
```
|
|
3653
|
+
|
|
3654
|
+
Stripe applies the coupon and prices the first invoice; the `amount` we
|
|
3655
|
+
return is that invoice's amount due, so a `$50.00/month` price with a
|
|
3656
|
+
50%-off-first-month coupon comes back as `2500` and the recipient is
|
|
3657
|
+
charged **$25.00** at checkout. A coupon that covers the whole first
|
|
3658
|
+
invoice returns `amount: 0`; checkout shows $0.00 and collects the card for
|
|
3659
|
+
the renewal rather than charging now. Renewals bill at the full price
|
|
3660
|
+
automatically — how long a discount lasts is the coupon's `duration`,
|
|
3661
|
+
enforced by Stripe on your account, and Linq never re-prices anything.
|
|
3662
|
+
|
|
3663
|
+
Use `promotion_code` instead of `coupon` to apply a promotion code by id
|
|
3664
|
+
(`promo_...`, not the customer-facing code string); pass one or the other,
|
|
3665
|
+
never both.
|
|
3666
|
+
|
|
3667
|
+
`label` is the customer-facing promotion name displayed at checkout instead
|
|
3668
|
+
of the coupon or promotion code ID. The label is displayed exactly as
|
|
3669
|
+
provided, so include important terms such as "FIRST MONTH" or
|
|
3670
|
+
"FIRST 3 MONTHS" when applicable. These terms are not displayed elsewhere
|
|
3671
|
+
on the checkout screen.
|
|
3672
|
+
|
|
3673
|
+
If omitted, Stripe uses the coupon's name as the promotion label.
|
|
3674
|
+
|
|
3519
3675
|
### Free trials
|
|
3520
3676
|
|
|
3521
3677
|
Add `trial_period_days` (or a fixed `trial_end` timestamp) to start the
|
|
@@ -4398,6 +4554,45 @@ class LinqAPIV3WithStreamedResponse:
|
|
|
4398
4554
|
the Customer and Subscription, so correlating in either direction is
|
|
4399
4555
|
trivial. There are no renewal webhooks from Linq by design.
|
|
4400
4556
|
|
|
4557
|
+
### Discounts
|
|
4558
|
+
|
|
4559
|
+
Pass a `discount` with a **coupon** or **promotion code** from your
|
|
4560
|
+
connected Stripe account to apply it to the subscription. Create either in
|
|
4561
|
+
your Stripe Dashboard under Product catalog → Coupons; Linq only forwards
|
|
4562
|
+
the id.
|
|
4563
|
+
|
|
4564
|
+
```json
|
|
4565
|
+
{
|
|
4566
|
+
"mode": "subscription",
|
|
4567
|
+
"price_id": "price_1QAbCdEfGhIjKlMn",
|
|
4568
|
+
"discount": {
|
|
4569
|
+
"coupon": "7fKCMvBh",
|
|
4570
|
+
"label": "50% OFF FIRST MONTH"
|
|
4571
|
+
}
|
|
4572
|
+
}
|
|
4573
|
+
```
|
|
4574
|
+
|
|
4575
|
+
Stripe applies the coupon and prices the first invoice; the `amount` we
|
|
4576
|
+
return is that invoice's amount due, so a `$50.00/month` price with a
|
|
4577
|
+
50%-off-first-month coupon comes back as `2500` and the recipient is
|
|
4578
|
+
charged **$25.00** at checkout. A coupon that covers the whole first
|
|
4579
|
+
invoice returns `amount: 0`; checkout shows $0.00 and collects the card for
|
|
4580
|
+
the renewal rather than charging now. Renewals bill at the full price
|
|
4581
|
+
automatically — how long a discount lasts is the coupon's `duration`,
|
|
4582
|
+
enforced by Stripe on your account, and Linq never re-prices anything.
|
|
4583
|
+
|
|
4584
|
+
Use `promotion_code` instead of `coupon` to apply a promotion code by id
|
|
4585
|
+
(`promo_...`, not the customer-facing code string); pass one or the other,
|
|
4586
|
+
never both.
|
|
4587
|
+
|
|
4588
|
+
`label` is the customer-facing promotion name displayed at checkout instead
|
|
4589
|
+
of the coupon or promotion code ID. The label is displayed exactly as
|
|
4590
|
+
provided, so include important terms such as "FIRST MONTH" or
|
|
4591
|
+
"FIRST 3 MONTHS" when applicable. These terms are not displayed elsewhere
|
|
4592
|
+
on the checkout screen.
|
|
4593
|
+
|
|
4594
|
+
If omitted, Stripe uses the coupon's name as the promotion label.
|
|
4595
|
+
|
|
4401
4596
|
### Free trials
|
|
4402
4597
|
|
|
4403
4598
|
Add `trial_period_days` (or a fixed `trial_end` timestamp) to start the
|
|
@@ -5280,6 +5475,45 @@ class AsyncLinqAPIV3WithStreamedResponse:
|
|
|
5280
5475
|
the Customer and Subscription, so correlating in either direction is
|
|
5281
5476
|
trivial. There are no renewal webhooks from Linq by design.
|
|
5282
5477
|
|
|
5478
|
+
### Discounts
|
|
5479
|
+
|
|
5480
|
+
Pass a `discount` with a **coupon** or **promotion code** from your
|
|
5481
|
+
connected Stripe account to apply it to the subscription. Create either in
|
|
5482
|
+
your Stripe Dashboard under Product catalog → Coupons; Linq only forwards
|
|
5483
|
+
the id.
|
|
5484
|
+
|
|
5485
|
+
```json
|
|
5486
|
+
{
|
|
5487
|
+
"mode": "subscription",
|
|
5488
|
+
"price_id": "price_1QAbCdEfGhIjKlMn",
|
|
5489
|
+
"discount": {
|
|
5490
|
+
"coupon": "7fKCMvBh",
|
|
5491
|
+
"label": "50% OFF FIRST MONTH"
|
|
5492
|
+
}
|
|
5493
|
+
}
|
|
5494
|
+
```
|
|
5495
|
+
|
|
5496
|
+
Stripe applies the coupon and prices the first invoice; the `amount` we
|
|
5497
|
+
return is that invoice's amount due, so a `$50.00/month` price with a
|
|
5498
|
+
50%-off-first-month coupon comes back as `2500` and the recipient is
|
|
5499
|
+
charged **$25.00** at checkout. A coupon that covers the whole first
|
|
5500
|
+
invoice returns `amount: 0`; checkout shows $0.00 and collects the card for
|
|
5501
|
+
the renewal rather than charging now. Renewals bill at the full price
|
|
5502
|
+
automatically — how long a discount lasts is the coupon's `duration`,
|
|
5503
|
+
enforced by Stripe on your account, and Linq never re-prices anything.
|
|
5504
|
+
|
|
5505
|
+
Use `promotion_code` instead of `coupon` to apply a promotion code by id
|
|
5506
|
+
(`promo_...`, not the customer-facing code string); pass one or the other,
|
|
5507
|
+
never both.
|
|
5508
|
+
|
|
5509
|
+
`label` is the customer-facing promotion name displayed at checkout instead
|
|
5510
|
+
of the coupon or promotion code ID. The label is displayed exactly as
|
|
5511
|
+
provided, so include important terms such as "FIRST MONTH" or
|
|
5512
|
+
"FIRST 3 MONTHS" when applicable. These terms are not displayed elsewhere
|
|
5513
|
+
on the checkout screen.
|
|
5514
|
+
|
|
5515
|
+
If omitted, Stripe uses the coupon's name as the promotion label.
|
|
5516
|
+
|
|
5283
5517
|
### Free trials
|
|
5284
5518
|
|
|
5285
5519
|
Add `trial_period_days` (or a fixed `trial_end` timestamp) to start the
|
|
@@ -90,6 +90,45 @@ class PaymentRequestsResource(SyncAPIResource):
|
|
|
90
90
|
the Customer and Subscription, so correlating in either direction is
|
|
91
91
|
trivial. There are no renewal webhooks from Linq by design.
|
|
92
92
|
|
|
93
|
+
### Discounts
|
|
94
|
+
|
|
95
|
+
Pass a `discount` with a **coupon** or **promotion code** from your
|
|
96
|
+
connected Stripe account to apply it to the subscription. Create either in
|
|
97
|
+
your Stripe Dashboard under Product catalog → Coupons; Linq only forwards
|
|
98
|
+
the id.
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"mode": "subscription",
|
|
103
|
+
"price_id": "price_1QAbCdEfGhIjKlMn",
|
|
104
|
+
"discount": {
|
|
105
|
+
"coupon": "7fKCMvBh",
|
|
106
|
+
"label": "50% OFF FIRST MONTH"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Stripe applies the coupon and prices the first invoice; the `amount` we
|
|
112
|
+
return is that invoice's amount due, so a `$50.00/month` price with a
|
|
113
|
+
50%-off-first-month coupon comes back as `2500` and the recipient is
|
|
114
|
+
charged **$25.00** at checkout. A coupon that covers the whole first
|
|
115
|
+
invoice returns `amount: 0`; checkout shows $0.00 and collects the card for
|
|
116
|
+
the renewal rather than charging now. Renewals bill at the full price
|
|
117
|
+
automatically — how long a discount lasts is the coupon's `duration`,
|
|
118
|
+
enforced by Stripe on your account, and Linq never re-prices anything.
|
|
119
|
+
|
|
120
|
+
Use `promotion_code` instead of `coupon` to apply a promotion code by id
|
|
121
|
+
(`promo_...`, not the customer-facing code string); pass one or the other,
|
|
122
|
+
never both.
|
|
123
|
+
|
|
124
|
+
`label` is the customer-facing promotion name displayed at checkout instead
|
|
125
|
+
of the coupon or promotion code ID. The label is displayed exactly as
|
|
126
|
+
provided, so include important terms such as "FIRST MONTH" or
|
|
127
|
+
"FIRST 3 MONTHS" when applicable. These terms are not displayed elsewhere
|
|
128
|
+
on the checkout screen.
|
|
129
|
+
|
|
130
|
+
If omitted, Stripe uses the coupon's name as the promotion label.
|
|
131
|
+
|
|
93
132
|
### Free trials
|
|
94
133
|
|
|
95
134
|
Add `trial_period_days` (or a fixed `trial_end` timestamp) to start the
|
|
@@ -203,6 +242,7 @@ class PaymentRequestsResource(SyncAPIResource):
|
|
|
203
242
|
currency: str | Omit = omit,
|
|
204
243
|
customer_id: str | Omit = omit,
|
|
205
244
|
description: str | Omit = omit,
|
|
245
|
+
discount: payment_request_create_params.Discount | Omit = omit,
|
|
206
246
|
from_: str | Omit = omit,
|
|
207
247
|
metadata: Dict[str, str] | Omit = omit,
|
|
208
248
|
mode: Literal["payment", "subscription"] | Omit = omit,
|
|
@@ -254,6 +294,9 @@ class PaymentRequestsResource(SyncAPIResource):
|
|
|
254
294
|
|
|
255
295
|
description: Optional description shown to the recipient at checkout.
|
|
256
296
|
|
|
297
|
+
discount: Subscription mode only. The coupon or promotion code to apply to this
|
|
298
|
+
subscription payment. Currently, only accept one coupon or one promo code.
|
|
299
|
+
|
|
257
300
|
from_: Required for `rail: natural`. The line the request is sent from, in E.164
|
|
258
301
|
format. Must be a phone number your organization owns.
|
|
259
302
|
|
|
@@ -308,6 +351,7 @@ class PaymentRequestsResource(SyncAPIResource):
|
|
|
308
351
|
"currency": currency,
|
|
309
352
|
"customer_id": customer_id,
|
|
310
353
|
"description": description,
|
|
354
|
+
"discount": discount,
|
|
311
355
|
"from_": from_,
|
|
312
356
|
"metadata": metadata,
|
|
313
357
|
"mode": mode,
|
|
@@ -511,6 +555,45 @@ class AsyncPaymentRequestsResource(AsyncAPIResource):
|
|
|
511
555
|
the Customer and Subscription, so correlating in either direction is
|
|
512
556
|
trivial. There are no renewal webhooks from Linq by design.
|
|
513
557
|
|
|
558
|
+
### Discounts
|
|
559
|
+
|
|
560
|
+
Pass a `discount` with a **coupon** or **promotion code** from your
|
|
561
|
+
connected Stripe account to apply it to the subscription. Create either in
|
|
562
|
+
your Stripe Dashboard under Product catalog → Coupons; Linq only forwards
|
|
563
|
+
the id.
|
|
564
|
+
|
|
565
|
+
```json
|
|
566
|
+
{
|
|
567
|
+
"mode": "subscription",
|
|
568
|
+
"price_id": "price_1QAbCdEfGhIjKlMn",
|
|
569
|
+
"discount": {
|
|
570
|
+
"coupon": "7fKCMvBh",
|
|
571
|
+
"label": "50% OFF FIRST MONTH"
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
Stripe applies the coupon and prices the first invoice; the `amount` we
|
|
577
|
+
return is that invoice's amount due, so a `$50.00/month` price with a
|
|
578
|
+
50%-off-first-month coupon comes back as `2500` and the recipient is
|
|
579
|
+
charged **$25.00** at checkout. A coupon that covers the whole first
|
|
580
|
+
invoice returns `amount: 0`; checkout shows $0.00 and collects the card for
|
|
581
|
+
the renewal rather than charging now. Renewals bill at the full price
|
|
582
|
+
automatically — how long a discount lasts is the coupon's `duration`,
|
|
583
|
+
enforced by Stripe on your account, and Linq never re-prices anything.
|
|
584
|
+
|
|
585
|
+
Use `promotion_code` instead of `coupon` to apply a promotion code by id
|
|
586
|
+
(`promo_...`, not the customer-facing code string); pass one or the other,
|
|
587
|
+
never both.
|
|
588
|
+
|
|
589
|
+
`label` is the customer-facing promotion name displayed at checkout instead
|
|
590
|
+
of the coupon or promotion code ID. The label is displayed exactly as
|
|
591
|
+
provided, so include important terms such as "FIRST MONTH" or
|
|
592
|
+
"FIRST 3 MONTHS" when applicable. These terms are not displayed elsewhere
|
|
593
|
+
on the checkout screen.
|
|
594
|
+
|
|
595
|
+
If omitted, Stripe uses the coupon's name as the promotion label.
|
|
596
|
+
|
|
514
597
|
### Free trials
|
|
515
598
|
|
|
516
599
|
Add `trial_period_days` (or a fixed `trial_end` timestamp) to start the
|
|
@@ -624,6 +707,7 @@ class AsyncPaymentRequestsResource(AsyncAPIResource):
|
|
|
624
707
|
currency: str | Omit = omit,
|
|
625
708
|
customer_id: str | Omit = omit,
|
|
626
709
|
description: str | Omit = omit,
|
|
710
|
+
discount: payment_request_create_params.Discount | Omit = omit,
|
|
627
711
|
from_: str | Omit = omit,
|
|
628
712
|
metadata: Dict[str, str] | Omit = omit,
|
|
629
713
|
mode: Literal["payment", "subscription"] | Omit = omit,
|
|
@@ -675,6 +759,9 @@ class AsyncPaymentRequestsResource(AsyncAPIResource):
|
|
|
675
759
|
|
|
676
760
|
description: Optional description shown to the recipient at checkout.
|
|
677
761
|
|
|
762
|
+
discount: Subscription mode only. The coupon or promotion code to apply to this
|
|
763
|
+
subscription payment. Currently, only accept one coupon or one promo code.
|
|
764
|
+
|
|
678
765
|
from_: Required for `rail: natural`. The line the request is sent from, in E.164
|
|
679
766
|
format. Must be a phone number your organization owns.
|
|
680
767
|
|
|
@@ -729,6 +816,7 @@ class AsyncPaymentRequestsResource(AsyncAPIResource):
|
|
|
729
816
|
"currency": currency,
|
|
730
817
|
"customer_id": customer_id,
|
|
731
818
|
"description": description,
|
|
819
|
+
"discount": discount,
|
|
732
820
|
"from_": from_,
|
|
733
821
|
"metadata": metadata,
|
|
734
822
|
"mode": mode,
|
|
@@ -6,7 +6,20 @@ from typing_extensions import Literal
|
|
|
6
6
|
|
|
7
7
|
from .._models import BaseModel
|
|
8
8
|
|
|
9
|
-
__all__ = ["PaymentRequest", "Natural", "Stripe"]
|
|
9
|
+
__all__ = ["PaymentRequest", "Discount", "Natural", "Stripe"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Discount(BaseModel):
|
|
13
|
+
"""Subscription mode — the discount applied, as Stripe applied it."""
|
|
14
|
+
|
|
15
|
+
coupon: Optional[str] = None
|
|
16
|
+
"""The ID of the coupon applied."""
|
|
17
|
+
|
|
18
|
+
label: Optional[str] = None
|
|
19
|
+
"""The customer-facing discount description shown at checkout."""
|
|
20
|
+
|
|
21
|
+
promotion_code: Optional[str] = None
|
|
22
|
+
"""The ID of the promotion code applied, if you passed one."""
|
|
10
23
|
|
|
11
24
|
|
|
12
25
|
class Natural(BaseModel):
|
|
@@ -47,10 +60,11 @@ class PaymentRequest(BaseModel):
|
|
|
47
60
|
"""Unique identifier of the payment request."""
|
|
48
61
|
|
|
49
62
|
amount: int
|
|
50
|
-
"""
|
|
63
|
+
"""What the recipient is charged at checkout, in the currency's minor units.
|
|
51
64
|
|
|
52
|
-
In `subscription` mode this is the
|
|
53
|
-
|
|
65
|
+
In `subscription` mode this is the first invoice's amount due — all items after
|
|
66
|
+
any discounts are applied — so a discount that covers the whole invoice returns
|
|
67
|
+
`0` and checkout shows $0.00.
|
|
54
68
|
"""
|
|
55
69
|
|
|
56
70
|
checkout_url: str
|
|
@@ -74,6 +88,9 @@ class PaymentRequest(BaseModel):
|
|
|
74
88
|
|
|
75
89
|
description: Optional[str] = None
|
|
76
90
|
|
|
91
|
+
discount: Optional[Discount] = None
|
|
92
|
+
"""Subscription mode — the discount applied, as Stripe applied it."""
|
|
93
|
+
|
|
77
94
|
expires_at: Optional[datetime] = None
|
|
78
95
|
"""When an unpaid request auto-expires."""
|
|
79
96
|
|
|
@@ -8,7 +8,7 @@ from typing_extensions import Literal, Annotated, TypedDict
|
|
|
8
8
|
|
|
9
9
|
from .._utils import PropertyInfo
|
|
10
10
|
|
|
11
|
-
__all__ = ["PaymentRequestCreateParams"]
|
|
11
|
+
__all__ = ["PaymentRequestCreateParams", "Discount"]
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class PaymentRequestCreateParams(TypedDict, total=False):
|
|
@@ -39,6 +39,13 @@ class PaymentRequestCreateParams(TypedDict, total=False):
|
|
|
39
39
|
description: str
|
|
40
40
|
"""Optional description shown to the recipient at checkout."""
|
|
41
41
|
|
|
42
|
+
discount: Discount
|
|
43
|
+
"""Subscription mode only.
|
|
44
|
+
|
|
45
|
+
The coupon or promotion code to apply to this subscription payment. Currently,
|
|
46
|
+
only accept one coupon or one promo code.
|
|
47
|
+
"""
|
|
48
|
+
|
|
42
49
|
from_: Annotated[str, PropertyInfo(alias="from")]
|
|
43
50
|
"""Required for `rail: natural`.
|
|
44
51
|
|
|
@@ -102,3 +109,21 @@ class PaymentRequestCreateParams(TypedDict, total=False):
|
|
|
102
109
|
"""
|
|
103
110
|
|
|
104
111
|
idempotency_key: Annotated[str, PropertyInfo(alias="Idempotency-Key")]
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class Discount(TypedDict, total=False):
|
|
115
|
+
"""Subscription mode only.
|
|
116
|
+
|
|
117
|
+
The coupon or promotion code to apply to
|
|
118
|
+
this subscription payment. Currently, only accept one coupon or one
|
|
119
|
+
promo code.
|
|
120
|
+
"""
|
|
121
|
+
|
|
122
|
+
coupon: str
|
|
123
|
+
"""The ID of the coupon to apply to this subscription."""
|
|
124
|
+
|
|
125
|
+
label: str
|
|
126
|
+
"""Name of the coupon/promo code displayed to customers."""
|
|
127
|
+
|
|
128
|
+
promotion_code: str
|
|
129
|
+
"""The ID of a promotion code to apply to this subscription."""
|
|
@@ -35,6 +35,11 @@ class TestPaymentRequests:
|
|
|
35
35
|
currency="usd",
|
|
36
36
|
customer_id="cus_QAbCdEfGhIjKlMn",
|
|
37
37
|
description="Coffee with Ava",
|
|
38
|
+
discount={
|
|
39
|
+
"coupon": "7fKCMvBh",
|
|
40
|
+
"label": "15% OFF FIRST 3 MONTHS",
|
|
41
|
+
"promotion_code": "promo_1QAbCdEfGhIjKlMn",
|
|
42
|
+
},
|
|
38
43
|
from_="+12025550123",
|
|
39
44
|
metadata={"order_id": "order_8675309"},
|
|
40
45
|
mode="payment",
|
|
@@ -212,6 +217,11 @@ class TestAsyncPaymentRequests:
|
|
|
212
217
|
currency="usd",
|
|
213
218
|
customer_id="cus_QAbCdEfGhIjKlMn",
|
|
214
219
|
description="Coffee with Ava",
|
|
220
|
+
discount={
|
|
221
|
+
"coupon": "7fKCMvBh",
|
|
222
|
+
"label": "15% OFF FIRST 3 MONTHS",
|
|
223
|
+
"promotion_code": "promo_1QAbCdEfGhIjKlMn",
|
|
224
|
+
},
|
|
215
225
|
from_="+12025550123",
|
|
216
226
|
metadata={"order_id": "order_8675309"},
|
|
217
227
|
mode="payment",
|
|
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
|