linq-python 0.37.0__tar.gz → 0.38.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.38.0/.release-please-manifest.json +3 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/CHANGELOG.md +14 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/PKG-INFO +1 -1
- {linq_python-0.37.0 → linq_python-0.38.0}/pyproject.toml +1 -1
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_client.py +6 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_version.py +1 -1
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/chats/chats.py +12 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/chats/messages.py +2 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/chats/polls.py +2 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/messages/messages.py +8 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/messages/poll.py +2 -0
- linq_python-0.38.0/src/linq/types/schemas_text_part_response.py +76 -0
- linq_python-0.38.0/src/linq/types/shared/text_part_response.py +80 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/text_part_param.py +1 -1
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_webhooks.py +2 -2
- {linq_python-0.37.0 → linq_python-0.38.0}/uv.lock +1 -1
- linq_python-0.37.0/.release-please-manifest.json +0 -3
- linq_python-0.37.0/src/linq/types/schemas_text_part_response.py +0 -36
- linq_python-0.37.0/src/linq/types/shared/text_part_response.py +0 -40
- {linq_python-0.37.0 → linq_python-0.38.0}/.gitignore +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/CONTRIBUTING.md +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/LICENSE +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/README.md +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/SECURITY.md +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/api.md +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/bin/check-release-environment +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/bin/publish-pypi +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/examples/.keep +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/release-please-config.json +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/requirements-dev.lock +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_base_client.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_compat.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_constants.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_exceptions.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_files.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_models.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_qs.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_resource.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_streaming.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_types.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_compat.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_datetime_parse.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_json.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_logs.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_path.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_proxy.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_reflection.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_resources_proxy.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_streams.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_sync.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_transform.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_typing.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/_utils/_utils.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/lib/.keep +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/pagination.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/py.typed +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/attachments.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/available_number.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/blocked_handles.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/capability.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/chats/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/chats/background.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/chats/location.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/chats/participants.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/chats/typing.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/contact_card.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/experiences.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/messages/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/payment_handles.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/payment_providers.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/payment_requests.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/payments.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/phone_numbers.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/phonenumbers.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/webhook_events.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/webhook_subscriptions.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/resources/webhooks.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/attachment_create_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/attachment_create_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/attachment_retrieve_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/available_number_retrieve_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/available_number_retrieve_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/blocked_handle_block_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/blocked_handle_block_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/blocked_handle_entry.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/blocked_handle_list_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/blocked_handle_unblock_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/capability_check_RCS_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/capability_check_i_message_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_background_update_failed_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_background_updated_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_create_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_create_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_created_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_group_name_update_failed_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_leave_chat_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_list_chats_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_send_voicememo_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_send_voicememo_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_update_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chat_update_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/background_set_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/get_chat_location_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/location_request_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/message_list_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/message_send_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/message_send_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/participant_add_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/participant_add_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/participant_remove_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/participant_remove_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/poll.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/poll_create_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/poll_envelope.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/chats/sent_message.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/contact_card_create_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/contact_card_retrieve_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/contact_card_retrieve_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/contact_card_update_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/experience_list_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/experience_retrieve_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/handle_check_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/link_part_param.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/media_part_param.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_add_reaction_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_add_reaction_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_content_param.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_create_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_create_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_delivered_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_edited_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_effect.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_effect_param.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_event_v2.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_failed_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_list_messages_thread_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_read_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_received_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_sent_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_update_app_card_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_update_app_card_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/message_update_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/messages/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/messages/poll_add_options_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/messages/poll_vote_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/participant_added_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/participant_removed_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment_create_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment_credentials_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment_handle_connection.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment_handle_verify_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment_provider.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment_provider_connect_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment_provider_connect_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment_request.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment_request_create_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment_request_list_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/payment_request_list_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/phone_number_list_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/phone_number_status_updated_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/phone_number_update_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/phone_number_update_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/phonenumber_list_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/poll_delivered_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/poll_failed_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/poll_reaction_added_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/poll_read_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/poll_received_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/poll_sent_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/poll_updated_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/poll_vote_added_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/poll_vote_removed_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reaction_added_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reaction_event_base.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reaction_removed_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reply_to.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reply_to_param.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reputation_action_item.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reputation_audit.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reputation_audit_started.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reputation_driver.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reputation_driver_key.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reputation_evidence.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reputation_opt_out_chat.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reputation_report.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/reputation_unhealthy_chat.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/schemas_media_part_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/schemas_message_effect.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/set_contact_card.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared/chat_handle.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared/link_part_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared/media_part_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared/reaction.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared/reaction_type.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared/service_type.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared/text_decoration.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared_params/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared_params/reaction_type.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared_params/service_type.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/shared_params/text_decoration.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/supported_content_type.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/unwrap_webhook_event.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/webhook_event_list_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/webhook_event_type.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/webhook_subscription.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/webhook_subscription_create_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/webhook_subscription_create_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/webhook_subscription_list_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/src/linq/types/webhook_subscription_update_params.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/chats/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/chats/test_background.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/chats/test_location.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/chats/test_messages.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/chats/test_participants.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/chats/test_polls.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/chats/test_typing.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/messages/__init__.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/messages/test_poll.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_attachments.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_available_number.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_blocked_handles.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_capability.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_chats.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_contact_card.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_experiences.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_messages.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_payment_handles.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_payment_providers.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_payment_requests.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_payments.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_phone_numbers.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_phonenumbers.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_webhook_events.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/api_resources/test_webhook_subscriptions.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/conftest.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/sample_file.txt +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_client.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_extract_files.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_files.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_models.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_qs.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_required_args.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_response.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_streaming.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_transform.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_utils/test_json.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_utils/test_path.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_utils/test_proxy.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/test_utils/test_typing.py +0 -0
- {linq_python-0.37.0 → linq_python-0.38.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.38.0](https://github.com/linq-team/linq-python/compare/v0.37.1...v0.38.0) (2026-09-01)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add mentions array to text parts, deprecate singular mention fields ([de49b5c](https://github.com/linq-team/linq-python/commit/de49b5cc2db3cf5be4e6a87c3c938c8cc6237d25))
|
|
9
|
+
|
|
10
|
+
## [0.37.1](https://github.com/linq-team/linq-python/compare/v0.37.0...v0.37.1) (2026-08-31)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Documentation
|
|
14
|
+
|
|
15
|
+
* clarify backstop behavior for ephemeral message storage ([c6efb3b](https://github.com/linq-team/linq-python/commit/c6efb3be895b90f4349c2e01b7c5904818c93fe2))
|
|
16
|
+
|
|
3
17
|
## [0.37.0](https://github.com/linq-team/linq-python/compare/v0.36.1...v0.37.0) (2026-08-28)
|
|
4
18
|
|
|
5
19
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: linq-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.38.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
|
|
@@ -214,6 +214,7 @@ class LinqAPIV3(SyncAPIClient):
|
|
|
214
214
|
|
|
215
215
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
216
216
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
217
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
217
218
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
218
219
|
|
|
219
220
|
**When to choose ephemeral:**
|
|
@@ -1329,6 +1330,7 @@ class AsyncLinqAPIV3(AsyncAPIClient):
|
|
|
1329
1330
|
|
|
1330
1331
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
1331
1332
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
1333
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
1332
1334
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
1333
1335
|
|
|
1334
1336
|
**When to choose ephemeral:**
|
|
@@ -2378,6 +2380,7 @@ class LinqAPIV3WithRawResponse:
|
|
|
2378
2380
|
|
|
2379
2381
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
2380
2382
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
2383
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
2381
2384
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
2382
2385
|
|
|
2383
2386
|
**When to choose ephemeral:**
|
|
@@ -3299,6 +3302,7 @@ class AsyncLinqAPIV3WithRawResponse:
|
|
|
3299
3302
|
|
|
3300
3303
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
3301
3304
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
3305
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
3302
3306
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
3303
3307
|
|
|
3304
3308
|
**When to choose ephemeral:**
|
|
@@ -4220,6 +4224,7 @@ class LinqAPIV3WithStreamedResponse:
|
|
|
4220
4224
|
|
|
4221
4225
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
4222
4226
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
4227
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
4223
4228
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
4224
4229
|
|
|
4225
4230
|
**When to choose ephemeral:**
|
|
@@ -5141,6 +5146,7 @@ class AsyncLinqAPIV3WithStreamedResponse:
|
|
|
5141
5146
|
|
|
5142
5147
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
5143
5148
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
5149
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
5144
5150
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
5145
5151
|
|
|
5146
5152
|
**When to choose ephemeral:**
|
|
@@ -174,6 +174,7 @@ class ChatsResource(SyncAPIResource):
|
|
|
174
174
|
|
|
175
175
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
176
176
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
177
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
177
178
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
178
179
|
|
|
179
180
|
**When to choose ephemeral:**
|
|
@@ -279,6 +280,7 @@ class ChatsResource(SyncAPIResource):
|
|
|
279
280
|
|
|
280
281
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
281
282
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
283
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
282
284
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
283
285
|
|
|
284
286
|
**When to choose ephemeral:**
|
|
@@ -919,6 +921,7 @@ class AsyncChatsResource(AsyncAPIResource):
|
|
|
919
921
|
|
|
920
922
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
921
923
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
924
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
922
925
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
923
926
|
|
|
924
927
|
**When to choose ephemeral:**
|
|
@@ -1024,6 +1027,7 @@ class AsyncChatsResource(AsyncAPIResource):
|
|
|
1024
1027
|
|
|
1025
1028
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
1026
1029
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
1030
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
1027
1031
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
1028
1032
|
|
|
1029
1033
|
**When to choose ephemeral:**
|
|
@@ -1692,6 +1696,7 @@ class ChatsResourceWithRawResponse:
|
|
|
1692
1696
|
|
|
1693
1697
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
1694
1698
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
1699
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
1695
1700
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
1696
1701
|
|
|
1697
1702
|
**When to choose ephemeral:**
|
|
@@ -1797,6 +1802,7 @@ class ChatsResourceWithRawResponse:
|
|
|
1797
1802
|
|
|
1798
1803
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
1799
1804
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
1805
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
1800
1806
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
1801
1807
|
|
|
1802
1808
|
**When to choose ephemeral:**
|
|
@@ -1953,6 +1959,7 @@ class AsyncChatsResourceWithRawResponse:
|
|
|
1953
1959
|
|
|
1954
1960
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
1955
1961
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
1962
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
1956
1963
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
1957
1964
|
|
|
1958
1965
|
**When to choose ephemeral:**
|
|
@@ -2058,6 +2065,7 @@ class AsyncChatsResourceWithRawResponse:
|
|
|
2058
2065
|
|
|
2059
2066
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
2060
2067
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
2068
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
2061
2069
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
2062
2070
|
|
|
2063
2071
|
**When to choose ephemeral:**
|
|
@@ -2214,6 +2222,7 @@ class ChatsResourceWithStreamingResponse:
|
|
|
2214
2222
|
|
|
2215
2223
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
2216
2224
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
2225
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
2217
2226
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
2218
2227
|
|
|
2219
2228
|
**When to choose ephemeral:**
|
|
@@ -2319,6 +2328,7 @@ class ChatsResourceWithStreamingResponse:
|
|
|
2319
2328
|
|
|
2320
2329
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
2321
2330
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
2331
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
2322
2332
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
2323
2333
|
|
|
2324
2334
|
**When to choose ephemeral:**
|
|
@@ -2475,6 +2485,7 @@ class AsyncChatsResourceWithStreamingResponse:
|
|
|
2475
2485
|
|
|
2476
2486
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
2477
2487
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
2488
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
2478
2489
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
2479
2490
|
|
|
2480
2491
|
**When to choose ephemeral:**
|
|
@@ -2580,6 +2591,7 @@ class AsyncChatsResourceWithStreamingResponse:
|
|
|
2580
2591
|
|
|
2581
2592
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
2582
2593
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
2594
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
2583
2595
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
2584
2596
|
|
|
2585
2597
|
**When to choose ephemeral:**
|
|
@@ -74,6 +74,7 @@ class MessagesResource(SyncAPIResource):
|
|
|
74
74
|
|
|
75
75
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
76
76
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
77
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
77
78
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
78
79
|
|
|
79
80
|
**When to choose ephemeral:**
|
|
@@ -306,6 +307,7 @@ class AsyncMessagesResource(AsyncAPIResource):
|
|
|
306
307
|
|
|
307
308
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
308
309
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
310
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
309
311
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
310
312
|
|
|
311
313
|
**When to choose ephemeral:**
|
|
@@ -71,6 +71,7 @@ class PollsResource(SyncAPIResource):
|
|
|
71
71
|
|
|
72
72
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
73
73
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
74
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
74
75
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
75
76
|
|
|
76
77
|
**When to choose ephemeral:**
|
|
@@ -197,6 +198,7 @@ class AsyncPollsResource(AsyncAPIResource):
|
|
|
197
198
|
|
|
198
199
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
199
200
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
201
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
200
202
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
201
203
|
|
|
202
204
|
**When to choose ephemeral:**
|
|
@@ -93,6 +93,7 @@ class MessagesResource(SyncAPIResource):
|
|
|
93
93
|
|
|
94
94
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
95
95
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
96
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
96
97
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
97
98
|
|
|
98
99
|
**When to choose ephemeral:**
|
|
@@ -155,6 +156,7 @@ class MessagesResource(SyncAPIResource):
|
|
|
155
156
|
|
|
156
157
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
157
158
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
159
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
158
160
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
159
161
|
|
|
160
162
|
**When to choose ephemeral:**
|
|
@@ -735,6 +737,7 @@ class AsyncMessagesResource(AsyncAPIResource):
|
|
|
735
737
|
|
|
736
738
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
737
739
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
740
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
738
741
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
739
742
|
|
|
740
743
|
**When to choose ephemeral:**
|
|
@@ -797,6 +800,7 @@ class AsyncMessagesResource(AsyncAPIResource):
|
|
|
797
800
|
|
|
798
801
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
799
802
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
803
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
800
804
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
801
805
|
|
|
802
806
|
**When to choose ephemeral:**
|
|
@@ -1404,6 +1408,7 @@ class MessagesResourceWithRawResponse:
|
|
|
1404
1408
|
|
|
1405
1409
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
1406
1410
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
1411
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
1407
1412
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
1408
1413
|
|
|
1409
1414
|
**When to choose ephemeral:**
|
|
@@ -1494,6 +1499,7 @@ class AsyncMessagesResourceWithRawResponse:
|
|
|
1494
1499
|
|
|
1495
1500
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
1496
1501
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
1502
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
1497
1503
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
1498
1504
|
|
|
1499
1505
|
**When to choose ephemeral:**
|
|
@@ -1584,6 +1590,7 @@ class MessagesResourceWithStreamingResponse:
|
|
|
1584
1590
|
|
|
1585
1591
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
1586
1592
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
1593
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
1587
1594
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
1588
1595
|
|
|
1589
1596
|
**When to choose ephemeral:**
|
|
@@ -1674,6 +1681,7 @@ class AsyncMessagesResourceWithStreamingResponse:
|
|
|
1674
1681
|
|
|
1675
1682
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
1676
1683
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
1684
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
1677
1685
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
1678
1686
|
|
|
1679
1687
|
**When to choose ephemeral:**
|
|
@@ -74,6 +74,7 @@ class PollResource(SyncAPIResource):
|
|
|
74
74
|
|
|
75
75
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
76
76
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
77
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
77
78
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
78
79
|
|
|
79
80
|
**When to choose ephemeral:**
|
|
@@ -275,6 +276,7 @@ class AsyncPollResource(AsyncAPIResource):
|
|
|
275
276
|
|
|
276
277
|
- **No expiry timestamp is exposed.** API responses and webhook payloads do not include the deletion time. If you need it, compute `created_at + 24h` yourself.
|
|
277
278
|
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
279
|
+
- **The backstop governs Linq storage.** API retrievability (the `404` behavior above) and CDN media expire at the 24-hour mark. Removal of the corresponding entries from the sending device happens asynchronously and can complete after the backstop.
|
|
278
280
|
- **Delivery is unaffected.** Ephemeral messages send, deliver, and fire the usual `message.sent` / `message.received` and status webhooks exactly like standard messages. Only retention changes.
|
|
279
281
|
|
|
280
282
|
**When to choose ephemeral:**
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
from .._models import BaseModel
|
|
7
|
+
from .shared.text_decoration import TextDecoration
|
|
8
|
+
|
|
9
|
+
__all__ = ["SchemasTextPartResponse", "Mention"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class Mention(BaseModel):
|
|
13
|
+
"""
|
|
14
|
+
One mention on a text part — who was mentioned, and which characters of `value` are
|
|
15
|
+
the mention. A part carries one of these per mention, in the order they appear in the
|
|
16
|
+
text, so a message naming two people has two entries.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
handle: str
|
|
20
|
+
"""
|
|
21
|
+
Address of the mentioned participant, exactly as the device recorded it — an
|
|
22
|
+
E.164 phone number or an email address.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
is_me: bool
|
|
26
|
+
"""Whether the mentioned participant is this line."""
|
|
27
|
+
|
|
28
|
+
range: List[int]
|
|
29
|
+
"""
|
|
30
|
+
Character range `[start, end)` in `value` highlighted as this mention.
|
|
31
|
+
_Characters are measured as UTF-16 code units. Most characters count as 1; some
|
|
32
|
+
emoji count as 2._
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class SchemasTextPartResponse(BaseModel):
|
|
37
|
+
"""A text message part"""
|
|
38
|
+
|
|
39
|
+
type: Literal["text"]
|
|
40
|
+
"""Indicates this is a text message part"""
|
|
41
|
+
|
|
42
|
+
value: str
|
|
43
|
+
"""The text content"""
|
|
44
|
+
|
|
45
|
+
mention: Optional[str] = None
|
|
46
|
+
"""DEPRECATED: Use `mentions` instead.
|
|
47
|
+
|
|
48
|
+
Handle (E.164 phone number or Apple ID email) of the **first** mention on this
|
|
49
|
+
part. A part may carry several mentions; this field shows only the first in
|
|
50
|
+
`value` order, so it cannot be used to determine whether a given participant was
|
|
51
|
+
mentioned. `null` when the part carries no mention.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
mention_range: Optional[List[int]] = None
|
|
55
|
+
"""DEPRECATED: Use `mentions[].range` instead.
|
|
56
|
+
|
|
57
|
+
Character range `[start, end)` in `value` highlighted as the **first** mention
|
|
58
|
+
only. `null` when the range was omitted (the whole `value` is highlighted) or
|
|
59
|
+
the part carries no mention. _Characters are measured as UTF-16 code units. Most
|
|
60
|
+
characters count as 1; some emoji count as 2._
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
mentions: Optional[List[Mention]] = None
|
|
64
|
+
"""Every mention on this part, in the order they appear in `value`.
|
|
65
|
+
|
|
66
|
+
`null` when the part carries no mention. A part can carry several mentions of
|
|
67
|
+
different people — check `is_me` to tell whether this line was one of them.
|
|
68
|
+
|
|
69
|
+
Only iMessage carries mentions. On a received message this is populated when the
|
|
70
|
+
sender was on iMessage; SMS and RCS have no way to mark a mention, so a message
|
|
71
|
+
from an SMS or RCS participant arrives as plain text with `mentions` null, even
|
|
72
|
+
in a group where other participants are on iMessage.
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
text_decorations: Optional[List[TextDecoration]] = None
|
|
76
|
+
"""Text decorations applied to character ranges in the value"""
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
from typing_extensions import Literal
|
|
5
|
+
|
|
6
|
+
from .reaction import Reaction
|
|
7
|
+
from ..._models import BaseModel
|
|
8
|
+
from .text_decoration import TextDecoration
|
|
9
|
+
|
|
10
|
+
__all__ = ["TextPartResponse", "Mention"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Mention(BaseModel):
|
|
14
|
+
"""
|
|
15
|
+
One mention on a text part — who was mentioned, and which characters of `value` are
|
|
16
|
+
the mention. A part carries one of these per mention, in the order they appear in the
|
|
17
|
+
text, so a message naming two people has two entries.
|
|
18
|
+
"""
|
|
19
|
+
|
|
20
|
+
handle: str
|
|
21
|
+
"""
|
|
22
|
+
Address of the mentioned participant, exactly as the device recorded it — an
|
|
23
|
+
E.164 phone number or an email address.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
is_me: bool
|
|
27
|
+
"""Whether the mentioned participant is this line."""
|
|
28
|
+
|
|
29
|
+
range: List[int]
|
|
30
|
+
"""
|
|
31
|
+
Character range `[start, end)` in `value` highlighted as this mention.
|
|
32
|
+
_Characters are measured as UTF-16 code units. Most characters count as 1; some
|
|
33
|
+
emoji count as 2._
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class TextPartResponse(BaseModel):
|
|
38
|
+
"""A text message part"""
|
|
39
|
+
|
|
40
|
+
reactions: Optional[List[Reaction]] = None
|
|
41
|
+
"""Reactions on this message part"""
|
|
42
|
+
|
|
43
|
+
type: Literal["text"]
|
|
44
|
+
"""Indicates this is a text message part"""
|
|
45
|
+
|
|
46
|
+
value: str
|
|
47
|
+
"""The text content"""
|
|
48
|
+
|
|
49
|
+
mention: Optional[str] = None
|
|
50
|
+
"""DEPRECATED: Use `mentions` instead.
|
|
51
|
+
|
|
52
|
+
Handle (E.164 phone number or Apple ID email) of the **first** mention on this
|
|
53
|
+
part. A part may carry several mentions; this field shows only the first in
|
|
54
|
+
`value` order, so it cannot be used to determine whether a given participant was
|
|
55
|
+
mentioned. `null` when the part carries no mention.
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
mention_range: Optional[List[int]] = None
|
|
59
|
+
"""DEPRECATED: Use `mentions[].range` instead.
|
|
60
|
+
|
|
61
|
+
Character range `[start, end)` in `value` highlighted as the **first** mention
|
|
62
|
+
only. `null` when the range was omitted (the whole `value` is highlighted) or
|
|
63
|
+
the part carries no mention. _Characters are measured as UTF-16 code units. Most
|
|
64
|
+
characters count as 1; some emoji count as 2._
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
mentions: Optional[List[Mention]] = None
|
|
68
|
+
"""Every mention on this part, in the order they appear in `value`.
|
|
69
|
+
|
|
70
|
+
`null` when the part carries no mention. A part can carry several mentions of
|
|
71
|
+
different people — check `is_me` to tell whether this line was one of them.
|
|
72
|
+
|
|
73
|
+
Only iMessage carries mentions. On a received message this is populated when the
|
|
74
|
+
sender was on iMessage; SMS and RCS have no way to mark a mention, so a message
|
|
75
|
+
from an SMS or RCS participant arrives as plain text with `mentions` null, even
|
|
76
|
+
in a group where other participants are on iMessage.
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
text_decorations: Optional[List[TextDecoration]] = None
|
|
80
|
+
"""Text decorations applied to character ranges in the value"""
|
|
@@ -23,7 +23,7 @@ class TextPartParam(TypedDict, total=False):
|
|
|
23
23
|
"""
|
|
24
24
|
|
|
25
25
|
mention: str
|
|
26
|
-
"""
|
|
26
|
+
"""Mention a chat participant.
|
|
27
27
|
|
|
28
28
|
Group chats only — sending a mention to a direct chat is rejected with `409` /
|
|
29
29
|
`2023`. The chat's service is not a constraint: a mention is accepted in any
|
|
@@ -31,7 +31,7 @@ class TestWebhooks:
|
|
|
31
31
|
|
|
32
32
|
client = client.with_options(webhook_secret=client_opt)
|
|
33
33
|
|
|
34
|
-
data = """{"api_version":"v3","created_at":"2025-11-23T17:30:00Z","data":{"id":"550e8400-e29b-41d4-a716-446655440001","chat":{"id":"550e8400-e29b-41d4-a716-446655440000","health_status":{"doc_url":"https://docs.linqapp.com/guides/chats/chat-health#at-risk","status":"AT_RISK","updated_at":"2026-05-01T18:28:25Z"},"is_group":true,"owner_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"}},"direction":"outbound","parts":[{"type":"text","value":"Hello!","mention":"+14155551234","mention_range":[4,9],"text_decorations":[{"range":[0,5],"animation":"shake","style":"bold"}]}],"sender_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"},"service":"iMessage","delivered_at":"2026-01-30T20:49:20.352Z","effect":{"name":"gentle","type":"bubble"},"idempotency_key":"unique-key","preferred_service":"iMessage","read_at":null,"reconciled_at":"2026-01-30T22:05:00.000Z","reply_to":{"message_id":"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e","part_index":0},"sent_at":"2026-01-30T20:49:19.704Z"},"event_id":"550e8400-e29b-41d4-a716-446655440000","event_type":"message.sent","partner_id":"partner_abc123","trace_id":"abc123def456","webhook_version":"2025-01-01"}"""
|
|
34
|
+
data = """{"api_version":"v3","created_at":"2025-11-23T17:30:00Z","data":{"id":"550e8400-e29b-41d4-a716-446655440001","chat":{"id":"550e8400-e29b-41d4-a716-446655440000","health_status":{"doc_url":"https://docs.linqapp.com/guides/chats/chat-health#at-risk","status":"AT_RISK","updated_at":"2026-05-01T18:28:25Z"},"is_group":true,"owner_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"}},"direction":"outbound","parts":[{"type":"text","value":"Hello!","mention":"+14155551234","mention_range":[4,9],"mentions":[{"handle":"+14155550123","is_me":true,"range":[4,9]}],"text_decorations":[{"range":[0,5],"animation":"shake","style":"bold"}]}],"sender_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"},"service":"iMessage","delivered_at":"2026-01-30T20:49:20.352Z","effect":{"name":"gentle","type":"bubble"},"idempotency_key":"unique-key","preferred_service":"iMessage","read_at":null,"reconciled_at":"2026-01-30T22:05:00.000Z","reply_to":{"message_id":"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e","part_index":0},"sent_at":"2026-01-30T20:49:19.704Z"},"event_id":"550e8400-e29b-41d4-a716-446655440000","event_type":"message.sent","partner_id":"partner_abc123","trace_id":"abc123def456","webhook_version":"2025-01-01"}"""
|
|
35
35
|
msg_id = "1"
|
|
36
36
|
timestamp = datetime.now(tz=timezone.utc)
|
|
37
37
|
sig = hook.sign(msg_id=msg_id, timestamp=timestamp, data=data)
|
|
@@ -78,7 +78,7 @@ class TestAsyncWebhooks:
|
|
|
78
78
|
|
|
79
79
|
async_client = async_client.with_options(webhook_secret=client_opt)
|
|
80
80
|
|
|
81
|
-
data = """{"api_version":"v3","created_at":"2025-11-23T17:30:00Z","data":{"id":"550e8400-e29b-41d4-a716-446655440001","chat":{"id":"550e8400-e29b-41d4-a716-446655440000","health_status":{"doc_url":"https://docs.linqapp.com/guides/chats/chat-health#at-risk","status":"AT_RISK","updated_at":"2026-05-01T18:28:25Z"},"is_group":true,"owner_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"}},"direction":"outbound","parts":[{"type":"text","value":"Hello!","mention":"+14155551234","mention_range":[4,9],"text_decorations":[{"range":[0,5],"animation":"shake","style":"bold"}]}],"sender_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"},"service":"iMessage","delivered_at":"2026-01-30T20:49:20.352Z","effect":{"name":"gentle","type":"bubble"},"idempotency_key":"unique-key","preferred_service":"iMessage","read_at":null,"reconciled_at":"2026-01-30T22:05:00.000Z","reply_to":{"message_id":"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e","part_index":0},"sent_at":"2026-01-30T20:49:19.704Z"},"event_id":"550e8400-e29b-41d4-a716-446655440000","event_type":"message.sent","partner_id":"partner_abc123","trace_id":"abc123def456","webhook_version":"2025-01-01"}"""
|
|
81
|
+
data = """{"api_version":"v3","created_at":"2025-11-23T17:30:00Z","data":{"id":"550e8400-e29b-41d4-a716-446655440001","chat":{"id":"550e8400-e29b-41d4-a716-446655440000","health_status":{"doc_url":"https://docs.linqapp.com/guides/chats/chat-health#at-risk","status":"AT_RISK","updated_at":"2026-05-01T18:28:25Z"},"is_group":true,"owner_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"}},"direction":"outbound","parts":[{"type":"text","value":"Hello!","mention":"+14155551234","mention_range":[4,9],"mentions":[{"handle":"+14155550123","is_me":true,"range":[4,9]}],"text_decorations":[{"range":[0,5],"animation":"shake","style":"bold"}]}],"sender_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"},"service":"iMessage","delivered_at":"2026-01-30T20:49:20.352Z","effect":{"name":"gentle","type":"bubble"},"idempotency_key":"unique-key","preferred_service":"iMessage","read_at":null,"reconciled_at":"2026-01-30T22:05:00.000Z","reply_to":{"message_id":"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e","part_index":0},"sent_at":"2026-01-30T20:49:19.704Z"},"event_id":"550e8400-e29b-41d4-a716-446655440000","event_type":"message.sent","partner_id":"partner_abc123","trace_id":"abc123def456","webhook_version":"2025-01-01"}"""
|
|
82
82
|
msg_id = "1"
|
|
83
83
|
timestamp = datetime.now(tz=timezone.utc)
|
|
84
84
|
sig = hook.sign(msg_id=msg_id, timestamp=timestamp, data=data)
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
|
|
3
|
-
from typing import List, Optional
|
|
4
|
-
from typing_extensions import Literal
|
|
5
|
-
|
|
6
|
-
from .._models import BaseModel
|
|
7
|
-
from .shared.text_decoration import TextDecoration
|
|
8
|
-
|
|
9
|
-
__all__ = ["SchemasTextPartResponse"]
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
class SchemasTextPartResponse(BaseModel):
|
|
13
|
-
"""A text message part"""
|
|
14
|
-
|
|
15
|
-
type: Literal["text"]
|
|
16
|
-
"""Indicates this is a text message part"""
|
|
17
|
-
|
|
18
|
-
value: str
|
|
19
|
-
"""The text content"""
|
|
20
|
-
|
|
21
|
-
mention: Optional[str] = None
|
|
22
|
-
"""
|
|
23
|
-
Handle (E.164 phone number or Apple ID email) of the @mentioned chat
|
|
24
|
-
participant, as sent. `null` when the part carries no mention.
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
mention_range: Optional[List[int]] = None
|
|
28
|
-
"""
|
|
29
|
-
Character range `[start, end)` in `value` highlighted as the mention, as sent.
|
|
30
|
-
`null` when the send omitted it (the whole `value` is highlighted) or the part
|
|
31
|
-
carries no mention. _Characters are measured as UTF-16 code units. Most
|
|
32
|
-
characters count as 1; some emoji count as 2._
|
|
33
|
-
"""
|
|
34
|
-
|
|
35
|
-
text_decorations: Optional[List[TextDecoration]] = None
|
|
36
|
-
"""Text decorations applied to character ranges in the value"""
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
-
|
|
3
|
-
from typing import List, Optional
|
|
4
|
-
from typing_extensions import Literal
|
|
5
|
-
|
|
6
|
-
from .reaction import Reaction
|
|
7
|
-
from ..._models import BaseModel
|
|
8
|
-
from .text_decoration import TextDecoration
|
|
9
|
-
|
|
10
|
-
__all__ = ["TextPartResponse"]
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class TextPartResponse(BaseModel):
|
|
14
|
-
"""A text message part"""
|
|
15
|
-
|
|
16
|
-
reactions: Optional[List[Reaction]] = None
|
|
17
|
-
"""Reactions on this message part"""
|
|
18
|
-
|
|
19
|
-
type: Literal["text"]
|
|
20
|
-
"""Indicates this is a text message part"""
|
|
21
|
-
|
|
22
|
-
value: str
|
|
23
|
-
"""The text content"""
|
|
24
|
-
|
|
25
|
-
mention: Optional[str] = None
|
|
26
|
-
"""
|
|
27
|
-
Handle (E.164 phone number or Apple ID email) of the @mentioned chat
|
|
28
|
-
participant, as sent. `null` when the part carries no mention.
|
|
29
|
-
"""
|
|
30
|
-
|
|
31
|
-
mention_range: Optional[List[int]] = None
|
|
32
|
-
"""
|
|
33
|
-
Character range `[start, end)` in `value` highlighted as the mention, as sent.
|
|
34
|
-
`null` when the send omitted it (the whole `value` is highlighted) or the part
|
|
35
|
-
carries no mention. _Characters are measured as UTF-16 code units. Most
|
|
36
|
-
characters count as 1; some emoji count as 2._
|
|
37
|
-
"""
|
|
38
|
-
|
|
39
|
-
text_decorations: Optional[List[TextDecoration]] = None
|
|
40
|
-
"""Text decorations applied to character ranges in the value"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|