linq-python 0.15.0__tar.gz → 0.15.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- linq_python-0.15.1/.release-please-manifest.json +3 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/CHANGELOG.md +7 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/PKG-INFO +1 -1
- {linq_python-0.15.0 → linq_python-0.15.1}/api.md +24 -2
- {linq_python-0.15.0 → linq_python-0.15.1}/pyproject.toml +1 -1
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_client.py +342 -12
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_version.py +1 -1
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/__init__.py +14 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/attachments.py +2 -2
- linq_python-0.15.1/src/linq/resources/available_number.py +221 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/chats/chats.py +240 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/chats/location.py +18 -16
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/chats/messages.py +80 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/contact_card.py +2 -4
- linq_python-0.15.1/src/linq/resources/messages.py +1195 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/phone_numbers.py +103 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/__init__.py +8 -0
- linq_python-0.15.1/src/linq/types/available_number_retrieve_params.py +18 -0
- linq_python-0.15.1/src/linq/types/available_number_retrieve_response.py +20 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chats/sent_message.py +47 -7
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/contact_card_create_params.py +1 -4
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message.py +47 -7
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_content_param.py +65 -13
- linq_python-0.15.1/src/linq/types/message_create_params.py +55 -0
- linq_python-0.15.1/src/linq/types/message_create_response.py +67 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_event_v2.py +1 -1
- linq_python-0.15.1/src/linq/types/message_update_app_card_params.py +102 -0
- linq_python-0.15.1/src/linq/types/message_update_app_card_response.py +16 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/phone_number_list_response.py +31 -21
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/phone_number_status_updated_webhook_event.py +12 -12
- linq_python-0.15.1/src/linq/types/phone_number_update_params.py +13 -0
- linq_python-0.15.1/src/linq/types/phone_number_update_response.py +18 -0
- linq_python-0.15.1/tests/api_resources/test_available_number.py +96 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/test_messages.py +330 -0
- linq_python-0.15.1/tests/api_resources/test_phone_numbers.py +172 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/uv.lock +1 -1
- linq_python-0.15.0/.release-please-manifest.json +0 -3
- linq_python-0.15.0/src/linq/resources/messages.py +0 -692
- linq_python-0.15.0/tests/api_resources/test_phone_numbers.py +0 -80
- {linq_python-0.15.0 → linq_python-0.15.1}/.gitignore +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/CONTRIBUTING.md +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/LICENSE +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/README.md +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/SECURITY.md +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/bin/check-release-environment +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/bin/publish-pypi +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/examples/.keep +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/release-please-config.json +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/requirements-dev.lock +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/__init__.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_base_client.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_compat.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_constants.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_exceptions.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_files.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_models.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_qs.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_resource.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_streaming.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_types.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/__init__.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_compat.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_datetime_parse.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_json.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_logs.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_path.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_proxy.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_reflection.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_resources_proxy.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_streams.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_sync.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_transform.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_typing.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/_utils/_utils.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/lib/.keep +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/pagination.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/py.typed +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/capability.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/chats/__init__.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/chats/participants.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/chats/typing.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/phonenumbers.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/webhook_events.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/webhook_subscriptions.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/resources/webhooks.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/attachment_create_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/attachment_create_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/attachment_retrieve_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/capability_check_RCS_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/capability_check_i_message_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_create_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_create_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_created_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_group_name_update_failed_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_leave_chat_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_list_chats_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_send_voicememo_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_send_voicememo_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_update_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chat_update_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chats/__init__.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chats/get_chat_location_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chats/location_request_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chats/message_list_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chats/message_send_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chats/message_send_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chats/participant_add_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chats/participant_add_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chats/participant_remove_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/chats/participant_remove_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/contact_card_retrieve_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/contact_card_retrieve_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/contact_card_update_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/handle_check_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/link_part_param.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/media_part_param.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_add_reaction_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_add_reaction_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_delivered_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_edited_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_effect.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_effect_param.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_failed_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_list_messages_thread_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_read_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_received_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_sent_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/message_update_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/participant_added_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/participant_removed_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/phonenumber_list_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/reaction_added_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/reaction_event_base.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/reaction_removed_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/reply_to.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/reply_to_param.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/schemas_media_part_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/schemas_message_effect.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/schemas_text_part_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/set_contact_card.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared/__init__.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared/chat_handle.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared/link_part_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared/media_part_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared/reaction.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared/reaction_type.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared/service_type.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared/text_decoration.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared/text_part_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared_params/__init__.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared_params/reaction_type.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared_params/service_type.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/shared_params/text_decoration.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/supported_content_type.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/text_part_param.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/unwrap_webhook_event.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/webhook_event_list_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/webhook_event_type.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/webhook_subscription.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/webhook_subscription_create_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/webhook_subscription_create_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/webhook_subscription_list_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/src/linq/types/webhook_subscription_update_params.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/__init__.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/__init__.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/chats/__init__.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/chats/test_location.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/chats/test_messages.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/chats/test_participants.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/chats/test_typing.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/test_attachments.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/test_capability.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/test_chats.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/test_contact_card.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/test_phonenumbers.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/test_webhook_events.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/test_webhook_subscriptions.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/api_resources/test_webhooks.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/conftest.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/sample_file.txt +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_client.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_extract_files.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_files.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_models.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_qs.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_required_args.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_response.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_streaming.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_transform.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_utils/test_datetime_parse.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_utils/test_json.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_utils/test_path.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_utils/test_proxy.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/test_utils/test_typing.py +0 -0
- {linq_python-0.15.0 → linq_python-0.15.1}/tests/utils.py +0 -0
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.15.1](https://github.com/linq-team/linq-python/compare/v0.15.0...v0.15.1) (2026-07-06)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Documentation
|
|
7
|
+
|
|
8
|
+
* clarify phone line reputation status descriptions ([#34](https://github.com/linq-team/linq-python/issues/34)) ([a5a6a99](https://github.com/linq-team/linq-python/commit/a5a6a99e2a66bacd6f50b36155d8ffb152a4a85a))
|
|
9
|
+
|
|
3
10
|
## [0.15.0](https://github.com/linq-team/linq-python/compare/v0.14.0...v0.15.0) (2026-06-21)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: linq-python
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.1
|
|
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
|
|
@@ -93,16 +93,25 @@ Methods:
|
|
|
93
93
|
Types:
|
|
94
94
|
|
|
95
95
|
```python
|
|
96
|
-
from linq.types import
|
|
96
|
+
from linq.types import (
|
|
97
|
+
Message,
|
|
98
|
+
MessageEffect,
|
|
99
|
+
ReplyTo,
|
|
100
|
+
MessageCreateResponse,
|
|
101
|
+
MessageAddReactionResponse,
|
|
102
|
+
MessageUpdateAppCardResponse,
|
|
103
|
+
)
|
|
97
104
|
```
|
|
98
105
|
|
|
99
106
|
Methods:
|
|
100
107
|
|
|
108
|
+
- <code title="post /v3/messages">client.messages.<a href="./src/linq/resources/messages.py">create</a>(\*\*<a href="src/linq/types/message_create_params.py">params</a>) -> <a href="./src/linq/types/message_create_response.py">MessageCreateResponse</a></code>
|
|
101
109
|
- <code title="get /v3/messages/{messageId}">client.messages.<a href="./src/linq/resources/messages.py">retrieve</a>(message_id) -> <a href="./src/linq/types/message.py">Message</a></code>
|
|
102
110
|
- <code title="patch /v3/messages/{messageId}">client.messages.<a href="./src/linq/resources/messages.py">update</a>(message_id, \*\*<a href="src/linq/types/message_update_params.py">params</a>) -> <a href="./src/linq/types/message.py">Message</a></code>
|
|
103
111
|
- <code title="delete /v3/messages/{messageId}">client.messages.<a href="./src/linq/resources/messages.py">delete</a>(message_id) -> None</code>
|
|
104
112
|
- <code title="post /v3/messages/{messageId}/reactions">client.messages.<a href="./src/linq/resources/messages.py">add_reaction</a>(message_id, \*\*<a href="src/linq/types/message_add_reaction_params.py">params</a>) -> <a href="./src/linq/types/message_add_reaction_response.py">MessageAddReactionResponse</a></code>
|
|
105
113
|
- <code title="get /v3/messages/{messageId}/thread">client.messages.<a href="./src/linq/resources/messages.py">list_messages_thread</a>(message_id, \*\*<a href="src/linq/types/message_list_messages_thread_params.py">params</a>) -> <a href="./src/linq/types/message.py">SyncListMessagesPagination[Message]</a></code>
|
|
114
|
+
- <code title="post /v3/messages/{messageId}/update">client.messages.<a href="./src/linq/resources/messages.py">update_app_card</a>(message_id, \*\*<a href="src/linq/types/message_update_app_card_params.py">params</a>) -> <a href="./src/linq/types/message_update_app_card_response.py">MessageUpdateAppCardResponse</a></code>
|
|
106
115
|
|
|
107
116
|
# Attachments
|
|
108
117
|
|
|
@@ -135,13 +144,26 @@ Methods:
|
|
|
135
144
|
Types:
|
|
136
145
|
|
|
137
146
|
```python
|
|
138
|
-
from linq.types import PhoneNumberListResponse
|
|
147
|
+
from linq.types import PhoneNumberUpdateResponse, PhoneNumberListResponse
|
|
139
148
|
```
|
|
140
149
|
|
|
141
150
|
Methods:
|
|
142
151
|
|
|
152
|
+
- <code title="put /v3/phone_numbers/{phoneNumberId}">client.phone_numbers.<a href="./src/linq/resources/phone_numbers.py">update</a>(phone_number_id, \*\*<a href="src/linq/types/phone_number_update_params.py">params</a>) -> <a href="./src/linq/types/phone_number_update_response.py">PhoneNumberUpdateResponse</a></code>
|
|
143
153
|
- <code title="get /v3/phone_numbers">client.phone_numbers.<a href="./src/linq/resources/phone_numbers.py">list</a>() -> <a href="./src/linq/types/phone_number_list_response.py">PhoneNumberListResponse</a></code>
|
|
144
154
|
|
|
155
|
+
# AvailableNumber
|
|
156
|
+
|
|
157
|
+
Types:
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
from linq.types import AvailableNumberRetrieveResponse
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Methods:
|
|
164
|
+
|
|
165
|
+
- <code title="get /v3/available_number">client.available_number.<a href="./src/linq/resources/available_number.py">retrieve</a>(\*\*<a href="src/linq/types/available_number_retrieve_params.py">params</a>) -> <a href="./src/linq/types/available_number_retrieve_response.py">AvailableNumberRetrieveResponse</a></code>
|
|
166
|
+
|
|
145
167
|
# WebhookEvents
|
|
146
168
|
|
|
147
169
|
Types:
|
|
@@ -45,6 +45,7 @@ if TYPE_CHECKING:
|
|
|
45
45
|
phonenumbers,
|
|
46
46
|
phone_numbers,
|
|
47
47
|
webhook_events,
|
|
48
|
+
available_number,
|
|
48
49
|
webhook_subscriptions,
|
|
49
50
|
)
|
|
50
51
|
from .resources.messages import MessagesResource, AsyncMessagesResource
|
|
@@ -56,6 +57,7 @@ if TYPE_CHECKING:
|
|
|
56
57
|
from .resources.phonenumbers import PhonenumbersResource, AsyncPhonenumbersResource
|
|
57
58
|
from .resources.phone_numbers import PhoneNumbersResource, AsyncPhoneNumbersResource
|
|
58
59
|
from .resources.webhook_events import WebhookEventsResource, AsyncWebhookEventsResource
|
|
60
|
+
from .resources.available_number import AvailableNumberResource, AsyncAvailableNumberResource
|
|
59
61
|
from .resources.webhook_subscriptions import WebhookSubscriptionsResource, AsyncWebhookSubscriptionsResource
|
|
60
62
|
|
|
61
63
|
__all__ = [
|
|
@@ -168,6 +170,46 @@ class LinqAPIV3(SyncAPIClient):
|
|
|
168
170
|
**Limitations:**
|
|
169
171
|
- A `link` part cannot be combined with other parts in the same message.
|
|
170
172
|
- Maximum URL length: 2,048 characters.
|
|
173
|
+
|
|
174
|
+
## Ephemeral Messages (Privacy Tier)
|
|
175
|
+
|
|
176
|
+
For regulated or sensitive conversations, opt in to the **ephemeral messages** tier by contacting your Linq support contact. When enabled, every message on the covered phone numbers is automatically given a fixed **24-hour retention window** — after that window the platform permanently deletes the message from Linq storage. There is no per-message flag; ephemerality is applied automatically based on your configuration.
|
|
177
|
+
|
|
178
|
+
You can request it at two scopes:
|
|
179
|
+
|
|
180
|
+
| Scope | Effect |
|
|
181
|
+
|---|---|
|
|
182
|
+
| **Partner-wide** | Every outbound and inbound message on every phone number under your account is retained for 24 hours, then deleted. |
|
|
183
|
+
| **Per phone number** | Only the specified phone numbers have their messages auto-deleted. The rest follow the standard message-retention policy. |
|
|
184
|
+
|
|
185
|
+
**Behavioral differences vs the standard default:**
|
|
186
|
+
|
|
187
|
+
| Aspect | Standard | Ephemeral |
|
|
188
|
+
|---|---|---|
|
|
189
|
+
| Retention | Retained per the standard message-retention policy | **Hard backstop: 24 hours** from when the message is created |
|
|
190
|
+
| After expiry | Message stays retrievable | Message is permanently deleted — `GET /v3/messages/{messageId}` returns `404` and it no longer appears in `GET /v3/chats/{chatId}/messages` |
|
|
191
|
+
| Content on expiry | N/A | Text, formatting, and attachment references are scrubbed; the message is gone, not blanked out |
|
|
192
|
+
| Cross-partner isolation | Enforced | Enforced |
|
|
193
|
+
|
|
194
|
+
**How the 24-hour window works:**
|
|
195
|
+
|
|
196
|
+
- The window is fixed at **24 hours from message creation** (`created_at`) and cannot be configured per message.
|
|
197
|
+
- It mirrors the ephemeral *attachments* 1-day backstop, so a message and any media it carries expire together.
|
|
198
|
+
- Expiry is delivery-independent — the clock starts when the message is created, not when it is delivered or read.
|
|
199
|
+
|
|
200
|
+
**What you observe:**
|
|
201
|
+
|
|
202
|
+
- **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.
|
|
203
|
+
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
204
|
+
- **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.
|
|
205
|
+
|
|
206
|
+
**When to choose ephemeral:**
|
|
207
|
+
|
|
208
|
+
- You have a compliance requirement that the platform must not retain message content beyond a short window.
|
|
209
|
+
- The conversation is high-sensitivity (PHI, financial, identity verification) and you do not want it sitting in storage long-term.
|
|
210
|
+
- Your application is the system of record — you capture what you need from the delivery webhook in real time and do not rely on reading message history back from Linq later.
|
|
211
|
+
|
|
212
|
+
**Important:** ephemeral applies in *both directions* — messages you send **and** messages received by the phone numbers in that scope. Because Linq can no longer return the message after 24 hours, persist anything you need to keep from the webhook payload at the time it is delivered.
|
|
171
213
|
"""
|
|
172
214
|
from .resources.messages import MessagesResource
|
|
173
215
|
|
|
@@ -339,7 +381,7 @@ class LinqAPIV3(SyncAPIClient):
|
|
|
339
381
|
|---|---|---|
|
|
340
382
|
| Attachment bytes | Retained until you `DELETE` | **Auto-removed after 1 day**, also removable via `DELETE` |
|
|
341
383
|
| Attachment metadata (id, filename, mime type, size) | Retained until you `DELETE` | Removed alongside the bytes |
|
|
342
|
-
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy |
|
|
384
|
+
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy — unless the line also has **ephemeral messages** enabled (see the Messages page), in which case the message and its parts are deleted 24 hours after creation |
|
|
343
385
|
| Audit log of deletions | Retained per platform retention policy | Retained per platform retention policy |
|
|
344
386
|
|
|
345
387
|
**In transit:** TLS 1.2+ everywhere. **At rest:** AES-256 (server-side encryption).
|
|
@@ -387,6 +429,20 @@ class LinqAPIV3(SyncAPIClient):
|
|
|
387
429
|
|
|
388
430
|
return PhoneNumbersResource(self)
|
|
389
431
|
|
|
432
|
+
@cached_property
|
|
433
|
+
def available_number(self) -> AvailableNumberResource:
|
|
434
|
+
"""Phone Numbers represent the phone numbers assigned to your partner account.
|
|
435
|
+
|
|
436
|
+
Use the list phone numbers endpoint to discover which phone numbers are available
|
|
437
|
+
for sending messages.
|
|
438
|
+
|
|
439
|
+
When creating chats, listing chats, or sending a voice memo, use one of your assigned phone numbers
|
|
440
|
+
in the `from` field.
|
|
441
|
+
"""
|
|
442
|
+
from .resources.available_number import AvailableNumberResource
|
|
443
|
+
|
|
444
|
+
return AvailableNumberResource(self)
|
|
445
|
+
|
|
390
446
|
@cached_property
|
|
391
447
|
def webhook_events(self) -> WebhookEventsResource:
|
|
392
448
|
"""
|
|
@@ -698,9 +754,11 @@ class LinqAPIV3(SyncAPIClient):
|
|
|
698
754
|
|
|
699
755
|
@override
|
|
700
756
|
def _auth_headers(self, security: SecurityOptions) -> dict[str, str]:
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
757
|
+
headers: dict[str, str] = {}
|
|
758
|
+
if security.get("bearer_auth", False):
|
|
759
|
+
for key, value in self._bearer_auth.items():
|
|
760
|
+
headers.setdefault(key, value)
|
|
761
|
+
return headers
|
|
704
762
|
|
|
705
763
|
@property
|
|
706
764
|
def _bearer_auth(self) -> dict[str, str]:
|
|
@@ -901,6 +959,46 @@ class AsyncLinqAPIV3(AsyncAPIClient):
|
|
|
901
959
|
**Limitations:**
|
|
902
960
|
- A `link` part cannot be combined with other parts in the same message.
|
|
903
961
|
- Maximum URL length: 2,048 characters.
|
|
962
|
+
|
|
963
|
+
## Ephemeral Messages (Privacy Tier)
|
|
964
|
+
|
|
965
|
+
For regulated or sensitive conversations, opt in to the **ephemeral messages** tier by contacting your Linq support contact. When enabled, every message on the covered phone numbers is automatically given a fixed **24-hour retention window** — after that window the platform permanently deletes the message from Linq storage. There is no per-message flag; ephemerality is applied automatically based on your configuration.
|
|
966
|
+
|
|
967
|
+
You can request it at two scopes:
|
|
968
|
+
|
|
969
|
+
| Scope | Effect |
|
|
970
|
+
|---|---|
|
|
971
|
+
| **Partner-wide** | Every outbound and inbound message on every phone number under your account is retained for 24 hours, then deleted. |
|
|
972
|
+
| **Per phone number** | Only the specified phone numbers have their messages auto-deleted. The rest follow the standard message-retention policy. |
|
|
973
|
+
|
|
974
|
+
**Behavioral differences vs the standard default:**
|
|
975
|
+
|
|
976
|
+
| Aspect | Standard | Ephemeral |
|
|
977
|
+
|---|---|---|
|
|
978
|
+
| Retention | Retained per the standard message-retention policy | **Hard backstop: 24 hours** from when the message is created |
|
|
979
|
+
| After expiry | Message stays retrievable | Message is permanently deleted — `GET /v3/messages/{messageId}` returns `404` and it no longer appears in `GET /v3/chats/{chatId}/messages` |
|
|
980
|
+
| Content on expiry | N/A | Text, formatting, and attachment references are scrubbed; the message is gone, not blanked out |
|
|
981
|
+
| Cross-partner isolation | Enforced | Enforced |
|
|
982
|
+
|
|
983
|
+
**How the 24-hour window works:**
|
|
984
|
+
|
|
985
|
+
- The window is fixed at **24 hours from message creation** (`created_at`) and cannot be configured per message.
|
|
986
|
+
- It mirrors the ephemeral *attachments* 1-day backstop, so a message and any media it carries expire together.
|
|
987
|
+
- Expiry is delivery-independent — the clock starts when the message is created, not when it is delivered or read.
|
|
988
|
+
|
|
989
|
+
**What you observe:**
|
|
990
|
+
|
|
991
|
+
- **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.
|
|
992
|
+
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
993
|
+
- **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.
|
|
994
|
+
|
|
995
|
+
**When to choose ephemeral:**
|
|
996
|
+
|
|
997
|
+
- You have a compliance requirement that the platform must not retain message content beyond a short window.
|
|
998
|
+
- The conversation is high-sensitivity (PHI, financial, identity verification) and you do not want it sitting in storage long-term.
|
|
999
|
+
- Your application is the system of record — you capture what you need from the delivery webhook in real time and do not rely on reading message history back from Linq later.
|
|
1000
|
+
|
|
1001
|
+
**Important:** ephemeral applies in *both directions* — messages you send **and** messages received by the phone numbers in that scope. Because Linq can no longer return the message after 24 hours, persist anything you need to keep from the webhook payload at the time it is delivered.
|
|
904
1002
|
"""
|
|
905
1003
|
from .resources.messages import AsyncMessagesResource
|
|
906
1004
|
|
|
@@ -1072,7 +1170,7 @@ class AsyncLinqAPIV3(AsyncAPIClient):
|
|
|
1072
1170
|
|---|---|---|
|
|
1073
1171
|
| Attachment bytes | Retained until you `DELETE` | **Auto-removed after 1 day**, also removable via `DELETE` |
|
|
1074
1172
|
| Attachment metadata (id, filename, mime type, size) | Retained until you `DELETE` | Removed alongside the bytes |
|
|
1075
|
-
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy |
|
|
1173
|
+
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy — unless the line also has **ephemeral messages** enabled (see the Messages page), in which case the message and its parts are deleted 24 hours after creation |
|
|
1076
1174
|
| Audit log of deletions | Retained per platform retention policy | Retained per platform retention policy |
|
|
1077
1175
|
|
|
1078
1176
|
**In transit:** TLS 1.2+ everywhere. **At rest:** AES-256 (server-side encryption).
|
|
@@ -1120,6 +1218,20 @@ class AsyncLinqAPIV3(AsyncAPIClient):
|
|
|
1120
1218
|
|
|
1121
1219
|
return AsyncPhoneNumbersResource(self)
|
|
1122
1220
|
|
|
1221
|
+
@cached_property
|
|
1222
|
+
def available_number(self) -> AsyncAvailableNumberResource:
|
|
1223
|
+
"""Phone Numbers represent the phone numbers assigned to your partner account.
|
|
1224
|
+
|
|
1225
|
+
Use the list phone numbers endpoint to discover which phone numbers are available
|
|
1226
|
+
for sending messages.
|
|
1227
|
+
|
|
1228
|
+
When creating chats, listing chats, or sending a voice memo, use one of your assigned phone numbers
|
|
1229
|
+
in the `from` field.
|
|
1230
|
+
"""
|
|
1231
|
+
from .resources.available_number import AsyncAvailableNumberResource
|
|
1232
|
+
|
|
1233
|
+
return AsyncAvailableNumberResource(self)
|
|
1234
|
+
|
|
1123
1235
|
@cached_property
|
|
1124
1236
|
def webhook_events(self) -> AsyncWebhookEventsResource:
|
|
1125
1237
|
"""
|
|
@@ -1431,9 +1543,11 @@ class AsyncLinqAPIV3(AsyncAPIClient):
|
|
|
1431
1543
|
|
|
1432
1544
|
@override
|
|
1433
1545
|
def _auth_headers(self, security: SecurityOptions) -> dict[str, str]:
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1546
|
+
headers: dict[str, str] = {}
|
|
1547
|
+
if security.get("bearer_auth", False):
|
|
1548
|
+
for key, value in self._bearer_auth.items():
|
|
1549
|
+
headers.setdefault(key, value)
|
|
1550
|
+
return headers
|
|
1437
1551
|
|
|
1438
1552
|
@property
|
|
1439
1553
|
def _bearer_auth(self) -> dict[str, str]:
|
|
@@ -1568,6 +1682,46 @@ class LinqAPIV3WithRawResponse:
|
|
|
1568
1682
|
**Limitations:**
|
|
1569
1683
|
- A `link` part cannot be combined with other parts in the same message.
|
|
1570
1684
|
- Maximum URL length: 2,048 characters.
|
|
1685
|
+
|
|
1686
|
+
## Ephemeral Messages (Privacy Tier)
|
|
1687
|
+
|
|
1688
|
+
For regulated or sensitive conversations, opt in to the **ephemeral messages** tier by contacting your Linq support contact. When enabled, every message on the covered phone numbers is automatically given a fixed **24-hour retention window** — after that window the platform permanently deletes the message from Linq storage. There is no per-message flag; ephemerality is applied automatically based on your configuration.
|
|
1689
|
+
|
|
1690
|
+
You can request it at two scopes:
|
|
1691
|
+
|
|
1692
|
+
| Scope | Effect |
|
|
1693
|
+
|---|---|
|
|
1694
|
+
| **Partner-wide** | Every outbound and inbound message on every phone number under your account is retained for 24 hours, then deleted. |
|
|
1695
|
+
| **Per phone number** | Only the specified phone numbers have their messages auto-deleted. The rest follow the standard message-retention policy. |
|
|
1696
|
+
|
|
1697
|
+
**Behavioral differences vs the standard default:**
|
|
1698
|
+
|
|
1699
|
+
| Aspect | Standard | Ephemeral |
|
|
1700
|
+
|---|---|---|
|
|
1701
|
+
| Retention | Retained per the standard message-retention policy | **Hard backstop: 24 hours** from when the message is created |
|
|
1702
|
+
| After expiry | Message stays retrievable | Message is permanently deleted — `GET /v3/messages/{messageId}` returns `404` and it no longer appears in `GET /v3/chats/{chatId}/messages` |
|
|
1703
|
+
| Content on expiry | N/A | Text, formatting, and attachment references are scrubbed; the message is gone, not blanked out |
|
|
1704
|
+
| Cross-partner isolation | Enforced | Enforced |
|
|
1705
|
+
|
|
1706
|
+
**How the 24-hour window works:**
|
|
1707
|
+
|
|
1708
|
+
- The window is fixed at **24 hours from message creation** (`created_at`) and cannot be configured per message.
|
|
1709
|
+
- It mirrors the ephemeral *attachments* 1-day backstop, so a message and any media it carries expire together.
|
|
1710
|
+
- Expiry is delivery-independent — the clock starts when the message is created, not when it is delivered or read.
|
|
1711
|
+
|
|
1712
|
+
**What you observe:**
|
|
1713
|
+
|
|
1714
|
+
- **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.
|
|
1715
|
+
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
1716
|
+
- **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.
|
|
1717
|
+
|
|
1718
|
+
**When to choose ephemeral:**
|
|
1719
|
+
|
|
1720
|
+
- You have a compliance requirement that the platform must not retain message content beyond a short window.
|
|
1721
|
+
- The conversation is high-sensitivity (PHI, financial, identity verification) and you do not want it sitting in storage long-term.
|
|
1722
|
+
- Your application is the system of record — you capture what you need from the delivery webhook in real time and do not rely on reading message history back from Linq later.
|
|
1723
|
+
|
|
1724
|
+
**Important:** ephemeral applies in *both directions* — messages you send **and** messages received by the phone numbers in that scope. Because Linq can no longer return the message after 24 hours, persist anything you need to keep from the webhook payload at the time it is delivered.
|
|
1571
1725
|
"""
|
|
1572
1726
|
from .resources.messages import MessagesResourceWithRawResponse
|
|
1573
1727
|
|
|
@@ -1739,7 +1893,7 @@ class LinqAPIV3WithRawResponse:
|
|
|
1739
1893
|
|---|---|---|
|
|
1740
1894
|
| Attachment bytes | Retained until you `DELETE` | **Auto-removed after 1 day**, also removable via `DELETE` |
|
|
1741
1895
|
| Attachment metadata (id, filename, mime type, size) | Retained until you `DELETE` | Removed alongside the bytes |
|
|
1742
|
-
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy |
|
|
1896
|
+
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy — unless the line also has **ephemeral messages** enabled (see the Messages page), in which case the message and its parts are deleted 24 hours after creation |
|
|
1743
1897
|
| Audit log of deletions | Retained per platform retention policy | Retained per platform retention policy |
|
|
1744
1898
|
|
|
1745
1899
|
**In transit:** TLS 1.2+ everywhere. **At rest:** AES-256 (server-side encryption).
|
|
@@ -1787,6 +1941,20 @@ class LinqAPIV3WithRawResponse:
|
|
|
1787
1941
|
|
|
1788
1942
|
return PhoneNumbersResourceWithRawResponse(self._client.phone_numbers)
|
|
1789
1943
|
|
|
1944
|
+
@cached_property
|
|
1945
|
+
def available_number(self) -> available_number.AvailableNumberResourceWithRawResponse:
|
|
1946
|
+
"""Phone Numbers represent the phone numbers assigned to your partner account.
|
|
1947
|
+
|
|
1948
|
+
Use the list phone numbers endpoint to discover which phone numbers are available
|
|
1949
|
+
for sending messages.
|
|
1950
|
+
|
|
1951
|
+
When creating chats, listing chats, or sending a voice memo, use one of your assigned phone numbers
|
|
1952
|
+
in the `from` field.
|
|
1953
|
+
"""
|
|
1954
|
+
from .resources.available_number import AvailableNumberResourceWithRawResponse
|
|
1955
|
+
|
|
1956
|
+
return AvailableNumberResourceWithRawResponse(self._client.available_number)
|
|
1957
|
+
|
|
1790
1958
|
@cached_property
|
|
1791
1959
|
def webhook_events(self) -> webhook_events.WebhookEventsResourceWithRawResponse:
|
|
1792
1960
|
"""
|
|
@@ -2110,6 +2278,46 @@ class AsyncLinqAPIV3WithRawResponse:
|
|
|
2110
2278
|
**Limitations:**
|
|
2111
2279
|
- A `link` part cannot be combined with other parts in the same message.
|
|
2112
2280
|
- Maximum URL length: 2,048 characters.
|
|
2281
|
+
|
|
2282
|
+
## Ephemeral Messages (Privacy Tier)
|
|
2283
|
+
|
|
2284
|
+
For regulated or sensitive conversations, opt in to the **ephemeral messages** tier by contacting your Linq support contact. When enabled, every message on the covered phone numbers is automatically given a fixed **24-hour retention window** — after that window the platform permanently deletes the message from Linq storage. There is no per-message flag; ephemerality is applied automatically based on your configuration.
|
|
2285
|
+
|
|
2286
|
+
You can request it at two scopes:
|
|
2287
|
+
|
|
2288
|
+
| Scope | Effect |
|
|
2289
|
+
|---|---|
|
|
2290
|
+
| **Partner-wide** | Every outbound and inbound message on every phone number under your account is retained for 24 hours, then deleted. |
|
|
2291
|
+
| **Per phone number** | Only the specified phone numbers have their messages auto-deleted. The rest follow the standard message-retention policy. |
|
|
2292
|
+
|
|
2293
|
+
**Behavioral differences vs the standard default:**
|
|
2294
|
+
|
|
2295
|
+
| Aspect | Standard | Ephemeral |
|
|
2296
|
+
|---|---|---|
|
|
2297
|
+
| Retention | Retained per the standard message-retention policy | **Hard backstop: 24 hours** from when the message is created |
|
|
2298
|
+
| After expiry | Message stays retrievable | Message is permanently deleted — `GET /v3/messages/{messageId}` returns `404` and it no longer appears in `GET /v3/chats/{chatId}/messages` |
|
|
2299
|
+
| Content on expiry | N/A | Text, formatting, and attachment references are scrubbed; the message is gone, not blanked out |
|
|
2300
|
+
| Cross-partner isolation | Enforced | Enforced |
|
|
2301
|
+
|
|
2302
|
+
**How the 24-hour window works:**
|
|
2303
|
+
|
|
2304
|
+
- The window is fixed at **24 hours from message creation** (`created_at`) and cannot be configured per message.
|
|
2305
|
+
- It mirrors the ephemeral *attachments* 1-day backstop, so a message and any media it carries expire together.
|
|
2306
|
+
- Expiry is delivery-independent — the clock starts when the message is created, not when it is delivered or read.
|
|
2307
|
+
|
|
2308
|
+
**What you observe:**
|
|
2309
|
+
|
|
2310
|
+
- **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.
|
|
2311
|
+
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
2312
|
+
- **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.
|
|
2313
|
+
|
|
2314
|
+
**When to choose ephemeral:**
|
|
2315
|
+
|
|
2316
|
+
- You have a compliance requirement that the platform must not retain message content beyond a short window.
|
|
2317
|
+
- The conversation is high-sensitivity (PHI, financial, identity verification) and you do not want it sitting in storage long-term.
|
|
2318
|
+
- Your application is the system of record — you capture what you need from the delivery webhook in real time and do not rely on reading message history back from Linq later.
|
|
2319
|
+
|
|
2320
|
+
**Important:** ephemeral applies in *both directions* — messages you send **and** messages received by the phone numbers in that scope. Because Linq can no longer return the message after 24 hours, persist anything you need to keep from the webhook payload at the time it is delivered.
|
|
2113
2321
|
"""
|
|
2114
2322
|
from .resources.messages import AsyncMessagesResourceWithRawResponse
|
|
2115
2323
|
|
|
@@ -2281,7 +2489,7 @@ class AsyncLinqAPIV3WithRawResponse:
|
|
|
2281
2489
|
|---|---|---|
|
|
2282
2490
|
| Attachment bytes | Retained until you `DELETE` | **Auto-removed after 1 day**, also removable via `DELETE` |
|
|
2283
2491
|
| Attachment metadata (id, filename, mime type, size) | Retained until you `DELETE` | Removed alongside the bytes |
|
|
2284
|
-
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy |
|
|
2492
|
+
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy — unless the line also has **ephemeral messages** enabled (see the Messages page), in which case the message and its parts are deleted 24 hours after creation |
|
|
2285
2493
|
| Audit log of deletions | Retained per platform retention policy | Retained per platform retention policy |
|
|
2286
2494
|
|
|
2287
2495
|
**In transit:** TLS 1.2+ everywhere. **At rest:** AES-256 (server-side encryption).
|
|
@@ -2329,6 +2537,20 @@ class AsyncLinqAPIV3WithRawResponse:
|
|
|
2329
2537
|
|
|
2330
2538
|
return AsyncPhoneNumbersResourceWithRawResponse(self._client.phone_numbers)
|
|
2331
2539
|
|
|
2540
|
+
@cached_property
|
|
2541
|
+
def available_number(self) -> available_number.AsyncAvailableNumberResourceWithRawResponse:
|
|
2542
|
+
"""Phone Numbers represent the phone numbers assigned to your partner account.
|
|
2543
|
+
|
|
2544
|
+
Use the list phone numbers endpoint to discover which phone numbers are available
|
|
2545
|
+
for sending messages.
|
|
2546
|
+
|
|
2547
|
+
When creating chats, listing chats, or sending a voice memo, use one of your assigned phone numbers
|
|
2548
|
+
in the `from` field.
|
|
2549
|
+
"""
|
|
2550
|
+
from .resources.available_number import AsyncAvailableNumberResourceWithRawResponse
|
|
2551
|
+
|
|
2552
|
+
return AsyncAvailableNumberResourceWithRawResponse(self._client.available_number)
|
|
2553
|
+
|
|
2332
2554
|
@cached_property
|
|
2333
2555
|
def webhook_events(self) -> webhook_events.AsyncWebhookEventsResourceWithRawResponse:
|
|
2334
2556
|
"""
|
|
@@ -2652,6 +2874,46 @@ class LinqAPIV3WithStreamedResponse:
|
|
|
2652
2874
|
**Limitations:**
|
|
2653
2875
|
- A `link` part cannot be combined with other parts in the same message.
|
|
2654
2876
|
- Maximum URL length: 2,048 characters.
|
|
2877
|
+
|
|
2878
|
+
## Ephemeral Messages (Privacy Tier)
|
|
2879
|
+
|
|
2880
|
+
For regulated or sensitive conversations, opt in to the **ephemeral messages** tier by contacting your Linq support contact. When enabled, every message on the covered phone numbers is automatically given a fixed **24-hour retention window** — after that window the platform permanently deletes the message from Linq storage. There is no per-message flag; ephemerality is applied automatically based on your configuration.
|
|
2881
|
+
|
|
2882
|
+
You can request it at two scopes:
|
|
2883
|
+
|
|
2884
|
+
| Scope | Effect |
|
|
2885
|
+
|---|---|
|
|
2886
|
+
| **Partner-wide** | Every outbound and inbound message on every phone number under your account is retained for 24 hours, then deleted. |
|
|
2887
|
+
| **Per phone number** | Only the specified phone numbers have their messages auto-deleted. The rest follow the standard message-retention policy. |
|
|
2888
|
+
|
|
2889
|
+
**Behavioral differences vs the standard default:**
|
|
2890
|
+
|
|
2891
|
+
| Aspect | Standard | Ephemeral |
|
|
2892
|
+
|---|---|---|
|
|
2893
|
+
| Retention | Retained per the standard message-retention policy | **Hard backstop: 24 hours** from when the message is created |
|
|
2894
|
+
| After expiry | Message stays retrievable | Message is permanently deleted — `GET /v3/messages/{messageId}` returns `404` and it no longer appears in `GET /v3/chats/{chatId}/messages` |
|
|
2895
|
+
| Content on expiry | N/A | Text, formatting, and attachment references are scrubbed; the message is gone, not blanked out |
|
|
2896
|
+
| Cross-partner isolation | Enforced | Enforced |
|
|
2897
|
+
|
|
2898
|
+
**How the 24-hour window works:**
|
|
2899
|
+
|
|
2900
|
+
- The window is fixed at **24 hours from message creation** (`created_at`) and cannot be configured per message.
|
|
2901
|
+
- It mirrors the ephemeral *attachments* 1-day backstop, so a message and any media it carries expire together.
|
|
2902
|
+
- Expiry is delivery-independent — the clock starts when the message is created, not when it is delivered or read.
|
|
2903
|
+
|
|
2904
|
+
**What you observe:**
|
|
2905
|
+
|
|
2906
|
+
- **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.
|
|
2907
|
+
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
2908
|
+
- **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.
|
|
2909
|
+
|
|
2910
|
+
**When to choose ephemeral:**
|
|
2911
|
+
|
|
2912
|
+
- You have a compliance requirement that the platform must not retain message content beyond a short window.
|
|
2913
|
+
- The conversation is high-sensitivity (PHI, financial, identity verification) and you do not want it sitting in storage long-term.
|
|
2914
|
+
- Your application is the system of record — you capture what you need from the delivery webhook in real time and do not rely on reading message history back from Linq later.
|
|
2915
|
+
|
|
2916
|
+
**Important:** ephemeral applies in *both directions* — messages you send **and** messages received by the phone numbers in that scope. Because Linq can no longer return the message after 24 hours, persist anything you need to keep from the webhook payload at the time it is delivered.
|
|
2655
2917
|
"""
|
|
2656
2918
|
from .resources.messages import MessagesResourceWithStreamingResponse
|
|
2657
2919
|
|
|
@@ -2823,7 +3085,7 @@ class LinqAPIV3WithStreamedResponse:
|
|
|
2823
3085
|
|---|---|---|
|
|
2824
3086
|
| Attachment bytes | Retained until you `DELETE` | **Auto-removed after 1 day**, also removable via `DELETE` |
|
|
2825
3087
|
| Attachment metadata (id, filename, mime type, size) | Retained until you `DELETE` | Removed alongside the bytes |
|
|
2826
|
-
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy |
|
|
3088
|
+
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy — unless the line also has **ephemeral messages** enabled (see the Messages page), in which case the message and its parts are deleted 24 hours after creation |
|
|
2827
3089
|
| Audit log of deletions | Retained per platform retention policy | Retained per platform retention policy |
|
|
2828
3090
|
|
|
2829
3091
|
**In transit:** TLS 1.2+ everywhere. **At rest:** AES-256 (server-side encryption).
|
|
@@ -2871,6 +3133,20 @@ class LinqAPIV3WithStreamedResponse:
|
|
|
2871
3133
|
|
|
2872
3134
|
return PhoneNumbersResourceWithStreamingResponse(self._client.phone_numbers)
|
|
2873
3135
|
|
|
3136
|
+
@cached_property
|
|
3137
|
+
def available_number(self) -> available_number.AvailableNumberResourceWithStreamingResponse:
|
|
3138
|
+
"""Phone Numbers represent the phone numbers assigned to your partner account.
|
|
3139
|
+
|
|
3140
|
+
Use the list phone numbers endpoint to discover which phone numbers are available
|
|
3141
|
+
for sending messages.
|
|
3142
|
+
|
|
3143
|
+
When creating chats, listing chats, or sending a voice memo, use one of your assigned phone numbers
|
|
3144
|
+
in the `from` field.
|
|
3145
|
+
"""
|
|
3146
|
+
from .resources.available_number import AvailableNumberResourceWithStreamingResponse
|
|
3147
|
+
|
|
3148
|
+
return AvailableNumberResourceWithStreamingResponse(self._client.available_number)
|
|
3149
|
+
|
|
2874
3150
|
@cached_property
|
|
2875
3151
|
def webhook_events(self) -> webhook_events.WebhookEventsResourceWithStreamingResponse:
|
|
2876
3152
|
"""
|
|
@@ -3194,6 +3470,46 @@ class AsyncLinqAPIV3WithStreamedResponse:
|
|
|
3194
3470
|
**Limitations:**
|
|
3195
3471
|
- A `link` part cannot be combined with other parts in the same message.
|
|
3196
3472
|
- Maximum URL length: 2,048 characters.
|
|
3473
|
+
|
|
3474
|
+
## Ephemeral Messages (Privacy Tier)
|
|
3475
|
+
|
|
3476
|
+
For regulated or sensitive conversations, opt in to the **ephemeral messages** tier by contacting your Linq support contact. When enabled, every message on the covered phone numbers is automatically given a fixed **24-hour retention window** — after that window the platform permanently deletes the message from Linq storage. There is no per-message flag; ephemerality is applied automatically based on your configuration.
|
|
3477
|
+
|
|
3478
|
+
You can request it at two scopes:
|
|
3479
|
+
|
|
3480
|
+
| Scope | Effect |
|
|
3481
|
+
|---|---|
|
|
3482
|
+
| **Partner-wide** | Every outbound and inbound message on every phone number under your account is retained for 24 hours, then deleted. |
|
|
3483
|
+
| **Per phone number** | Only the specified phone numbers have their messages auto-deleted. The rest follow the standard message-retention policy. |
|
|
3484
|
+
|
|
3485
|
+
**Behavioral differences vs the standard default:**
|
|
3486
|
+
|
|
3487
|
+
| Aspect | Standard | Ephemeral |
|
|
3488
|
+
|---|---|---|
|
|
3489
|
+
| Retention | Retained per the standard message-retention policy | **Hard backstop: 24 hours** from when the message is created |
|
|
3490
|
+
| After expiry | Message stays retrievable | Message is permanently deleted — `GET /v3/messages/{messageId}` returns `404` and it no longer appears in `GET /v3/chats/{chatId}/messages` |
|
|
3491
|
+
| Content on expiry | N/A | Text, formatting, and attachment references are scrubbed; the message is gone, not blanked out |
|
|
3492
|
+
| Cross-partner isolation | Enforced | Enforced |
|
|
3493
|
+
|
|
3494
|
+
**How the 24-hour window works:**
|
|
3495
|
+
|
|
3496
|
+
- The window is fixed at **24 hours from message creation** (`created_at`) and cannot be configured per message.
|
|
3497
|
+
- It mirrors the ephemeral *attachments* 1-day backstop, so a message and any media it carries expire together.
|
|
3498
|
+
- Expiry is delivery-independent — the clock starts when the message is created, not when it is delivered or read.
|
|
3499
|
+
|
|
3500
|
+
**What you observe:**
|
|
3501
|
+
|
|
3502
|
+
- **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.
|
|
3503
|
+
- **No deletion webhook is sent.** There is no `message.deleted` event — a message simply stops being retrievable once its window passes.
|
|
3504
|
+
- **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.
|
|
3505
|
+
|
|
3506
|
+
**When to choose ephemeral:**
|
|
3507
|
+
|
|
3508
|
+
- You have a compliance requirement that the platform must not retain message content beyond a short window.
|
|
3509
|
+
- The conversation is high-sensitivity (PHI, financial, identity verification) and you do not want it sitting in storage long-term.
|
|
3510
|
+
- Your application is the system of record — you capture what you need from the delivery webhook in real time and do not rely on reading message history back from Linq later.
|
|
3511
|
+
|
|
3512
|
+
**Important:** ephemeral applies in *both directions* — messages you send **and** messages received by the phone numbers in that scope. Because Linq can no longer return the message after 24 hours, persist anything you need to keep from the webhook payload at the time it is delivered.
|
|
3197
3513
|
"""
|
|
3198
3514
|
from .resources.messages import AsyncMessagesResourceWithStreamingResponse
|
|
3199
3515
|
|
|
@@ -3365,7 +3681,7 @@ class AsyncLinqAPIV3WithStreamedResponse:
|
|
|
3365
3681
|
|---|---|---|
|
|
3366
3682
|
| Attachment bytes | Retained until you `DELETE` | **Auto-removed after 1 day**, also removable via `DELETE` |
|
|
3367
3683
|
| Attachment metadata (id, filename, mime type, size) | Retained until you `DELETE` | Removed alongside the bytes |
|
|
3368
|
-
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy |
|
|
3684
|
+
| Message body & parts | Retained per message-retention policy | Retained per message-retention policy — unless the line also has **ephemeral messages** enabled (see the Messages page), in which case the message and its parts are deleted 24 hours after creation |
|
|
3369
3685
|
| Audit log of deletions | Retained per platform retention policy | Retained per platform retention policy |
|
|
3370
3686
|
|
|
3371
3687
|
**In transit:** TLS 1.2+ everywhere. **At rest:** AES-256 (server-side encryption).
|
|
@@ -3413,6 +3729,20 @@ class AsyncLinqAPIV3WithStreamedResponse:
|
|
|
3413
3729
|
|
|
3414
3730
|
return AsyncPhoneNumbersResourceWithStreamingResponse(self._client.phone_numbers)
|
|
3415
3731
|
|
|
3732
|
+
@cached_property
|
|
3733
|
+
def available_number(self) -> available_number.AsyncAvailableNumberResourceWithStreamingResponse:
|
|
3734
|
+
"""Phone Numbers represent the phone numbers assigned to your partner account.
|
|
3735
|
+
|
|
3736
|
+
Use the list phone numbers endpoint to discover which phone numbers are available
|
|
3737
|
+
for sending messages.
|
|
3738
|
+
|
|
3739
|
+
When creating chats, listing chats, or sending a voice memo, use one of your assigned phone numbers
|
|
3740
|
+
in the `from` field.
|
|
3741
|
+
"""
|
|
3742
|
+
from .resources.available_number import AsyncAvailableNumberResourceWithStreamingResponse
|
|
3743
|
+
|
|
3744
|
+
return AsyncAvailableNumberResourceWithStreamingResponse(self._client.available_number)
|
|
3745
|
+
|
|
3416
3746
|
@cached_property
|
|
3417
3747
|
def webhook_events(self) -> webhook_events.AsyncWebhookEventsResourceWithStreamingResponse:
|
|
3418
3748
|
"""
|
|
@@ -65,6 +65,14 @@ from .webhook_events import (
|
|
|
65
65
|
WebhookEventsResourceWithStreamingResponse,
|
|
66
66
|
AsyncWebhookEventsResourceWithStreamingResponse,
|
|
67
67
|
)
|
|
68
|
+
from .available_number import (
|
|
69
|
+
AvailableNumberResource,
|
|
70
|
+
AsyncAvailableNumberResource,
|
|
71
|
+
AvailableNumberResourceWithRawResponse,
|
|
72
|
+
AsyncAvailableNumberResourceWithRawResponse,
|
|
73
|
+
AvailableNumberResourceWithStreamingResponse,
|
|
74
|
+
AsyncAvailableNumberResourceWithStreamingResponse,
|
|
75
|
+
)
|
|
68
76
|
from .webhook_subscriptions import (
|
|
69
77
|
WebhookSubscriptionsResource,
|
|
70
78
|
AsyncWebhookSubscriptionsResource,
|
|
@@ -105,6 +113,12 @@ __all__ = [
|
|
|
105
113
|
"AsyncPhoneNumbersResourceWithRawResponse",
|
|
106
114
|
"PhoneNumbersResourceWithStreamingResponse",
|
|
107
115
|
"AsyncPhoneNumbersResourceWithStreamingResponse",
|
|
116
|
+
"AvailableNumberResource",
|
|
117
|
+
"AsyncAvailableNumberResource",
|
|
118
|
+
"AvailableNumberResourceWithRawResponse",
|
|
119
|
+
"AsyncAvailableNumberResourceWithRawResponse",
|
|
120
|
+
"AvailableNumberResourceWithStreamingResponse",
|
|
121
|
+
"AsyncAvailableNumberResourceWithStreamingResponse",
|
|
108
122
|
"WebhookEventsResource",
|
|
109
123
|
"AsyncWebhookEventsResource",
|
|
110
124
|
"WebhookEventsResourceWithRawResponse",
|