linq-python 0.35.0__tar.gz → 0.36.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. linq_python-0.36.0/.release-please-manifest.json +3 -0
  2. {linq_python-0.35.0 → linq_python-0.36.0}/CHANGELOG.md +14 -0
  3. {linq_python-0.35.0 → linq_python-0.36.0}/PKG-INFO +1 -1
  4. {linq_python-0.35.0 → linq_python-0.36.0}/pyproject.toml +1 -1
  5. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_version.py +1 -1
  6. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/phone_numbers.py +18 -8
  7. linq_python-0.36.0/src/linq/types/schemas_text_part_response.py +76 -0
  8. linq_python-0.36.0/src/linq/types/shared/text_part_response.py +80 -0
  9. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/text_part_param.py +1 -1
  10. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_webhooks.py +2 -2
  11. {linq_python-0.35.0 → linq_python-0.36.0}/uv.lock +1 -1
  12. linq_python-0.35.0/.release-please-manifest.json +0 -3
  13. linq_python-0.35.0/src/linq/types/schemas_text_part_response.py +0 -36
  14. linq_python-0.35.0/src/linq/types/shared/text_part_response.py +0 -40
  15. {linq_python-0.35.0 → linq_python-0.36.0}/.gitignore +0 -0
  16. {linq_python-0.35.0 → linq_python-0.36.0}/CONTRIBUTING.md +0 -0
  17. {linq_python-0.35.0 → linq_python-0.36.0}/LICENSE +0 -0
  18. {linq_python-0.35.0 → linq_python-0.36.0}/README.md +0 -0
  19. {linq_python-0.35.0 → linq_python-0.36.0}/SECURITY.md +0 -0
  20. {linq_python-0.35.0 → linq_python-0.36.0}/api.md +0 -0
  21. {linq_python-0.35.0 → linq_python-0.36.0}/bin/check-release-environment +0 -0
  22. {linq_python-0.35.0 → linq_python-0.36.0}/bin/publish-pypi +0 -0
  23. {linq_python-0.35.0 → linq_python-0.36.0}/examples/.keep +0 -0
  24. {linq_python-0.35.0 → linq_python-0.36.0}/release-please-config.json +0 -0
  25. {linq_python-0.35.0 → linq_python-0.36.0}/requirements-dev.lock +0 -0
  26. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/__init__.py +0 -0
  27. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_base_client.py +0 -0
  28. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_client.py +0 -0
  29. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_compat.py +0 -0
  30. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_constants.py +0 -0
  31. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_exceptions.py +0 -0
  32. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_files.py +0 -0
  33. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_models.py +0 -0
  34. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_qs.py +0 -0
  35. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_resource.py +0 -0
  36. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_response.py +0 -0
  37. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_streaming.py +0 -0
  38. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_types.py +0 -0
  39. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/__init__.py +0 -0
  40. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_compat.py +0 -0
  41. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_datetime_parse.py +0 -0
  42. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_json.py +0 -0
  43. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_logs.py +0 -0
  44. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_path.py +0 -0
  45. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_proxy.py +0 -0
  46. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_reflection.py +0 -0
  47. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_resources_proxy.py +0 -0
  48. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_streams.py +0 -0
  49. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_sync.py +0 -0
  50. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_transform.py +0 -0
  51. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_typing.py +0 -0
  52. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/_utils/_utils.py +0 -0
  53. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/lib/.keep +0 -0
  54. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/pagination.py +0 -0
  55. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/py.typed +0 -0
  56. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/__init__.py +0 -0
  57. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/attachments.py +0 -0
  58. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/available_number.py +0 -0
  59. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/blocked_handles.py +0 -0
  60. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/capability.py +0 -0
  61. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/__init__.py +0 -0
  62. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/background.py +0 -0
  63. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/chats.py +0 -0
  64. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/location.py +0 -0
  65. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/messages.py +0 -0
  66. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/participants.py +0 -0
  67. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/polls.py +0 -0
  68. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/chats/typing.py +0 -0
  69. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/contact_card.py +0 -0
  70. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/experiences.py +0 -0
  71. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/messages/__init__.py +0 -0
  72. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/messages/messages.py +0 -0
  73. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/messages/poll.py +0 -0
  74. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/payment_handles.py +0 -0
  75. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/payment_providers.py +0 -0
  76. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/payment_requests.py +0 -0
  77. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/payments.py +0 -0
  78. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/phonenumbers.py +0 -0
  79. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/webhook_events.py +0 -0
  80. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/webhook_subscriptions.py +0 -0
  81. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/resources/webhooks.py +0 -0
  82. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/__init__.py +0 -0
  83. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/attachment_create_params.py +0 -0
  84. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/attachment_create_response.py +0 -0
  85. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/attachment_retrieve_response.py +0 -0
  86. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/available_number_retrieve_params.py +0 -0
  87. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/available_number_retrieve_response.py +0 -0
  88. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/blocked_handle_block_params.py +0 -0
  89. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/blocked_handle_block_response.py +0 -0
  90. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/blocked_handle_entry.py +0 -0
  91. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/blocked_handle_list_response.py +0 -0
  92. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/blocked_handle_unblock_params.py +0 -0
  93. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/capability_check_RCS_params.py +0 -0
  94. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/capability_check_i_message_params.py +0 -0
  95. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat.py +0 -0
  96. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_background_update_failed_webhook_event.py +0 -0
  97. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_background_updated_webhook_event.py +0 -0
  98. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_create_params.py +0 -0
  99. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_create_response.py +0 -0
  100. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_created_webhook_event.py +0 -0
  101. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +0 -0
  102. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
  103. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_group_name_update_failed_webhook_event.py +0 -0
  104. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
  105. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_leave_chat_response.py +0 -0
  106. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_list_chats_params.py +0 -0
  107. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_send_voicememo_params.py +0 -0
  108. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_send_voicememo_response.py +0 -0
  109. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
  110. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
  111. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_update_params.py +0 -0
  112. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chat_update_response.py +0 -0
  113. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/__init__.py +0 -0
  114. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/background_set_params.py +0 -0
  115. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/get_chat_location_response.py +0 -0
  116. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/location_request_response.py +0 -0
  117. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/message_list_params.py +0 -0
  118. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/message_send_params.py +0 -0
  119. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/message_send_response.py +0 -0
  120. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/participant_add_params.py +0 -0
  121. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/participant_add_response.py +0 -0
  122. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/participant_remove_params.py +0 -0
  123. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/participant_remove_response.py +0 -0
  124. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/poll.py +0 -0
  125. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/poll_create_params.py +0 -0
  126. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/poll_envelope.py +0 -0
  127. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/chats/sent_message.py +0 -0
  128. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/contact_card_create_params.py +0 -0
  129. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/contact_card_retrieve_params.py +0 -0
  130. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/contact_card_retrieve_response.py +0 -0
  131. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/contact_card_update_params.py +0 -0
  132. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/experience_list_response.py +0 -0
  133. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/experience_retrieve_response.py +0 -0
  134. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/handle_check_response.py +0 -0
  135. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/link_part_param.py +0 -0
  136. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/media_part_param.py +0 -0
  137. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message.py +0 -0
  138. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_add_reaction_params.py +0 -0
  139. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_add_reaction_response.py +0 -0
  140. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_content_param.py +0 -0
  141. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_create_params.py +0 -0
  142. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_create_response.py +0 -0
  143. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_delivered_webhook_event.py +0 -0
  144. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_edited_webhook_event.py +0 -0
  145. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_effect.py +0 -0
  146. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_effect_param.py +0 -0
  147. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_event_v2.py +0 -0
  148. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_failed_webhook_event.py +0 -0
  149. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_list_messages_thread_params.py +0 -0
  150. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_read_webhook_event.py +0 -0
  151. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_received_webhook_event.py +0 -0
  152. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_sent_webhook_event.py +0 -0
  153. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_update_app_card_params.py +0 -0
  154. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_update_app_card_response.py +0 -0
  155. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/message_update_params.py +0 -0
  156. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/messages/__init__.py +0 -0
  157. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/messages/poll_add_options_params.py +0 -0
  158. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/messages/poll_vote_params.py +0 -0
  159. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/participant_added_webhook_event.py +0 -0
  160. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/participant_removed_webhook_event.py +0 -0
  161. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment.py +0 -0
  162. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_create_params.py +0 -0
  163. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_credentials_response.py +0 -0
  164. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_handle_connection.py +0 -0
  165. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_handle_verify_params.py +0 -0
  166. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_provider.py +0 -0
  167. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_provider_connect_params.py +0 -0
  168. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_provider_connect_response.py +0 -0
  169. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_request.py +0 -0
  170. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_request_create_params.py +0 -0
  171. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_request_list_params.py +0 -0
  172. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/payment_request_list_response.py +0 -0
  173. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/phone_number_list_response.py +0 -0
  174. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/phone_number_status_updated_webhook_event.py +0 -0
  175. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/phone_number_update_params.py +0 -0
  176. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/phone_number_update_response.py +0 -0
  177. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/phonenumber_list_response.py +0 -0
  178. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_delivered_webhook_event.py +0 -0
  179. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_failed_webhook_event.py +0 -0
  180. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_reaction_added_webhook_event.py +0 -0
  181. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_read_webhook_event.py +0 -0
  182. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_received_webhook_event.py +0 -0
  183. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_sent_webhook_event.py +0 -0
  184. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_updated_webhook_event.py +0 -0
  185. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_vote_added_webhook_event.py +0 -0
  186. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/poll_vote_removed_webhook_event.py +0 -0
  187. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reaction_added_webhook_event.py +0 -0
  188. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reaction_event_base.py +0 -0
  189. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reaction_removed_webhook_event.py +0 -0
  190. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reply_to.py +0 -0
  191. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reply_to_param.py +0 -0
  192. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_action_item.py +0 -0
  193. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_audit.py +0 -0
  194. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_audit_started.py +0 -0
  195. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_driver.py +0 -0
  196. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_driver_key.py +0 -0
  197. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_evidence.py +0 -0
  198. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_opt_out_chat.py +0 -0
  199. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_report.py +0 -0
  200. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/reputation_unhealthy_chat.py +0 -0
  201. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/schemas_media_part_response.py +0 -0
  202. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/schemas_message_effect.py +0 -0
  203. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/set_contact_card.py +0 -0
  204. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/__init__.py +0 -0
  205. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/chat_handle.py +0 -0
  206. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/link_part_response.py +0 -0
  207. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/media_part_response.py +0 -0
  208. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/reaction.py +0 -0
  209. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/reaction_type.py +0 -0
  210. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/service_type.py +0 -0
  211. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared/text_decoration.py +0 -0
  212. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared_params/__init__.py +0 -0
  213. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared_params/reaction_type.py +0 -0
  214. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared_params/service_type.py +0 -0
  215. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/shared_params/text_decoration.py +0 -0
  216. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/supported_content_type.py +0 -0
  217. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/unwrap_webhook_event.py +0 -0
  218. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_event_list_response.py +0 -0
  219. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_event_type.py +0 -0
  220. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_subscription.py +0 -0
  221. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_subscription_create_params.py +0 -0
  222. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_subscription_create_response.py +0 -0
  223. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_subscription_list_response.py +0 -0
  224. {linq_python-0.35.0 → linq_python-0.36.0}/src/linq/types/webhook_subscription_update_params.py +0 -0
  225. {linq_python-0.35.0 → linq_python-0.36.0}/tests/__init__.py +0 -0
  226. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/__init__.py +0 -0
  227. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/__init__.py +0 -0
  228. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_background.py +0 -0
  229. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_location.py +0 -0
  230. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_messages.py +0 -0
  231. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_participants.py +0 -0
  232. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_polls.py +0 -0
  233. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/chats/test_typing.py +0 -0
  234. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/messages/__init__.py +0 -0
  235. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/messages/test_poll.py +0 -0
  236. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_attachments.py +0 -0
  237. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_available_number.py +0 -0
  238. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_blocked_handles.py +0 -0
  239. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_capability.py +0 -0
  240. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_chats.py +0 -0
  241. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_contact_card.py +0 -0
  242. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_experiences.py +0 -0
  243. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_messages.py +0 -0
  244. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_payment_handles.py +0 -0
  245. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_payment_providers.py +0 -0
  246. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_payment_requests.py +0 -0
  247. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_payments.py +0 -0
  248. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_phone_numbers.py +0 -0
  249. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_phonenumbers.py +0 -0
  250. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_webhook_events.py +0 -0
  251. {linq_python-0.35.0 → linq_python-0.36.0}/tests/api_resources/test_webhook_subscriptions.py +0 -0
  252. {linq_python-0.35.0 → linq_python-0.36.0}/tests/conftest.py +0 -0
  253. {linq_python-0.35.0 → linq_python-0.36.0}/tests/sample_file.txt +0 -0
  254. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_client.py +0 -0
  255. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_extract_files.py +0 -0
  256. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_files.py +0 -0
  257. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_models.py +0 -0
  258. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_qs.py +0 -0
  259. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_required_args.py +0 -0
  260. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_response.py +0 -0
  261. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_streaming.py +0 -0
  262. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_transform.py +0 -0
  263. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_utils/test_datetime_parse.py +0 -0
  264. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_utils/test_json.py +0 -0
  265. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_utils/test_path.py +0 -0
  266. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_utils/test_proxy.py +0 -0
  267. {linq_python-0.35.0 → linq_python-0.36.0}/tests/test_utils/test_typing.py +0 -0
  268. {linq_python-0.35.0 → linq_python-0.36.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.36.0"
3
+ }
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.36.0](https://github.com/linq-team/linq-python/compare/v0.35.1...v0.36.0) (2026-08-28)
4
+
5
+
6
+ ### Features
7
+
8
+ * support multiple mentions per message part ([49030ee](https://github.com/linq-team/linq-python/commit/49030ee5414481cca4606b9511aa87177ed83ddf))
9
+
10
+ ## [0.35.1](https://github.com/linq-team/linq-python/compare/v0.35.0...v0.35.1) (2026-08-27)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * clarify reputation audit rate limiting and response behavior ([94c274c](https://github.com/linq-team/linq-python/commit/94c274c3b6e85cb8d313397682e0bf065fd5a0d7))
16
+
3
17
  ## [0.35.0](https://github.com/linq-team/linq-python/compare/v0.34.0...v0.35.0) (2026-08-27)
4
18
 
5
19
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: linq-python
3
- Version: 0.35.0
3
+ Version: 0.36.0
4
4
  Summary: The official Python library for the linq-api-v3 API
5
5
  Project-URL: Homepage, https://github.com/linq-team/linq-python
6
6
  Project-URL: Repository, https://github.com/linq-team/linq-python
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "linq-python"
3
- version = "0.35.0"
3
+ version = "0.36.0"
4
4
  description = "The official Python library for the linq-api-v3 API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "linq"
4
- __version__ = "0.35.0" # x-release-please-version
4
+ __version__ = "0.36.0" # x-release-please-version
@@ -188,10 +188,15 @@ class PhoneNumbersResource(SyncAPIResource):
188
188
  Starts an asynchronous reputation audit for a line and returns an `audit_id`.
189
189
  Poll the GET endpoint for the result.
190
190
 
191
- Rate limited per line: only one audit may run at a time (a second request
192
- returns `409` while the first is still in progress), and a new audit can't be
193
- started for the same line until a cooldown elapses (`429`, with `Retry-After`
194
- carrying the wait).
191
+ Rate limited per line: only one audit may run at a time. Starting one while
192
+ another is still running returns `202` with the running audit's `audit_id`
193
+ rather than an error, so a retried start picks that audit back up instead of
194
+ losing it — poll the id you were given.
195
+
196
+ Once an audit finishes, a new one can't be started for the same line until a
197
+ cooldown elapses (`429`, with `Retry-After` carrying the wait). Keep the
198
+ `audit_id` from the original `202`: it stays readable on the GET endpoint for 24
199
+ hours, and the cooldown response does not repeat it.
195
200
 
196
201
  Args:
197
202
  extra_headers: Send extra headers
@@ -375,10 +380,15 @@ class AsyncPhoneNumbersResource(AsyncAPIResource):
375
380
  Starts an asynchronous reputation audit for a line and returns an `audit_id`.
376
381
  Poll the GET endpoint for the result.
377
382
 
378
- Rate limited per line: only one audit may run at a time (a second request
379
- returns `409` while the first is still in progress), and a new audit can't be
380
- started for the same line until a cooldown elapses (`429`, with `Retry-After`
381
- carrying the wait).
383
+ Rate limited per line: only one audit may run at a time. Starting one while
384
+ another is still running returns `202` with the running audit's `audit_id`
385
+ rather than an error, so a retried start picks that audit back up instead of
386
+ losing it — poll the id you were given.
387
+
388
+ Once an audit finishes, a new one can't be started for the same line until a
389
+ cooldown elapses (`429`, with `Retry-After` carrying the wait). Keep the
390
+ `audit_id` from the original `202`: it stays readable on the GET endpoint for 24
391
+ hours, and the cooldown response does not repeat it.
382
392
 
383
393
  Args:
384
394
  extra_headers: Send extra headers
@@ -0,0 +1,76 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from typing_extensions import Literal
5
+
6
+ from .._models import BaseModel
7
+ from .shared.text_decoration import TextDecoration
8
+
9
+ __all__ = ["SchemasTextPartResponse", "Mention"]
10
+
11
+
12
+ class Mention(BaseModel):
13
+ """
14
+ One mention on a text part — who was mentioned, and which characters of `value` are
15
+ the mention. A part carries one of these per mention, in the order they appear in the
16
+ text, so a message naming two people has two entries.
17
+ """
18
+
19
+ handle: str
20
+ """
21
+ Address of the mentioned participant, exactly as the device recorded it — an
22
+ E.164 phone number or an email address.
23
+ """
24
+
25
+ is_me: bool
26
+ """Whether the mentioned participant is this line."""
27
+
28
+ range: List[int]
29
+ """
30
+ Character range `[start, end)` in `value` highlighted as this mention.
31
+ _Characters are measured as UTF-16 code units. Most characters count as 1; some
32
+ emoji count as 2._
33
+ """
34
+
35
+
36
+ class SchemasTextPartResponse(BaseModel):
37
+ """A text message part"""
38
+
39
+ type: Literal["text"]
40
+ """Indicates this is a text message part"""
41
+
42
+ value: str
43
+ """The text content"""
44
+
45
+ mention: Optional[str] = None
46
+ """DEPRECATED: Use `mentions` instead.
47
+
48
+ Handle (E.164 phone number or Apple ID email) of the **first** mention on this
49
+ part. A part may carry several mentions; this field shows only the first in
50
+ `value` order, so it cannot be used to determine whether a given participant was
51
+ mentioned. `null` when the part carries no mention.
52
+ """
53
+
54
+ mention_range: Optional[List[int]] = None
55
+ """DEPRECATED: Use `mentions[].range` instead.
56
+
57
+ Character range `[start, end)` in `value` highlighted as the **first** mention
58
+ only. `null` when the range was omitted (the whole `value` is highlighted) or
59
+ the part carries no mention. _Characters are measured as UTF-16 code units. Most
60
+ characters count as 1; some emoji count as 2._
61
+ """
62
+
63
+ mentions: Optional[List[Mention]] = None
64
+ """Every mention on this part, in the order they appear in `value`.
65
+
66
+ `null` when the part carries no mention. A part can carry several mentions of
67
+ different people — check `is_me` to tell whether this line was one of them.
68
+
69
+ Only iMessage carries mentions. On a received message this is populated when the
70
+ sender was on iMessage; SMS and RCS have no way to mark a mention, so a message
71
+ from an SMS or RCS participant arrives as plain text with `mentions` null, even
72
+ in a group where other participants are on iMessage.
73
+ """
74
+
75
+ text_decorations: Optional[List[TextDecoration]] = None
76
+ """Text decorations applied to character ranges in the value"""
@@ -0,0 +1,80 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from typing_extensions import Literal
5
+
6
+ from .reaction import Reaction
7
+ from ..._models import BaseModel
8
+ from .text_decoration import TextDecoration
9
+
10
+ __all__ = ["TextPartResponse", "Mention"]
11
+
12
+
13
+ class Mention(BaseModel):
14
+ """
15
+ One mention on a text part — who was mentioned, and which characters of `value` are
16
+ the mention. A part carries one of these per mention, in the order they appear in the
17
+ text, so a message naming two people has two entries.
18
+ """
19
+
20
+ handle: str
21
+ """
22
+ Address of the mentioned participant, exactly as the device recorded it — an
23
+ E.164 phone number or an email address.
24
+ """
25
+
26
+ is_me: bool
27
+ """Whether the mentioned participant is this line."""
28
+
29
+ range: List[int]
30
+ """
31
+ Character range `[start, end)` in `value` highlighted as this mention.
32
+ _Characters are measured as UTF-16 code units. Most characters count as 1; some
33
+ emoji count as 2._
34
+ """
35
+
36
+
37
+ class TextPartResponse(BaseModel):
38
+ """A text message part"""
39
+
40
+ reactions: Optional[List[Reaction]] = None
41
+ """Reactions on this message part"""
42
+
43
+ type: Literal["text"]
44
+ """Indicates this is a text message part"""
45
+
46
+ value: str
47
+ """The text content"""
48
+
49
+ mention: Optional[str] = None
50
+ """DEPRECATED: Use `mentions` instead.
51
+
52
+ Handle (E.164 phone number or Apple ID email) of the **first** mention on this
53
+ part. A part may carry several mentions; this field shows only the first in
54
+ `value` order, so it cannot be used to determine whether a given participant was
55
+ mentioned. `null` when the part carries no mention.
56
+ """
57
+
58
+ mention_range: Optional[List[int]] = None
59
+ """DEPRECATED: Use `mentions[].range` instead.
60
+
61
+ Character range `[start, end)` in `value` highlighted as the **first** mention
62
+ only. `null` when the range was omitted (the whole `value` is highlighted) or
63
+ the part carries no mention. _Characters are measured as UTF-16 code units. Most
64
+ characters count as 1; some emoji count as 2._
65
+ """
66
+
67
+ mentions: Optional[List[Mention]] = None
68
+ """Every mention on this part, in the order they appear in `value`.
69
+
70
+ `null` when the part carries no mention. A part can carry several mentions of
71
+ different people — check `is_me` to tell whether this line was one of them.
72
+
73
+ Only iMessage carries mentions. On a received message this is populated when the
74
+ sender was on iMessage; SMS and RCS have no way to mark a mention, so a message
75
+ from an SMS or RCS participant arrives as plain text with `mentions` null, even
76
+ in a group where other participants are on iMessage.
77
+ """
78
+
79
+ text_decorations: Optional[List[TextDecoration]] = None
80
+ """Text decorations applied to character ranges in the value"""
@@ -23,7 +23,7 @@ class TextPartParam(TypedDict, total=False):
23
23
  """
24
24
 
25
25
  mention: str
26
- """@mention a chat participant.
26
+ """Mention a chat participant.
27
27
 
28
28
  Group chats only — sending a mention to a direct chat is rejected with `409` /
29
29
  `2023`. The chat's service is not a constraint: a mention is accepted in any
@@ -31,7 +31,7 @@ class TestWebhooks:
31
31
 
32
32
  client = client.with_options(webhook_secret=client_opt)
33
33
 
34
- data = """{"api_version":"v3","created_at":"2025-11-23T17:30:00Z","data":{"id":"550e8400-e29b-41d4-a716-446655440001","chat":{"id":"550e8400-e29b-41d4-a716-446655440000","health_status":{"doc_url":"https://docs.linqapp.com/guides/chats/chat-health#at-risk","status":"AT_RISK","updated_at":"2026-05-01T18:28:25Z"},"is_group":true,"owner_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"}},"direction":"outbound","parts":[{"type":"text","value":"Hello!","mention":"+14155551234","mention_range":[4,9],"text_decorations":[{"range":[0,5],"animation":"shake","style":"bold"}]}],"sender_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"},"service":"iMessage","delivered_at":"2026-01-30T20:49:20.352Z","effect":{"name":"gentle","type":"bubble"},"idempotency_key":"unique-key","preferred_service":"iMessage","read_at":null,"reconciled_at":"2026-01-30T22:05:00.000Z","reply_to":{"message_id":"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e","part_index":0},"sent_at":"2026-01-30T20:49:19.704Z"},"event_id":"550e8400-e29b-41d4-a716-446655440000","event_type":"message.sent","partner_id":"partner_abc123","trace_id":"abc123def456","webhook_version":"2025-01-01"}"""
34
+ data = """{"api_version":"v3","created_at":"2025-11-23T17:30:00Z","data":{"id":"550e8400-e29b-41d4-a716-446655440001","chat":{"id":"550e8400-e29b-41d4-a716-446655440000","health_status":{"doc_url":"https://docs.linqapp.com/guides/chats/chat-health#at-risk","status":"AT_RISK","updated_at":"2026-05-01T18:28:25Z"},"is_group":true,"owner_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"}},"direction":"outbound","parts":[{"type":"text","value":"Hello!","mention":"+14155551234","mention_range":[4,9],"mentions":[{"handle":"+14155550123","is_me":true,"range":[4,9]}],"text_decorations":[{"range":[0,5],"animation":"shake","style":"bold"}]}],"sender_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"},"service":"iMessage","delivered_at":"2026-01-30T20:49:20.352Z","effect":{"name":"gentle","type":"bubble"},"idempotency_key":"unique-key","preferred_service":"iMessage","read_at":null,"reconciled_at":"2026-01-30T22:05:00.000Z","reply_to":{"message_id":"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e","part_index":0},"sent_at":"2026-01-30T20:49:19.704Z"},"event_id":"550e8400-e29b-41d4-a716-446655440000","event_type":"message.sent","partner_id":"partner_abc123","trace_id":"abc123def456","webhook_version":"2025-01-01"}"""
35
35
  msg_id = "1"
36
36
  timestamp = datetime.now(tz=timezone.utc)
37
37
  sig = hook.sign(msg_id=msg_id, timestamp=timestamp, data=data)
@@ -78,7 +78,7 @@ class TestAsyncWebhooks:
78
78
 
79
79
  async_client = async_client.with_options(webhook_secret=client_opt)
80
80
 
81
- data = """{"api_version":"v3","created_at":"2025-11-23T17:30:00Z","data":{"id":"550e8400-e29b-41d4-a716-446655440001","chat":{"id":"550e8400-e29b-41d4-a716-446655440000","health_status":{"doc_url":"https://docs.linqapp.com/guides/chats/chat-health#at-risk","status":"AT_RISK","updated_at":"2026-05-01T18:28:25Z"},"is_group":true,"owner_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"}},"direction":"outbound","parts":[{"type":"text","value":"Hello!","mention":"+14155551234","mention_range":[4,9],"text_decorations":[{"range":[0,5],"animation":"shake","style":"bold"}]}],"sender_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"},"service":"iMessage","delivered_at":"2026-01-30T20:49:20.352Z","effect":{"name":"gentle","type":"bubble"},"idempotency_key":"unique-key","preferred_service":"iMessage","read_at":null,"reconciled_at":"2026-01-30T22:05:00.000Z","reply_to":{"message_id":"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e","part_index":0},"sent_at":"2026-01-30T20:49:19.704Z"},"event_id":"550e8400-e29b-41d4-a716-446655440000","event_type":"message.sent","partner_id":"partner_abc123","trace_id":"abc123def456","webhook_version":"2025-01-01"}"""
81
+ data = """{"api_version":"v3","created_at":"2025-11-23T17:30:00Z","data":{"id":"550e8400-e29b-41d4-a716-446655440001","chat":{"id":"550e8400-e29b-41d4-a716-446655440000","health_status":{"doc_url":"https://docs.linqapp.com/guides/chats/chat-health#at-risk","status":"AT_RISK","updated_at":"2026-05-01T18:28:25Z"},"is_group":true,"owner_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"}},"direction":"outbound","parts":[{"type":"text","value":"Hello!","mention":"+14155551234","mention_range":[4,9],"mentions":[{"handle":"+14155550123","is_me":true,"range":[4,9]}],"text_decorations":[{"range":[0,5],"animation":"shake","style":"bold"}]}],"sender_handle":{"id":"550e8400-e29b-41d4-a716-446655440000","handle":"+15551234567","joined_at":"2025-05-21T15:30:00.000-05:00","service":"iMessage","is_me":false,"left_at":"2019-12-27T18:11:19.117Z","status":"active"},"service":"iMessage","delivered_at":"2026-01-30T20:49:20.352Z","effect":{"name":"gentle","type":"bubble"},"idempotency_key":"unique-key","preferred_service":"iMessage","read_at":null,"reconciled_at":"2026-01-30T22:05:00.000Z","reply_to":{"message_id":"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e","part_index":0},"sent_at":"2026-01-30T20:49:19.704Z"},"event_id":"550e8400-e29b-41d4-a716-446655440000","event_type":"message.sent","partner_id":"partner_abc123","trace_id":"abc123def456","webhook_version":"2025-01-01"}"""
82
82
  msg_id = "1"
83
83
  timestamp = datetime.now(tz=timezone.utc)
84
84
  sig = hook.sign(msg_id=msg_id, timestamp=timestamp, data=data)
@@ -530,7 +530,7 @@ wheels = [
530
530
 
531
531
  [[package]]
532
532
  name = "linq-python"
533
- version = "0.34.0"
533
+ version = "0.35.1"
534
534
  source = { editable = "." }
535
535
  dependencies = [
536
536
  { name = "anyio" },
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.35.0"
3
- }
@@ -1,36 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from typing import List, Optional
4
- from typing_extensions import Literal
5
-
6
- from .._models import BaseModel
7
- from .shared.text_decoration import TextDecoration
8
-
9
- __all__ = ["SchemasTextPartResponse"]
10
-
11
-
12
- class SchemasTextPartResponse(BaseModel):
13
- """A text message part"""
14
-
15
- type: Literal["text"]
16
- """Indicates this is a text message part"""
17
-
18
- value: str
19
- """The text content"""
20
-
21
- mention: Optional[str] = None
22
- """
23
- Handle (E.164 phone number or Apple ID email) of the @mentioned chat
24
- participant, as sent. `null` when the part carries no mention.
25
- """
26
-
27
- mention_range: Optional[List[int]] = None
28
- """
29
- Character range `[start, end)` in `value` highlighted as the mention, as sent.
30
- `null` when the send omitted it (the whole `value` is highlighted) or the part
31
- carries no mention. _Characters are measured as UTF-16 code units. Most
32
- characters count as 1; some emoji count as 2._
33
- """
34
-
35
- text_decorations: Optional[List[TextDecoration]] = None
36
- """Text decorations applied to character ranges in the value"""
@@ -1,40 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from typing import List, Optional
4
- from typing_extensions import Literal
5
-
6
- from .reaction import Reaction
7
- from ..._models import BaseModel
8
- from .text_decoration import TextDecoration
9
-
10
- __all__ = ["TextPartResponse"]
11
-
12
-
13
- class TextPartResponse(BaseModel):
14
- """A text message part"""
15
-
16
- reactions: Optional[List[Reaction]] = None
17
- """Reactions on this message part"""
18
-
19
- type: Literal["text"]
20
- """Indicates this is a text message part"""
21
-
22
- value: str
23
- """The text content"""
24
-
25
- mention: Optional[str] = None
26
- """
27
- Handle (E.164 phone number or Apple ID email) of the @mentioned chat
28
- participant, as sent. `null` when the part carries no mention.
29
- """
30
-
31
- mention_range: Optional[List[int]] = None
32
- """
33
- Character range `[start, end)` in `value` highlighted as the mention, as sent.
34
- `null` when the send omitted it (the whole `value` is highlighted) or the part
35
- carries no mention. _Characters are measured as UTF-16 code units. Most
36
- characters count as 1; some emoji count as 2._
37
- """
38
-
39
- text_decorations: Optional[List[TextDecoration]] = None
40
- """Text decorations applied to character ranges in the value"""
File without changes
File without changes
File without changes
File without changes
File without changes