linq-python 0.43.0__tar.gz → 0.44.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.44.0/.release-please-manifest.json +3 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/CHANGELOG.md +7 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/PKG-INFO +1 -1
- {linq_python-0.43.0 → linq_python-0.44.0}/api.md +2 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/pyproject.toml +1 -1
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_version.py +1 -1
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/messages/messages.py +204 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/__init__.py +6 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/media_part_param.py +19 -0
- linq_python-0.44.0/src/linq/types/message_add_reaction_params.py +101 -0
- linq_python-0.44.0/src/linq/types/message_update_sticker_placement_params.py +60 -0
- linq_python-0.44.0/src/linq/types/message_update_sticker_placement_response.py +15 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reaction_event_base.py +8 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared/reaction.py +11 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_messages.py +161 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/uv.lock +1 -1
- linq_python-0.43.0/.release-please-manifest.json +0 -3
- linq_python-0.43.0/src/linq/types/message_add_reaction_params.py +0 -32
- {linq_python-0.43.0 → linq_python-0.44.0}/.gitignore +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/CONTRIBUTING.md +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/LICENSE +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/README.md +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/SECURITY.md +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/bin/check-release-environment +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/bin/publish-pypi +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/examples/.keep +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/release-please-config.json +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/requirements-dev.lock +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_base_client.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_client.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_compat.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_constants.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_exceptions.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_files.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_models.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_qs.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_resource.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_streaming.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_types.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_compat.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_datetime_parse.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_json.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_logs.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_path.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_proxy.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_reflection.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_resources_proxy.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_streams.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_sync.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_transform.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_typing.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/_utils/_utils.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/lib/.keep +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/pagination.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/py.typed +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/attachments.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/available_number.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/blocked_handles.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/capability.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/chats/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/chats/background.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/chats/chats.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/chats/location.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/chats/messages.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/chats/participants.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/chats/polls.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/chats/typing.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/contact_card.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/experiences.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/messages/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/messages/poll.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/payment_handles.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/payment_providers.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/payment_requests.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/payments.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/phone_numbers.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/phonenumbers.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/webhook_events.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/webhook_subscriptions.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/resources/webhooks.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/attachment_create_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/attachment_create_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/attachment_retrieve_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/available_number_retrieve_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/available_number_retrieve_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/blocked_handle_block_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/blocked_handle_block_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/blocked_handle_entry.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/blocked_handle_list_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/blocked_handle_unblock_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/capability_check_RCS_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/capability_check_i_message_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_background_update_failed_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_background_updated_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_create_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_create_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_created_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_group_name_update_failed_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_leave_chat_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_list_chats_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_send_voicememo_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_send_voicememo_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_update_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chat_update_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/background_set_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/get_chat_location_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/location_request_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/message_list_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/message_send_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/message_send_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/participant_add_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/participant_add_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/participant_remove_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/participant_remove_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/poll.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/poll_create_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/poll_envelope.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/chats/sent_message.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/connection_created_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/connection_revoked_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/contact_card_create_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/contact_card_received_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/contact_card_retrieve_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/contact_card_retrieve_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/contact_card_update_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/experience_list_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/experience_retrieve_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/handle_check_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/link_part_param.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/location_sharing_started_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/location_sharing_stopped_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_add_reaction_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_content_param.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_create_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_create_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_delivered_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_edited_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_effect.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_effect_param.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_event_v2.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_failed_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_list_messages_thread_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_read_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_received_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_sent_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_update_app_card_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_update_app_card_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/message_update_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/messages/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/messages/poll_add_options_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/messages/poll_vote_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/participant_added_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/participant_removed_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_authorized_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_canceled_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_create_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_credentials_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_declined_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_expired_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_handle_connection.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_handle_verify_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_provider.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_provider_connect_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_provider_connect_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_request.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_request_create_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_request_list_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_request_list_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/payment_succeeded_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/phone_number_list_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/phone_number_status_updated_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/phone_number_update_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/phone_number_update_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/phonenumber_list_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/poll_delivered_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/poll_failed_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/poll_reaction_added_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/poll_read_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/poll_received_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/poll_sent_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/poll_updated_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/poll_vote_added_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/poll_vote_removed_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reaction_added_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reaction_removed_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reply_to.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reply_to_param.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reputation_action_item.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reputation_audit.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reputation_audit_started.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reputation_driver.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reputation_driver_key.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reputation_evidence.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reputation_opt_out_chat.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reputation_report.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/reputation_unhealthy_chat.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/schemas_media_part_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/schemas_message_effect.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/schemas_text_part_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/set_contact_card.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared/chat_handle.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared/link_part_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared/media_part_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared/reaction_type.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared/service_type.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared/text_decoration.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared/text_part_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared_params/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared_params/reaction_type.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared_params/service_type.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/shared_params/text_decoration.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/supported_content_type.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/text_part_param.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/unwrap_webhook_event.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/webhook_event_list_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/webhook_event_type.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/webhook_subscription.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/webhook_subscription_create_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/webhook_subscription_create_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/webhook_subscription_list_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/src/linq/types/webhook_subscription_update_params.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/chats/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/chats/test_background.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/chats/test_location.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/chats/test_messages.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/chats/test_participants.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/chats/test_polls.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/chats/test_typing.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/messages/__init__.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/messages/test_poll.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_attachments.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_available_number.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_blocked_handles.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_capability.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_chats.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_contact_card.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_experiences.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_payment_handles.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_payment_providers.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_payment_requests.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_payments.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_phone_numbers.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_phonenumbers.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_webhook_events.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_webhook_subscriptions.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/api_resources/test_webhooks.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/conftest.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/sample_file.txt +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_client.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_extract_files.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_files.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_models.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_qs.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_required_args.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_response.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_streaming.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_transform.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_utils/test_json.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_utils/test_path.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_utils/test_proxy.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/test_utils/test_typing.py +0 -0
- {linq_python-0.43.0 → linq_python-0.44.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.44.0](https://github.com/linq-team/linq-python/compare/v0.43.0...v0.44.0) (2026-09-05)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add sticker reactions and placement adjustment ([de31a11](https://github.com/linq-team/linq-python/commit/de31a112a43dd89c42116fef0bd01cf8a3811976))
|
|
9
|
+
|
|
3
10
|
## [0.43.0](https://github.com/linq-team/linq-python/compare/v0.42.0...v0.43.0) (2026-09-04)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: linq-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.44.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
|
|
@@ -119,6 +119,7 @@ from linq.types import (
|
|
|
119
119
|
MessageCreateResponse,
|
|
120
120
|
MessageAddReactionResponse,
|
|
121
121
|
MessageUpdateAppCardResponse,
|
|
122
|
+
MessageUpdateStickerPlacementResponse,
|
|
122
123
|
)
|
|
123
124
|
```
|
|
124
125
|
|
|
@@ -131,6 +132,7 @@ Methods:
|
|
|
131
132
|
- <code title="post /v3/messages/{messageId}/reactions">client.messages.<a href="./src/linq/resources/messages/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>
|
|
132
133
|
- <code title="get /v3/messages/{messageId}/thread">client.messages.<a href="./src/linq/resources/messages/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>
|
|
133
134
|
- <code title="post /v3/messages/{messageId}/update">client.messages.<a href="./src/linq/resources/messages/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>
|
|
135
|
+
- <code title="patch /v3/messages/{messageId}/reactions/{reactionId}">client.messages.<a href="./src/linq/resources/messages/messages.py">update_sticker_placement</a>(reaction_id, \*, message_id, \*\*<a href="src/linq/types/message_update_sticker_placement_params.py">params</a>) -> <a href="./src/linq/types/message_update_sticker_placement_response.py">MessageUpdateStickerPlacementResponse</a></code>
|
|
134
136
|
|
|
135
137
|
## Poll
|
|
136
138
|
|
|
@@ -20,6 +20,7 @@ from ...types import (
|
|
|
20
20
|
message_add_reaction_params,
|
|
21
21
|
message_update_app_card_params,
|
|
22
22
|
message_list_messages_thread_params,
|
|
23
|
+
message_update_sticker_placement_params,
|
|
23
24
|
)
|
|
24
25
|
from ..._types import Body, Omit, Query, Headers, NoneType, NotGiven, SequenceNotStr, omit, not_given
|
|
25
26
|
from ..._utils import path_template, maybe_transform, strip_not_given, async_maybe_transform
|
|
@@ -39,6 +40,7 @@ from ...types.message_content_param import MessageContentParam
|
|
|
39
40
|
from ...types.message_create_response import MessageCreateResponse
|
|
40
41
|
from ...types.message_add_reaction_response import MessageAddReactionResponse
|
|
41
42
|
from ...types.message_update_app_card_response import MessageUpdateAppCardResponse
|
|
43
|
+
from ...types.message_update_sticker_placement_response import MessageUpdateStickerPlacementResponse
|
|
42
44
|
|
|
43
45
|
__all__ = ["MessagesResource", "AsyncMessagesResource"]
|
|
44
46
|
|
|
@@ -478,8 +480,11 @@ class MessagesResource(SyncAPIResource):
|
|
|
478
480
|
*,
|
|
479
481
|
operation: Literal["add", "remove"],
|
|
480
482
|
type: ReactionType,
|
|
483
|
+
attachment_id: str | Omit = omit,
|
|
481
484
|
custom_emoji: str | Omit = omit,
|
|
482
485
|
part_index: int | Omit = omit,
|
|
486
|
+
placement: message_add_reaction_params.Placement | Omit = omit,
|
|
487
|
+
url: str | Omit = omit,
|
|
483
488
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
484
489
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
485
490
|
extra_headers: Headers | None = None,
|
|
@@ -501,6 +506,12 @@ class MessagesResource(SyncAPIResource):
|
|
|
501
506
|
- emphasize ‼️
|
|
502
507
|
- question ❓
|
|
503
508
|
- custom - any emoji (use `custom_emoji` field to specify)
|
|
509
|
+
- sticker - an image peeled onto the message (use `url` or `attachment_id`)
|
|
510
|
+
|
|
511
|
+
**Stickers** are iMessage-only and cannot be removed — iMessage has no unpeel
|
|
512
|
+
operation, so `operation: "remove"` with `type: "sticker"` is rejected.
|
|
513
|
+
Position, size and rotation are optional via `placement`, and can be changed
|
|
514
|
+
afterwards with `PATCH /v3/messages/{messageId}/reactions/{reactionId}`.
|
|
504
515
|
|
|
505
516
|
Args:
|
|
506
517
|
operation: Whether to add or remove the reaction
|
|
@@ -510,11 +521,33 @@ class MessagesResource(SyncAPIResource):
|
|
|
510
521
|
emoji in the custom_emoji field. Sticker reactions have type "sticker" with
|
|
511
522
|
sticker attachment details in the sticker field.
|
|
512
523
|
|
|
524
|
+
attachment_id: Reference to a sticker image pre-uploaded via `POST /v3/attachments`. Only valid
|
|
525
|
+
when type is "sticker".
|
|
526
|
+
|
|
527
|
+
Either `url` or `attachment_id` must be provided when type is "sticker", but not
|
|
528
|
+
both.
|
|
529
|
+
|
|
513
530
|
custom_emoji: Custom emoji string. Required when type is "custom".
|
|
514
531
|
|
|
515
532
|
part_index: Optional index of the message part to react to. If not provided, reacts to the
|
|
516
533
|
entire message (part 0).
|
|
517
534
|
|
|
535
|
+
placement: Optional position, size and rotation of a sticker on the target bubble. Only
|
|
536
|
+
valid when type is "sticker".
|
|
537
|
+
|
|
538
|
+
Every field is independent and optional — omit the object entirely, or any field
|
|
539
|
+
within it, to keep the default (centred, default size, unrotated).
|
|
540
|
+
|
|
541
|
+
url: Linq attachment URL of the sticker image — the `download_url` returned by
|
|
542
|
+
`POST /v3/attachments`. Only valid when type is "sticker".
|
|
543
|
+
|
|
544
|
+
Unlike a media part, this does **not** accept an arbitrary host: reactions have
|
|
545
|
+
no download step, so the image must already be stored. To send a sticker from
|
|
546
|
+
elsewhere, upload it with `POST /v3/attachments` first and pass `attachment_id`.
|
|
547
|
+
|
|
548
|
+
Either `url` or `attachment_id` must be provided when type is "sticker", but not
|
|
549
|
+
both.
|
|
550
|
+
|
|
518
551
|
extra_headers: Send extra headers
|
|
519
552
|
|
|
520
553
|
extra_query: Add additional query parameters to the request
|
|
@@ -531,8 +564,11 @@ class MessagesResource(SyncAPIResource):
|
|
|
531
564
|
{
|
|
532
565
|
"operation": operation,
|
|
533
566
|
"type": type,
|
|
567
|
+
"attachment_id": attachment_id,
|
|
534
568
|
"custom_emoji": custom_emoji,
|
|
535
569
|
"part_index": part_index,
|
|
570
|
+
"placement": placement,
|
|
571
|
+
"url": url,
|
|
536
572
|
},
|
|
537
573
|
message_add_reaction_params.MessageAddReactionParams,
|
|
538
574
|
),
|
|
@@ -710,6 +746,67 @@ class MessagesResource(SyncAPIResource):
|
|
|
710
746
|
cast_to=MessageUpdateAppCardResponse,
|
|
711
747
|
)
|
|
712
748
|
|
|
749
|
+
def update_sticker_placement(
|
|
750
|
+
self,
|
|
751
|
+
reaction_id: str,
|
|
752
|
+
*,
|
|
753
|
+
message_id: str,
|
|
754
|
+
placement: message_update_sticker_placement_params.Placement,
|
|
755
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
756
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
757
|
+
extra_headers: Headers | None = None,
|
|
758
|
+
extra_query: Query | None = None,
|
|
759
|
+
extra_body: Body | None = None,
|
|
760
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
761
|
+
) -> MessageUpdateStickerPlacementResponse:
|
|
762
|
+
"""
|
|
763
|
+
Move, resize or rotate a sticker that has already been peeled onto a message.
|
|
764
|
+
The change is sent to every device in the conversation, exactly as dragging the
|
|
765
|
+
sticker by hand would.
|
|
766
|
+
|
|
767
|
+
Only stickers can be repositioned — a tapback has no placement, so a non-sticker
|
|
768
|
+
`reactionId` is rejected. Any field omitted from `placement` keeps its current
|
|
769
|
+
value.
|
|
770
|
+
|
|
771
|
+
`reactionId` is the `id` from the reaction on the message, or from the
|
|
772
|
+
`reaction.added` webhook. Stickers stack, so this id is what distinguishes one
|
|
773
|
+
sticker from another on the same message.
|
|
774
|
+
|
|
775
|
+
Stickers peeled before this endpoint existed cannot be moved: addressing one
|
|
776
|
+
requires an identifier that was not recorded at the time, and it returns 404.
|
|
777
|
+
|
|
778
|
+
Args:
|
|
779
|
+
placement: Optional position, size and rotation of a sticker on the target bubble. Only
|
|
780
|
+
valid when type is "sticker".
|
|
781
|
+
|
|
782
|
+
Every field is independent and optional — omit the object entirely, or any field
|
|
783
|
+
within it, to keep the default (centred, default size, unrotated).
|
|
784
|
+
|
|
785
|
+
extra_headers: Send extra headers
|
|
786
|
+
|
|
787
|
+
extra_query: Add additional query parameters to the request
|
|
788
|
+
|
|
789
|
+
extra_body: Add additional JSON properties to the request
|
|
790
|
+
|
|
791
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
792
|
+
"""
|
|
793
|
+
if not message_id:
|
|
794
|
+
raise ValueError(f"Expected a non-empty value for `message_id` but received {message_id!r}")
|
|
795
|
+
if not reaction_id:
|
|
796
|
+
raise ValueError(f"Expected a non-empty value for `reaction_id` but received {reaction_id!r}")
|
|
797
|
+
return self._patch(
|
|
798
|
+
path_template(
|
|
799
|
+
"/v3/messages/{message_id}/reactions/{reaction_id}", message_id=message_id, reaction_id=reaction_id
|
|
800
|
+
),
|
|
801
|
+
body=maybe_transform(
|
|
802
|
+
{"placement": placement}, message_update_sticker_placement_params.MessageUpdateStickerPlacementParams
|
|
803
|
+
),
|
|
804
|
+
options=make_request_options(
|
|
805
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
806
|
+
),
|
|
807
|
+
cast_to=MessageUpdateStickerPlacementResponse,
|
|
808
|
+
)
|
|
809
|
+
|
|
713
810
|
|
|
714
811
|
class AsyncMessagesResource(AsyncAPIResource):
|
|
715
812
|
"""Messages are individual communications within a chat thread.
|
|
@@ -1146,8 +1243,11 @@ class AsyncMessagesResource(AsyncAPIResource):
|
|
|
1146
1243
|
*,
|
|
1147
1244
|
operation: Literal["add", "remove"],
|
|
1148
1245
|
type: ReactionType,
|
|
1246
|
+
attachment_id: str | Omit = omit,
|
|
1149
1247
|
custom_emoji: str | Omit = omit,
|
|
1150
1248
|
part_index: int | Omit = omit,
|
|
1249
|
+
placement: message_add_reaction_params.Placement | Omit = omit,
|
|
1250
|
+
url: str | Omit = omit,
|
|
1151
1251
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
1152
1252
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
1153
1253
|
extra_headers: Headers | None = None,
|
|
@@ -1169,6 +1269,12 @@ class AsyncMessagesResource(AsyncAPIResource):
|
|
|
1169
1269
|
- emphasize ‼️
|
|
1170
1270
|
- question ❓
|
|
1171
1271
|
- custom - any emoji (use `custom_emoji` field to specify)
|
|
1272
|
+
- sticker - an image peeled onto the message (use `url` or `attachment_id`)
|
|
1273
|
+
|
|
1274
|
+
**Stickers** are iMessage-only and cannot be removed — iMessage has no unpeel
|
|
1275
|
+
operation, so `operation: "remove"` with `type: "sticker"` is rejected.
|
|
1276
|
+
Position, size and rotation are optional via `placement`, and can be changed
|
|
1277
|
+
afterwards with `PATCH /v3/messages/{messageId}/reactions/{reactionId}`.
|
|
1172
1278
|
|
|
1173
1279
|
Args:
|
|
1174
1280
|
operation: Whether to add or remove the reaction
|
|
@@ -1178,11 +1284,33 @@ class AsyncMessagesResource(AsyncAPIResource):
|
|
|
1178
1284
|
emoji in the custom_emoji field. Sticker reactions have type "sticker" with
|
|
1179
1285
|
sticker attachment details in the sticker field.
|
|
1180
1286
|
|
|
1287
|
+
attachment_id: Reference to a sticker image pre-uploaded via `POST /v3/attachments`. Only valid
|
|
1288
|
+
when type is "sticker".
|
|
1289
|
+
|
|
1290
|
+
Either `url` or `attachment_id` must be provided when type is "sticker", but not
|
|
1291
|
+
both.
|
|
1292
|
+
|
|
1181
1293
|
custom_emoji: Custom emoji string. Required when type is "custom".
|
|
1182
1294
|
|
|
1183
1295
|
part_index: Optional index of the message part to react to. If not provided, reacts to the
|
|
1184
1296
|
entire message (part 0).
|
|
1185
1297
|
|
|
1298
|
+
placement: Optional position, size and rotation of a sticker on the target bubble. Only
|
|
1299
|
+
valid when type is "sticker".
|
|
1300
|
+
|
|
1301
|
+
Every field is independent and optional — omit the object entirely, or any field
|
|
1302
|
+
within it, to keep the default (centred, default size, unrotated).
|
|
1303
|
+
|
|
1304
|
+
url: Linq attachment URL of the sticker image — the `download_url` returned by
|
|
1305
|
+
`POST /v3/attachments`. Only valid when type is "sticker".
|
|
1306
|
+
|
|
1307
|
+
Unlike a media part, this does **not** accept an arbitrary host: reactions have
|
|
1308
|
+
no download step, so the image must already be stored. To send a sticker from
|
|
1309
|
+
elsewhere, upload it with `POST /v3/attachments` first and pass `attachment_id`.
|
|
1310
|
+
|
|
1311
|
+
Either `url` or `attachment_id` must be provided when type is "sticker", but not
|
|
1312
|
+
both.
|
|
1313
|
+
|
|
1186
1314
|
extra_headers: Send extra headers
|
|
1187
1315
|
|
|
1188
1316
|
extra_query: Add additional query parameters to the request
|
|
@@ -1199,8 +1327,11 @@ class AsyncMessagesResource(AsyncAPIResource):
|
|
|
1199
1327
|
{
|
|
1200
1328
|
"operation": operation,
|
|
1201
1329
|
"type": type,
|
|
1330
|
+
"attachment_id": attachment_id,
|
|
1202
1331
|
"custom_emoji": custom_emoji,
|
|
1203
1332
|
"part_index": part_index,
|
|
1333
|
+
"placement": placement,
|
|
1334
|
+
"url": url,
|
|
1204
1335
|
},
|
|
1205
1336
|
message_add_reaction_params.MessageAddReactionParams,
|
|
1206
1337
|
),
|
|
@@ -1378,6 +1509,67 @@ class AsyncMessagesResource(AsyncAPIResource):
|
|
|
1378
1509
|
cast_to=MessageUpdateAppCardResponse,
|
|
1379
1510
|
)
|
|
1380
1511
|
|
|
1512
|
+
async def update_sticker_placement(
|
|
1513
|
+
self,
|
|
1514
|
+
reaction_id: str,
|
|
1515
|
+
*,
|
|
1516
|
+
message_id: str,
|
|
1517
|
+
placement: message_update_sticker_placement_params.Placement,
|
|
1518
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
1519
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
1520
|
+
extra_headers: Headers | None = None,
|
|
1521
|
+
extra_query: Query | None = None,
|
|
1522
|
+
extra_body: Body | None = None,
|
|
1523
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
1524
|
+
) -> MessageUpdateStickerPlacementResponse:
|
|
1525
|
+
"""
|
|
1526
|
+
Move, resize or rotate a sticker that has already been peeled onto a message.
|
|
1527
|
+
The change is sent to every device in the conversation, exactly as dragging the
|
|
1528
|
+
sticker by hand would.
|
|
1529
|
+
|
|
1530
|
+
Only stickers can be repositioned — a tapback has no placement, so a non-sticker
|
|
1531
|
+
`reactionId` is rejected. Any field omitted from `placement` keeps its current
|
|
1532
|
+
value.
|
|
1533
|
+
|
|
1534
|
+
`reactionId` is the `id` from the reaction on the message, or from the
|
|
1535
|
+
`reaction.added` webhook. Stickers stack, so this id is what distinguishes one
|
|
1536
|
+
sticker from another on the same message.
|
|
1537
|
+
|
|
1538
|
+
Stickers peeled before this endpoint existed cannot be moved: addressing one
|
|
1539
|
+
requires an identifier that was not recorded at the time, and it returns 404.
|
|
1540
|
+
|
|
1541
|
+
Args:
|
|
1542
|
+
placement: Optional position, size and rotation of a sticker on the target bubble. Only
|
|
1543
|
+
valid when type is "sticker".
|
|
1544
|
+
|
|
1545
|
+
Every field is independent and optional — omit the object entirely, or any field
|
|
1546
|
+
within it, to keep the default (centred, default size, unrotated).
|
|
1547
|
+
|
|
1548
|
+
extra_headers: Send extra headers
|
|
1549
|
+
|
|
1550
|
+
extra_query: Add additional query parameters to the request
|
|
1551
|
+
|
|
1552
|
+
extra_body: Add additional JSON properties to the request
|
|
1553
|
+
|
|
1554
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
1555
|
+
"""
|
|
1556
|
+
if not message_id:
|
|
1557
|
+
raise ValueError(f"Expected a non-empty value for `message_id` but received {message_id!r}")
|
|
1558
|
+
if not reaction_id:
|
|
1559
|
+
raise ValueError(f"Expected a non-empty value for `reaction_id` but received {reaction_id!r}")
|
|
1560
|
+
return await self._patch(
|
|
1561
|
+
path_template(
|
|
1562
|
+
"/v3/messages/{message_id}/reactions/{reaction_id}", message_id=message_id, reaction_id=reaction_id
|
|
1563
|
+
),
|
|
1564
|
+
body=await async_maybe_transform(
|
|
1565
|
+
{"placement": placement}, message_update_sticker_placement_params.MessageUpdateStickerPlacementParams
|
|
1566
|
+
),
|
|
1567
|
+
options=make_request_options(
|
|
1568
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
1569
|
+
),
|
|
1570
|
+
cast_to=MessageUpdateStickerPlacementResponse,
|
|
1571
|
+
)
|
|
1572
|
+
|
|
1381
1573
|
|
|
1382
1574
|
class MessagesResourceWithRawResponse:
|
|
1383
1575
|
def __init__(self, messages: MessagesResource) -> None:
|
|
@@ -1404,6 +1596,9 @@ class MessagesResourceWithRawResponse:
|
|
|
1404
1596
|
self.update_app_card = to_raw_response_wrapper(
|
|
1405
1597
|
messages.update_app_card,
|
|
1406
1598
|
)
|
|
1599
|
+
self.update_sticker_placement = to_raw_response_wrapper(
|
|
1600
|
+
messages.update_sticker_placement,
|
|
1601
|
+
)
|
|
1407
1602
|
|
|
1408
1603
|
@cached_property
|
|
1409
1604
|
def poll(self) -> PollResourceWithRawResponse:
|
|
@@ -1507,6 +1702,9 @@ class AsyncMessagesResourceWithRawResponse:
|
|
|
1507
1702
|
self.update_app_card = async_to_raw_response_wrapper(
|
|
1508
1703
|
messages.update_app_card,
|
|
1509
1704
|
)
|
|
1705
|
+
self.update_sticker_placement = async_to_raw_response_wrapper(
|
|
1706
|
+
messages.update_sticker_placement,
|
|
1707
|
+
)
|
|
1510
1708
|
|
|
1511
1709
|
@cached_property
|
|
1512
1710
|
def poll(self) -> AsyncPollResourceWithRawResponse:
|
|
@@ -1610,6 +1808,9 @@ class MessagesResourceWithStreamingResponse:
|
|
|
1610
1808
|
self.update_app_card = to_streamed_response_wrapper(
|
|
1611
1809
|
messages.update_app_card,
|
|
1612
1810
|
)
|
|
1811
|
+
self.update_sticker_placement = to_streamed_response_wrapper(
|
|
1812
|
+
messages.update_sticker_placement,
|
|
1813
|
+
)
|
|
1613
1814
|
|
|
1614
1815
|
@cached_property
|
|
1615
1816
|
def poll(self) -> PollResourceWithStreamingResponse:
|
|
@@ -1713,6 +1914,9 @@ class AsyncMessagesResourceWithStreamingResponse:
|
|
|
1713
1914
|
self.update_app_card = async_to_streamed_response_wrapper(
|
|
1714
1915
|
messages.update_app_card,
|
|
1715
1916
|
)
|
|
1917
|
+
self.update_sticker_placement = async_to_streamed_response_wrapper(
|
|
1918
|
+
messages.update_sticker_placement,
|
|
1919
|
+
)
|
|
1716
1920
|
|
|
1717
1921
|
@cached_property
|
|
1718
1922
|
def poll(self) -> AsyncPollResourceWithStreamingResponse:
|
|
@@ -136,6 +136,12 @@ from .location_sharing_started_webhook_event import (
|
|
|
136
136
|
from .location_sharing_stopped_webhook_event import (
|
|
137
137
|
LocationSharingStoppedWebhookEvent as LocationSharingStoppedWebhookEvent,
|
|
138
138
|
)
|
|
139
|
+
from .message_update_sticker_placement_params import (
|
|
140
|
+
MessageUpdateStickerPlacementParams as MessageUpdateStickerPlacementParams,
|
|
141
|
+
)
|
|
142
|
+
from .message_update_sticker_placement_response import (
|
|
143
|
+
MessageUpdateStickerPlacementResponse as MessageUpdateStickerPlacementResponse,
|
|
144
|
+
)
|
|
139
145
|
from .phone_number_status_updated_webhook_event import (
|
|
140
146
|
PhoneNumberStatusUpdatedWebhookEvent as PhoneNumberStatusUpdatedWebhookEvent,
|
|
141
147
|
)
|
|
@@ -20,6 +20,25 @@ class MediaPartParam(TypedDict, total=False):
|
|
|
20
20
|
Either `url` or `attachment_id` must be provided, but not both.
|
|
21
21
|
"""
|
|
22
22
|
|
|
23
|
+
sticker: bool
|
|
24
|
+
"""Send this image as a **sticker** rather than a photo.
|
|
25
|
+
|
|
26
|
+
The recipient can peel it off and place it on any message in the conversation,
|
|
27
|
+
and it renders without a bubble.
|
|
28
|
+
|
|
29
|
+
An opaque photo is cut out automatically — the subject is lifted from its
|
|
30
|
+
background, the same way "Add Sticker" does on iOS. An image that already has
|
|
31
|
+
transparency is sent as-is. If no subject can be found, the image sends as an
|
|
32
|
+
ordinary photo.
|
|
33
|
+
|
|
34
|
+
**iMessage only.** On SMS/RCS the flag is ignored and the image sends as a
|
|
35
|
+
photo.
|
|
36
|
+
|
|
37
|
+
Stickers can be combined with a `text` part in the same message; the text
|
|
38
|
+
arrives as its own bubble. To place a sticker _onto_ an existing message
|
|
39
|
+
instead, use `POST /v3/messages/{messageId}/reactions` with `type: "sticker"`.
|
|
40
|
+
"""
|
|
41
|
+
|
|
23
42
|
url: str
|
|
24
43
|
"""Any publicly accessible HTTPS URL to the media file.
|
|
25
44
|
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing_extensions import Literal, Required, TypedDict
|
|
6
|
+
|
|
7
|
+
from .shared.reaction_type import ReactionType
|
|
8
|
+
|
|
9
|
+
__all__ = ["MessageAddReactionParams", "Placement"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class MessageAddReactionParams(TypedDict, total=False):
|
|
13
|
+
operation: Required[Literal["add", "remove"]]
|
|
14
|
+
"""Whether to add or remove the reaction"""
|
|
15
|
+
|
|
16
|
+
type: Required[ReactionType]
|
|
17
|
+
"""Type of reaction.
|
|
18
|
+
|
|
19
|
+
Standard iMessage tapbacks are love, like, dislike, laugh, emphasize, question.
|
|
20
|
+
Custom emoji reactions have type "custom" with the actual emoji in the
|
|
21
|
+
custom_emoji field. Sticker reactions have type "sticker" with sticker
|
|
22
|
+
attachment details in the sticker field.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
attachment_id: str
|
|
26
|
+
"""
|
|
27
|
+
Reference to a sticker image pre-uploaded via `POST /v3/attachments`. Only valid
|
|
28
|
+
when type is "sticker".
|
|
29
|
+
|
|
30
|
+
Either `url` or `attachment_id` must be provided when type is "sticker", but not
|
|
31
|
+
both.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
custom_emoji: str
|
|
35
|
+
"""Custom emoji string. Required when type is "custom"."""
|
|
36
|
+
|
|
37
|
+
part_index: int
|
|
38
|
+
"""
|
|
39
|
+
Optional index of the message part to react to. If not provided, reacts to the
|
|
40
|
+
entire message (part 0).
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
placement: Placement
|
|
44
|
+
"""Optional position, size and rotation of a sticker on the target bubble.
|
|
45
|
+
|
|
46
|
+
Only valid when type is "sticker".
|
|
47
|
+
|
|
48
|
+
Every field is independent and optional — omit the object entirely, or any field
|
|
49
|
+
within it, to keep the default (centred, default size, unrotated).
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
url: str
|
|
53
|
+
"""
|
|
54
|
+
Linq attachment URL of the sticker image — the `download_url` returned by
|
|
55
|
+
`POST /v3/attachments`. Only valid when type is "sticker".
|
|
56
|
+
|
|
57
|
+
Unlike a media part, this does **not** accept an arbitrary host: reactions have
|
|
58
|
+
no download step, so the image must already be stored. To send a sticker from
|
|
59
|
+
elsewhere, upload it with `POST /v3/attachments` first and pass `attachment_id`.
|
|
60
|
+
|
|
61
|
+
Either `url` or `attachment_id` must be provided when type is "sticker", but not
|
|
62
|
+
both.
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class Placement(TypedDict, total=False):
|
|
67
|
+
"""Optional position, size and rotation of a sticker on the target
|
|
68
|
+
bubble.
|
|
69
|
+
|
|
70
|
+
Only valid when type is "sticker".
|
|
71
|
+
|
|
72
|
+
Every field is independent and optional — omit the object entirely,
|
|
73
|
+
or any field within it, to keep the default (centred, default size,
|
|
74
|
+
unrotated).
|
|
75
|
+
"""
|
|
76
|
+
|
|
77
|
+
rotation: float
|
|
78
|
+
"""Clockwise rotation in degrees."""
|
|
79
|
+
|
|
80
|
+
scale: float
|
|
81
|
+
"""Size relative to the default, where 1 matches the size a sticker gets natively.
|
|
82
|
+
|
|
83
|
+
Values outside 0.5–1.5 are clamped rather than rejected. The upper bound keeps a
|
|
84
|
+
sticker within the size range iMessage itself displays: its own limit is larger,
|
|
85
|
+
but that allowance assumes the transparent padding Apple's stickers carry, which
|
|
86
|
+
a full-bleed image does not have.
|
|
87
|
+
|
|
88
|
+
Scale is linear, so 1.5 is a little over twice the area.
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
x: float
|
|
92
|
+
"""Horizontal position on the target bubble, from -1 (far left) to 1 (far right).
|
|
93
|
+
|
|
94
|
+
0 is centred.
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
y: float
|
|
98
|
+
"""Vertical position on the target bubble, from -1 (top) to 1 (bottom).
|
|
99
|
+
|
|
100
|
+
0 is centred.
|
|
101
|
+
"""
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing_extensions import Required, Annotated, TypedDict
|
|
6
|
+
|
|
7
|
+
from .._utils import PropertyInfo
|
|
8
|
+
|
|
9
|
+
__all__ = ["MessageUpdateStickerPlacementParams", "Placement"]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class MessageUpdateStickerPlacementParams(TypedDict, total=False):
|
|
13
|
+
message_id: Required[Annotated[str, PropertyInfo(alias="messageId")]]
|
|
14
|
+
|
|
15
|
+
placement: Required[Placement]
|
|
16
|
+
"""Optional position, size and rotation of a sticker on the target bubble.
|
|
17
|
+
|
|
18
|
+
Only valid when type is "sticker".
|
|
19
|
+
|
|
20
|
+
Every field is independent and optional — omit the object entirely, or any field
|
|
21
|
+
within it, to keep the default (centred, default size, unrotated).
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class Placement(TypedDict, total=False):
|
|
26
|
+
"""Optional position, size and rotation of a sticker on the target
|
|
27
|
+
bubble.
|
|
28
|
+
|
|
29
|
+
Only valid when type is "sticker".
|
|
30
|
+
|
|
31
|
+
Every field is independent and optional — omit the object entirely,
|
|
32
|
+
or any field within it, to keep the default (centred, default size,
|
|
33
|
+
unrotated).
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
rotation: float
|
|
37
|
+
"""Clockwise rotation in degrees."""
|
|
38
|
+
|
|
39
|
+
scale: float
|
|
40
|
+
"""Size relative to the default, where 1 matches the size a sticker gets natively.
|
|
41
|
+
|
|
42
|
+
Values outside 0.5–1.5 are clamped rather than rejected. The upper bound keeps a
|
|
43
|
+
sticker within the size range iMessage itself displays: its own limit is larger,
|
|
44
|
+
but that allowance assumes the transparent padding Apple's stickers carry, which
|
|
45
|
+
a full-bleed image does not have.
|
|
46
|
+
|
|
47
|
+
Scale is linear, so 1.5 is a little over twice the area.
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
x: float
|
|
51
|
+
"""Horizontal position on the target bubble, from -1 (far left) to 1 (far right).
|
|
52
|
+
|
|
53
|
+
0 is centred.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
y: float
|
|
57
|
+
"""Vertical position on the target bubble, from -1 (top) to 1 (bottom).
|
|
58
|
+
|
|
59
|
+
0 is centred.
|
|
60
|
+
"""
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import Optional
|
|
4
|
+
|
|
5
|
+
from .._models import BaseModel
|
|
6
|
+
|
|
7
|
+
__all__ = ["MessageUpdateStickerPlacementResponse"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class MessageUpdateStickerPlacementResponse(BaseModel):
|
|
11
|
+
status: Optional[str] = None
|
|
12
|
+
|
|
13
|
+
success: Optional[bool] = None
|
|
14
|
+
|
|
15
|
+
trace_id: Optional[str] = None
|
|
@@ -75,6 +75,14 @@ class ReactionEventBase(BaseModel):
|
|
|
75
75
|
reacted_at: Optional[datetime] = None
|
|
76
76
|
"""When the reaction was added or removed"""
|
|
77
77
|
|
|
78
|
+
reaction_id: Optional[str] = None
|
|
79
|
+
"""Identifier for this reaction.
|
|
80
|
+
|
|
81
|
+
Pass it to `PATCH /v3/messages/{messageId}/reactions/{reactionId}` to move a
|
|
82
|
+
sticker. Stickers stack, so this is what distinguishes one sticker from another
|
|
83
|
+
on the same message.
|
|
84
|
+
"""
|
|
85
|
+
|
|
78
86
|
service: Optional[ServiceType] = None
|
|
79
87
|
"""Messaging service type"""
|
|
80
88
|
|
|
@@ -46,6 +46,17 @@ class Reaction(BaseModel):
|
|
|
46
46
|
attachment details in the sticker field.
|
|
47
47
|
"""
|
|
48
48
|
|
|
49
|
+
id: Optional[str] = None
|
|
50
|
+
"""Identifier for this reaction.
|
|
51
|
+
|
|
52
|
+
Pass it to `PATCH /v3/messages/{messageId}/reactions/{reactionId}` to move a
|
|
53
|
+
sticker.
|
|
54
|
+
|
|
55
|
+
Stickers placed before this API shipped can be read but not moved: the
|
|
56
|
+
device-side reference needed to reposition them was never recorded, so `PATCH`
|
|
57
|
+
returns 404 for those.
|
|
58
|
+
"""
|
|
59
|
+
|
|
49
60
|
custom_emoji: Optional[str] = None
|
|
50
61
|
"""Custom emoji if type is "custom", null otherwise"""
|
|
51
62
|
|