linq-python 0.13.0__tar.gz → 0.14.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.14.0/.release-please-manifest.json +3 -0
- linq_python-0.14.0/CHANGELOG.md +13 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/PKG-INFO +1 -1
- {linq_python-0.13.0 → linq_python-0.14.0}/pyproject.toml +1 -1
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_version.py +1 -1
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/capability.py +2 -2
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/__init__.py +1 -1
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/capability_check_i_message_params.py +2 -2
- linq_python-0.14.0/src/linq/types/chats/sent_message.py +153 -0
- linq_python-0.14.0/src/linq/types/message.py +174 -0
- linq_python-0.14.0/src/linq/types/message_content_param.py +179 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_event_v2.py +80 -2
- {linq_python-0.13.0 → linq_python-0.14.0}/uv.lock +1 -1
- linq_python-0.13.0/.release-please-manifest.json +0 -3
- linq_python-0.13.0/CHANGELOG.md +0 -8
- linq_python-0.13.0/src/linq/types/chats/sent_message.py +0 -61
- linq_python-0.13.0/src/linq/types/message.py +0 -82
- linq_python-0.13.0/src/linq/types/message_content_param.py +0 -82
- {linq_python-0.13.0 → linq_python-0.14.0}/.gitignore +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/CONTRIBUTING.md +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/LICENSE +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/README.md +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/SECURITY.md +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/api.md +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/bin/check-release-environment +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/bin/publish-pypi +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/examples/.keep +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/release-please-config.json +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/requirements-dev.lock +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/__init__.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_base_client.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_client.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_compat.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_constants.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_exceptions.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_files.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_models.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_qs.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_resource.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_streaming.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_types.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/__init__.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_compat.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_datetime_parse.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_json.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_logs.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_path.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_proxy.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_reflection.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_resources_proxy.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_streams.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_sync.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_transform.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_typing.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/_utils/_utils.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/lib/.keep +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/pagination.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/py.typed +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/__init__.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/attachments.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/chats/__init__.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/chats/chats.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/chats/location.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/chats/messages.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/chats/participants.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/chats/typing.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/contact_card.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/messages.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/phone_numbers.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/phonenumbers.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/webhook_events.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/webhook_subscriptions.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/resources/webhooks.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/attachment_create_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/attachment_create_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/attachment_retrieve_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/capability_check_RCS_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_create_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_create_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_created_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_group_name_update_failed_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_leave_chat_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_list_chats_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_send_voicememo_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_send_voicememo_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_update_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chat_update_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chats/__init__.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chats/get_chat_location_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chats/location_request_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chats/message_list_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chats/message_send_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chats/message_send_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chats/participant_add_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chats/participant_add_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chats/participant_remove_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/chats/participant_remove_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/contact_card_create_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/contact_card_retrieve_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/contact_card_retrieve_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/contact_card_update_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/handle_check_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/link_part_param.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/media_part_param.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_add_reaction_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_add_reaction_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_delivered_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_edited_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_effect.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_effect_param.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_failed_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_list_messages_thread_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_read_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_received_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_sent_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/message_update_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/participant_added_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/participant_removed_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/phone_number_list_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/phone_number_status_updated_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/phonenumber_list_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/reaction_added_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/reaction_event_base.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/reaction_removed_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/reply_to.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/reply_to_param.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/schemas_media_part_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/schemas_message_effect.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/schemas_text_part_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/set_contact_card.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared/__init__.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared/chat_handle.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared/link_part_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared/media_part_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared/reaction.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared/reaction_type.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared/service_type.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared/text_decoration.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared/text_part_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared_params/__init__.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared_params/reaction_type.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared_params/service_type.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/shared_params/text_decoration.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/supported_content_type.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/text_part_param.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/unwrap_webhook_event.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/webhook_event_list_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/webhook_event_type.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/webhook_subscription.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/webhook_subscription_create_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/webhook_subscription_create_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/webhook_subscription_list_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/webhook_subscription_update_params.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/__init__.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/__init__.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/chats/__init__.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/chats/test_location.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/chats/test_messages.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/chats/test_participants.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/chats/test_typing.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/test_attachments.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/test_capability.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/test_chats.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/test_contact_card.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/test_messages.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/test_phone_numbers.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/test_phonenumbers.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/test_webhook_events.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/test_webhook_subscriptions.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/api_resources/test_webhooks.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/conftest.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/sample_file.txt +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_client.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_extract_files.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_files.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_models.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_qs.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_required_args.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_response.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_streaming.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_transform.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_utils/test_json.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_utils/test_path.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_utils/test_proxy.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/test_utils/test_typing.py +0 -0
- {linq_python-0.13.0 → linq_python-0.14.0}/tests/utils.py +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.14.0](https://github.com/linq-team/linq-python/compare/v0.13.0...v0.14.0) (2026-06-10)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* regenerate SDKs from updated API spec ([#29](https://github.com/linq-team/linq-python/issues/29)) ([dd7f2d7](https://github.com/linq-team/linq-python/commit/dd7f2d7e19e85fa9f61f6367f7e2a1cc942765bf))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **ci:** parse release PR number in shell, not fromJSON in env ([#26](https://github.com/linq-team/linq-python/issues/26)) ([a364403](https://github.com/linq-team/linq-python/commit/a364403289e482298f8b0d78e8e45de8fb87b79d))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: linq-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.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
|
|
@@ -82,7 +82,7 @@ class CapabilityResource(SyncAPIResource):
|
|
|
82
82
|
"address": address,
|
|
83
83
|
"from_": from_,
|
|
84
84
|
},
|
|
85
|
-
capability_check_i_message_params.
|
|
85
|
+
capability_check_i_message_params.CapabilityCheckIMessageParams,
|
|
86
86
|
),
|
|
87
87
|
options=make_request_options(
|
|
88
88
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
@@ -196,7 +196,7 @@ class AsyncCapabilityResource(AsyncAPIResource):
|
|
|
196
196
|
"address": address,
|
|
197
197
|
"from_": from_,
|
|
198
198
|
},
|
|
199
|
-
capability_check_i_message_params.
|
|
199
|
+
capability_check_i_message_params.CapabilityCheckIMessageParams,
|
|
200
200
|
),
|
|
201
201
|
options=make_request_options(
|
|
202
202
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
@@ -65,7 +65,7 @@ from .message_received_webhook_event import MessageReceivedWebhookEvent as Messa
|
|
|
65
65
|
from .reaction_removed_webhook_event import ReactionRemovedWebhookEvent as ReactionRemovedWebhookEvent
|
|
66
66
|
from .message_delivered_webhook_event import MessageDeliveredWebhookEvent as MessageDeliveredWebhookEvent
|
|
67
67
|
from .participant_added_webhook_event import ParticipantAddedWebhookEvent as ParticipantAddedWebhookEvent
|
|
68
|
-
from .capability_check_i_message_params import
|
|
68
|
+
from .capability_check_i_message_params import CapabilityCheckIMessageParams as CapabilityCheckIMessageParams
|
|
69
69
|
from .participant_removed_webhook_event import ParticipantRemovedWebhookEvent as ParticipantRemovedWebhookEvent
|
|
70
70
|
from .webhook_subscription_create_params import WebhookSubscriptionCreateParams as WebhookSubscriptionCreateParams
|
|
71
71
|
from .webhook_subscription_list_response import WebhookSubscriptionListResponse as WebhookSubscriptionListResponse
|
{linq_python-0.13.0 → linq_python-0.14.0}/src/linq/types/capability_check_i_message_params.py
RENAMED
|
@@ -6,10 +6,10 @@ from typing_extensions import Required, Annotated, TypedDict
|
|
|
6
6
|
|
|
7
7
|
from .._utils import PropertyInfo
|
|
8
8
|
|
|
9
|
-
__all__ = ["
|
|
9
|
+
__all__ = ["CapabilityCheckIMessageParams"]
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
class
|
|
12
|
+
class CapabilityCheckIMessageParams(TypedDict, total=False):
|
|
13
13
|
address: Required[str]
|
|
14
14
|
"""The recipient phone number or email address to check"""
|
|
15
15
|
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Union, Optional
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
from typing_extensions import Literal, TypeAlias
|
|
6
|
+
|
|
7
|
+
from ..._models import BaseModel
|
|
8
|
+
from ..reply_to import ReplyTo
|
|
9
|
+
from ..message_effect import MessageEffect
|
|
10
|
+
from ..shared.reaction import Reaction
|
|
11
|
+
from ..shared.chat_handle import ChatHandle
|
|
12
|
+
from ..shared.service_type import ServiceType
|
|
13
|
+
from ..shared.link_part_response import LinkPartResponse
|
|
14
|
+
from ..shared.text_part_response import TextPartResponse
|
|
15
|
+
from ..shared.media_part_response import MediaPartResponse
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
"SentMessage",
|
|
19
|
+
"Part",
|
|
20
|
+
"PartIMessageAppPartResponse",
|
|
21
|
+
"PartIMessageAppPartResponseApp",
|
|
22
|
+
"PartIMessageAppPartResponseLayout",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class PartIMessageAppPartResponseApp(BaseModel):
|
|
27
|
+
"""Identifies the iMessage app (Messages app extension) that backs the card."""
|
|
28
|
+
|
|
29
|
+
bundle_id: str
|
|
30
|
+
"""Bundle identifier of the Messages app extension. Must not contain `:`."""
|
|
31
|
+
|
|
32
|
+
name: str
|
|
33
|
+
"""Display name of the app, shown by Messages' fallback UI."""
|
|
34
|
+
|
|
35
|
+
team_id: str
|
|
36
|
+
"""The app's 10-character uppercase alphanumeric team identifier."""
|
|
37
|
+
|
|
38
|
+
app_store_id: Optional[int] = None
|
|
39
|
+
"""The owning app's App Store id (optional).
|
|
40
|
+
|
|
41
|
+
When set, recipients without the iMessage app installed see a "Get the app"
|
|
42
|
+
affordance.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class PartIMessageAppPartResponseLayout(BaseModel):
|
|
47
|
+
"""Visible layout of the card.
|
|
48
|
+
|
|
49
|
+
At least one of
|
|
50
|
+
`caption`, `subcaption`, `trailing_caption`, `trailing_subcaption`, or `image_url` must be
|
|
51
|
+
set, otherwise the card renders as an empty bubble.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
caption: Optional[str] = None
|
|
55
|
+
"""Primary label, top-left and bold."""
|
|
56
|
+
|
|
57
|
+
image_subtitle: Optional[str] = None
|
|
58
|
+
"""Overlay text shown below `image_title`. Requires `image_url`."""
|
|
59
|
+
|
|
60
|
+
image_title: Optional[str] = None
|
|
61
|
+
"""Overlay text shown above the image. Requires `image_url`."""
|
|
62
|
+
|
|
63
|
+
image_url: Optional[str] = None
|
|
64
|
+
"""Optional HTTPS URL of a preview image.
|
|
65
|
+
|
|
66
|
+
The server downloads it and embeds it in the card as JPEG (10MB max, same fetch
|
|
67
|
+
rules as media parts).
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
subcaption: Optional[str] = None
|
|
71
|
+
"""Secondary label, below `caption` on the left."""
|
|
72
|
+
|
|
73
|
+
trailing_caption: Optional[str] = None
|
|
74
|
+
"""Label shown top-right."""
|
|
75
|
+
|
|
76
|
+
trailing_subcaption: Optional[str] = None
|
|
77
|
+
"""Label shown below `trailing_caption`, on the right."""
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class PartIMessageAppPartResponse(BaseModel):
|
|
81
|
+
"""An iMessage app card part."""
|
|
82
|
+
|
|
83
|
+
app: PartIMessageAppPartResponseApp
|
|
84
|
+
"""Identifies the iMessage app (Messages app extension) that backs the card."""
|
|
85
|
+
|
|
86
|
+
layout: PartIMessageAppPartResponseLayout
|
|
87
|
+
"""Visible layout of the card.
|
|
88
|
+
|
|
89
|
+
At least one of `caption`, `subcaption`, `trailing_caption`,
|
|
90
|
+
`trailing_subcaption`, or `image_url` must be set, otherwise the card renders as
|
|
91
|
+
an empty bubble.
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
reactions: Optional[List[Reaction]] = None
|
|
95
|
+
"""Reactions on this message part"""
|
|
96
|
+
|
|
97
|
+
type: Literal["imessage_app"]
|
|
98
|
+
"""Indicates this is an iMessage app card part."""
|
|
99
|
+
|
|
100
|
+
url: str
|
|
101
|
+
"""The URL delivered to the iMessage app on tap."""
|
|
102
|
+
|
|
103
|
+
fallback_text: Optional[str] = None
|
|
104
|
+
"""Fallback text for surfaces that cannot render the card."""
|
|
105
|
+
|
|
106
|
+
session_id: Optional[str] = None
|
|
107
|
+
"""Client-supplied session identifier, echoed back when provided."""
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
Part: TypeAlias = Union[TextPartResponse, MediaPartResponse, LinkPartResponse, PartIMessageAppPartResponse]
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class SentMessage(BaseModel):
|
|
114
|
+
"""A message that was sent (used in CreateChat and SendMessage responses)"""
|
|
115
|
+
|
|
116
|
+
id: str
|
|
117
|
+
"""Message identifier (UUID)"""
|
|
118
|
+
|
|
119
|
+
created_at: datetime
|
|
120
|
+
"""When the message was created"""
|
|
121
|
+
|
|
122
|
+
delivery_status: Literal["pending", "queued", "sent", "delivered", "received", "read", "failed"]
|
|
123
|
+
"""Current delivery status of a message"""
|
|
124
|
+
|
|
125
|
+
is_read: bool
|
|
126
|
+
"""DEPRECATED: Use `delivery_status == "read"` instead.
|
|
127
|
+
|
|
128
|
+
Whether the message has been read.
|
|
129
|
+
"""
|
|
130
|
+
|
|
131
|
+
parts: List[Part]
|
|
132
|
+
"""Message parts in order (text, media, and link)"""
|
|
133
|
+
|
|
134
|
+
sent_at: Optional[datetime] = None
|
|
135
|
+
"""When the message was actually sent (null if still queued)"""
|
|
136
|
+
|
|
137
|
+
delivered_at: Optional[datetime] = None
|
|
138
|
+
"""When the message was delivered"""
|
|
139
|
+
|
|
140
|
+
effect: Optional[MessageEffect] = None
|
|
141
|
+
"""iMessage effect applied to a message (screen or bubble effect)"""
|
|
142
|
+
|
|
143
|
+
from_handle: Optional[ChatHandle] = None
|
|
144
|
+
"""The sender of this message as a full handle object"""
|
|
145
|
+
|
|
146
|
+
preferred_service: Optional[ServiceType] = None
|
|
147
|
+
"""Messaging service type"""
|
|
148
|
+
|
|
149
|
+
reply_to: Optional[ReplyTo] = None
|
|
150
|
+
"""Indicates this message is a threaded reply to another message"""
|
|
151
|
+
|
|
152
|
+
service: Optional[ServiceType] = None
|
|
153
|
+
"""Messaging service type"""
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from typing import List, Union, Optional
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
from typing_extensions import Literal, TypeAlias
|
|
6
|
+
|
|
7
|
+
from pydantic import Field as FieldInfo
|
|
8
|
+
|
|
9
|
+
from .._models import BaseModel
|
|
10
|
+
from .reply_to import ReplyTo
|
|
11
|
+
from .message_effect import MessageEffect
|
|
12
|
+
from .shared.reaction import Reaction
|
|
13
|
+
from .shared.chat_handle import ChatHandle
|
|
14
|
+
from .shared.service_type import ServiceType
|
|
15
|
+
from .shared.link_part_response import LinkPartResponse
|
|
16
|
+
from .shared.text_part_response import TextPartResponse
|
|
17
|
+
from .shared.media_part_response import MediaPartResponse
|
|
18
|
+
|
|
19
|
+
__all__ = [
|
|
20
|
+
"Message",
|
|
21
|
+
"Part",
|
|
22
|
+
"PartIMessageAppPartResponse",
|
|
23
|
+
"PartIMessageAppPartResponseApp",
|
|
24
|
+
"PartIMessageAppPartResponseLayout",
|
|
25
|
+
]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class PartIMessageAppPartResponseApp(BaseModel):
|
|
29
|
+
"""Identifies the iMessage app (Messages app extension) that backs the card."""
|
|
30
|
+
|
|
31
|
+
bundle_id: str
|
|
32
|
+
"""Bundle identifier of the Messages app extension. Must not contain `:`."""
|
|
33
|
+
|
|
34
|
+
name: str
|
|
35
|
+
"""Display name of the app, shown by Messages' fallback UI."""
|
|
36
|
+
|
|
37
|
+
team_id: str
|
|
38
|
+
"""The app's 10-character uppercase alphanumeric team identifier."""
|
|
39
|
+
|
|
40
|
+
app_store_id: Optional[int] = None
|
|
41
|
+
"""The owning app's App Store id (optional).
|
|
42
|
+
|
|
43
|
+
When set, recipients without the iMessage app installed see a "Get the app"
|
|
44
|
+
affordance.
|
|
45
|
+
"""
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class PartIMessageAppPartResponseLayout(BaseModel):
|
|
49
|
+
"""Visible layout of the card.
|
|
50
|
+
|
|
51
|
+
At least one of
|
|
52
|
+
`caption`, `subcaption`, `trailing_caption`, `trailing_subcaption`, or `image_url` must be
|
|
53
|
+
set, otherwise the card renders as an empty bubble.
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
caption: Optional[str] = None
|
|
57
|
+
"""Primary label, top-left and bold."""
|
|
58
|
+
|
|
59
|
+
image_subtitle: Optional[str] = None
|
|
60
|
+
"""Overlay text shown below `image_title`. Requires `image_url`."""
|
|
61
|
+
|
|
62
|
+
image_title: Optional[str] = None
|
|
63
|
+
"""Overlay text shown above the image. Requires `image_url`."""
|
|
64
|
+
|
|
65
|
+
image_url: Optional[str] = None
|
|
66
|
+
"""Optional HTTPS URL of a preview image.
|
|
67
|
+
|
|
68
|
+
The server downloads it and embeds it in the card as JPEG (10MB max, same fetch
|
|
69
|
+
rules as media parts).
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
subcaption: Optional[str] = None
|
|
73
|
+
"""Secondary label, below `caption` on the left."""
|
|
74
|
+
|
|
75
|
+
trailing_caption: Optional[str] = None
|
|
76
|
+
"""Label shown top-right."""
|
|
77
|
+
|
|
78
|
+
trailing_subcaption: Optional[str] = None
|
|
79
|
+
"""Label shown below `trailing_caption`, on the right."""
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class PartIMessageAppPartResponse(BaseModel):
|
|
83
|
+
"""An iMessage app card part."""
|
|
84
|
+
|
|
85
|
+
app: PartIMessageAppPartResponseApp
|
|
86
|
+
"""Identifies the iMessage app (Messages app extension) that backs the card."""
|
|
87
|
+
|
|
88
|
+
layout: PartIMessageAppPartResponseLayout
|
|
89
|
+
"""Visible layout of the card.
|
|
90
|
+
|
|
91
|
+
At least one of `caption`, `subcaption`, `trailing_caption`,
|
|
92
|
+
`trailing_subcaption`, or `image_url` must be set, otherwise the card renders as
|
|
93
|
+
an empty bubble.
|
|
94
|
+
"""
|
|
95
|
+
|
|
96
|
+
reactions: Optional[List[Reaction]] = None
|
|
97
|
+
"""Reactions on this message part"""
|
|
98
|
+
|
|
99
|
+
type: Literal["imessage_app"]
|
|
100
|
+
"""Indicates this is an iMessage app card part."""
|
|
101
|
+
|
|
102
|
+
url: str
|
|
103
|
+
"""The URL delivered to the iMessage app on tap."""
|
|
104
|
+
|
|
105
|
+
fallback_text: Optional[str] = None
|
|
106
|
+
"""Fallback text for surfaces that cannot render the card."""
|
|
107
|
+
|
|
108
|
+
session_id: Optional[str] = None
|
|
109
|
+
"""Client-supplied session identifier, echoed back when provided."""
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
Part: TypeAlias = Union[TextPartResponse, MediaPartResponse, LinkPartResponse, PartIMessageAppPartResponse]
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class Message(BaseModel):
|
|
116
|
+
id: str
|
|
117
|
+
"""Unique identifier for the message"""
|
|
118
|
+
|
|
119
|
+
chat_id: str
|
|
120
|
+
"""ID of the chat this message belongs to"""
|
|
121
|
+
|
|
122
|
+
created_at: datetime
|
|
123
|
+
"""When the message was created"""
|
|
124
|
+
|
|
125
|
+
delivery_status: Literal["pending", "queued", "sent", "delivered", "received", "read", "failed"]
|
|
126
|
+
"""Current delivery status of a message"""
|
|
127
|
+
|
|
128
|
+
is_delivered: bool
|
|
129
|
+
"""
|
|
130
|
+
DEPRECATED: Use `delivery_status` instead (true when `delivery_status` is
|
|
131
|
+
`delivered` or `read`). Whether the message has been delivered.
|
|
132
|
+
"""
|
|
133
|
+
|
|
134
|
+
is_from_me: bool
|
|
135
|
+
"""Whether this message was sent by the authenticated user"""
|
|
136
|
+
|
|
137
|
+
is_read: bool
|
|
138
|
+
"""DEPRECATED: Use `delivery_status == "read"` instead.
|
|
139
|
+
|
|
140
|
+
Whether the message has been read.
|
|
141
|
+
"""
|
|
142
|
+
|
|
143
|
+
updated_at: datetime
|
|
144
|
+
"""When the message was last updated"""
|
|
145
|
+
|
|
146
|
+
delivered_at: Optional[datetime] = None
|
|
147
|
+
"""When the message was delivered"""
|
|
148
|
+
|
|
149
|
+
effect: Optional[MessageEffect] = None
|
|
150
|
+
"""iMessage effect applied to a message (screen or bubble effect)"""
|
|
151
|
+
|
|
152
|
+
from_: Optional[str] = FieldInfo(alias="from", default=None)
|
|
153
|
+
"""DEPRECATED: Use from_handle instead. Phone number of the message sender."""
|
|
154
|
+
|
|
155
|
+
from_handle: Optional[ChatHandle] = None
|
|
156
|
+
"""The sender of this message as a full handle object"""
|
|
157
|
+
|
|
158
|
+
parts: Optional[List[Part]] = None
|
|
159
|
+
"""Message parts in order (text, media, and link)"""
|
|
160
|
+
|
|
161
|
+
preferred_service: Optional[ServiceType] = None
|
|
162
|
+
"""Messaging service type"""
|
|
163
|
+
|
|
164
|
+
read_at: Optional[datetime] = None
|
|
165
|
+
"""When the message was read"""
|
|
166
|
+
|
|
167
|
+
reply_to: Optional[ReplyTo] = None
|
|
168
|
+
"""Indicates this message is a threaded reply to another message"""
|
|
169
|
+
|
|
170
|
+
sent_at: Optional[datetime] = None
|
|
171
|
+
"""When the message was sent"""
|
|
172
|
+
|
|
173
|
+
service: Optional[ServiceType] = None
|
|
174
|
+
"""Messaging service type"""
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Union, Iterable
|
|
6
|
+
from typing_extensions import Literal, Required, TypeAlias, TypedDict
|
|
7
|
+
|
|
8
|
+
from .reply_to_param import ReplyToParam
|
|
9
|
+
from .link_part_param import LinkPartParam
|
|
10
|
+
from .text_part_param import TextPartParam
|
|
11
|
+
from .media_part_param import MediaPartParam
|
|
12
|
+
from .shared.service_type import ServiceType
|
|
13
|
+
from .message_effect_param import MessageEffectParam
|
|
14
|
+
|
|
15
|
+
__all__ = ["MessageContentParam", "Part", "PartIMessageAppPart", "PartIMessageAppPartApp", "PartIMessageAppPartLayout"]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class PartIMessageAppPartApp(TypedDict, total=False):
|
|
19
|
+
"""Identifies the iMessage app (Messages app extension) that backs the card."""
|
|
20
|
+
|
|
21
|
+
bundle_id: Required[str]
|
|
22
|
+
"""Bundle identifier of the Messages app extension. Must not contain `:`."""
|
|
23
|
+
|
|
24
|
+
name: Required[str]
|
|
25
|
+
"""Display name of the app, shown by Messages' fallback UI."""
|
|
26
|
+
|
|
27
|
+
team_id: Required[str]
|
|
28
|
+
"""The app's 10-character uppercase alphanumeric team identifier."""
|
|
29
|
+
|
|
30
|
+
app_store_id: int
|
|
31
|
+
"""The owning app's App Store id (optional).
|
|
32
|
+
|
|
33
|
+
When set, recipients without the iMessage app installed see a "Get the app"
|
|
34
|
+
affordance.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class PartIMessageAppPartLayout(TypedDict, total=False):
|
|
39
|
+
"""Visible layout of the card.
|
|
40
|
+
|
|
41
|
+
At least one of
|
|
42
|
+
`caption`, `subcaption`, `trailing_caption`, `trailing_subcaption`, or `image_url` must be
|
|
43
|
+
set, otherwise the card renders as an empty bubble.
|
|
44
|
+
"""
|
|
45
|
+
|
|
46
|
+
caption: str
|
|
47
|
+
"""Primary label, top-left and bold."""
|
|
48
|
+
|
|
49
|
+
image_subtitle: str
|
|
50
|
+
"""Overlay text shown below `image_title`. Requires `image_url`."""
|
|
51
|
+
|
|
52
|
+
image_title: str
|
|
53
|
+
"""Overlay text shown above the image. Requires `image_url`."""
|
|
54
|
+
|
|
55
|
+
image_url: str
|
|
56
|
+
"""Optional HTTPS URL of a preview image.
|
|
57
|
+
|
|
58
|
+
The server downloads it and embeds it in the card as JPEG (10MB max, same fetch
|
|
59
|
+
rules as media parts).
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
subcaption: str
|
|
63
|
+
"""Secondary label, below `caption` on the left."""
|
|
64
|
+
|
|
65
|
+
trailing_caption: str
|
|
66
|
+
"""Label shown top-right."""
|
|
67
|
+
|
|
68
|
+
trailing_subcaption: str
|
|
69
|
+
"""Label shown below `trailing_caption`, on the right."""
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class PartIMessageAppPart(TypedDict, total=False):
|
|
73
|
+
"""An iMessage app card, backed by a Messages app extension.
|
|
74
|
+
|
|
75
|
+
iMessage only —
|
|
76
|
+
an `imessage_app` part must be the **only** part in the message and is never delivered over
|
|
77
|
+
SMS/RCS. See the IMessageAppServiceUnsupported (2018) and RecipientUnsupportedMessageType
|
|
78
|
+
(4005) error codes.
|
|
79
|
+
"""
|
|
80
|
+
|
|
81
|
+
app: Required[PartIMessageAppPartApp]
|
|
82
|
+
"""Identifies the iMessage app (Messages app extension) that backs the card."""
|
|
83
|
+
|
|
84
|
+
layout: Required[PartIMessageAppPartLayout]
|
|
85
|
+
"""Visible layout of the card.
|
|
86
|
+
|
|
87
|
+
At least one of `caption`, `subcaption`, `trailing_caption`,
|
|
88
|
+
`trailing_subcaption`, or `image_url` must be set, otherwise the card renders as
|
|
89
|
+
an empty bubble.
|
|
90
|
+
"""
|
|
91
|
+
|
|
92
|
+
type: Required[Literal["imessage_app"]]
|
|
93
|
+
"""Indicates this is an iMessage app card part."""
|
|
94
|
+
|
|
95
|
+
url: Required[str]
|
|
96
|
+
"""
|
|
97
|
+
Absolute HTTPS URL delivered to the recipient's installed iMessage app when they
|
|
98
|
+
tap the card. Opaque to Messages.
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
fallback_text: str
|
|
102
|
+
"""Text shown on surfaces that cannot render the card (notifications, lock screen).
|
|
103
|
+
|
|
104
|
+
Defaults to the caption when omitted.
|
|
105
|
+
"""
|
|
106
|
+
|
|
107
|
+
session_id: str
|
|
108
|
+
"""
|
|
109
|
+
Optional client-supplied identifier to correlate updatable/collaborative app
|
|
110
|
+
sessions (advanced). Not interpreted by Synapse.
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
Part: TypeAlias = Union[TextPartParam, MediaPartParam, LinkPartParam, PartIMessageAppPart]
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
class MessageContentParam(TypedDict, total=False):
|
|
118
|
+
"""Message content container.
|
|
119
|
+
|
|
120
|
+
Groups all message-related fields together,
|
|
121
|
+
separating the "what" (message content) from the "where" (routing fields like from/to).
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
parts: Required[Iterable[Part]]
|
|
125
|
+
"""Array of message parts.
|
|
126
|
+
|
|
127
|
+
Each part can be text, media, or link. Parts are displayed in order. Text and
|
|
128
|
+
media can be mixed freely, but a `link` part must be the only part in the
|
|
129
|
+
message.
|
|
130
|
+
|
|
131
|
+
**Rich Link Previews:**
|
|
132
|
+
|
|
133
|
+
- Use a `link` part to send a URL with a rich preview card
|
|
134
|
+
- A `link` part must be the **only** part in the message
|
|
135
|
+
- To send a URL as plain text (no preview), use a `text` part instead
|
|
136
|
+
|
|
137
|
+
**Supported Media:**
|
|
138
|
+
|
|
139
|
+
- Images: .jpg, .jpeg, .png, .gif, .heic, .heif, .tif, .tiff, .bmp
|
|
140
|
+
- Videos: .mp4, .mov, .m4v, .mpeg, .mpg, .3gp
|
|
141
|
+
- Audio: .m4a, .mp3, .aac, .caf, .wav, .aiff, .amr
|
|
142
|
+
- Documents: .pdf, .txt, .rtf, .csv, .doc, .docx, .xls, .xlsx, .ppt, .pptx,
|
|
143
|
+
.pages, .numbers, .key, .epub, .zip, .html, .htm
|
|
144
|
+
- Contact & Calendar: .vcf, .ics
|
|
145
|
+
|
|
146
|
+
**Audio:**
|
|
147
|
+
|
|
148
|
+
- Audio files (.m4a, .mp3, .aac, .caf, .wav, .aiff, .amr) are fully supported as
|
|
149
|
+
media parts
|
|
150
|
+
- To send audio as an **iMessage voice memo bubble** (inline playback UI), use
|
|
151
|
+
the dedicated `/v3/chats/{chatId}/voicememo` endpoint instead
|
|
152
|
+
|
|
153
|
+
**Validation Rules:**
|
|
154
|
+
|
|
155
|
+
- A `link` part must be the **only** part in the message. It cannot be combined
|
|
156
|
+
with text or media parts.
|
|
157
|
+
- Consecutive text parts are not allowed. Text parts must be separated by media
|
|
158
|
+
parts. For example, [text, text] is invalid, but [text, media, text] is valid.
|
|
159
|
+
- Maximum of **100 parts** total.
|
|
160
|
+
- Media parts using a public `url` (downloaded by the server on send) are capped
|
|
161
|
+
at **40**. Parts using `attachment_id` or presigned URLs are exempt from this
|
|
162
|
+
sub-limit. For bulk media sends exceeding 40 files, pre-upload via
|
|
163
|
+
`POST /v3/attachments` and reference by `attachment_id` or `download_url`.
|
|
164
|
+
"""
|
|
165
|
+
|
|
166
|
+
effect: MessageEffectParam
|
|
167
|
+
"""iMessage effect to apply to this message (screen or bubble effect)"""
|
|
168
|
+
|
|
169
|
+
idempotency_key: str
|
|
170
|
+
"""
|
|
171
|
+
Optional idempotency key for this message. Use this to prevent duplicate sends
|
|
172
|
+
of the same message.
|
|
173
|
+
"""
|
|
174
|
+
|
|
175
|
+
preferred_service: ServiceType
|
|
176
|
+
"""Messaging service type"""
|
|
177
|
+
|
|
178
|
+
reply_to: ReplyToParam
|
|
179
|
+
"""Reply to another message to create a threaded conversation"""
|