linq-python 0.35.0__tar.gz → 0.36.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.36.0/.release-please-manifest.json +3 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/CHANGELOG.md +14 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/PKG-INFO +1 -1
- {linq_python-0.35.0 → linq_python-0.36.0}/pyproject.toml +1 -1
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_version.py +1 -1
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/phone_numbers.py +18 -8
- linq_python-0.36.0/src/linq/types/schemas_text_part_response.py +76 -0
- linq_python-0.36.0/src/linq/types/shared/text_part_response.py +80 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/text_part_param.py +1 -1
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_webhooks.py +2 -2
- {linq_python-0.35.0 → linq_python-0.36.0}/uv.lock +1 -1
- linq_python-0.35.0/.release-please-manifest.json +0 -3
- linq_python-0.35.0/src/linq/types/schemas_text_part_response.py +0 -36
- linq_python-0.35.0/src/linq/types/shared/text_part_response.py +0 -40
- {linq_python-0.35.0 → linq_python-0.36.0}/.gitignore +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/CONTRIBUTING.md +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/LICENSE +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/README.md +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/SECURITY.md +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/api.md +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/bin/check-release-environment +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/bin/publish-pypi +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/examples/.keep +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/release-please-config.json +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/requirements-dev.lock +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_base_client.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_client.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_compat.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_constants.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_exceptions.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_files.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_models.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_qs.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_resource.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_streaming.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_types.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_compat.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_datetime_parse.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_json.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_logs.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_path.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_proxy.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_reflection.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_resources_proxy.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_streams.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_sync.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_transform.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_typing.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_utils.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/lib/.keep +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/pagination.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/py.typed +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/attachments.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/available_number.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/blocked_handles.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/capability.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/background.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/chats.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/location.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/messages.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/participants.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/polls.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/typing.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/contact_card.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/experiences.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/messages/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/messages/messages.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/messages/poll.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/payment_handles.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/payment_providers.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/payment_requests.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/payments.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/phonenumbers.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/webhook_events.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/webhook_subscriptions.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/webhooks.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/attachment_create_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/attachment_create_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/attachment_retrieve_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/available_number_retrieve_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/available_number_retrieve_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/blocked_handle_block_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/blocked_handle_block_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/blocked_handle_entry.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/blocked_handle_list_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/blocked_handle_unblock_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/capability_check_RCS_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/capability_check_i_message_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_background_update_failed_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_background_updated_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_create_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_create_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_created_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_group_name_update_failed_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_leave_chat_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_list_chats_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_send_voicememo_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_send_voicememo_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_update_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_update_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/background_set_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/get_chat_location_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/location_request_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/message_list_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/message_send_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/message_send_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/participant_add_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/participant_add_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/participant_remove_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/participant_remove_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/poll.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/poll_create_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/poll_envelope.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/sent_message.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/contact_card_create_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/contact_card_retrieve_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/contact_card_retrieve_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/contact_card_update_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/experience_list_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/experience_retrieve_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/handle_check_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/link_part_param.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/media_part_param.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_add_reaction_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_add_reaction_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_content_param.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_create_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_create_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_delivered_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_edited_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_effect.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_effect_param.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_event_v2.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_failed_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_list_messages_thread_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_read_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_received_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_sent_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_update_app_card_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_update_app_card_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_update_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/messages/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/messages/poll_add_options_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/messages/poll_vote_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/participant_added_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/participant_removed_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_create_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_credentials_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_handle_connection.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_handle_verify_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_provider.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_provider_connect_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_provider_connect_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_request.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_request_create_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_request_list_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_request_list_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/phone_number_list_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/phone_number_status_updated_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/phone_number_update_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/phone_number_update_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/phonenumber_list_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_delivered_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_failed_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_reaction_added_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_read_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_received_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_sent_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_updated_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_vote_added_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_vote_removed_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reaction_added_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reaction_event_base.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reaction_removed_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reply_to.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reply_to_param.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_action_item.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_audit.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_audit_started.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_driver.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_driver_key.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_evidence.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_opt_out_chat.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_report.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_unhealthy_chat.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/schemas_media_part_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/schemas_message_effect.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/set_contact_card.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/chat_handle.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/link_part_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/media_part_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/reaction.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/reaction_type.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/service_type.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/text_decoration.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared_params/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared_params/reaction_type.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared_params/service_type.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared_params/text_decoration.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/supported_content_type.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/unwrap_webhook_event.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_event_list_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_event_type.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_subscription.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_subscription_create_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_subscription_create_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_subscription_list_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_subscription_update_params.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_background.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_location.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_messages.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_participants.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_polls.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_typing.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/messages/__init__.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/messages/test_poll.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_attachments.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_available_number.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_blocked_handles.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_capability.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_chats.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_contact_card.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_experiences.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_messages.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_payment_handles.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_payment_providers.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_payment_requests.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_payments.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_phone_numbers.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_phonenumbers.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_webhook_events.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_webhook_subscriptions.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/conftest.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/sample_file.txt +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_client.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_extract_files.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_files.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_models.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_qs.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_required_args.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_response.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_streaming.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_transform.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_utils/test_json.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_utils/test_path.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_utils/test_proxy.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_utils/test_typing.py +0 -0
- {linq_python-0.35.0 → linq_python-0.36.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.36.0](https://github.com/linq-team/linq-python/compare/v0.35.1...v0.36.0) (2026-08-28)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* support multiple mentions per message part ([49030ee](https://github.com/linq-team/linq-python/commit/49030ee5414481cca4606b9511aa87177ed83ddf))
|
|
9
|
+
|
|
10
|
+
## [0.35.1](https://github.com/linq-team/linq-python/compare/v0.35.0...v0.35.1) (2026-08-27)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* clarify reputation audit rate limiting and response behavior ([94c274c](https://github.com/linq-team/linq-python/commit/94c274c3b6e85cb8d313397682e0bf065fd5a0d7))
|
|
16
|
+
|
|
3
17
|
## [0.35.0](https://github.com/linq-team/linq-python/compare/v0.34.0...v0.35.0) (2026-08-27)
|
|
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.36.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
|
|
@@ -188,10 +188,15 @@ class PhoneNumbersResource(SyncAPIResource):
|
|
|
188
188
|
Starts an asynchronous reputation audit for a line and returns an `audit_id`.
|
|
189
189
|
Poll the GET endpoint for the result.
|
|
190
190
|
|
|
191
|
-
Rate limited per line: only one audit may run at a time
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
191
|
+
Rate limited per line: only one audit may run at a time. Starting one while
|
|
192
|
+
another is still running returns `202` with the running audit's `audit_id`
|
|
193
|
+
rather than an error, so a retried start picks that audit back up instead of
|
|
194
|
+
losing it — poll the id you were given.
|
|
195
|
+
|
|
196
|
+
Once an audit finishes, a new one can't be started for the same line until a
|
|
197
|
+
cooldown elapses (`429`, with `Retry-After` carrying the wait). Keep the
|
|
198
|
+
`audit_id` from the original `202`: it stays readable on the GET endpoint for 24
|
|
199
|
+
hours, and the cooldown response does not repeat it.
|
|
195
200
|
|
|
196
201
|
Args:
|
|
197
202
|
extra_headers: Send extra headers
|
|
@@ -375,10 +380,15 @@ class AsyncPhoneNumbersResource(AsyncAPIResource):
|
|
|
375
380
|
Starts an asynchronous reputation audit for a line and returns an `audit_id`.
|
|
376
381
|
Poll the GET endpoint for the result.
|
|
377
382
|
|
|
378
|
-
Rate limited per line: only one audit may run at a time
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
383
|
+
Rate limited per line: only one audit may run at a time. Starting one while
|
|
384
|
+
another is still running returns `202` with the running audit's `audit_id`
|
|
385
|
+
rather than an error, so a retried start picks that audit back up instead of
|
|
386
|
+
losing it — poll the id you were given.
|
|
387
|
+
|
|
388
|
+
Once an audit finishes, a new one can't be started for the same line until a
|
|
389
|
+
cooldown elapses (`429`, with `Retry-After` carrying the wait). Keep the
|
|
390
|
+
`audit_id` from the original `202`: it stays readable on the GET endpoint for 24
|
|
391
|
+
hours, and the cooldown response does not repeat it.
|
|
382
392
|
|
|
383
393
|
Args:
|
|
384
394
|
extra_headers: Send extra headers
|
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/available_number_retrieve_params.py
RENAMED
|
File without changes
|
{linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/available_number_retrieve_response.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/capability_check_i_message_params.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_background_updated_webhook_event.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_group_icon_updated_webhook_event.py
RENAMED
|
File without changes
|
|
File without changes
|
{linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_group_name_updated_webhook_event.py
RENAMED
|
File without changes
|